diff --git a/modules/runners/lambdas/runners/package.json b/modules/runners/lambdas/runners/package.json index 5a59fbc508..9000d14bb8 100644 --- a/modules/runners/lambdas/runners/package.json +++ b/modules/runners/lambdas/runners/package.json @@ -12,7 +12,8 @@ "build": "ncc build src/lambda.ts -o dist", "dist": "yarn build && cd dist && zip ../runners.zip index.js", "format": "prettier --write \"**/*.ts\"", - "format-check": "prettier --check \"**/*.ts\"" + "format-check": "prettier --check \"**/*.ts\"", + "all": "yarn build && yarn format && yarn lint && yarn test" }, "devDependencies": { "@types/aws-lambda": "^8.10.75", @@ -22,10 +23,12 @@ "@typescript-eslint/parser": "^4.22.0", "@vercel/ncc": "^0.27.0", "eslint": "^7.22.0", + "eslint-plugin-prettier": "3.4.0", "jest": "^26.6.3", "jest-mock-extended": "^1.0.13", "moment-timezone": "^0.5.33", "nock": "^13.0.11", + "prettier": "2.3.1", "ts-jest": "^26.5.5", "ts-node-dev": "^1.1.6" }, @@ -37,6 +40,7 @@ "@types/aws-lambda": "^8.10.75", "@types/express": "^4.17.11", "@types/node": "^14.14.34", + "aws-sdk": "^2.888.0", "cron-parser": "^3.3.0", "typescript": "^4.2.3", "yn": "^4.0.0" diff --git a/modules/runners/lambdas/runners/src/lambda.ts b/modules/runners/lambdas/runners/src/lambda.ts index 576daafce2..06b8c1c0fc 100644 --- a/modules/runners/lambdas/runners/src/lambda.ts +++ b/modules/runners/lambdas/runners/src/lambda.ts @@ -2,6 +2,7 @@ import { scaleUp } from './scale-runners/scale-up'; import { scaleDown } from './scale-runners/scale-down'; import { SQSEvent, ScheduledEvent, Context } from 'aws-lambda'; +// eslint-disable-next-line @typescript-eslint/no-explicit-any module.exports.scaleUp = async (event: SQSEvent, context: Context, callback: any) => { console.dir(event, { depth: 5 }); try { @@ -15,6 +16,7 @@ module.exports.scaleUp = async (event: SQSEvent, context: Context, callback: any } }; +// eslint-disable-next-line @typescript-eslint/no-explicit-any module.exports.scaleDown = async (event: ScheduledEvent, context: Context, callback: any) => { try { scaleDown(); diff --git a/modules/runners/lambdas/runners/src/scale-runners/gh-auth.test.ts b/modules/runners/lambdas/runners/src/scale-runners/gh-auth.test.ts index c82cfbe7fb..3a3c79883b 100644 --- a/modules/runners/lambdas/runners/src/scale-runners/gh-auth.test.ts +++ b/modules/runners/lambdas/runners/src/scale-runners/gh-auth.test.ts @@ -51,7 +51,7 @@ describe('Test createGithubAuth', () => { }); describe('Test createGithubAuth', () => { - const mockedCreatAppAuth = (createAppAuth as unknown) as jest.Mock; + const mockedCreatAppAuth = createAppAuth as unknown as jest.Mock; const mockedDefaults = jest.spyOn(request, 'defaults'); let mockedRequestInterface: MockProxy; @@ -76,10 +76,14 @@ describe('Test createGithubAuth', () => { }; const mockedGet = mocked(getParameterValue); - mockedGet.mockResolvedValueOnce(GITHUB_APP_ID).mockResolvedValueOnce(b64) - .mockResolvedValueOnce(GITHUB_APP_CLIENT_ID).mockResolvedValueOnce(GITHUB_APP_CLIENT_SECRET); + mockedGet + .mockResolvedValueOnce(GITHUB_APP_ID) + .mockResolvedValueOnce(b64) + .mockResolvedValueOnce(GITHUB_APP_CLIENT_ID) + .mockResolvedValueOnce(GITHUB_APP_CLIENT_SECRET); const mockedAuth = jest.fn(); mockedAuth.mockResolvedValue({ token }); + // eslint-disable-next-line @typescript-eslint/no-unused-vars mockedCreatAppAuth.mockImplementation((authOptions: StrategyOptions) => { return mockedAuth; }); @@ -118,10 +122,14 @@ describe('Test createGithubAuth', () => { }; const mockedGet = mocked(getParameterValue); - mockedGet.mockResolvedValueOnce(GITHUB_APP_ID).mockResolvedValueOnce(b64) - .mockResolvedValueOnce(GITHUB_APP_CLIENT_ID).mockResolvedValueOnce(GITHUB_APP_CLIENT_SECRET); + mockedGet + .mockResolvedValueOnce(GITHUB_APP_ID) + .mockResolvedValueOnce(b64) + .mockResolvedValueOnce(GITHUB_APP_CLIENT_ID) + .mockResolvedValueOnce(GITHUB_APP_CLIENT_SECRET); const mockedAuth = jest.fn(); mockedAuth.mockResolvedValue({ token }); + // eslint-disable-next-line @typescript-eslint/no-unused-vars mockedCreatAppAuth.mockImplementation((authOptions: StrategyOptions) => { return mockedAuth; }); @@ -161,10 +169,14 @@ describe('Test createGithubAuth', () => { }; const mockedGet = mocked(getParameterValue); - mockedGet.mockResolvedValueOnce(GITHUB_APP_ID).mockResolvedValueOnce(b64) - .mockResolvedValueOnce(GITHUB_APP_CLIENT_ID).mockResolvedValueOnce(GITHUB_APP_CLIENT_SECRET); + mockedGet + .mockResolvedValueOnce(GITHUB_APP_ID) + .mockResolvedValueOnce(b64) + .mockResolvedValueOnce(GITHUB_APP_CLIENT_ID) + .mockResolvedValueOnce(GITHUB_APP_CLIENT_SECRET); const mockedAuth = jest.fn(); mockedAuth.mockResolvedValue({ token }); + // eslint-disable-next-line @typescript-eslint/no-unused-vars mockedCreatAppAuth.mockImplementation((authOptions: StrategyOptions) => { return mockedAuth; }); diff --git a/modules/runners/lambdas/runners/src/scale-runners/runners.test.ts b/modules/runners/lambdas/runners/src/scale-runners/runners.test.ts index 4436a1b63f..13e4f8e428 100644 --- a/modules/runners/lambdas/runners/src/scale-runners/runners.test.ts +++ b/modules/runners/lambdas/runners/src/scale-runners/runners.test.ts @@ -120,12 +120,15 @@ describe('create runner', () => { }); it('calls run instances with the correct config for repo', async () => { - await createRunner({ - runnerServiceConfig: 'bla', - environment: ENVIRONMENT, - runnerType: 'Repo', - runnerOwner: REPO_NAME - }, LAUNCH_TEMPLATE); + await createRunner( + { + runnerServiceConfig: 'bla', + environment: ENVIRONMENT, + runnerType: 'Repo', + runnerOwner: REPO_NAME, + }, + LAUNCH_TEMPLATE, + ); expect(mockEC2.runInstances).toBeCalledWith({ MaxCount: 1, MinCount: 1, @@ -144,12 +147,15 @@ describe('create runner', () => { }); it('calls run instances with the correct config for org', async () => { - await createRunner({ - runnerServiceConfig: 'bla', - environment: ENVIRONMENT, - runnerType: 'Org', - runnerOwner: ORG_NAME, - }, LAUNCH_TEMPLATE); + await createRunner( + { + runnerServiceConfig: 'bla', + environment: ENVIRONMENT, + runnerType: 'Org', + runnerOwner: ORG_NAME, + }, + LAUNCH_TEMPLATE, + ); expect(mockEC2.runInstances).toBeCalledWith({ MaxCount: 1, MinCount: 1, @@ -168,12 +174,15 @@ describe('create runner', () => { }); it('creates ssm parameters for each created instance', async () => { - await createRunner({ - runnerServiceConfig: 'bla', - environment: ENVIRONMENT, - runnerType: 'Org', - runnerOwner: ORG_NAME, - }, LAUNCH_TEMPLATE); + await createRunner( + { + runnerServiceConfig: 'bla', + environment: ENVIRONMENT, + runnerType: 'Org', + runnerOwner: ORG_NAME, + }, + LAUNCH_TEMPLATE, + ); expect(mockSSM.putParameter).toBeCalledWith({ Name: `${ENVIRONMENT}-i-1234`, Value: 'bla', @@ -185,12 +194,15 @@ describe('create runner', () => { mockRunInstances.promise.mockReturnValue({ Instances: [], }); - await createRunner({ - runnerServiceConfig: 'bla', - environment: ENVIRONMENT, - runnerType: 'Org', - runnerOwner: ORG_NAME, - }, LAUNCH_TEMPLATE); + await createRunner( + { + runnerServiceConfig: 'bla', + environment: ENVIRONMENT, + runnerType: 'Org', + runnerOwner: ORG_NAME, + }, + LAUNCH_TEMPLATE, + ); expect(mockSSM.putParameter).not.toBeCalled(); }); }); diff --git a/modules/runners/lambdas/runners/src/scale-runners/runners.ts b/modules/runners/lambdas/runners/src/scale-runners/runners.ts index 11b1058919..66f688fbba 100644 --- a/modules/runners/lambdas/runners/src/scale-runners/runners.ts +++ b/modules/runners/lambdas/runners/src/scale-runners/runners.ts @@ -84,7 +84,7 @@ export async function createRunner(runnerParameters: RunnerInputParameters, laun function getInstanceParams( launchTemplateName: string, - runnerParameters: RunnerInputParameters + runnerParameters: RunnerInputParameters, ): EC2.RunInstancesRequest { return { MaxCount: 1, @@ -101,7 +101,7 @@ function getInstanceParams( { Key: 'Application', Value: 'github-action-runner' }, { Key: runnerParameters.runnerType, - Value: runnerParameters.runnerOwner + Value: runnerParameters.runnerOwner, }, ], }, diff --git a/modules/runners/lambdas/runners/src/scale-runners/scale-down-config.test.ts b/modules/runners/lambdas/runners/src/scale-runners/scale-down-config.test.ts index d328720adf..56bda839de 100644 --- a/modules/runners/lambdas/runners/src/scale-runners/scale-down-config.test.ts +++ b/modules/runners/lambdas/runners/src/scale-runners/scale-down-config.test.ts @@ -18,7 +18,6 @@ function getConfig(cronTabs: string[]): ScalingDownConfigList { } describe('scaleDownConfig', () => { - describe('Check runners that should be kept idle based on config.', () => { it('One active cron configuration', async () => { const scaleDownConfig = getConfig(['* * * * * *']); diff --git a/modules/runners/lambdas/runners/src/scale-runners/scale-down-config.ts b/modules/runners/lambdas/runners/src/scale-runners/scale-down-config.ts index 47dbcd476d..b853a24432 100644 --- a/modules/runners/lambdas/runners/src/scale-runners/scale-down-config.ts +++ b/modules/runners/lambdas/runners/src/scale-runners/scale-down-config.ts @@ -19,7 +19,9 @@ function inPeriod(period: ScalingDownConfig): boolean { export function getIdleRunnerCount(scalingDownConfigs: ScalingDownConfigList): number { for (const scalingDownConfig of scalingDownConfigs) { - if (inPeriod(scalingDownConfig)) { return scalingDownConfig.idleCount; } + if (inPeriod(scalingDownConfig)) { + return scalingDownConfig.idleCount; + } } return 0; } diff --git a/modules/runners/lambdas/runners/src/scale-runners/scale-down.test.ts b/modules/runners/lambdas/runners/src/scale-runners/scale-down.test.ts index d8d9be514a..6d956d735b 100644 --- a/modules/runners/lambdas/runners/src/scale-runners/scale-down.test.ts +++ b/modules/runners/lambdas/runners/src/scale-runners/scale-down.test.ts @@ -157,9 +157,9 @@ describe('scaleDown', () => { type: 'app', token: 'token', appId: 1, - expiresAt: 'some-date' + expiresAt: 'some-date', }); - mockCreateClient.mockResolvedValue(new mocktokit); + mockCreateClient.mockResolvedValue(new mocktokit()); const mockListRunners = mocked(listRunners); mockListRunners.mockImplementation(async () => []); }); diff --git a/modules/runners/lambdas/runners/src/scale-runners/scale-down.ts b/modules/runners/lambdas/runners/src/scale-runners/scale-down.ts index 7d8a98a4a2..a522a19ec9 100644 --- a/modules/runners/lambdas/runners/src/scale-runners/scale-down.ts +++ b/modules/runners/lambdas/runners/src/scale-runners/scale-down.ts @@ -39,16 +39,16 @@ function createGitHubClientForRunnerFactory(): (runner: RunnerInfo, orgLevel: bo console.debug(`[createGitHubClientForRunner] Cache miss for ${key}`); const installationId = orgLevel ? ( - await githubClient.apps.getOrgInstallation({ - org: repo.repoOwner, - }) - ).data.id + await githubClient.apps.getOrgInstallation({ + org: repo.repoOwner, + }) + ).data.id : ( - await githubClient.apps.getRepoInstallation({ - owner: repo.repoOwner, - repo: repo.repoName, - }) - ).data.id; + await githubClient.apps.getRepoInstallation({ + owner: repo.repoOwner, + repo: repo.repoName, + }) + ).data.id; const ghAuth2 = await createGithubAuth(installationId, 'installation', ghesApiUrl); const octokit = await createOctoClient(ghAuth2.token, ghesApiUrl); cache.set(key, octokit); @@ -82,12 +82,12 @@ function listGithubRunnersFactory(): ( console.debug(`[listGithubRunners] Cache miss for ${key}`); const runners = enableOrgLevel ? await client.paginate(client.actions.listSelfHostedRunnersForOrg, { - org: repo.repoOwner, - }) + org: repo.repoOwner, + }) : await client.paginate(client.actions.listSelfHostedRunnersForRepo, { - owner: repo.repoOwner, - repo: repo.repoName, - }); + owner: repo.repoOwner, + repo: repo.repoName, + }); cache.set(key, runners); return runners; @@ -110,14 +110,14 @@ async function removeRunner( try { const result = enableOrgLevel ? await githubAppClient.actions.deleteSelfHostedRunnerFromOrg({ - runner_id: ghRunnerId, - org: repo.repoOwner, - }) + runner_id: ghRunnerId, + org: repo.repoOwner, + }) : await githubAppClient.actions.deleteSelfHostedRunnerFromRepo({ - runner_id: ghRunnerId, - owner: repo.repoOwner, - repo: repo.repoName, - }); + runner_id: ghRunnerId, + owner: repo.repoOwner, + repo: repo.repoName, + }); if (result.status == 204) { await terminateRunner(ec2runner); @@ -139,7 +139,7 @@ export async function scaleDown(): Promise { // list and sort runners, newest first. This ensure we keep the newest runners longer. const runners = ( await listRunners({ - environment + environment, }) ).sort((a, b): number => { if (a.launchTime === undefined) return 1; diff --git a/modules/runners/lambdas/runners/src/scale-runners/scale-up.test.ts b/modules/runners/lambdas/runners/src/scale-runners/scale-up.test.ts index 77d2db6b20..657e10e8cf 100644 --- a/modules/runners/lambdas/runners/src/scale-runners/scale-up.test.ts +++ b/modules/runners/lambdas/runners/src/scale-runners/scale-up.test.ts @@ -52,7 +52,7 @@ const EXPECTED_RUNNER_PARAMS: RunnerInputParameters = { environment: 'unit-test-environment', runnerServiceConfig: `--url https://github.enterprise.something/${TEST_DATA.repositoryOwner} --token 1234abcd `, runnerType: 'Org', - runnerOwner: TEST_DATA.repositoryOwner + runnerOwner: TEST_DATA.repositoryOwner, }; let expectedRunnerParams: RunnerInputParameters; @@ -111,10 +111,10 @@ describe('scaleUp with GHES', () => { type: 'app', token: 'token', appId: TEST_DATA.installationId, - expiresAt: 'some-date' + expiresAt: 'some-date', }); - mockCreateClient.mockResolvedValue(new mocktokit); + mockCreateClient.mockResolvedValue(new mocktokit()); process.env.GHES_URL = 'https://github.enterprise.something'; }); @@ -152,7 +152,7 @@ describe('scaleUp with GHES', () => { expect(listRunners).toBeCalledWith({ environment: 'unit-test-environment', runnerType: 'Org', - runnerOwner: TEST_DATA.repositoryOwner + runnerOwner: TEST_DATA.repositoryOwner, }); }); @@ -178,7 +178,7 @@ describe('scaleUp with GHES', () => { expect(spy).toBeCalledWith( TEST_DATA.installationId, 'installation', - "https://github.enterprise.something/api/v3" + 'https://github.enterprise.something/api/v3', ); }); @@ -186,12 +186,12 @@ describe('scaleUp with GHES', () => { const spy = jest.spyOn(ghAuth, 'createGithubAuth'); await scaleUpModule.scaleUp('aws:sqs', TEST_DATA_WITHOUT_INSTALL_ID); expect(mockOctokit.apps.getRepoInstallation).not.toBeCalled(); - expect(spy).toHaveBeenNthCalledWith(1, undefined, 'app', "https://github.enterprise.something/api/v3"); + expect(spy).toHaveBeenNthCalledWith(1, undefined, 'app', 'https://github.enterprise.something/api/v3'); expect(spy).toHaveBeenNthCalledWith( 2, TEST_DATA.installationId, 'installation', - "https://github.enterprise.something/api/v3" + 'https://github.enterprise.something/api/v3', ); }); @@ -204,8 +204,8 @@ describe('scaleUp with GHES', () => { process.env.RUNNER_EXTRA_LABELS = 'label1,label2'; process.env.RUNNER_GROUP_NAME = 'TEST_GROUP'; await scaleUpModule.scaleUp('aws:sqs', TEST_DATA); - expectedRunnerParams.runnerServiceConfig = expectedRunnerParams.runnerServiceConfig + - `--labels label1,label2 --runnergroup TEST_GROUP`; + expectedRunnerParams.runnerServiceConfig = + expectedRunnerParams.runnerServiceConfig + `--labels label1,label2 --runnergroup TEST_GROUP`; expect(createRunner).toBeCalledWith(expectedRunnerParams, 'lt-1'); }); @@ -236,7 +236,8 @@ describe('scaleUp with GHES', () => { expectedRunnerParams = { ...EXPECTED_RUNNER_PARAMS }; expectedRunnerParams.runnerType = 'Repo'; expectedRunnerParams.runnerOwner = `${TEST_DATA.repositoryOwner}/${TEST_DATA.repositoryName}`; - expectedRunnerParams.runnerServiceConfig = `--url ` + + expectedRunnerParams.runnerServiceConfig = + `--url ` + `https://github.enterprise.something/${TEST_DATA.repositoryOwner}/${TEST_DATA.repositoryName} ` + `--token 1234abcd `; }); @@ -281,7 +282,7 @@ describe('scaleUp with GHES', () => { expect(spy).toBeCalledWith( TEST_DATA.installationId, 'installation', - "https://github.enterprise.something/api/v3" + 'https://github.enterprise.something/api/v3', ); }); @@ -289,12 +290,12 @@ describe('scaleUp with GHES', () => { const spy = jest.spyOn(ghAuth, 'createGithubAuth'); await scaleUpModule.scaleUp('aws:sqs', TEST_DATA_WITHOUT_INSTALL_ID); expect(mockOctokit.apps.getOrgInstallation).not.toBeCalled(); - expect(spy).toHaveBeenNthCalledWith(1, undefined, 'app', "https://github.enterprise.something/api/v3"); + expect(spy).toHaveBeenNthCalledWith(1, undefined, 'app', 'https://github.enterprise.something/api/v3'); expect(spy).toHaveBeenNthCalledWith( 2, TEST_DATA.installationId, 'installation', - "https://github.enterprise.something/api/v3" + 'https://github.enterprise.something/api/v3', ); }); @@ -311,7 +312,8 @@ describe('scaleUp with GHES', () => { process.env.RUNNER_EXTRA_LABELS = 'label1,label2'; process.env.RUNNER_GROUP_NAME = 'TEST_GROUP_IGNORED'; await scaleUpModule.scaleUp('aws:sqs', TEST_DATA); - expectedRunnerParams.runnerServiceConfig = `--url ` + + expectedRunnerParams.runnerServiceConfig = + `--url ` + `https://github.enterprise.something/${TEST_DATA.repositoryOwner}/${TEST_DATA.repositoryName} ` + `--token 1234abcd --labels label1,label2`; expectedRunnerParams.runnerOwner = `${TEST_DATA.repositoryOwner}/${TEST_DATA.repositoryName}`; @@ -349,15 +351,15 @@ describe('scaleUp with public GH', () => { await scaleUpModule.scaleUp('aws:sqs', TEST_DATA); expect(mockOctokit.apps.getOrgInstallation).not.toBeCalled(); expect(mockOctokit.apps.getRepoInstallation).not.toBeCalled(); - expect(spy).toBeCalledWith(TEST_DATA.installationId, 'installation', ""); + expect(spy).toBeCalledWith(TEST_DATA.installationId, 'installation', ''); }); it('retrieves installation id if not set', async () => { const spy = jest.spyOn(ghAuth, 'createGithubAuth'); await scaleUpModule.scaleUp('aws:sqs', TEST_DATA_WITHOUT_INSTALL_ID); expect(mockOctokit.apps.getRepoInstallation).not.toBeCalled(); - expect(spy).toHaveBeenNthCalledWith(1, undefined, 'app', ""); - expect(spy).toHaveBeenNthCalledWith(2, TEST_DATA.installationId, 'installation', ""); + expect(spy).toHaveBeenNthCalledWith(1, undefined, 'app', ''); + expect(spy).toHaveBeenNthCalledWith(2, TEST_DATA.installationId, 'installation', ''); }); it('does not list runners when no workflows are queued', async () => { @@ -373,7 +375,7 @@ describe('scaleUp with public GH', () => { process.env.ENABLE_ORGANIZATION_RUNNERS = 'true'; expectedRunnerParams = { ...EXPECTED_RUNNER_PARAMS }; expectedRunnerParams.runnerServiceConfig = - `--url https://github.com/${TEST_DATA.repositoryOwner} --token 1234abcd `; + `--url https://github.com/${TEST_DATA.repositoryOwner} ` + '--token 1234abcd '; }); it('gets the current org level runners', async () => { @@ -381,7 +383,7 @@ describe('scaleUp with public GH', () => { expect(listRunners).toBeCalledWith({ environment: 'unit-test-environment', runnerType: 'Org', - runnerOwner: TEST_DATA.repositoryOwner + runnerOwner: TEST_DATA.repositoryOwner, }); }); @@ -429,9 +431,8 @@ describe('scaleUp with public GH', () => { expectedRunnerParams = { ...EXPECTED_RUNNER_PARAMS }; expectedRunnerParams.runnerType = 'Repo'; expectedRunnerParams.runnerOwner = `${TEST_DATA.repositoryOwner}/${TEST_DATA.repositoryName}`; - expectedRunnerParams.runnerServiceConfig = `--url ` + - `https://github.com/${TEST_DATA.repositoryOwner}/${TEST_DATA.repositoryName} ` + - `--token 1234abcd `; + expectedRunnerParams.runnerServiceConfig = + `--url ` + `https://github.com/${TEST_DATA.repositoryOwner}/${TEST_DATA.repositoryName} ` + `--token 1234abcd `; }); it('gets the current repo level runners', async () => { @@ -462,15 +463,15 @@ describe('scaleUp with public GH', () => { await scaleUpModule.scaleUp('aws:sqs', TEST_DATA); expect(mockOctokit.apps.getOrgInstallation).not.toBeCalled(); expect(mockOctokit.apps.getRepoInstallation).not.toBeCalled(); - expect(spy).toBeCalledWith(TEST_DATA.installationId, 'installation', ""); + expect(spy).toBeCalledWith(TEST_DATA.installationId, 'installation', ''); }); it('retrieves installation id if not set', async () => { const spy = jest.spyOn(ghAuth, 'createGithubAuth'); await scaleUpModule.scaleUp('aws:sqs', TEST_DATA_WITHOUT_INSTALL_ID); expect(mockOctokit.apps.getOrgInstallation).not.toBeCalled(); - expect(spy).toHaveBeenNthCalledWith(1, undefined, 'app', ""); - expect(spy).toHaveBeenNthCalledWith(2, TEST_DATA.installationId, 'installation', ""); + expect(spy).toHaveBeenNthCalledWith(1, undefined, 'app', ''); + expect(spy).toHaveBeenNthCalledWith(2, TEST_DATA.installationId, 'installation', ''); }); it('creates a runner with correct config and labels', async () => { diff --git a/modules/runners/lambdas/runners/src/scale-runners/scale-up.ts b/modules/runners/lambdas/runners/src/scale-runners/scale-up.ts index 07f9f05029..a42f907d98 100644 --- a/modules/runners/lambdas/runners/src/scale-runners/scale-up.ts +++ b/modules/runners/lambdas/runners/src/scale-runners/scale-up.ts @@ -30,16 +30,16 @@ export const scaleUp = async (eventSource: string, payload: ActionRequestMessage const githubClient = await createOctoClient(ghAuth.token, ghesApiUrl); installationId = enableOrgLevel ? ( - await githubClient.apps.getOrgInstallation({ - org: payload.repositoryOwner, - }) - ).data.id + await githubClient.apps.getOrgInstallation({ + org: payload.repositoryOwner, + }) + ).data.id : ( - await githubClient.apps.getRepoInstallation({ - owner: payload.repositoryOwner, - repo: payload.repositoryName, - }) - ).data.id; + await githubClient.apps.getRepoInstallation({ + owner: payload.repositoryOwner, + repo: payload.repositoryName, + }) + ).data.id; } const ghAuth = await createGithubAuth(installationId, 'installation', ghesApiUrl); @@ -58,20 +58,18 @@ export const scaleUp = async (eventSource: string, payload: ActionRequestMessage const currentRunners = await listRunners({ environment, runnerType, - runnerOwner + runnerOwner, }); - console.info( - `${runnerType} ${runnerOwner} has ${currentRunners.length}/${maximumRunners} runners`, - ); + console.info(`${runnerType} ${runnerOwner} has ${currentRunners.length}/${maximumRunners} runners`); if (currentRunners.length < maximumRunners) { // create token const registrationToken = enableOrgLevel ? await githubInstallationClient.actions.createRegistrationTokenForOrg({ org: payload.repositoryOwner }) : await githubInstallationClient.actions.createRegistrationTokenForRepo({ - owner: payload.repositoryOwner, - repo: payload.repositoryName, - }); + owner: payload.repositoryOwner, + repo: payload.repositoryName, + }); const token = registrationToken.data.token; const labelsArgument = runnerExtraLabels !== undefined ? `--labels ${runnerExtraLabels}` : ''; @@ -83,10 +81,9 @@ export const scaleUp = async (eventSource: string, payload: ActionRequestMessage runnerServiceConfig: enableOrgLevel ? `--url ${configBaseUrl}/${payload.repositoryOwner} --token ${token} ${labelsArgument}${runnerGroupArgument}` : `--url ${configBaseUrl}/${payload.repositoryOwner}/${payload.repositoryName} ` + - `--token ${token} ${labelsArgument}`, + `--token ${token} ${labelsArgument}`, runnerOwner, - runnerType - + runnerType, }); } else { console.info('No runner will be created, maximum number of runners reached.'); diff --git a/modules/runners/lambdas/runners/src/scale-runners/ssm.test.ts b/modules/runners/lambdas/runners/src/scale-runners/ssm.test.ts new file mode 100644 index 0000000000..5e2a2ddd85 --- /dev/null +++ b/modules/runners/lambdas/runners/src/scale-runners/ssm.test.ts @@ -0,0 +1,41 @@ +import nock from 'nock'; +import { getParameterValue } from './ssm'; +import { SSM, GetParameterCommandOutput } from '@aws-sdk/client-ssm'; + +jest.mock('@aws-sdk/client-ssm'); + +const cleanEnv = process.env; +const ENVIRONMENT = 'dev'; + +beforeEach(() => { + jest.resetModules(); + jest.clearAllMocks(); + process.env = { ...cleanEnv }; + nock.disableNetConnect(); +}); + +describe('Test createGithubAuth', () => { + test('Gets parameters and returns string', async () => { + // Arrange + const parameterValue = 'test'; + const parameterName = 'testParam'; + const output: GetParameterCommandOutput = { + Parameter: { + Name: parameterName, + Type: 'SecureString', + Value: parameterValue, + }, + $metadata: { + httpStatusCode: 200, + }, + }; + + SSM.prototype.getParameter = jest.fn().mockResolvedValue(output); + + // Act + const result = await getParameterValue(ENVIRONMENT, parameterName); + + // Assert + expect(result).toBe(parameterValue); + }); +}); diff --git a/modules/runners/lambdas/runners/src/scale-runners/ssm.ts b/modules/runners/lambdas/runners/src/scale-runners/ssm.ts index bb2663b568..9215ab6cb6 100644 --- a/modules/runners/lambdas/runners/src/scale-runners/ssm.ts +++ b/modules/runners/lambdas/runners/src/scale-runners/ssm.ts @@ -1,7 +1,7 @@ import { SSM } from '@aws-sdk/client-ssm'; export async function getParameterValue(environment: string, name: string): Promise { - const parameter_name = `/actions_runner/${environment}/${name}`; - const client = new SSM({ region: process.env.AWS_REGION as string }); - return (await client.getParameter({ Name: parameter_name, WithDecryption: true })).Parameter?.Value as string; + const parameter_name = `/actions_runner/${environment}/${name}`; + const client = new SSM({ region: process.env.AWS_REGION as string }); + return (await client.getParameter({ Name: parameter_name, WithDecryption: true })).Parameter?.Value as string; } diff --git a/modules/runners/lambdas/runners/yarn.lock b/modules/runners/lambdas/runners/yarn.lock index deb2cce845..80c502f9cf 100644 --- a/modules/runners/lambdas/runners/yarn.lock +++ b/modules/runners/lambdas/runners/yarn.lock @@ -4,14 +4,14 @@ "@aws-crypto/ie11-detection@^1.0.0": version "1.0.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-crypto/ie11-detection/-/ie11-detection-1.0.0.tgz#d3a6af29ba7f15458f79c41d1cd8cac3925e726a" + resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-1.0.0.tgz#d3a6af29ba7f15458f79c41d1cd8cac3925e726a" integrity sha1-06avKbp/FUWPecQdHNjKw5Jecmo= dependencies: tslib "^1.11.1" "@aws-crypto/sha256-browser@^1.0.0": version "1.1.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-crypto/sha256-browser/-/sha256-browser-1.1.0.tgz#20092cc6c08d8f04db0ed57b6f05cff150384f77" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-1.1.0.tgz#20092cc6c08d8f04db0ed57b6f05cff150384f77" integrity sha1-IAksxsCNjwTbDtV7bwXP8VA4T3c= dependencies: "@aws-crypto/ie11-detection" "^1.0.0" @@ -24,7 +24,7 @@ "@aws-crypto/sha256-js@^1.0.0", "@aws-crypto/sha256-js@^1.1.0": version "1.1.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-crypto/sha256-js/-/sha256-js-1.1.0.tgz#a58386ad18186e392e0f1d98d18831261d27b071" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-1.1.0.tgz#a58386ad18186e392e0f1d98d18831261d27b071" integrity sha1-pYOGrRgYbjkuDx2Y0YgxJh0nsHE= dependencies: "@aws-sdk/types" "^3.1.0" @@ -33,14 +33,14 @@ "@aws-crypto/supports-web-crypto@^1.0.0": version "1.0.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-crypto/supports-web-crypto/-/supports-web-crypto-1.0.0.tgz#c40901bc17ac1e875e248df16a2b47ad8bfd9a93" + resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-1.0.0.tgz#c40901bc17ac1e875e248df16a2b47ad8bfd9a93" integrity sha1-xAkBvBesHodeJI3xaitHrYv9mpM= dependencies: tslib "^1.11.1" "@aws-sdk/abort-controller@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/abort-controller/-/abort-controller-3.18.0.tgz#ff39bf1e07c7ae7790c26f93517a08fa3c27dd10" + resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.18.0.tgz#ff39bf1e07c7ae7790c26f93517a08fa3c27dd10" integrity sha1-/zm/HgfHrneQwm+TUXoI+jwn3RA= dependencies: "@aws-sdk/types" "3.18.0" @@ -48,7 +48,7 @@ "@aws-sdk/client-ssm@^3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/client-ssm/-/client-ssm-3.18.0.tgz#00ea3b1a1dba662760657edb18859e1aa8730ef3" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-ssm/-/client-ssm-3.18.0.tgz#00ea3b1a1dba662760657edb18859e1aa8730ef3" integrity sha1-AOo7Gh26ZidgZX7bGIWeGqhzDvM= dependencies: "@aws-crypto/sha256-browser" "^1.0.0" @@ -87,7 +87,7 @@ "@aws-sdk/client-sso@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/client-sso/-/client-sso-3.18.0.tgz#c3ce974fc6786cd2ff3ac9f14dafe5d28633aea9" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.18.0.tgz#c3ce974fc6786cd2ff3ac9f14dafe5d28633aea9" integrity sha1-w86XT8Z4bNL/OsnxTa/l0oYzrqk= dependencies: "@aws-crypto/sha256-browser" "^1.0.0" @@ -121,7 +121,7 @@ "@aws-sdk/client-sts@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/client-sts/-/client-sts-3.18.0.tgz#0add98614ed0233855b067c5e8b5905ae272808b" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.18.0.tgz#0add98614ed0233855b067c5e8b5905ae272808b" integrity sha1-Ct2YYU7QIzhVsGfF6LWQWuJygIs= dependencies: "@aws-crypto/sha256-browser" "^1.0.0" @@ -160,7 +160,7 @@ "@aws-sdk/config-resolver@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/config-resolver/-/config-resolver-3.18.0.tgz#39ce169776ccb96d9809df8a262c545e1318c342" + resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.18.0.tgz#39ce169776ccb96d9809df8a262c545e1318c342" integrity sha1-Oc4Wl3bMuW2YCd+KJixUXhMYw0I= dependencies: "@aws-sdk/signature-v4" "3.18.0" @@ -169,7 +169,7 @@ "@aws-sdk/credential-provider-env@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/credential-provider-env/-/credential-provider-env-3.18.0.tgz#1a9be36a06fb4dc131e4e9ba63d8f4c85320a729" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.18.0.tgz#1a9be36a06fb4dc131e4e9ba63d8f4c85320a729" integrity sha1-Gpvjagb7TcEx5Om6Y9j0yFMgpyk= dependencies: "@aws-sdk/property-provider" "3.18.0" @@ -178,7 +178,7 @@ "@aws-sdk/credential-provider-imds@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.18.0.tgz#6876189a2b04d8f9430c667d4a6f606c61044152" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.18.0.tgz#6876189a2b04d8f9430c667d4a6f606c61044152" integrity sha1-aHYYmisE2PlDDGZ9Sm9gbGEEQVI= dependencies: "@aws-sdk/property-provider" "3.18.0" @@ -187,7 +187,7 @@ "@aws-sdk/credential-provider-ini@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.18.0.tgz#1c3a4002473fb432a173569623cc535ce38e648c" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.18.0.tgz#1c3a4002473fb432a173569623cc535ce38e648c" integrity sha1-HDpAAkc/tDKhc1aWI8xTXOOOZIw= dependencies: "@aws-sdk/credential-provider-env" "3.18.0" @@ -200,7 +200,7 @@ "@aws-sdk/credential-provider-node@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/credential-provider-node/-/credential-provider-node-3.18.0.tgz#60f5e0a19e7bd689d35ced18e21a8cbd5dba5acc" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.18.0.tgz#60f5e0a19e7bd689d35ced18e21a8cbd5dba5acc" integrity sha1-YPXgoZ571onTXO0Y4hqMvV26Wsw= dependencies: "@aws-sdk/credential-provider-env" "3.18.0" @@ -216,7 +216,7 @@ "@aws-sdk/credential-provider-process@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/credential-provider-process/-/credential-provider-process-3.18.0.tgz#9fb5b69b8c0d04ac03c4c4e29aed0778c55908da" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.18.0.tgz#9fb5b69b8c0d04ac03c4c4e29aed0778c55908da" integrity sha1-n7W2m4wNBKwDxMTimu0HeMVZCNo= dependencies: "@aws-sdk/credential-provider-ini" "3.18.0" @@ -227,7 +227,7 @@ "@aws-sdk/credential-provider-sso@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.18.0.tgz#86c00cacf638fa110000d2f6b15013c81fb16cb4" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.18.0.tgz#86c00cacf638fa110000d2f6b15013c81fb16cb4" integrity sha1-hsAMrPY4+hEAANL2sVATyB+xbLQ= dependencies: "@aws-sdk/client-sso" "3.18.0" @@ -239,7 +239,7 @@ "@aws-sdk/credential-provider-web-identity@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.18.0.tgz#9730dc9a5e8575dd634fecd41413611dc75426da" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.18.0.tgz#9730dc9a5e8575dd634fecd41413611dc75426da" integrity sha1-lzDcml6Fdd1jT+zUFBNhHcdUJto= dependencies: "@aws-sdk/property-provider" "3.18.0" @@ -248,7 +248,7 @@ "@aws-sdk/fetch-http-handler@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.18.0.tgz#8614c8e99e7c4f80f07445a3ce962283672bdcef" + resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.18.0.tgz#8614c8e99e7c4f80f07445a3ce962283672bdcef" integrity sha1-hhTI6Z58T4DwdEWjzpYig2cr3O8= dependencies: "@aws-sdk/protocol-http" "3.18.0" @@ -259,7 +259,7 @@ "@aws-sdk/hash-node@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/hash-node/-/hash-node-3.18.0.tgz#6e7c8b7defb707315fe89d65ba33d484066c9543" + resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-3.18.0.tgz#6e7c8b7defb707315fe89d65ba33d484066c9543" integrity sha1-bnyLfe+3BzFf6J1lujPUhAZslUM= dependencies: "@aws-sdk/types" "3.18.0" @@ -268,7 +268,7 @@ "@aws-sdk/invalid-dependency@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/invalid-dependency/-/invalid-dependency-3.18.0.tgz#8edf6c9ebdcb5932fe3a81868bd78daf305f8649" + resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.18.0.tgz#8edf6c9ebdcb5932fe3a81868bd78daf305f8649" integrity sha1-jt9snr3LWTL+OoGGi9eNrzBfhkk= dependencies: "@aws-sdk/types" "3.18.0" @@ -276,14 +276,14 @@ "@aws-sdk/is-array-buffer@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/is-array-buffer/-/is-array-buffer-3.18.0.tgz#ad505580d4a7bcaba60f084553c11b8329ddb2b7" + resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.18.0.tgz#ad505580d4a7bcaba60f084553c11b8329ddb2b7" integrity sha1-rVBVgNSnvKumDwhFU8Ebgyndsrc= dependencies: tslib "^2.0.0" "@aws-sdk/middleware-content-length@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/middleware-content-length/-/middleware-content-length-3.18.0.tgz#3da77642f082bab1864926c3bc903f87e9187cd5" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.18.0.tgz#3da77642f082bab1864926c3bc903f87e9187cd5" integrity sha1-Pad2QvCCurGGSSbDvJA/h+kYfNU= dependencies: "@aws-sdk/protocol-http" "3.18.0" @@ -292,7 +292,7 @@ "@aws-sdk/middleware-host-header@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/middleware-host-header/-/middleware-host-header-3.18.0.tgz#527bed316636ec42aea113458fcd0358269f9db9" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.18.0.tgz#527bed316636ec42aea113458fcd0358269f9db9" integrity sha1-UnvtMWY27EKuoRNFj80DWCafnbk= dependencies: "@aws-sdk/protocol-http" "3.18.0" @@ -301,7 +301,7 @@ "@aws-sdk/middleware-logger@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/middleware-logger/-/middleware-logger-3.18.0.tgz#00addf99fcc41879fb4cd9521630931dbcf8deff" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.18.0.tgz#00addf99fcc41879fb4cd9521630931dbcf8deff" integrity sha1-AK3fmfzEGHn7TNlSFjCTHbz43v8= dependencies: "@aws-sdk/types" "3.18.0" @@ -309,7 +309,7 @@ "@aws-sdk/middleware-retry@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/middleware-retry/-/middleware-retry-3.18.0.tgz#61b5fd249bdd0c945ed04912030f098514a1bc7b" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.18.0.tgz#61b5fd249bdd0c945ed04912030f098514a1bc7b" integrity sha1-YbX9JJvdDJRe0EkSAw8JhRShvHs= dependencies: "@aws-sdk/protocol-http" "3.18.0" @@ -320,7 +320,7 @@ "@aws-sdk/middleware-sdk-sts@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.18.0.tgz#e26f0f335553e3e1956a3b190080d9f82377b5f9" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.18.0.tgz#e26f0f335553e3e1956a3b190080d9f82377b5f9" integrity sha1-4m8PM1VT4+GVajsZAIDZ+CN3tfk= dependencies: "@aws-sdk/middleware-signing" "3.18.0" @@ -332,7 +332,7 @@ "@aws-sdk/middleware-serde@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/middleware-serde/-/middleware-serde-3.18.0.tgz#583687b7b7f278ecbb18a5f273399ceef7921bf8" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.18.0.tgz#583687b7b7f278ecbb18a5f273399ceef7921bf8" integrity sha1-WDaHt7fyeOy7GKXyczmc7veSG/g= dependencies: "@aws-sdk/types" "3.18.0" @@ -340,7 +340,7 @@ "@aws-sdk/middleware-signing@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/middleware-signing/-/middleware-signing-3.18.0.tgz#6dc6b27d09e18b5b792acef0a856f13b1f76e8c9" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.18.0.tgz#6dc6b27d09e18b5b792acef0a856f13b1f76e8c9" integrity sha1-bcayfQnhi1t5Ks7wqFbxOx926Mk= dependencies: "@aws-sdk/property-provider" "3.18.0" @@ -351,14 +351,14 @@ "@aws-sdk/middleware-stack@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/middleware-stack/-/middleware-stack-3.18.0.tgz#e3977d0dce6690e83d281e4ae4313b7ee8547aea" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.18.0.tgz#e3977d0dce6690e83d281e4ae4313b7ee8547aea" integrity sha1-45d9Dc5mkOg9KB5K5DE7fuhUeuo= dependencies: tslib "^2.0.0" "@aws-sdk/middleware-user-agent@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.18.0.tgz#0319b51faa04fcc187f852538e5d99709e4f465f" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.18.0.tgz#0319b51faa04fcc187f852538e5d99709e4f465f" integrity sha1-Axm1H6oE/MGH+FJTjl2ZcJ5PRl8= dependencies: "@aws-sdk/protocol-http" "3.18.0" @@ -367,7 +367,7 @@ "@aws-sdk/node-config-provider@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/node-config-provider/-/node-config-provider-3.18.0.tgz#4dc346592f81084d09cd81c4e6a26cf9bcd2b083" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.18.0.tgz#4dc346592f81084d09cd81c4e6a26cf9bcd2b083" integrity sha1-TcNGWS+BCE0JzYHE5qJs+bzSsIM= dependencies: "@aws-sdk/property-provider" "3.18.0" @@ -377,7 +377,7 @@ "@aws-sdk/node-http-handler@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/node-http-handler/-/node-http-handler-3.18.0.tgz#9771340d008d83f245e0cb222d5bb31128805c74" + resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.18.0.tgz#9771340d008d83f245e0cb222d5bb31128805c74" integrity sha1-l3E0DQCNg/JF4MsiLVuzESiAXHQ= dependencies: "@aws-sdk/abort-controller" "3.18.0" @@ -388,7 +388,7 @@ "@aws-sdk/property-provider@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/property-provider/-/property-provider-3.18.0.tgz#7ab800603e12c4baad4492729cc072df7976cd0d" + resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.18.0.tgz#7ab800603e12c4baad4492729cc072df7976cd0d" integrity sha1-ergAYD4SxLqtRJJynMBy33l2zQ0= dependencies: "@aws-sdk/types" "3.18.0" @@ -396,7 +396,7 @@ "@aws-sdk/protocol-http@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/protocol-http/-/protocol-http-3.18.0.tgz#fc6448505b5b2b95afde71e33df5887371152a74" + resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.18.0.tgz#fc6448505b5b2b95afde71e33df5887371152a74" integrity sha1-/GRIUFtbK5Wv3nHjPfWIc3EVKnQ= dependencies: "@aws-sdk/types" "3.18.0" @@ -404,7 +404,7 @@ "@aws-sdk/querystring-builder@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/querystring-builder/-/querystring-builder-3.18.0.tgz#e49393e318072f70ea66e951a4db9795879bc43b" + resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.18.0.tgz#e49393e318072f70ea66e951a4db9795879bc43b" integrity sha1-5JOT4xgHL3DqZulRpNuXlYebxDs= dependencies: "@aws-sdk/types" "3.18.0" @@ -413,7 +413,7 @@ "@aws-sdk/querystring-parser@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/querystring-parser/-/querystring-parser-3.18.0.tgz#4210f462cfd5a3f79ef02f0a13a8406d7786b745" + resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.18.0.tgz#4210f462cfd5a3f79ef02f0a13a8406d7786b745" integrity sha1-QhD0Ys/Vo/ee8C8KE6hAbXeGt0U= dependencies: "@aws-sdk/types" "3.18.0" @@ -421,19 +421,19 @@ "@aws-sdk/service-error-classification@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/service-error-classification/-/service-error-classification-3.18.0.tgz#5e8a9609a6fcd64f1f3f0e71b8a0bbd3bed9b21c" + resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.18.0.tgz#5e8a9609a6fcd64f1f3f0e71b8a0bbd3bed9b21c" integrity sha1-XoqWCab81k8fPw5xuKC7077Zshw= "@aws-sdk/shared-ini-file-loader@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.18.0.tgz#9cc4cd96753862a1c0aaefa903353e4bc17dda6a" + resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.18.0.tgz#9cc4cd96753862a1c0aaefa903353e4bc17dda6a" integrity sha1-nMTNlnU4YqHAqu+pAzU+S8F92mo= dependencies: tslib "^2.0.0" "@aws-sdk/signature-v4@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/signature-v4/-/signature-v4-3.18.0.tgz#b816b3d5436a9e1cd008a95db192cf36fa87ebd8" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.18.0.tgz#b816b3d5436a9e1cd008a95db192cf36fa87ebd8" integrity sha1-uBaz1UNqnhzQCKldsZLPNvqH69g= dependencies: "@aws-sdk/is-array-buffer" "3.18.0" @@ -444,7 +444,7 @@ "@aws-sdk/smithy-client@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/smithy-client/-/smithy-client-3.18.0.tgz#ed441f76921c0f21558a35839cc1e8af91668647" + resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.18.0.tgz#ed441f76921c0f21558a35839cc1e8af91668647" integrity sha1-7UQfdpIcDyFVijWDnMHor5Fmhkc= dependencies: "@aws-sdk/middleware-stack" "3.18.0" @@ -453,12 +453,12 @@ "@aws-sdk/types@3.18.0", "@aws-sdk/types@^3.1.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/types/-/types-3.18.0.tgz#2158f054b83ea1319c47306bf08245fb26edeed0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.18.0.tgz#2158f054b83ea1319c47306bf08245fb26edeed0" integrity sha1-IVjwVLg+oTGcRzBr8IJF+ybt7tA= "@aws-sdk/url-parser@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/url-parser/-/url-parser-3.18.0.tgz#6974e26036f85194240eff475e27f4bcc2621d73" + resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.18.0.tgz#6974e26036f85194240eff475e27f4bcc2621d73" integrity sha1-aXTiYDb4UZQkDv9HXif0vMJiHXM= dependencies: "@aws-sdk/querystring-parser" "3.18.0" @@ -467,14 +467,14 @@ "@aws-sdk/util-base64-browser@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/util-base64-browser/-/util-base64-browser-3.18.0.tgz#f625d06c0e9923d39976fbe6474bbed5a287f491" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-browser/-/util-base64-browser-3.18.0.tgz#f625d06c0e9923d39976fbe6474bbed5a287f491" integrity sha1-9iXQbA6ZI9OZdvvmR0u+1aKH9JE= dependencies: tslib "^2.0.0" "@aws-sdk/util-base64-node@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/util-base64-node/-/util-base64-node-3.18.0.tgz#5807aa9c036a4037d68fca0fa353e66ea10c1a9d" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-node/-/util-base64-node-3.18.0.tgz#5807aa9c036a4037d68fca0fa353e66ea10c1a9d" integrity sha1-WAeqnANqQDfWj8oPo1PmbqEMGp0= dependencies: "@aws-sdk/util-buffer-from" "3.18.0" @@ -482,21 +482,21 @@ "@aws-sdk/util-body-length-browser@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.18.0.tgz#c67c51219f44540e8b032065302a5e3fc74012f6" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.18.0.tgz#c67c51219f44540e8b032065302a5e3fc74012f6" integrity sha1-xnxRIZ9EVA6LAyBlMCpeP8dAEvY= dependencies: tslib "^2.0.0" "@aws-sdk/util-body-length-node@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/util-body-length-node/-/util-body-length-node-3.18.0.tgz#fcd93fec88161ca3f2392c7cf657fc74a38acbe3" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-3.18.0.tgz#fcd93fec88161ca3f2392c7cf657fc74a38acbe3" integrity sha1-/Nk/7IgWHKPyOSx89lf8dKOKy+M= dependencies: tslib "^2.0.0" "@aws-sdk/util-buffer-from@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/util-buffer-from/-/util-buffer-from-3.18.0.tgz#b2e18e04b7e28f701cc60e2da342d32a60b449d4" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.18.0.tgz#b2e18e04b7e28f701cc60e2da342d32a60b449d4" integrity sha1-suGOBLfij3Acxg4to0LTKmC0SdQ= dependencies: "@aws-sdk/is-array-buffer" "3.18.0" @@ -504,28 +504,28 @@ "@aws-sdk/util-hex-encoding@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.18.0.tgz#b20ad7db4394c664e681b3744e216e405b2cdf13" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.18.0.tgz#b20ad7db4394c664e681b3744e216e405b2cdf13" integrity sha1-sgrX20OUxmTmgbN0TiFuQFss3xM= dependencies: tslib "^2.0.0" "@aws-sdk/util-locate-window@^3.0.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/util-locate-window/-/util-locate-window-3.18.0.tgz#47bb20b6f9fcff45ec948e125a4e8f892f029d80" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.18.0.tgz#47bb20b6f9fcff45ec948e125a4e8f892f029d80" integrity sha1-R7sgtvn8/0XslI4SWk6PiS8CnYA= dependencies: tslib "^2.0.0" "@aws-sdk/util-uri-escape@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/util-uri-escape/-/util-uri-escape-3.18.0.tgz#53efc98623e9fee697f45697bf9406737b68dce1" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.18.0.tgz#53efc98623e9fee697f45697bf9406737b68dce1" integrity sha1-U+/JhiPp/uaX9FaXv5QGc3to3OE= dependencies: tslib "^2.0.0" "@aws-sdk/util-user-agent-browser@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.18.0.tgz#4ffd5bf63361825e4fa0bc4b0599e1d73e624a94" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.18.0.tgz#4ffd5bf63361825e4fa0bc4b0599e1d73e624a94" integrity sha1-T/1b9jNhgl5PoLxLBZnh1z5iSpQ= dependencies: "@aws-sdk/types" "3.18.0" @@ -534,7 +534,7 @@ "@aws-sdk/util-user-agent-node@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.18.0.tgz#92a21dafc2cf0d1aeaf4ccd06987f0eb50c28e30" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.18.0.tgz#92a21dafc2cf0d1aeaf4ccd06987f0eb50c28e30" integrity sha1-kqIdr8LPDRrq9MzQaYfw61DCjjA= dependencies: "@aws-sdk/node-config-provider" "3.18.0" @@ -543,14 +543,14 @@ "@aws-sdk/util-utf8-browser@3.18.0", "@aws-sdk/util-utf8-browser@^3.0.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.18.0.tgz#d7d68290a323e4f9eb4f1d3f6add618c17e01a36" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.18.0.tgz#d7d68290a323e4f9eb4f1d3f6add618c17e01a36" integrity sha1-19aCkKMj5PnrTx0/at1hjBfgGjY= dependencies: tslib "^2.0.0" "@aws-sdk/util-utf8-node@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/util-utf8-node/-/util-utf8-node-3.18.0.tgz#634457d568225e1b2a78c4a474a92ea0cd82e280" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-node/-/util-utf8-node-3.18.0.tgz#634457d568225e1b2a78c4a474a92ea0cd82e280" integrity sha1-Y0RX1WgiXhsqeMSkdKkuoM2C4oA= dependencies: "@aws-sdk/util-buffer-from" "3.18.0" @@ -558,7 +558,7 @@ "@aws-sdk/util-waiter@3.18.0": version "3.18.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/@aws-sdk/util-waiter/-/util-waiter-3.18.0.tgz#a4d1ae639a22cc48479d70b22d6d759b7bac7f24" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-waiter/-/util-waiter-3.18.0.tgz#a4d1ae639a22cc48479d70b22d6d759b7bac7f24" integrity sha1-pNGuY5oizEhHnXCyLW11m3usfyQ= dependencies: "@aws-sdk/abort-controller" "3.18.0" @@ -1725,6 +1725,21 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +aws-sdk@^2.888.0: + version "2.934.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.934.0.tgz#1c26bd8ded15d2f6b2aa3301d35fc5daf1a61d68" + integrity sha1-HCa9je0V0vayqjMB01/F2vGmHWg= + dependencies: + buffer "4.9.2" + events "1.1.1" + ieee754 "1.1.13" + jmespath "0.15.0" + querystring "0.2.0" + sax "1.2.1" + url "0.10.3" + uuid "3.3.2" + xml2js "0.4.19" + babel-jest@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" @@ -1791,6 +1806,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base64-js@^1.0.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha1-GxtEAWClv3rUC2UPCVljSBkDkwo= + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -1816,7 +1836,7 @@ binary-extensions@^2.0.0: bowser@^2.11.0: version "2.11.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" integrity sha1-XKPDV1enqldxUAxwpzqfke9CCo8= brace-expansion@^1.1.7: @@ -1895,6 +1915,15 @@ buffer-from@1.x, buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== +buffer@4.9.2: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha1-Iw6tNEACmIZEhBqwJEr4xEu+Pvg= + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -2333,7 +2362,7 @@ enquirer@^2.3.5: entities@2.2.0: version "2.2.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha1-CY3JDruD2N/6CJ1VJWs1HTTE2lU= error-ex@^1.2.0, error-ex@^1.3.1: @@ -2375,6 +2404,13 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" +eslint-plugin-prettier@3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz#cdbad3bf1dbd2b177e9825737fe63b476a08f0c7" + integrity sha1-zbrTvx29Kxd+mCVzf+Y7R2oI8Mc= + dependencies: + prettier-linter-helpers "^1.0.0" + eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" @@ -2495,6 +2531,11 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +events@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= + exec-sh@^0.3.2: version "0.3.6" resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" @@ -2592,6 +2633,11 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha1-c+4RmC2Gyq95WYKNUZz+kn+sXwM= + fast-glob@^3.1.1: version "3.2.5" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" @@ -2616,7 +2662,7 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: fast-xml-parser@3.19.0: version "3.19.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz#cb637ec3f3999f51406dd8ff0e6fc4d83e520d01" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz#cb637ec3f3999f51406dd8ff0e6fc4d83e520d01" integrity sha1-y2N+w/OZn1FAbdj/Dm/E2D5SDQE= fastq@^1.6.0: @@ -2927,6 +2973,16 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +ieee754@1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q= + +ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I= + ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -3168,7 +3224,7 @@ is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" -isarray@1.0.0: +isarray@1.0.0, isarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -3611,6 +3667,11 @@ jest@^26.6.3: import-local "^3.0.2" jest-cli "^26.6.3" +jmespath@0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" + integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc= + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -4379,6 +4440,18 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha1-0j1B/hN1ZG3i0BBNNFSjAIgCz3s= + dependencies: + fast-diff "^1.1.2" + +prettier@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.1.tgz#76903c3f8c4449bc9ac597acefa24dc5ad4cbea6" + integrity sha1-dpA8P4xESbyaxZes76JNxa1MvqY= + pretty-format@^26.0.0, pretty-format@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" @@ -4420,11 +4493,21 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -4639,6 +4722,16 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" +sax@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" + integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o= + +sax@>=0.6.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha1-KBYjTiN4vdxOU1T6tcqold9xANk= + saxes@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" @@ -5122,7 +5215,7 @@ tslib@^1.11.1, tslib@^1.8.1: tslib@^2.0.0: version "2.3.0" - resolved "https://artylab.expedia.biz/api/npm/public-npm-virtual/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" integrity sha1-gDuM2rPhK6WBpMpByIObuw2ssJ4= tsutils@^3.21.0: @@ -5231,11 +5324,24 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= +url@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" + integrity sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== +uuid@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha1-G0r0lV6zB3xQHCOHL8ZROBFYcTE= + uuid@^8.3.0, uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" @@ -5373,6 +5479,19 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== +xml2js@0.4.19: + version "0.4.19" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" + integrity sha1-aGwg8hMgnpSr8NG88e+qKRx4J6c= + dependencies: + sax ">=0.6.0" + xmlbuilder "~9.0.1" + +xmlbuilder@~9.0.1: + version "9.0.7" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= + xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"