From 903eba9a0c52c78f38559367aeb01885fac73fdc Mon Sep 17 00:00:00 2001 From: ssube Date: Wed, 12 Aug 2020 18:21:35 -0500 Subject: [PATCH] feat(remote/github): wire up auth, issue list --- config/rollup-external.json | 1 + config/rollup.js | 21 +- .../cautious-journey.githubremote.connect.md | 15 + ...autious-journey.githubremote.listissues.md | 9 +- ...autious-journey.githubremote.listlabels.md | 9 +- docs/api/cautious-journey.githubremote.md | 13 +- .../cautious-journey.githubremote.options.md | 11 + .../cautious-journey.githubremote.request.md | 11 + ...tious-journey.githubremote.splitproject.md | 25 ++ .../api/cautious-journey.remote.listissues.md | 9 +- .../api/cautious-journey.remote.listlabels.md | 9 +- docs/api/cautious-journey.remote.md | 4 +- docs/workflow.md | 9 +- package.json | 7 + src/index.ts | 1 + src/remote/github.ts | 78 +++++- src/remote/index.ts | 12 +- src/sync.ts | 8 +- yarn.lock | 265 +++++++++++++++++- 19 files changed, 488 insertions(+), 29 deletions(-) create mode 100644 docs/api/cautious-journey.githubremote.connect.md create mode 100644 docs/api/cautious-journey.githubremote.options.md create mode 100644 docs/api/cautious-journey.githubremote.request.md create mode 100644 docs/api/cautious-journey.githubremote.splitproject.md diff --git a/config/rollup-external.json b/config/rollup-external.json index ecba504..ace9d93 100644 --- a/config/rollup-external.json +++ b/config/rollup-external.json @@ -3,6 +3,7 @@ "async_hooks", "chai", "dtrace-provider", + "node-fetch", "sinon", "source-map", "source-map-support" diff --git a/config/rollup.js b/config/rollup.js index 98343a2..7a37295 100644 --- a/config/rollup.js +++ b/config/rollup.js @@ -1,4 +1,5 @@ import { join, sep } from 'path'; +import alias from 'rollup-plugin-alias'; import commonjs from 'rollup-plugin-commonjs'; import { eslint } from 'rollup-plugin-eslint'; import json from 'rollup-plugin-json'; @@ -9,6 +10,7 @@ import replace from 'rollup-plugin-replace'; import serve from 'rollup-plugin-serve'; import { terser } from 'rollup-plugin-terser'; import typescript from 'rollup-plugin-typescript2'; +import virtual from 'rollup-plugin-virtual'; import visualizer from 'rollup-plugin-visualizer'; import yaml from 'rollup-plugin-yaml'; @@ -49,7 +51,7 @@ const bundle = { return 'vendor'; } - if (id.match(/node-resolve:/)) { + if (id.match(/node-resolve:/) || id.match(/virtual:/)) { return 'vendor'; } @@ -58,7 +60,7 @@ const bundle = { return 'test'; } - if (id.includes(`${sep}node_modules${sep}`)) { + if (id.includes(`node_modules${sep}`)) { return 'vendor'; } @@ -109,8 +111,21 @@ const bundle = { PACKAGE_VERSION: metadata.version, }, }), + /* + virtual({ + 'universal-user-agent': + 'export function getUserAgent() {return `Node.js/${process.version.substr(1)} (${process.platform}); ${process.arch})`}', + }), + */ + alias({ + resolve: ['.tsx', '.ts'], + entries: { + 'universal-user-agent': join('.', 'node_modules', 'universal-user-agent', 'dist-node', 'index.js'), + 'universal-github-app-jwt': join('.', 'node_modules', 'universal-github-app-jwt', 'dist-node', 'index.js'), + }, + }), resolve({ - browser: true, + browser: false, preferBuiltins: true, }), commonjs({ diff --git a/docs/api/cautious-journey.githubremote.connect.md b/docs/api/cautious-journey.githubremote.connect.md new file mode 100644 index 0000000..1e4eafd --- /dev/null +++ b/docs/api/cautious-journey.githubremote.connect.md @@ -0,0 +1,15 @@ + + +[Home](./index.md) > [cautious-journey](./cautious-journey.md) > [GithubRemote](./cautious-journey.githubremote.md) > [connect](./cautious-journey.githubremote.connect.md) + +## GithubRemote.connect() method + +Signature: + +```typescript +connect(): Promise; +``` +Returns: + +Promise<void> + diff --git a/docs/api/cautious-journey.githubremote.listissues.md b/docs/api/cautious-journey.githubremote.listissues.md index 424d94d..d9c1d0f 100644 --- a/docs/api/cautious-journey.githubremote.listissues.md +++ b/docs/api/cautious-journey.githubremote.listissues.md @@ -7,8 +7,15 @@ Signature: ```typescript -listIssues(): Promise>; +listIssues(options: ProjectQuery): Promise>; ``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| options | ProjectQuery | | + Returns: Promise<Array<IssueUpdate>> diff --git a/docs/api/cautious-journey.githubremote.listlabels.md b/docs/api/cautious-journey.githubremote.listlabels.md index 65aeb20..7150c74 100644 --- a/docs/api/cautious-journey.githubremote.listlabels.md +++ b/docs/api/cautious-journey.githubremote.listlabels.md @@ -7,8 +7,15 @@ Signature: ```typescript -listLabels(): Promise>; +listLabels(options: ProjectQuery): Promise>; ``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| options | ProjectQuery | | + Returns: Promise<Array<LabelUpdate>> diff --git a/docs/api/cautious-journey.githubremote.md b/docs/api/cautious-journey.githubremote.md index 8952291..c8e8643 100644 --- a/docs/api/cautious-journey.githubremote.md +++ b/docs/api/cautious-journey.githubremote.md @@ -19,17 +19,26 @@ export declare class GithubRemote implements Remote | --- | --- | --- | | [(constructor)(options)](./cautious-journey.githubremote._constructor_.md) | | Constructs a new instance of the GithubRemote class | +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [options](./cautious-journey.githubremote.options.md) | | [RemoteOptions](./cautious-journey.remoteoptions.md) | | +| [request](./cautious-journey.githubremote.request.md) | | Octokit | | + ## Methods | Method | Modifiers | Description | | --- | --- | --- | +| [connect()](./cautious-journey.githubremote.connect.md) | | | | [createComment()](./cautious-journey.githubremote.createcomment.md) | | | | [createLabel()](./cautious-journey.githubremote.createlabel.md) | | | | [deleteLabel()](./cautious-journey.githubremote.deletelabel.md) | | | | [getIssue()](./cautious-journey.githubremote.getissue.md) | | | | [getLabel()](./cautious-journey.githubremote.getlabel.md) | | | -| [listIssues()](./cautious-journey.githubremote.listissues.md) | | | -| [listLabels()](./cautious-journey.githubremote.listlabels.md) | | | +| [listIssues(options)](./cautious-journey.githubremote.listissues.md) | | | +| [listLabels(options)](./cautious-journey.githubremote.listlabels.md) | | | +| [splitProject(project)](./cautious-journey.githubremote.splitproject.md) | | | | [updateIssue()](./cautious-journey.githubremote.updateissue.md) | | | | [updateLabel()](./cautious-journey.githubremote.updatelabel.md) | | | diff --git a/docs/api/cautious-journey.githubremote.options.md b/docs/api/cautious-journey.githubremote.options.md new file mode 100644 index 0000000..6e69588 --- /dev/null +++ b/docs/api/cautious-journey.githubremote.options.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [cautious-journey](./cautious-journey.md) > [GithubRemote](./cautious-journey.githubremote.md) > [options](./cautious-journey.githubremote.options.md) + +## GithubRemote.options property + +Signature: + +```typescript +protected options: RemoteOptions; +``` diff --git a/docs/api/cautious-journey.githubremote.request.md b/docs/api/cautious-journey.githubremote.request.md new file mode 100644 index 0000000..3aa77ee --- /dev/null +++ b/docs/api/cautious-journey.githubremote.request.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [cautious-journey](./cautious-journey.md) > [GithubRemote](./cautious-journey.githubremote.md) > [request](./cautious-journey.githubremote.request.md) + +## GithubRemote.request property + +Signature: + +```typescript +protected request?: Octokit; +``` diff --git a/docs/api/cautious-journey.githubremote.splitproject.md b/docs/api/cautious-journey.githubremote.splitproject.md new file mode 100644 index 0000000..54b4c7a --- /dev/null +++ b/docs/api/cautious-journey.githubremote.splitproject.md @@ -0,0 +1,25 @@ + + +[Home](./index.md) > [cautious-journey](./cautious-journey.md) > [GithubRemote](./cautious-journey.githubremote.md) > [splitProject](./cautious-journey.githubremote.splitproject.md) + +## GithubRemote.splitProject() method + +Signature: + +```typescript +splitProject(project: string): Promise<{ + owner: string; + repo: string; + }>; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| project | string | | + +Returns: + +Promise<{ owner: string; repo: string; }> + diff --git a/docs/api/cautious-journey.remote.listissues.md b/docs/api/cautious-journey.remote.listissues.md index cc03141..ccb282b 100644 --- a/docs/api/cautious-journey.remote.listissues.md +++ b/docs/api/cautious-journey.remote.listissues.md @@ -9,8 +9,15 @@ List all issues. Signature: ```typescript -listIssues(): Promise>; +listIssues(options: ProjectQuery): Promise>; ``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| options | ProjectQuery | | + Returns: Promise<Array<IssueUpdate>> diff --git a/docs/api/cautious-journey.remote.listlabels.md b/docs/api/cautious-journey.remote.listlabels.md index 800034c..d2efb5b 100644 --- a/docs/api/cautious-journey.remote.listlabels.md +++ b/docs/api/cautious-journey.remote.listlabels.md @@ -9,8 +9,15 @@ List all labels. Signature: ```typescript -listLabels(): Promise>; +listLabels(options: ProjectQuery): Promise>; ``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| options | ProjectQuery | | + Returns: Promise<Array<LabelUpdate>> diff --git a/docs/api/cautious-journey.remote.md b/docs/api/cautious-journey.remote.md index 02d7bf3..93ab6cd 100644 --- a/docs/api/cautious-journey.remote.md +++ b/docs/api/cautious-journey.remote.md @@ -21,8 +21,8 @@ export interface Remote | [deleteLabel(options)](./cautious-journey.remote.deletelabel.md) | Delete an existing label. | | [getIssue(options)](./cautious-journey.remote.getissue.md) | Get details of a single issue. | | [getLabel(options)](./cautious-journey.remote.getlabel.md) | Get details of a single label. | -| [listIssues()](./cautious-journey.remote.listissues.md) | List all issues. | -| [listLabels()](./cautious-journey.remote.listlabels.md) | List all labels. | +| [listIssues(options)](./cautious-journey.remote.listissues.md) | List all issues. | +| [listLabels(options)](./cautious-journey.remote.listlabels.md) | List all labels. | | [updateIssue(options)](./cautious-journey.remote.updateissue.md) | Update an issue.Only labels will be modified. | | [updateLabel(options)](./cautious-journey.remote.updatelabel.md) | Update a label. | diff --git a/docs/workflow.md b/docs/workflow.md index d79c9d6..ff5f610 100644 --- a/docs/workflow.md +++ b/docs/workflow.md @@ -8,8 +8,9 @@ This guide covers the basic development workflow for projects based on https://g - [Contents](#contents) - [Common Tasks](#common-tasks) - [Branch Development](#branch-development) - - [Merging Changes](#merging-changes) - [Deploying Releases](#deploying-releases) + - [Merging Changes](#merging-changes) + - [Test Coverage](#test-coverage) ## Common Tasks @@ -44,10 +45,14 @@ feat(labels): set flux capacitance per label fix(sync): stop erasing all labels by accident ``` +### Deploying Releases + +TODO + ### Merging Changes TODO -### Deploying Releases +### Test Coverage TODO diff --git a/package.json b/package.json index 319cfcb..e1e9baf 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,8 @@ "@istanbuljs/nyc-config-typescript": "1.0.1", "@microsoft/api-documenter": "7.8.22", "@microsoft/api-extractor": "7.9.3", + "@octokit/auth-app": "^2.4.14", + "@octokit/rest": "^18.0.3", "@types/bunyan": "^1.8.6", "@types/chai": "4.2.12", "@types/chai-as-promised": "7.1.3", @@ -55,6 +57,7 @@ "react": "^16.13.1", "react-dom": "^16.13.1", "rollup": "^2.23.1", + "rollup-plugin-alias": "^2.2.0", "rollup-plugin-commonjs": "^10.1.0", "rollup-plugin-eslint": "^7.0.0", "rollup-plugin-json": "^4.0.0", @@ -68,6 +71,7 @@ "rollup-plugin-tslint": "0.2.2", "rollup-plugin-typescript2": "0.27.2", "rollup-plugin-uglify": "^6.0.4", + "rollup-plugin-virtual": "^1.0.1", "rollup-plugin-visualizer": "^4.0.4", "rollup-plugin-yaml": "2.0.0", "sinon": "9.0.2", @@ -87,5 +91,8 @@ "hooks": { "pre-commit": "make ci" } + }, + "dependencies": { + "node-fetch": "^2.6.0" } } diff --git a/src/index.ts b/src/index.ts index 93346ab..183500e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -17,3 +17,4 @@ main(process.argv).then((status) => process.exit(status)).catch((err: Error) => console.error('uncaught error during main:', err); process.exit(STATUS_ERROR); }); + diff --git a/src/remote/github.ts b/src/remote/github.ts index 0bca9ff..f2f355e 100644 --- a/src/remote/github.ts +++ b/src/remote/github.ts @@ -1,14 +1,64 @@ -import { NotImplementedError } from '@apextoaster/js-utils'; +import { NotImplementedError, mustExist } from '@apextoaster/js-utils'; +import { createAppAuth } from '@octokit/auth-app'; +import { Octokit } from '@octokit/rest'; -import { IssueUpdate, LabelUpdate, Remote, RemoteOptions } from '.'; +import { IssueUpdate, LabelUpdate, Remote, RemoteOptions, ProjectQuery } from '.'; /** * Github/Octokit API implementation of the `Remote` contract. */ export class GithubRemote implements Remote { + protected options: RemoteOptions; + protected request?: Octokit; + /* eslint-disable-next-line no-useless-constructor */ constructor(options: RemoteOptions) { - // TODO: set up octokit API + this.options = options; + } + + public async connect() { + /* eslint-disable-next-line no-console */ + console.log('connecting to github', { + auth: this.options.data, + authStrategy: createAppAuth, + }); + + /* + const auth = createAppAuth({ + id: parseInt(mustExist(this.options.data.id), 10), + privateKey: mustExist(this.options.data.privateKey), + }); + + const install = await auth({ + installationId: parseInt(mustExist(this.options.data.installationId), 10), + type: 'installation', + }); + + this.request = new Octokit({ + auth: install, + authStrategy: createAppAuth, + }); + */ + + this.request = new Octokit({ + auth: { + id: parseInt(mustExist(this.options.data.id), 10), + installationId: parseInt(mustExist(this.options.data.installationId), 10), + privateKey: mustExist(this.options.data.privateKey), + }, + authStrategy: createAppAuth, + }); + } + + public async splitProject(project: string): Promise<{ + owner: string; + repo: string; + }> { + const [owner, repo] = project.split('/'); + return { + owner, + repo, + }; } public async createComment() { @@ -31,11 +81,27 @@ export class GithubRemote implements Remote { throw new NotImplementedError(); } - public async listIssues(): Promise> { - throw new NotImplementedError(); + public async listIssues(options: ProjectQuery): Promise> { + const path = await this.splitProject(options.project); + const repo = await mustExist(this.request).issues.listForRepo(path); + + const issues: Array = []; + for (const issue of repo.data) { + issues.push({ + issue: issue.id.toString(10), + labels: issue.labels.map((l) => l.name), + name: issue.title, + project: options.project, + }); + } + + /* eslint-disable-next-line no-console */ + console.log('list issues:', path, issues); + + return issues; } - public async listLabels(): Promise> { + public async listLabels(options: ProjectQuery): Promise> { throw new NotImplementedError(); } diff --git a/src/remote/index.ts b/src/remote/index.ts index 88536fc..b372152 100644 --- a/src/remote/index.ts +++ b/src/remote/index.ts @@ -1,10 +1,12 @@ -export interface LabelQuery { +export interface ProjectQuery { project: string; +} + +export interface LabelQuery extends ProjectQuery { name: string; } -export interface IssueQuery { - project: string; +export interface IssueQuery extends ProjectQuery { issue: string; } @@ -59,12 +61,12 @@ export interface Remote { /** * List all issues. */ - listIssues(): Promise>; + listIssues(options: ProjectQuery): Promise>; /** * List all labels. */ - listLabels(): Promise>; + listLabels(options: ProjectQuery): Promise>; /** * Update an issue. diff --git a/src/sync.ts b/src/sync.ts index 224205b..3608d98 100644 --- a/src/sync.ts +++ b/src/sync.ts @@ -11,7 +11,9 @@ export interface SyncOptions { } export async function syncIssues(options: SyncOptions): Promise { - const issues = await options.remote.listIssues(); + const issues = await options.remote.listIssues({ + project: options.project, + }); for (const issue of issues) { console.log('issue:', issue.name, issue.labels); @@ -21,7 +23,9 @@ export async function syncIssues(options: SyncOptions): Promise { } export async function syncLabels(options: SyncOptions): Promise { - const labels = await options.remote.listLabels(); + const labels = await options.remote.listLabels({ + project: options.project, + }); for (const label of labels) { console.log('label:', label.name); diff --git a/yarn.lock b/yarn.lock index aa5191c..8afe73a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -275,6 +275,116 @@ resolved "https://artifacts.apextoaster.com/repository/group-npm/@microsoft/tsdoc/-/tsdoc-0.12.19.tgz#2173ccb92469aaf62031fa9499d21b16d07f9b57" integrity sha512-IpgPxHrNxZiMNUSXqR1l/gePKPkfAmIKoDRP9hp7OwjU29ZR8WCJsOJ8iBKgw0Qk+pFwR+8Y1cy8ImLY6e9m4A== +"@octokit/auth-app@^2.4.14": + version "2.4.14" + resolved "https://artifacts.apextoaster.com/repository/group-npm/@octokit/auth-app/-/auth-app-2.4.14.tgz#c99aa2bfb38b4e3d20991cd7afcf34eae675ddcd" + integrity sha512-1D1+8VFZpgbQdaePVWll3qb7mpKazu15xtZ17xzLjbfGFUcB4ddp/nHvDtfIWTMWrx92Iaz+5FGLCLVi8p4WOg== + dependencies: + "@octokit/request" "^5.3.0" + "@octokit/request-error" "^2.0.0" + "@octokit/types" "^5.0.0" + "@types/lru-cache" "^5.1.0" + lru-cache "^6.0.0" + universal-github-app-jwt "^1.0.1" + universal-user-agent "^6.0.0" + +"@octokit/auth-token@^2.4.0": + version "2.4.2" + resolved "https://artifacts.apextoaster.com/repository/group-npm/@octokit/auth-token/-/auth-token-2.4.2.tgz#10d0ae979b100fa6b72fa0e8e63e27e6d0dbff8a" + integrity sha512-jE/lE/IKIz2v1+/P0u4fJqv0kYwXOTujKemJMFr6FeopsxlIK3+wKDCJGnysg81XID5TgZQbIfuJ5J0lnTiuyQ== + dependencies: + "@octokit/types" "^5.0.0" + +"@octokit/core@^3.0.0": + version "3.1.2" + resolved "https://artifacts.apextoaster.com/repository/group-npm/@octokit/core/-/core-3.1.2.tgz#c937d5f9621b764573068fcd2e5defcc872fd9cc" + integrity sha512-AInOFULmwOa7+NFi9F8DlDkm5qtZVmDQayi7TUgChE3yeIGPq0Y+6cAEXPexQ3Ea+uZy66hKEazR7DJyU+4wfw== + dependencies: + "@octokit/auth-token" "^2.4.0" + "@octokit/graphql" "^4.3.1" + "@octokit/request" "^5.4.0" + "@octokit/types" "^5.0.0" + before-after-hook "^2.1.0" + universal-user-agent "^6.0.0" + +"@octokit/endpoint@^6.0.1": + version "6.0.5" + resolved "https://artifacts.apextoaster.com/repository/group-npm/@octokit/endpoint/-/endpoint-6.0.5.tgz#43a6adee813c5ffd2f719e20cfd14a1fee7c193a" + integrity sha512-70K5u6zd45ItOny6aHQAsea8HHQjlQq85yqOMe+Aj8dkhN2qSJ9T+Q3YjUjEYfPRBcuUWNgMn62DQnP/4LAIiQ== + dependencies: + "@octokit/types" "^5.0.0" + is-plain-object "^4.0.0" + universal-user-agent "^6.0.0" + +"@octokit/graphql@^4.3.1": + version "4.5.3" + resolved "https://artifacts.apextoaster.com/repository/group-npm/@octokit/graphql/-/graphql-4.5.3.tgz#d5ff0d4a8a33e98614a2a7359dac98bc285e062f" + integrity sha512-JyYvi3j2tOb5ofASEpcg1Advs07H+Ag+I+ez7buuZfNVAmh1IYcDTuxd4gnYH8S2PSGu+f5IdDGxMmkK+5zsdA== + dependencies: + "@octokit/request" "^5.3.0" + "@octokit/types" "^5.0.0" + universal-user-agent "^6.0.0" + +"@octokit/plugin-paginate-rest@^2.2.0": + version "2.3.0" + resolved "https://artifacts.apextoaster.com/repository/group-npm/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.3.0.tgz#7d1073e56cfd15d3f99dcfe81fa5d2b466f3a6f6" + integrity sha512-Ye2ZJreP0ZlqJQz8fz+hXvrEAEYK4ay7br1eDpWzr6j76VXs/gKqxFcH8qRzkB3fo/2xh4Vy9VtGii4ZDc9qlA== + dependencies: + "@octokit/types" "^5.2.0" + +"@octokit/plugin-request-log@^1.0.0": + version "1.0.0" + resolved "https://artifacts.apextoaster.com/repository/group-npm/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz#eef87a431300f6148c39a7f75f8cfeb218b2547e" + integrity sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw== + +"@octokit/plugin-rest-endpoint-methods@4.1.2": + version "4.1.2" + resolved "https://artifacts.apextoaster.com/repository/group-npm/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.1.2.tgz#546a8f3e0b514f434a4ad4ef926005f1c81a5a5a" + integrity sha512-PTI7wpbGEZ2IR87TVh+TNWaLcgX/RsZQalFbQCq8XxYUrQ36RHyERrHSNXFy5gkWpspUAOYRSV707JJv6BhqJA== + dependencies: + "@octokit/types" "^5.1.1" + deprecation "^2.3.1" + +"@octokit/request-error@^2.0.0": + version "2.0.2" + resolved "https://artifacts.apextoaster.com/repository/group-npm/@octokit/request-error/-/request-error-2.0.2.tgz#0e76b83f5d8fdda1db99027ea5f617c2e6ba9ed0" + integrity sha512-2BrmnvVSV1MXQvEkrb9zwzP0wXFNbPJij922kYBTLIlIafukrGOb+ABBT2+c6wZiuyWDH1K1zmjGQ0toN/wMWw== + dependencies: + "@octokit/types" "^5.0.1" + deprecation "^2.0.0" + once "^1.4.0" + +"@octokit/request@^5.3.0", "@octokit/request@^5.4.0": + version "5.4.7" + resolved "https://artifacts.apextoaster.com/repository/group-npm/@octokit/request/-/request-5.4.7.tgz#fd703ee092e0463ceba49ff7a3e61cb4cf8a0fde" + integrity sha512-FN22xUDP0i0uF38YMbOfx6TotpcENP5W8yJM1e/LieGXn6IoRxDMnBf7tx5RKSW4xuUZ/1P04NFZy5iY3Rax1A== + dependencies: + "@octokit/endpoint" "^6.0.1" + "@octokit/request-error" "^2.0.0" + "@octokit/types" "^5.0.0" + deprecation "^2.0.0" + is-plain-object "^4.0.0" + node-fetch "^2.3.0" + once "^1.4.0" + universal-user-agent "^6.0.0" + +"@octokit/rest@^18.0.3": + version "18.0.3" + resolved "https://artifacts.apextoaster.com/repository/group-npm/@octokit/rest/-/rest-18.0.3.tgz#96a15ddb3a38dca5de9d75121378d6aa4a234fa5" + integrity sha512-GubgemnLvUJlkhouTM2BtX+g/voYT/Mqh0SASGwTnLvSkW1irjt14N911/ABb6m1Hru0TwScOgFgMFggp3igfQ== + dependencies: + "@octokit/core" "^3.0.0" + "@octokit/plugin-paginate-rest" "^2.2.0" + "@octokit/plugin-request-log" "^1.0.0" + "@octokit/plugin-rest-endpoint-methods" "4.1.2" + +"@octokit/types@^5.0.0", "@octokit/types@^5.0.1", "@octokit/types@^5.1.1", "@octokit/types@^5.2.0": + version "5.4.0" + resolved "https://artifacts.apextoaster.com/repository/group-npm/@octokit/types/-/types-5.4.0.tgz#25f2f8e24fec09214553168c41c06383c9d0f529" + integrity sha512-D/uotqF69M50OIlwMqgyIg9PuLT2daOiBAYF0P40I2ekFA2ESwwBY5dxZe/UhXdPvIbNKDzuZmQrO7rMpuFbcg== + dependencies: + "@types/node" ">= 8" + "@phenomnomnominal/tsquery@^4.0.0": version "4.1.0" resolved "https://artifacts.apextoaster.com/repository/group-npm/@phenomnomnominal/tsquery/-/tsquery-4.1.0.tgz#9c836d6db829b5127ccc1ffd8e4c2ad08d600071" @@ -408,11 +518,23 @@ resolved "https://artifacts.apextoaster.com/repository/group-npm/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= +"@types/jsonwebtoken@^8.3.3": + version "8.5.0" + resolved "https://artifacts.apextoaster.com/repository/group-npm/@types/jsonwebtoken/-/jsonwebtoken-8.5.0.tgz#2531d5e300803aa63279b232c014acf780c981c5" + integrity sha512-9bVao7LvyorRGZCw0VmH/dr7Og+NdjYSsKAxB43OQoComFbBgsEpoR9JW6+qSq/ogwVBg8GI2MfAlk4SYI4OLg== + dependencies: + "@types/node" "*" + "@types/lodash@^4.14.159": version "4.14.159" resolved "https://artifacts.apextoaster.com/repository/group-npm/@types/lodash/-/lodash-4.14.159.tgz#61089719dc6fdd9c5cb46efc827f2571d1517065" integrity sha512-gF7A72f7WQN33DpqOWw9geApQPh4M3PxluMtaHxWHXEGSN12/WbcEk/eNSqWNQcQhF66VSZ06vCF94CrHwXJDg== +"@types/lru-cache@^5.1.0": + version "5.1.0" + resolved "https://artifacts.apextoaster.com/repository/group-npm/@types/lru-cache/-/lru-cache-5.1.0.tgz#57f228f2b80c046b4a1bd5cac031f81f207f4f03" + integrity sha512-RaE0B+14ToE4l6UqdarKPnXwVDuigfFv+5j9Dze/Nqr23yyuqdNvzcZi3xB+3Agvi5R4EOgAksfv3lXX4vBt9w== + "@types/minimist@^1.2.0": version "1.2.0" resolved "https://artifacts.apextoaster.com/repository/group-npm/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6" @@ -423,7 +545,7 @@ resolved "https://artifacts.apextoaster.com/repository/group-npm/@types/mocha/-/mocha-8.0.1.tgz#813b4ff8dd9920d652e1e6b451ff1e371a4561d2" integrity sha512-TBZ6YdX7IZz4U9/mBoB8zCMRN1vXw8QdihRcZxD3I0Cv/r8XF8RggZ8WiXFws4aj5atzRR5hJrYer7g8nXwpnQ== -"@types/node@*": +"@types/node@*", "@types/node@>= 8": version "14.0.27" resolved "https://artifacts.apextoaster.com/repository/group-npm/@types/node/-/node-14.0.27.tgz#a151873af5a5e851b51b3b065c9e63390a9e0eb1" integrity sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g== @@ -807,6 +929,11 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +before-after-hook@^2.1.0: + version "2.1.0" + resolved "https://artifacts.apextoaster.com/repository/group-npm/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" + integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== + binary-extensions@^2.0.0: version "2.1.0" resolved "https://artifacts.apextoaster.com/repository/group-npm/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" @@ -837,6 +964,11 @@ browser-stdout@1.3.1: resolved "https://artifacts.apextoaster.com/repository/group-npm/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== +buffer-equal-constant-time@1.0.1: + version "1.0.1" + resolved "https://artifacts.apextoaster.com/repository/group-npm/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= + buffer-from@^1.0.0: version "1.1.1" resolved "https://artifacts.apextoaster.com/repository/group-npm/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -1456,6 +1588,11 @@ delayed-stream@~1.0.0: resolved "https://artifacts.apextoaster.com/repository/group-npm/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= +deprecation@^2.0.0, deprecation@^2.3.1: + version "2.3.1" + resolved "https://artifacts.apextoaster.com/repository/group-npm/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" + integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== + detect-indent@^6.0.0: version "6.0.0" resolved "https://artifacts.apextoaster.com/repository/group-npm/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" @@ -1530,6 +1667,13 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" +ecdsa-sig-formatter@1.0.11: + version "1.0.11" + resolved "https://artifacts.apextoaster.com/repository/group-npm/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" + integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== + dependencies: + safe-buffer "^5.0.1" + emoji-regex@^7.0.1: version "7.0.3" resolved "https://artifacts.apextoaster.com/repository/group-npm/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -2548,6 +2692,11 @@ is-plain-obj@^1.1.0: resolved "https://artifacts.apextoaster.com/repository/group-npm/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= +is-plain-object@^4.0.0: + version "4.1.1" + resolved "https://artifacts.apextoaster.com/repository/group-npm/is-plain-object/-/is-plain-object-4.1.1.tgz#1a14d6452cbd50790edc7fdaa0aed5a40a35ebb5" + integrity sha512-5Aw8LLVsDlZsETVMhoMXzqsXwQqr/0vlnBYzIXJbYo2F4yYlhLHs+Ez7Bod7IIQKWkJbJfxrWD7pA1Dw1TKrwA== + is-potential-custom-element-name@^1.0.0: version "1.0.0" resolved "https://artifacts.apextoaster.com/repository/group-npm/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" @@ -2863,6 +3012,22 @@ jsonparse@^1.2.0: resolved "https://artifacts.apextoaster.com/repository/group-npm/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= +jsonwebtoken@^8.5.1: + version "8.5.1" + resolved "https://artifacts.apextoaster.com/repository/group-npm/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" + integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== + dependencies: + jws "^3.2.2" + lodash.includes "^4.3.0" + lodash.isboolean "^3.0.3" + lodash.isinteger "^4.0.4" + lodash.isnumber "^3.0.3" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.once "^4.0.0" + ms "^2.1.1" + semver "^5.6.0" + jsprim@^1.2.2: version "1.4.1" resolved "https://artifacts.apextoaster.com/repository/group-npm/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -2878,6 +3043,23 @@ just-extend@^4.0.2: resolved "https://artifacts.apextoaster.com/repository/group-npm/just-extend/-/just-extend-4.1.0.tgz#7278a4027d889601640ee0ce0e5a00b992467da4" integrity sha512-ApcjaOdVTJ7y4r08xI5wIqpvwS48Q0PBG4DJROcEkH1f8MdAiNFyFxz3xoL0LWAVwjrwPYZdVHHxhRHcx/uGLA== +jwa@^1.4.1: + version "1.4.1" + resolved "https://artifacts.apextoaster.com/repository/group-npm/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" + integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== + dependencies: + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.11" + safe-buffer "^5.0.1" + +jws@^3.2.2: + version "3.2.2" + resolved "https://artifacts.apextoaster.com/repository/group-npm/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" + integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== + dependencies: + jwa "^1.4.1" + safe-buffer "^5.0.1" + kind-of@^6.0.3: version "6.0.3" resolved "https://artifacts.apextoaster.com/repository/group-npm/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" @@ -2973,16 +3155,51 @@ lodash.get@^4.0.0, lodash.get@^4.4.2: resolved "https://artifacts.apextoaster.com/repository/group-npm/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= +lodash.includes@^4.3.0: + version "4.3.0" + resolved "https://artifacts.apextoaster.com/repository/group-npm/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" + integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8= + +lodash.isboolean@^3.0.3: + version "3.0.3" + resolved "https://artifacts.apextoaster.com/repository/group-npm/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" + integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= + lodash.isequal@^4.0.0: version "4.5.0" resolved "https://artifacts.apextoaster.com/repository/group-npm/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= +lodash.isinteger@^4.0.4: + version "4.0.4" + resolved "https://artifacts.apextoaster.com/repository/group-npm/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" + integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M= + lodash.ismatch@^4.4.0: version "4.4.0" resolved "https://artifacts.apextoaster.com/repository/group-npm/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc= +lodash.isnumber@^3.0.3: + version "3.0.3" + resolved "https://artifacts.apextoaster.com/repository/group-npm/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" + integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w= + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://artifacts.apextoaster.com/repository/group-npm/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://artifacts.apextoaster.com/repository/group-npm/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= + +lodash.once@^4.0.0: + version "4.1.1" + resolved "https://artifacts.apextoaster.com/repository/group-npm/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://artifacts.apextoaster.com/repository/group-npm/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -3030,6 +3247,13 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://artifacts.apextoaster.com/repository/group-npm/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + magic-string@^0.25.2, magic-string@^0.25.3: version "0.25.7" resolved "https://artifacts.apextoaster.com/repository/group-npm/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" @@ -3315,6 +3539,11 @@ nise@^4.0.1: just-extend "^4.0.2" path-to-regexp "^1.7.0" +node-fetch@^2.3.0, node-fetch@^2.6.0: + version "2.6.0" + resolved "https://artifacts.apextoaster.com/repository/group-npm/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" + integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== + node-preload@^0.2.1: version "0.2.1" resolved "https://artifacts.apextoaster.com/repository/group-npm/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" @@ -3430,7 +3659,7 @@ object.values@^1.1.1: function-bind "^1.1.1" has "^1.0.3" -once@^1.3.0: +once@^1.3.0, once@^1.4.0: version "1.4.0" resolved "https://artifacts.apextoaster.com/repository/group-npm/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -4115,6 +4344,13 @@ rimraf@~2.4.0: dependencies: glob "^6.0.1" +rollup-plugin-alias@^2.2.0: + version "2.2.0" + resolved "https://artifacts.apextoaster.com/repository/group-npm/rollup-plugin-alias/-/rollup-plugin-alias-2.2.0.tgz#5004a2bc542a2eebb45b5a0fff8c6f540439decc" + integrity sha512-9ZK410qeFed4gGrHoojBpxLsHF74vPgsheGg9JRW5RbALAxqdvJbd357mSqWBqUrBfRVnZnNUXTZdYLxxQEA5A== + dependencies: + slash "^3.0.0" + rollup-plugin-commonjs@^10.1.0: version "10.1.0" resolved "https://artifacts.apextoaster.com/repository/group-npm/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz#417af3b54503878e084d127adf4d1caf8beb86fb" @@ -4238,6 +4474,11 @@ rollup-plugin-uglify@^6.0.4: serialize-javascript "^2.1.2" uglify-js "^3.4.9" +rollup-plugin-virtual@^1.0.1: + version "1.0.1" + resolved "https://artifacts.apextoaster.com/repository/group-npm/rollup-plugin-virtual/-/rollup-plugin-virtual-1.0.1.tgz#8227c94c605b981adfe433ea74de3551e42ffeb4" + integrity sha512-HCTBpV8MwP5lNzZrHD2moVxHIToHU1EkzkKGVj6Z0DcgUfxrxrZmeQirQeLz2yhnkJqRjwiVywK9CS8jDYakrw== + rollup-plugin-visualizer@^4.0.4: version "4.1.0" resolved "https://artifacts.apextoaster.com/repository/group-npm/rollup-plugin-visualizer/-/rollup-plugin-visualizer-4.1.0.tgz#92a1cebed30e7d39b3ab9db75426db06230edc5c" @@ -4330,7 +4571,7 @@ semver-regex@^2.0.0: resolved "https://artifacts.apextoaster.com/repository/group-npm/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: version "5.7.1" resolved "https://artifacts.apextoaster.com/repository/group-npm/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -5056,6 +5297,19 @@ uglify-js@^3.1.4, uglify-js@^3.4.9: resolved "https://artifacts.apextoaster.com/repository/group-npm/uglify-js/-/uglify-js-3.10.1.tgz#dd14767eb7150de97f2573a5ff210db14fffe4ad" integrity sha512-RjxApKkrPJB6kjJxQS3iZlf///REXWYxYJxO/MpmlQzVkDWVI3PSnCBWezMecmTU/TRkNxrl8bmsfFQCp+LO+Q== +universal-github-app-jwt@^1.0.1: + version "1.0.2" + resolved "https://artifacts.apextoaster.com/repository/group-npm/universal-github-app-jwt/-/universal-github-app-jwt-1.0.2.tgz#9a7305e44b2a0eb565d83d11682eebe5be8bde8b" + integrity sha512-bJ3hVBdPREry3vob+JBOjXkO76QAQkYTIJvQ62Ja7XBSrKv6v6gHaRBWADddvS0HiLF0Q6lCK1kg4ZJrj/Kl9g== + dependencies: + "@types/jsonwebtoken" "^8.3.3" + jsonwebtoken "^8.5.1" + +universal-user-agent@^6.0.0: + version "6.0.0" + resolved "https://artifacts.apextoaster.com/repository/group-npm/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" + integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== + universalify@^0.1.0: version "0.1.2" resolved "https://artifacts.apextoaster.com/repository/group-npm/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -5261,6 +5515,11 @@ y18n@^4.0.0: resolved "https://artifacts.apextoaster.com/repository/group-npm/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== +yallist@^4.0.0: + version "4.0.0" + resolved "https://artifacts.apextoaster.com/repository/group-npm/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yaml@^1.7.2: version "1.10.0" resolved "https://artifacts.apextoaster.com/repository/group-npm/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e"