From 1f73dd27ecf137f35c2da0b09b91ae52bc6c3d06 Mon Sep 17 00:00:00 2001 From: Calvin Combs <66279577+comcalvi@users.noreply.github.com> Date: Thu, 25 Jul 2024 01:23:11 -0700 Subject: [PATCH] chore: upgrade to SDK v3 (#1709) Follow-up to #1706, which upgraded the node runtimes to 20. Node 20 is only compatible with SDK v3. This removes every use of the SDK v2. --- .projen/deps.json | 32 +- .projen/tasks.json | 4 +- .projenrc.ts | 8 +- .../disable-transition.test.ts | 38 +- .../change-control-lambda/handler.test.ts | 40 +- lib/__tests__/chime-notifier.test.ts | 12 +- .../certificate-signing-request.test.ts | 100 +- .../pgp-secret.test.ts | 101 +- .../private-key.test.ts | 89 +- lib/__tests__/watcher-handler.test.ts | 4 +- .../disable-transition.ts | 11 +- lib/change-control-lambda/index.ts | 11 +- .../handler/notifier-handler.ts | 10 +- .../src/certificate-signing-request.ts | 14 +- .../src/pgp-secret.ts | 22 +- .../src/private-key.ts | 10 +- lib/package-integrity/handler/repository.ts | 6 +- .../handler/watcher-handler.ts | 13 +- package.json | 16 +- yarn.lock | 1617 ++++++++++++++--- 20 files changed, 1648 insertions(+), 510 deletions(-) diff --git a/.projen/deps.json b/.projen/deps.json index bcd65f722..ec604933c 100644 --- a/.projen/deps.json +++ b/.projen/deps.json @@ -1,5 +1,25 @@ { "dependencies": [ + { + "name": "@aws-sdk/client-cloudwatch", + "type": "build" + }, + { + "name": "@aws-sdk/client-codepipeline", + "type": "build" + }, + { + "name": "@aws-sdk/client-s3", + "type": "build" + }, + { + "name": "@aws-sdk/client-secrets-manager", + "type": "build" + }, + { + "name": "@aws-sdk/client-ssm", + "type": "build" + }, { "name": "@types/adm-zip", "type": "build" @@ -51,14 +71,6 @@ "name": "aws-cdk-lib", "type": "build" }, - { - "name": "aws-sdk", - "type": "build" - }, - { - "name": "aws-sdk-mock", - "type": "build" - }, { "name": "constructs", "version": "^10.0.0", @@ -93,10 +105,6 @@ "name": "jest", "type": "build" }, - { - "name": "jest-create-mock-instance", - "type": "build" - }, { "name": "jest-junit", "version": "^15", diff --git a/.projen/tasks.json b/.projen/tasks.json index 0ed5ddc56..edd6c6e0d 100644 --- a/.projen/tasks.json +++ b/.projen/tasks.json @@ -286,13 +286,13 @@ }, "steps": [ { - "exec": "npx npm-check-updates@16 --upgrade --target=minor --peer --dep=dev,peer,prod,optional --filter=@types/adm-zip,@types/aws-lambda,@types/follow-redirects,@types/fs-extra,@types/jest,@types/tar,adm-zip,aws-cdk,aws-sdk,aws-sdk-mock,esbuild,eslint-import-resolver-typescript,eslint-plugin-import,follow-redirects,fs-extra,jest,jest-create-mock-instance,JSONStream,projen,rrule,tar,ts-jest,ts-node,typescript,changelog-parser" + "exec": "npx npm-check-updates@16 --upgrade --target=minor --peer --dep=dev,peer,prod,optional --filter=@aws-sdk/client-cloudwatch,@aws-sdk/client-codepipeline,@aws-sdk/client-s3,@aws-sdk/client-secrets-manager,@aws-sdk/client-ssm,@types/adm-zip,@types/aws-lambda,@types/follow-redirects,@types/fs-extra,@types/jest,@types/tar,adm-zip,aws-cdk,esbuild,eslint-import-resolver-typescript,eslint-plugin-import,follow-redirects,fs-extra,jest,JSONStream,projen,rrule,tar,ts-jest,ts-node,typescript,changelog-parser" }, { "exec": "yarn install --check-files" }, { - "exec": "yarn upgrade @types/adm-zip @types/aws-lambda @types/follow-redirects @types/fs-extra @types/jest @types/node @types/tar @typescript-eslint/eslint-plugin @typescript-eslint/parser adm-zip aws-cdk aws-sdk aws-sdk-mock esbuild eslint-import-resolver-typescript eslint-plugin-import eslint follow-redirects fs-extra jest jest-create-mock-instance jest-junit JSONStream minipass node-ical projen rrule standard-version tar ts-jest ts-node typescript changelog-parser" + "exec": "yarn upgrade @aws-sdk/client-cloudwatch @aws-sdk/client-codepipeline @aws-sdk/client-s3 @aws-sdk/client-secrets-manager @aws-sdk/client-ssm @types/adm-zip @types/aws-lambda @types/follow-redirects @types/fs-extra @types/jest @types/node @types/tar @typescript-eslint/eslint-plugin @typescript-eslint/parser adm-zip aws-cdk esbuild eslint-import-resolver-typescript eslint-plugin-import eslint follow-redirects fs-extra jest jest-junit JSONStream minipass node-ical projen rrule standard-version tar ts-jest ts-node typescript changelog-parser" }, { "exec": "npx projen" diff --git a/.projenrc.ts b/.projenrc.ts index 8063ea0db..4c4e9d1e1 100644 --- a/.projenrc.ts +++ b/.projenrc.ts @@ -27,14 +27,16 @@ const project = new typescript.TypeScriptProject({ '@types/adm-zip', '@types/follow-redirects', 'aws-cdk', - 'jest-create-mock-instance', 'constructs', 'aws-cdk-lib', 'standard-version', 'ts-jest', 'typescript', - 'aws-sdk', - 'aws-sdk-mock', + '@aws-sdk/client-s3', + '@aws-sdk/client-ssm', + '@aws-sdk/client-secrets-manager', + '@aws-sdk/client-codepipeline', + '@aws-sdk/client-cloudwatch', 'node-ical@0.15.1', // need to pin due to https://github.com/axios/axios/issues/5101 'rrule', 'esbuild', diff --git a/lib/__tests__/change-control-lambda/disable-transition.test.ts b/lib/__tests__/change-control-lambda/disable-transition.test.ts index 52d54833a..2deac9618 100644 --- a/lib/__tests__/change-control-lambda/disable-transition.test.ts +++ b/lib/__tests__/change-control-lambda/disable-transition.test.ts @@ -1,28 +1,28 @@ // eslint-disable-next-line @typescript-eslint/no-require-imports -import AWS = require('aws-sdk'); -const mockDisableStageTransition = jest.fn((_params: AWS.CodePipeline.DisableStageTransitionInput) => { - return { promise: () => Promise.resolve({}) }; -}).mockName('AWS.CodePipeline.disableStageTransition'); - -const mockEnableStageTransition = jest.fn((_params: AWS.CodePipeline.EnableStageTransitionInput) => { - return { promise: () => Promise.resolve({}) }; -}).mockName('AWS.CodePipeline.enableStageTransition'); const pipelineName = 'MyPipeline'; const stageName = 'MyStage'; -jest.mock('aws-sdk', () => { +const mockCodePipelineClient = { + disableStageTransition: jest.fn().mockName('CodePipeline.disableStageTransition'), + enableStageTransition: jest.fn().mockName('CodePipeline.enableStageTransition'), + +}; + +jest.mock('@aws-sdk/client-codepipeline', () => { return { - CodePipeline: jest.fn(() => { - return { - disableStageTransition: mockDisableStageTransition, - enableStageTransition: mockEnableStageTransition, - }; + CodePipeline: jest.fn().mockImplementation(() => { + return mockCodePipelineClient; }), }; }); +beforeEach(() => { + mockCodePipelineClient.disableStageTransition.mockImplementation(() => Promise.resolve({})); + mockCodePipelineClient.enableStageTransition.mockImplementation(() => Promise.resolve({})); +}); + describe('disableTransition', () => { // eslint-disable-next-line @typescript-eslint/no-require-imports const disableTransition = require('../../change-control-lambda/disable-transition').disableTransition; @@ -34,7 +34,7 @@ describe('disableTransition', () => { await expect(disableTransition(pipelineName, stageName, reason)) .resolves.toBeUndefined(); // THEN - expect(mockDisableStageTransition) + expect(mockCodePipelineClient.disableStageTransition) .toHaveBeenCalledWith({ pipelineName, stageName, reason, transitionType: 'Inbound' }); }); @@ -46,7 +46,7 @@ describe('disableTransition', () => { .resolves.toBeUndefined(); // THEN const cleanReason = reason.replace(/[^a-zA-Z0-9!@ \(\)\.\*\?\-]/g, '-'); - expect(mockDisableStageTransition) + expect(mockCodePipelineClient.disableStageTransition) .toHaveBeenCalledWith({ pipelineName, stageName, reason: cleanReason, transitionType: 'Inbound' }); }); @@ -58,7 +58,7 @@ describe('disableTransition', () => { .resolves.toBeUndefined(); // THEN const cleanReason = reason.slice(0, 300); - expect(mockDisableStageTransition) + expect(mockCodePipelineClient.disableStageTransition) .toHaveBeenCalledWith({ pipelineName, stageName, reason: cleanReason, transitionType: 'Inbound' }); }); }); @@ -68,9 +68,9 @@ test('enableTransition', async () => { // eslint-disable-next-line @typescript-eslint/no-require-imports const enableTransition = require('../../change-control-lambda/disable-transition').enableTransition; // WHEN - await expect(() => enableTransition(pipelineName, stageName)) + expect(() => enableTransition(pipelineName, stageName)) .not.toThrow(); // THEN - expect(mockEnableStageTransition) + expect(mockCodePipelineClient.enableStageTransition) .toHaveBeenCalledWith({ pipelineName, stageName, transitionType: 'Inbound' }); }); diff --git a/lib/__tests__/change-control-lambda/handler.test.ts b/lib/__tests__/change-control-lambda/handler.test.ts index 48a6eb5c7..2f2466880 100644 --- a/lib/__tests__/change-control-lambda/handler.test.ts +++ b/lib/__tests__/change-control-lambda/handler.test.ts @@ -10,23 +10,21 @@ import * as timeWindow from '../../change-control-lambda/time-window'; // | | // |_| -jest.mock('aws-sdk', () => { +const mockS3Client = { + getObject: jest.fn().mockName('S3.GetObject'), +}; + +jest.mock('@aws-sdk/client-s3', () => { return { - S3: jest.fn(() => { - return { - getObject: mockGetObject, - }; - }).mockName('AWS.S3'), - CodePipeline: jest.fn(() => { - return {}; - }).mockName('AWS.CodePipeline'), + S3: jest.fn().mockImplementation(() => { + return mockS3Client; + }), }; }); + jest.mock('../../change-control-lambda/disable-transition'); jest.mock('../../change-control-lambda/time-window'); -const mockGetObject = jest.fn().mockName('AWS.S3.getObject'); - const mockEnableTransition = jest.fn((_pipeline: string, _stage: string) => Promise.resolve(undefined)) .mockName('enableTransition'); @@ -87,9 +85,7 @@ describe('handler', () => { test('when S3 access fails', async () => { // GIVEN const e = new Error('S3 Not Working - the apocalypse has begun'); - mockGetObject.mockImplementationOnce(() => ({ - promise: () => Promise.reject(e), - })); + mockS3Client.getObject.mockImplementationOnce(() => Promise.reject(e)); // THEN return expect(handler()).rejects.toThrow(e); @@ -99,9 +95,7 @@ describe('handler', () => { for (const cause of ['NoSuchKey', 'NoSuchBucket']) { test(`when no calendar is found (due to ${cause})`, async () => { // GIVEN - mockGetObject.mockImplementationOnce(() => ({ - promise: () => Promise.reject({ code: cause, message: cause }), - })); + mockS3Client.getObject.mockImplementationOnce(() => Promise.reject({ code: cause, message: cause })); mockShouldBlockPipeline.mockReturnValueOnce({ summary: 'Blocked by default', // Other properties - values irrelevant @@ -117,10 +111,10 @@ describe('handler', () => { await expect(handler()).resolves.toBeUndefined(); // THEN - await expect(mockGetObject) + expect(mockS3Client.getObject) .toHaveBeenCalledWith({ Bucket: bucketName, Key: objectKey }); - await expect(mockShouldBlockPipeline) + expect(mockShouldBlockPipeline) .toHaveBeenCalledWith(expect.stringContaining('No change control calendar was found'), expect.any(Date)); @@ -132,19 +126,17 @@ describe('handler', () => { test('when the window is open', async () => { // GIVEN const iCalBody = 'Some iCal document (obviously, this is a fake one!)'; - mockGetObject.mockImplementationOnce(() => ({ - promise: () => Promise.resolve({ Body: iCalBody }), - })); + mockS3Client.getObject.mockImplementationOnce(() => Promise.resolve({ Body: iCalBody })); mockShouldBlockPipeline.mockReturnValueOnce(undefined); // WHEN await expect(handler()).resolves.toBeUndefined(); // THEN - await expect(mockGetObject) + expect(mockS3Client.getObject) .toHaveBeenCalledWith({ Bucket: bucketName, Key: objectKey }); - await expect(mockShouldBlockPipeline) + expect(mockShouldBlockPipeline) .toHaveBeenCalledWith(iCalBody, expect.any(Date)); return expect(mockEnableTransition) diff --git a/lib/__tests__/chime-notifier.test.ts b/lib/__tests__/chime-notifier.test.ts index b64ef6ddc..c509c3363 100644 --- a/lib/__tests__/chime-notifier.test.ts +++ b/lib/__tests__/chime-notifier.test.ts @@ -31,8 +31,8 @@ jest.mock('https', () => { const mockHttpsWrite = jest.fn(); test('call codepipeline and then post to webhooks', async () => { - codePipeline.getPipelineExecution = jest.fn().mockReturnValue({ - promise: () => Promise.resolve({ + codePipeline.getPipelineExecution = jest.fn().mockReturnValue( + Promise.resolve({ pipelineExecution: { pipelineExecutionId: 'xyz', pipelineVersion: 1, @@ -48,10 +48,10 @@ test('call codepipeline and then post to webhooks', async () => { ], }, }), - }); + ); - codePipeline.listActionExecutions = jest.fn().mockReturnValue({ - promise: () => Promise.resolve({ + codePipeline.listActionExecutions = jest.fn().mockReturnValue( + Promise.resolve({ actionExecutionDetails: [ { stageName: 'Source', @@ -75,7 +75,7 @@ test('call codepipeline and then post to webhooks', async () => { }, ], }), - }); + ); await handler({ webhookUrls: ['https://my.url/'], diff --git a/lib/__tests__/custom-resource-handlers/certificate-signing-request.test.ts b/lib/__tests__/custom-resource-handlers/certificate-signing-request.test.ts index f92c8e868..5757c1e99 100644 --- a/lib/__tests__/custom-resource-handlers/certificate-signing-request.test.ts +++ b/lib/__tests__/custom-resource-handlers/certificate-signing-request.test.ts @@ -1,9 +1,7 @@ /* eslint-disable @typescript-eslint/no-require-imports */ import fs = require('fs'); import path = require('path'); -import aws = require('aws-sdk'); -import awsMock = require('aws-sdk-mock'); -import { createMockInstance } from 'jest-create-mock-instance'; +import { PutObjectCommandInput } from '@aws-sdk/client-s3'; import cfn = require('../../custom-resource-handlers/src/_cloud-formation'); import lambda = require('../../custom-resource-handlers/src/_lambda'); @@ -76,11 +74,7 @@ fs.readFile = jest.fn().mockName('fs.readFile') }) as any; const mockWriteFile = fs.writeFile = jest.fn().mockName('fs.writeFile') .mockImplementation((_pth, _data, _opts, cb) => cb()) as any; -const mockSecretsManager = createMockInstance(aws.SecretsManager); -aws.SecretsManager = jest.fn().mockName('SecretsManager') - .mockImplementation(() => mockSecretsManager) as any; -mockSecretsManager.getSecretValue = jest.fn().mockName('SecretsManager.getSecretValue') - .mockImplementation(() => ({ promise: () => Promise.resolve({ SecretString: mockPrivateKey }) })) as any; + const mockExec = jest.fn().mockName('_exec').mockRejectedValue(new Error('Unexpected call!')); jest.mock('../../custom-resource-handlers/src/_exec', () => mockExec); jest.mock('../../custom-resource-handlers/src/_rmrf', () => mockRmrf); @@ -89,8 +83,33 @@ const mockRmrf = jest.fn().mockName('_rmrf') jest.mock('../../custom-resource-handlers/src/_rmrf', () => mockRmrf); jest.spyOn(cfn, 'sendResponse').mockName('cfn.sendResponse').mockResolvedValue(Promise.resolve()); -const mockPutObject = jest.fn().mockName('S3.putObject').mockImplementation( - (request: aws.S3.PutObjectRequest) => { +const mockSecretsManagerClient = { + getSecretValue: jest.fn().mockName('SecretsManager.getSecretValue'), +}; + +const mockS3Client = { + putObject: jest.fn().mockName('S3.putObject'), +}; + +jest.mock('@aws-sdk/client-secrets-manager', () => { + return { + SecretsManager: jest.fn().mockImplementation(() => { + return mockSecretsManagerClient; + }), + }; +}); + +jest.mock('@aws-sdk/client-s3', () => { + return { + S3: jest.fn().mockImplementation(() => { + return mockS3Client; + }), + }; +}); + +beforeEach(() => { + mockSecretsManagerClient.getSecretValue.mockImplementation(() => Promise.resolve({ SecretString: mockPrivateKey })); + mockS3Client.putObject.mockImplementation((request: PutObjectCommandInput) => { expect(request.Bucket).toBe(outputBucketName); expect(request.ContentType).toBe('application/x-pem-file'); switch (request.Key) { @@ -101,20 +120,11 @@ const mockPutObject = jest.fn().mockName('S3.putObject').mockImplementation( expect(request.Body).toBe(mockCertificate); break; default: - return { promise: () => Promise.reject(`Unexpected object key requested: ${request.Key}`) }; + return Promise.reject(`Unexpected object key requested: ${request.Key}`); } - return { promise: () => Promise.resolve() }; - }, -); - -beforeEach(() => { - awsMock.setSDKInstance(aws as any); - jest.clearAllMocks(); -}); - -afterEach(() => { - awsMock.restore(); + return Promise.resolve(); + }); }); test('Create', async () => { @@ -125,16 +135,16 @@ test('Create', async () => { }; mockExec.mockImplementation(async (cmd: string, ...args: string[]) => { - await expect(cmd).toBe('/opt/openssl'); + expect(cmd).toBe('/opt/openssl'); switch (args[0]) { case 'req': - await expect(args).toEqual(['req', '-config', require('path').join(mockTmpDir, 'csr.config'), + expect(args).toEqual(['req', '-config', require('path').join(mockTmpDir, 'csr.config'), '-key', require('path').join(mockTmpDir, 'private_key.pem'), '-out', require('path').join(mockTmpDir, 'csr.pem'), '-new']); break; case 'x509': - await expect(args).toEqual(['x509', '-in', require('path').join(mockTmpDir, 'csr.pem'), + expect(args).toEqual(['x509', '-in', require('path').join(mockTmpDir, 'csr.pem'), '-out', require('path').join(mockTmpDir, 'cert.pem'), '-req', '-signkey', require('path').join(mockTmpDir, 'private_key.pem'), @@ -146,25 +156,23 @@ test('Create', async () => { return ''; }); - awsMock.mock('S3', 'putObject', mockPutObject); - const { handler } = require('../../custom-resource-handlers/src/certificate-signing-request'); await expect(handler(event, context)).resolves.toBe(undefined); - await expect(mockWriteFile) - .toBeCalledWith(path.join(mockTmpDir, 'csr.config'), + expect(mockWriteFile) + .toHaveBeenCalledWith(path.join(mockTmpDir, 'csr.config'), csrDocument, expect.anything(), expect.any(Function)); - await expect(mockWriteFile) - .toBeCalledWith(path.join(mockTmpDir, 'private_key.pem'), + expect(mockWriteFile) + .toHaveBeenCalledWith(path.join(mockTmpDir, 'private_key.pem'), mockPrivateKey, expect.anything(), expect.any(Function)); - expect(mockPutObject).toHaveBeenCalledTimes(2); - await expect(mockRmrf).toBeCalledWith(mockTmpDir); + expect(mockS3Client.putObject).toHaveBeenCalledTimes(2); + expect(mockRmrf).toHaveBeenCalledWith(mockTmpDir); return expect(cfn.sendResponse) - .toBeCalledWith(event, + .toHaveBeenCalledWith(event, cfn.Status.SUCCESS, event.LogicalResourceId, { Ref: event.LogicalResourceId, CSR: `s3://${outputBucketName}/certificate-signing-request.pem`, SelfSignedCertificate: `s3://${outputBucketName}/self-signed-certificate.pem` }); @@ -179,16 +187,16 @@ test('Update', async () => { }; mockExec.mockImplementation(async (cmd: string, ...args: string[]) => { - await expect(cmd).toBe('/opt/openssl'); + expect(cmd).toBe('/opt/openssl'); switch (args[0]) { case 'req': - await expect(args).toEqual(['req', '-config', require('path').join(mockTmpDir, 'csr.config'), + expect(args).toEqual(['req', '-config', require('path').join(mockTmpDir, 'csr.config'), '-key', require('path').join(mockTmpDir, 'private_key.pem'), '-out', require('path').join(mockTmpDir, 'csr.pem'), '-new']); break; case 'x509': - await expect(args).toEqual(['x509', '-in', require('path').join(mockTmpDir, 'csr.pem'), + expect(args).toEqual(['x509', '-in', require('path').join(mockTmpDir, 'csr.pem'), '-out', require('path').join(mockTmpDir, 'cert.pem'), '-req', '-signkey', require('path').join(mockTmpDir, 'private_key.pem'), @@ -200,25 +208,23 @@ test('Update', async () => { return ''; }); - awsMock.mock('S3', 'putObject', mockPutObject); - const { handler } = require('../../custom-resource-handlers/src/certificate-signing-request'); await expect(handler(event, context)).resolves.toBe(undefined); - await expect(mockWriteFile) - .toBeCalledWith(path.join(mockTmpDir, 'csr.config'), + expect(mockWriteFile) + .toHaveBeenCalledWith(path.join(mockTmpDir, 'csr.config'), csrDocument, expect.anything(), expect.any(Function)); - await expect(mockWriteFile) - .toBeCalledWith(path.join(mockTmpDir, 'private_key.pem'), + expect(mockWriteFile) + .toHaveBeenCalledWith(path.join(mockTmpDir, 'private_key.pem'), mockPrivateKey, expect.anything(), expect.any(Function)); - expect(mockPutObject).toHaveBeenCalledTimes(2); - await expect(mockRmrf).toBeCalledWith(mockTmpDir); + expect(mockS3Client.putObject).toHaveBeenCalledTimes(2); + expect(mockRmrf).toHaveBeenCalledWith(mockTmpDir); return expect(cfn.sendResponse) - .toBeCalledWith(event, + .toHaveBeenCalledWith(event, cfn.Status.SUCCESS, event.LogicalResourceId, { Ref: event.LogicalResourceId, CSR: `s3://${outputBucketName}/certificate-signing-request.pem`, SelfSignedCertificate: `s3://${outputBucketName}/self-signed-certificate.pem` }); @@ -235,7 +241,7 @@ test('Delete', async () => { await expect(handler(event, context)).resolves.toBe(undefined); return expect(cfn.sendResponse) - .toBeCalledWith(event, + .toHaveBeenCalledWith(event, cfn.Status.SUCCESS, event.LogicalResourceId, { Ref: event.LogicalResourceId }); diff --git a/lib/__tests__/custom-resource-handlers/pgp-secret.test.ts b/lib/__tests__/custom-resource-handlers/pgp-secret.test.ts index 29590ac90..f42eca052 100644 --- a/lib/__tests__/custom-resource-handlers/pgp-secret.test.ts +++ b/lib/__tests__/custom-resource-handlers/pgp-secret.test.ts @@ -2,8 +2,6 @@ import crypto = require('crypto'); import fs = require('fs'); import path = require('path'); -import aws = require('aws-sdk'); -import { createMockInstance } from 'jest-create-mock-instance'; import cfn = require('../../custom-resource-handlers/src/_cloud-formation'); import lambda = require('../../custom-resource-handlers/src/_lambda'); @@ -50,19 +48,19 @@ jest.spyOn(fs, 'mkdtemp') const writeFile = fs.writeFile = jest.fn().mockName('fs.writeFile') .mockImplementation((_pth, _data, _opts, cb) => cb()) as any; jest.mock('../../custom-resource-handlers/src/_exec', () => async (cmd: string, ...args: string[]) => { - await expect(cmd).toBe('gpg'); + expect(cmd).toBe('gpg'); const process = require('process'); - await expect(process.env.GNUPGHOME).toBe(mockTmpDir); - await expect(args).toContain('--batch'); + expect(process.env.GNUPGHOME).toBe(mockTmpDir); + expect(args).toContain('--batch'); if (args.indexOf('--gen-key') !== -1) { - await expect(args[args.indexOf('--gen-key') + 1]).toBe(require('path').join(mockTmpDir, 'key.config')); + expect(args[args.indexOf('--gen-key') + 1]).toBe(require('path').join(mockTmpDir, 'key.config')); return ''; } - await expect(args).toContain('--yes'); + expect(args).toContain('--yes'); if (args.indexOf('--import') !== -1) { return ''; } - await expect(args).toContain('--armor'); + expect(args).toContain('--armor'); if (args.indexOf('--export') !== -1) { return mockPublicKey; } else if (args.indexOf('--export-secret-keys') !== -1) { @@ -70,35 +68,57 @@ jest.mock('../../custom-resource-handlers/src/_exec', () => async (cmd: string, } throw new Error('Invalid call to _exec'); }); -const mockSecretsManager = createMockInstance(aws.SecretsManager); -aws.SecretsManager = jest.fn().mockName('SecretsManager') - .mockImplementation(() => mockSecretsManager) as any; + +const mockSecretsManagerClient = { + createSecret: jest.fn().mockName('SecretsManager.createSecret'), + updateSecret: jest.fn().mockName('SecretsManager.updateSecret'), + getSecretValue: jest.fn().mockName('SecretsManager.getSecretValue'), + deleteSecret: jest.fn().mockName('SecretsManager.deleteSecret'), +}; + +jest.mock('@aws-sdk/client-secrets-manager', () => { + return { + SecretsManager: jest.fn().mockImplementation(() => { + return mockSecretsManagerClient; + }), + }; +}); + +beforeEach(() => { + mockSecretsManagerClient.createSecret.mockImplementation(() => Promise.resolve({ ARN: secretArn, VersionId: 'Secret-VersionId' })); + mockSecretsManagerClient.updateSecret.mockImplementation(() => Promise.resolve({ ARN: secretArn })); + mockSecretsManagerClient.getSecretValue.mockImplementation(() => Promise.resolve({ + SecretString: JSON.stringify({ + PrivateKey: mockPrivateKey, + Passphrase: passphrase.toString('base64'), + }), + })); + mockSecretsManagerClient.deleteSecret.mockImplementation(() => Promise.resolve()); +}); + const mockSendResponse = jest.spyOn(cfn, 'sendResponse').mockName('cfn.sendResponse').mockResolvedValue(Promise.resolve()); const mockRmrf = jest.fn().mockName('_rmrf').mockResolvedValue(undefined); jest.mock('../../custom-resource-handlers/src/_rmrf', () => mockRmrf); test('Create', async () => { + const { handler } = require('../../custom-resource-handlers/src/pgp-secret'); const event: cfn.Event = { RequestType: cfn.RequestType.CREATE, PhysicalResourceId: undefined, ...mockEventBase, }; - mockSecretsManager.createSecret = jest.fn().mockName('SecretsManager.createSecret') - .mockImplementation(() => ({ promise: () => Promise.resolve({ ARN: secretArn, VersionId: 'Secret-VersionId' }) })) as any; - - const { handler } = require('../../custom-resource-handlers/src/pgp-secret'); await expect(handler(event, context)).resolves.toBe(undefined); - await expect(writeFile) - .toBeCalledWith(path.join(mockTmpDir, 'key.config'), + expect(writeFile) + .toHaveBeenCalledWith(path.join(mockTmpDir, 'key.config'), keyConfig, expect.anything(), expect.any(Function)); - await expect(mockRmrf) - .toBeCalledWith(mockTmpDir); - await expect(mockSecretsManager.createSecret) - .toBeCalledWith({ + expect(mockRmrf) + .toHaveBeenCalledWith(mockTmpDir); + expect(mockSecretsManagerClient.createSecret) + .toHaveBeenCalledWith({ ClientRequestToken: context.awsRequestId, Description: event.ResourceProperties.Description, KmsKeyId: event.ResourceProperties.KeyArn, @@ -109,7 +129,7 @@ test('Create', async () => { }), }); return expect(mockSendResponse) - .toBeCalledWith(event, + .toHaveBeenCalledWith(event, cfn.Status.SUCCESS, secretArn, { @@ -120,6 +140,7 @@ test('Create', async () => { }); test('Update', async () => { + const { handler } = require('../../custom-resource-handlers/src/pgp-secret'); const event: cfn.Event = { RequestType: cfn.RequestType.UPDATE, PhysicalResourceId: secretArn, @@ -131,33 +152,20 @@ test('Update', async () => { ...mockEventBase, }; - mockSecretsManager.updateSecret = jest.fn().mockName('SecretsManager.updateSecret') - .mockImplementation(() => ({ promise: () => Promise.resolve({ ARN: secretArn }) })) as any; - mockSecretsManager.getSecretValue = jest.fn().mockName('SecretsManager.getSecretValue') - .mockImplementation(() => ({ - promise: () => Promise.resolve({ - SecretString: JSON.stringify({ - PrivateKey: mockPrivateKey, - Passphrase: passphrase.toString('base64'), - }), - }), - })) as any; - - const { handler } = require('../../custom-resource-handlers/src/pgp-secret'); await expect(handler(event, context)).resolves.toBe(undefined); - await expect(mockSecretsManager.updateSecret) - .toBeCalledWith({ + expect(mockSecretsManagerClient.updateSecret) + .toHaveBeenCalledWith({ ClientRequestToken: context.awsRequestId, SecretId: secretArn, Description: event.ResourceProperties.Description, KmsKeyId: event.ResourceProperties.KeyArn, }); - await expect(mockSecretsManager.getSecretValue) - .toBeCalledWith({ SecretId: secretArn }); - await expect(mockRmrf) - .toBeCalledWith(mockTmpDir); + expect(mockSecretsManagerClient.getSecretValue) + .toHaveBeenCalledWith({ SecretId: secretArn }); + expect(mockRmrf) + .toHaveBeenCalledWith(mockTmpDir); return expect(mockSendResponse) - .toBeCalledWith(event, + .toHaveBeenCalledWith(event, cfn.Status.SUCCESS, secretArn, { @@ -168,25 +176,22 @@ test('Update', async () => { }); test('Delete', async () => { + const { handler } = require('../../custom-resource-handlers/src/pgp-secret'); const event: cfn.Event = { RequestType: cfn.RequestType.DELETE, PhysicalResourceId: secretArn, ...mockEventBase, }; - mockSecretsManager.deleteSecret = jest.fn() - .mockName('SecretsManager.deleteSecret') - .mockImplementation(() => ({ promise: () => Promise.resolve() })); - const { handler } = require('../../custom-resource-handlers/src/pgp-secret'); await expect(handler(event, context)).resolves.toBe(undefined); - await expect(mockSecretsManager.deleteSecret).toBeCalledWith({ + expect(mockSecretsManagerClient.deleteSecret).toHaveBeenCalledWith({ SecretId: secretArn, ForceDeleteWithoutRecovery: false, }); return expect(mockSendResponse) - .toBeCalledWith(event, cfn.Status.SUCCESS, event.PhysicalResourceId, { + .toHaveBeenCalledWith(event, cfn.Status.SUCCESS, event.PhysicalResourceId, { Ref: event.PhysicalResourceId, }); }); diff --git a/lib/__tests__/custom-resource-handlers/private-key.test.ts b/lib/__tests__/custom-resource-handlers/private-key.test.ts index 5fd69d952..31a049fb3 100644 --- a/lib/__tests__/custom-resource-handlers/private-key.test.ts +++ b/lib/__tests__/custom-resource-handlers/private-key.test.ts @@ -1,7 +1,5 @@ /* eslint-disable @typescript-eslint/no-require-imports */ import fs = require('fs'); -import aws = require('aws-sdk'); -import { createMockInstance } from 'jest-create-mock-instance'; import cfn = require('../../custom-resource-handlers/src/_cloud-formation'); import lambda = require('../../custom-resource-handlers/src/_lambda'); @@ -29,32 +27,43 @@ const secretArn = 'arn::::::secret'; cfn.sendResponse = jest.fn().mockName('cfn.sendResponse').mockResolvedValue(undefined); jest.mock('../../custom-resource-handlers/src/_exec', () => async (cmd: string, ...args: string[]) => { - await expect(cmd).toBe('/opt/openssl'); - await expect(args).toEqual(['genrsa', '-out', require('path').join(mockTmpDir, 'private_key.pem'), mockKeySize]); + expect(cmd).toBe('/opt/openssl'); + expect(args).toEqual(['genrsa', '-out', require('path').join(mockTmpDir, 'private_key.pem'), mockKeySize]); return ''; }); jest.spyOn(fs, 'mkdtemp').mockName('fs.mkdtemp') .mockImplementation(async (_, cb) => cb(undefined as any, mockTmpDir)); fs.readFile = jest.fn().mockName('fs.readFile') .mockImplementation(async (file, opts, cb) => { - await expect(file).toBe(require('path').join(mockTmpDir, 'private_key.pem')); - await expect(opts.encoding).toBe('utf8'); + expect(file).toBe(require('path').join(mockTmpDir, 'private_key.pem')); + expect(opts.encoding).toBe('utf8'); return cb(undefined, mockPrivateKey); }) as any; -const mockSecretsManager = createMockInstance(aws.SecretsManager); -aws.SecretsManager = jest.fn().mockName('SecretsManager') - .mockImplementation(() => mockSecretsManager) as any; -mockSecretsManager.createSecret = jest.fn().mockName('SecretsManager.createSecret') - .mockImplementation(() => ({ promise: () => Promise.resolve({ ARN: secretArn, VersionId: 'Secret-VersionID' }) })) as any; -mockSecretsManager.updateSecret = jest.fn().mockName('SecretsManager.updateSecret') - .mockImplementation(() => ({ promise: () => Promise.resolve({ ARN: secretArn }) })) as any; -mockSecretsManager.deleteSecret = jest.fn().mockName('SecretsManager.deleteSecret') - .mockImplementation(() => ({ promise: () => Promise.resolve({}) })) as any; const mockRmrf = jest.fn().mockName('_rmrf').mockResolvedValue(undefined); jest.mock('../../custom-resource-handlers/src/_rmrf', () => mockRmrf); beforeEach(() => jest.clearAllMocks()); +const mockSecretsManagerClient = { + createSecret: jest.fn().mockName('SecretsManager.createSecret'), + updateSecret: jest.fn().mockName('SecretsManager.updateSecret'), + deleteSecret: jest.fn().mockName('SecretsManager.deleteSecret'), +}; + +jest.mock('@aws-sdk/client-secrets-manager', () => { + return { + SecretsManager: jest.fn().mockImplementation(() => { + return mockSecretsManagerClient; + }), + }; +}); + +beforeEach(() => { + mockSecretsManagerClient.createSecret.mockImplementation(() => Promise.resolve({ ARN: secretArn, VersionId: 'Secret-VersionID' })); + mockSecretsManagerClient.updateSecret.mockImplementation(() => Promise.resolve({ ARN: secretArn })); + mockSecretsManagerClient.deleteSecret.mockImplementation(() => Promise.resolve({})); +}); + test('Create', async () => { const event: cfn.Event = { RequestType: cfn.RequestType.CREATE, @@ -65,19 +74,19 @@ test('Create', async () => { const { handler } = require('../../custom-resource-handlers/src/private-key'); await expect(handler(event, context)).resolves.toBe(undefined); - await expect(mockSecretsManager.createSecret) - .toBeCalledWith({ + expect(mockSecretsManagerClient.createSecret) + .toHaveBeenCalledWith({ ClientRequestToken: context.awsRequestId, Description: event.ResourceProperties.Description, KmsKeyId: event.ResourceProperties.KmsKeyId, Name: event.ResourceProperties.SecretName, SecretString: mockPrivateKey, }); - await expect(mockSecretsManager.updateSecret).not.toBeCalled(); - await expect(mockSecretsManager.deleteSecret).not.toBeCalled(); - await expect(mockRmrf).toBeCalledWith(mockTmpDir); + expect(mockSecretsManagerClient.updateSecret).not.toHaveBeenCalled(); + expect(mockSecretsManagerClient.deleteSecret).not.toHaveBeenCalled(); + expect(mockRmrf).toHaveBeenCalledWith(mockTmpDir); return expect(cfn.sendResponse) - .toBeCalledWith(event, + .toHaveBeenCalledWith(event, cfn.Status.SUCCESS, secretArn, { Ref: secretArn, SecretArn: secretArn }); @@ -97,11 +106,11 @@ test('Update (changing KeySize)', async () => { const { handler } = require('../../custom-resource-handlers/src/private-key'); await expect(handler(event, context)).resolves.toBe(undefined); - await expect(mockSecretsManager.createSecret).not.toBeCalled(); - await expect(mockSecretsManager.updateSecret).not.toBeCalled(); - await expect(mockSecretsManager.deleteSecret).not.toBeCalled(); + expect(mockSecretsManagerClient.createSecret).not.toHaveBeenCalled(); + expect(mockSecretsManagerClient.updateSecret).not.toHaveBeenCalled(); + expect(mockSecretsManagerClient.deleteSecret).not.toHaveBeenCalled(); return expect(cfn.sendResponse) - .toBeCalledWith(event, + .toHaveBeenCalledWith(event, cfn.Status.FAILED, secretArn, {}, @@ -122,11 +131,11 @@ test('Update (changing SecretName)', async () => { const { handler } = require('../../custom-resource-handlers/src/private-key'); await expect(handler(event, context)).resolves.toBe(undefined); - await expect(mockSecretsManager.createSecret).not.toBeCalled(); - await expect(mockSecretsManager.updateSecret).not.toBeCalled(); - await expect(mockSecretsManager.deleteSecret).not.toBeCalled(); + expect(mockSecretsManagerClient.createSecret).not.toHaveBeenCalled(); + expect(mockSecretsManagerClient.updateSecret).not.toHaveBeenCalled(); + expect(mockSecretsManagerClient.deleteSecret).not.toHaveBeenCalled(); return expect(cfn.sendResponse) - .toBeCalledWith(event, + .toHaveBeenCalledWith(event, cfn.Status.FAILED, secretArn, {}, @@ -148,17 +157,17 @@ test('Update (changing Description and KmsKeyId)', async () => { const { handler } = require('../../custom-resource-handlers/src/private-key'); await expect(handler(event, context)).resolves.toBe(undefined); - await expect(mockSecretsManager.createSecret).not.toBeCalled(); - await expect(mockSecretsManager.updateSecret) - .toBeCalledWith({ + expect(mockSecretsManagerClient.createSecret).not.toHaveBeenCalled(); + expect(mockSecretsManagerClient.updateSecret) + .toHaveBeenCalledWith({ ClientRequestToken: context.awsRequestId, Description: event.ResourceProperties.Description, KmsKeyId: event.ResourceProperties.KmsKeyId, SecretId: secretArn, }); - await expect(mockSecretsManager.deleteSecret).not.toBeCalled(); + expect(mockSecretsManagerClient.deleteSecret).not.toHaveBeenCalled(); return expect(cfn.sendResponse) - .toBeCalledWith(event, + .toHaveBeenCalledWith(event, cfn.Status.SUCCESS, secretArn, { Ref: secretArn, SecretArn: secretArn }); @@ -175,7 +184,7 @@ test('Delete', async () => { .mockImplementation((cb) => { return async (evt: any, ctx: any) => { const result = await cb(evt, ctx); - await expect(result).toEqual({ + expect(result).toEqual({ Ref: event.PhysicalResourceId, }); }; @@ -184,15 +193,15 @@ test('Delete', async () => { const { handler } = require('../../custom-resource-handlers/src/private-key'); await expect(handler(event, context)).resolves.toBe(undefined); - await expect(mockSecretsManager.createSecret).not.toBeCalled(); - await expect(mockSecretsManager.updateSecret).not.toBeCalled(); - await expect(mockSecretsManager.deleteSecret) - .toBeCalledWith({ + expect(mockSecretsManagerClient.createSecret).not.toHaveBeenCalled(); + expect(mockSecretsManagerClient.updateSecret).not.toHaveBeenCalled(); + expect(mockSecretsManagerClient.deleteSecret) + .toHaveBeenCalledWith({ SecretId: secretArn, ForceDeleteWithoutRecovery: true, }); return expect(cfn.sendResponse) - .toBeCalledWith(event, + .toHaveBeenCalledWith(event, cfn.Status.SUCCESS, event.PhysicalResourceId, { Ref: event.PhysicalResourceId }); diff --git a/lib/__tests__/watcher-handler.test.ts b/lib/__tests__/watcher-handler.test.ts index ee59da0f8..996b26cc2 100644 --- a/lib/__tests__/watcher-handler.test.ts +++ b/lib/__tests__/watcher-handler.test.ts @@ -11,9 +11,7 @@ describe('watcher-handler', () => { test('throws an error if PutMetricData fails', async () => { expect.assertions(1); cloudwatch.putMetricData = jest.fn(_request => { - return { - promise: () => new Promise((_, reject) => reject(new Error('fail'))), - }; + return new Promise((_, reject) => reject(new Error('fail'))); }) as any; try { await handler(actionExecutionEvent()); diff --git a/lib/change-control-lambda/disable-transition.ts b/lib/change-control-lambda/disable-transition.ts index 144c9acb9..21974a297 100644 --- a/lib/change-control-lambda/disable-transition.ts +++ b/lib/change-control-lambda/disable-transition.ts @@ -1,6 +1,9 @@ // eslint-disable-next-line import/no-extraneous-dependencies -import * as AWS from 'aws-sdk'; -const pipeline = new AWS.CodePipeline(); + + +// eslint-disable-next-line import/no-extraneous-dependencies +import { CodePipeline } from '@aws-sdk/client-codepipeline'; +const pipeline = new CodePipeline(); /** * Disables a CodePipeline transition into a given stage. @@ -17,7 +20,7 @@ export async function disableTransition(pipelineName: string, stageName: string, reason, stageName, transitionType: 'Inbound', - }).promise(); + }); } /** @@ -30,5 +33,5 @@ export async function enableTransition(pipelineName: string, stageName: string): pipelineName, stageName, transitionType: 'Inbound', - }).promise(); + }); } diff --git a/lib/change-control-lambda/index.ts b/lib/change-control-lambda/index.ts index 5926608ce..cfcac6146 100644 --- a/lib/change-control-lambda/index.ts +++ b/lib/change-control-lambda/index.ts @@ -1,10 +1,13 @@ // eslint-disable-next-line import/no-extraneous-dependencies -import * as AWS from 'aws-sdk'; + + +// eslint-disable-next-line import/no-extraneous-dependencies +import { S3 } from '@aws-sdk/client-s3'; import { disableTransition, enableTransition } from './disable-transition'; import { shouldBlockPipeline } from './time-window'; // tslint:disable:no-console -const s3 = new AWS.S3(); +const s3 = new S3(); /** * Handler for a lambda function that can be called periodically in order to enforce Change Control calendars. It @@ -53,9 +56,9 @@ function env(name: string) { async function tryGetCalendarData(Bucket: string, Key: string) { try { - const icsFile = await s3.getObject({ Bucket, Key }).promise(); + const icsFile = await s3.getObject({ Bucket, Key }); console.log(`Calendar object version ID: ${icsFile.VersionId || ''}`); - return icsFile.Body!.toString('utf8'); + return icsFile.Body!.toString(); } catch (e: any) { // If the bucket or key don't exist, default to closed all the time! if (e.code === 'NoSuchBucket' || e.code === 'NoSuchKey') { diff --git a/lib/chime-notifier/handler/notifier-handler.ts b/lib/chime-notifier/handler/notifier-handler.ts index 75886a1a5..340a905c8 100644 --- a/lib/chime-notifier/handler/notifier-handler.ts +++ b/lib/chime-notifier/handler/notifier-handler.ts @@ -1,10 +1,10 @@ import * as https from 'https'; // eslint-disable-next-line import/no-extraneous-dependencies -import * as AWS from 'aws-sdk'; +import { ArtifactRevision, CodePipeline } from '@aws-sdk/client-codepipeline'; // export for tests -export const codePipeline = new AWS.CodePipeline(); +export const codePipeline = new CodePipeline(); /** * Lambda handler for the codepipeline state change events @@ -48,13 +48,13 @@ export async function handler(event: any) { } // Describe the revision that caused the pipeline to fail - const response = await codePipeline.getPipelineExecution({ pipelineName, pipelineExecutionId }).promise(); + const response = await codePipeline.getPipelineExecution({ pipelineName, pipelineExecutionId }); process.stdout.write(`${JSON.stringify(response)}\n`); - const firstArtifact: AWS.CodePipeline.ArtifactRevision | undefined = (response.pipelineExecution?.artifactRevisions ?? [])[0]; + const firstArtifact: ArtifactRevision | undefined = (response.pipelineExecution?.artifactRevisions ?? [])[0]; const revisionSummary = firstArtifact?.revisionSummary ?? firstArtifact?.revisionId ?? `execution ${pipelineExecutionId}`; // Find the action that caused the pipeline to fail (no pagination for now) - const actionResponse = await codePipeline.listActionExecutions({ pipelineName, filter: { pipelineExecutionId } }).promise(); + const actionResponse = await codePipeline.listActionExecutions({ pipelineName, filter: { pipelineExecutionId } }); process.stdout.write(`${JSON.stringify(actionResponse)}\n`); const failingActionDetails = actionResponse.actionExecutionDetails?.find(d => d.status === 'Failed'); const failingAction = failingActionDetails?.actionName || 'UNKNOWN'; diff --git a/lib/custom-resource-handlers/src/certificate-signing-request.ts b/lib/custom-resource-handlers/src/certificate-signing-request.ts index 773abcc0d..730fe4918 100644 --- a/lib/custom-resource-handlers/src/certificate-signing-request.ts +++ b/lib/custom-resource-handlers/src/certificate-signing-request.ts @@ -3,7 +3,9 @@ import * as os from 'os'; import * as path from 'path'; import * as util from 'util'; // eslint-disable-next-line import/no-extraneous-dependencies -import * as aws from 'aws-sdk'; +import { S3 } from '@aws-sdk/client-s3'; +// eslint-disable-next-line import/no-extraneous-dependencies +import { SecretsManager } from '@aws-sdk/client-secrets-manager'; import * as cfn from './_cloud-formation'; // eslint-disable-next-line @typescript-eslint/no-require-imports @@ -16,7 +18,7 @@ const mkdtemp = util.promisify(fs.mkdtemp); const readFile = util.promisify(fs.readFile); const writeFile = util.promisify(fs.writeFile); -const secretsManager = new aws.SecretsManager(); +const secretsManager = new SecretsManager(); exports.handler = cfn.customResourceHandler(handleEvent); @@ -69,20 +71,20 @@ async function _createSelfSignedCertificate(event: cfn.Event): Promise { - const secretValue = await secretsManager.getSecretValue({ SecretId: secretArn }).promise(); + const secretValue = await secretsManager.getSecretValue({ SecretId: secretArn }); const keyData = JSON.parse(secretValue.SecretString!); const tempDir = await mkdtemp(path.join(os.tmpdir(), 'OpenPGP-')); try { @@ -168,6 +170,6 @@ async function _deleteSecret(event: cfn.DeleteEvent): Promise { const workdir = fs.mkdtempSync(path.join(os.tmpdir(), 'work')); - const sm = new AWS.SecretsManager(); + const sm = new SecretsManager(); let token = undefined; if (options.githubTokenSecretArn) { - const secret = await sm.getSecretValue({ SecretId: options.githubTokenSecretArn }).promise(); + const secret = await sm.getSecretValue({ SecretId: options.githubTokenSecretArn }); token = secret.SecretString; } const repoDir = fs.mkdtempSync(path.join(workdir, 'repo')); diff --git a/lib/pipeline-watcher/handler/watcher-handler.ts b/lib/pipeline-watcher/handler/watcher-handler.ts index 8694e2aff..97e4ac268 100644 --- a/lib/pipeline-watcher/handler/watcher-handler.ts +++ b/lib/pipeline-watcher/handler/watcher-handler.ts @@ -1,5 +1,8 @@ // eslint-disable-next-line import/no-extraneous-dependencies -import * as AWS from 'aws-sdk'; + + +// eslint-disable-next-line import/no-extraneous-dependencies +import { CloudWatch, Dimension, PutMetricDataCommandInput } from '@aws-sdk/client-cloudwatch'; // Partial type for the 'detail' section of an event from Amazon EventBridge for 'CodePipeline Execution State Change' // See https://docs.aws.amazon.com/eventbridge/latest/userguide/event-types.html#codepipeline-event-type @@ -19,7 +22,7 @@ export type LambdaActionStateChangeEvent = AWSLambda.EventBridgeEvent<'CodePipel export type EventType = LambdaExecutionStateChangeEvent | LambdaActionStateChangeEvent; // export for tests -export const cloudwatch = new AWS.CloudWatch(); +export const cloudwatch = new CloudWatch(); const logger = { log: (line: string) => process.stdout.write(line), }; @@ -79,7 +82,7 @@ async function handleActionChange(event: LambdaActionStateChangeEvent) { logger.log('Done'); } -async function putMetric(event: EventType, value: number, dimensions: AWS.CloudWatch.Dimensions) { +async function putMetric(event: EventType, value: number, dimensions: Array) { const metricNamespace = process.env.METRIC_NAMESPACE; const metricName = process.env.METRIC_NAME; const time = new Date(event.time); @@ -88,7 +91,7 @@ async function putMetric(event: EventType, value: number, dimensions: AWS.CloudW throw new Error('Both METRIC_NAMESPACE and METRIC_NAME environment variables must be set.'); } - const input: AWS.CloudWatch.PutMetricDataInput = { + const input: PutMetricDataCommandInput = { Namespace: metricNamespace, MetricData: [ { @@ -102,5 +105,5 @@ async function putMetric(event: EventType, value: number, dimensions: AWS.CloudW logger.log(`Calling PutMetricData with payload: ${JSON.stringify(input)}`); - await cloudwatch.putMetricData(input).promise(); + await cloudwatch.putMetricData(input); } \ No newline at end of file diff --git a/package.json b/package.json index 4b328ff0c..f6680f2da 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,11 @@ "organization": false }, "devDependencies": { + "@aws-sdk/client-cloudwatch": "^3.616.0", + "@aws-sdk/client-codepipeline": "^3.616.0", + "@aws-sdk/client-s3": "^3.616.0", + "@aws-sdk/client-secrets-manager": "^3.616.0", + "@aws-sdk/client-ssm": "^3.616.0", "@types/adm-zip": "^0.5.5", "@types/aws-lambda": "^8.10.142", "@types/follow-redirects": "^1.14.4", @@ -47,11 +52,9 @@ "@typescript-eslint/eslint-plugin": "^7", "@typescript-eslint/parser": "^7", "adm-zip": "^0.5.14", - "aws-cdk": "^2.150.0", - "aws-cdk-lib": "^2.76.0", - "aws-sdk": "^2.1663.0", - "aws-sdk-mock": "^5.9.0", - "constructs": "^10.1.31", + "aws-cdk": "2.150.0", + "aws-cdk-lib": "2.150.0", + "constructs": "10.1.31", "esbuild": "^0.23.0", "eslint": "^8", "eslint-import-resolver-typescript": "^2.7.1", @@ -59,7 +62,6 @@ "follow-redirects": "^1.15.6", "fs-extra": "^10.1.0", "jest": "^29", - "jest-create-mock-instance": "^2.0.0", "jest-junit": "^15", "JSONStream": "^1.3.5", "minipass": "3.2.1", @@ -73,7 +75,7 @@ "typescript": "~4.9.5" }, "peerDependencies": { - "aws-cdk-lib": "^2.76.0", + "aws-cdk-lib": "2.150.0", "constructs": "^10.1.31" }, "dependencies": { diff --git a/yarn.lock b/yarn.lock index f6b1980bd..0ce0871f0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20,10 +20,798 @@ resolved "https://registry.yarnpkg.com/@aws-cdk/asset-kubectl-v20/-/asset-kubectl-v20-2.1.2.tgz#d8e20b5f5dc20128ea2000dc479ca3c7ddc27248" integrity sha512-3M2tELJOxQv0apCIiuKQ4pAbncz9GuLwnKFqxifWfe77wuMxyTRPmxssYHs42ePqzap1LT6GDcPygGs+hHstLg== -"@aws-cdk/asset-node-proxy-agent-v6@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/asset-node-proxy-agent-v6/-/asset-node-proxy-agent-v6-2.0.1.tgz#6dc9b7cdb22ff622a7176141197962360c33e9ac" - integrity sha512-DDt4SLdLOwWCjGtltH4VCST7hpOI5DzieuhGZsBpZ+AgJdSI2GCjklCXm0GCTwJG/SolkL5dtQXyUKgg9luBDg== +"@aws-cdk/asset-node-proxy-agent-v6@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@aws-cdk/asset-node-proxy-agent-v6/-/asset-node-proxy-agent-v6-2.0.3.tgz#9b5d213b5ce5ad4461f6a4720195ff8de72e6523" + integrity sha512-twhuEG+JPOYCYPx/xy5uH2+VUsIEhPTzDY0F1KuB+ocjWWB/KEDiOVL19nHvbPCB6fhWnkykXEMJ4HHcKvjtvg== + +"@aws-crypto/crc32@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-5.2.0.tgz#cfcc22570949c98c6689cfcbd2d693d36cdae2e1" + integrity sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg== + dependencies: + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + tslib "^2.6.2" + +"@aws-crypto/crc32c@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz#4e34aab7f419307821509a98b9b08e84e0c1917e" + integrity sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag== + dependencies: + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + tslib "^2.6.2" + +"@aws-crypto/sha1-browser@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz#b0ee2d2821d3861f017e965ef3b4cb38e3b6a0f4" + integrity sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg== + dependencies: + "@aws-crypto/supports-web-crypto" "^5.2.0" + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@smithy/util-utf8" "^2.0.0" + tslib "^2.6.2" + +"@aws-crypto/sha256-browser@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz#153895ef1dba6f9fce38af550e0ef58988eb649e" + integrity sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw== + dependencies: + "@aws-crypto/sha256-js" "^5.2.0" + "@aws-crypto/supports-web-crypto" "^5.2.0" + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@smithy/util-utf8" "^2.0.0" + tslib "^2.6.2" + +"@aws-crypto/sha256-js@5.2.0", "@aws-crypto/sha256-js@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz#c4fdb773fdbed9a664fc1a95724e206cf3860042" + integrity sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA== + dependencies: + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + tslib "^2.6.2" + +"@aws-crypto/supports-web-crypto@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz#a1e399af29269be08e695109aa15da0a07b5b5fb" + integrity sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg== + dependencies: + tslib "^2.6.2" + +"@aws-crypto/util@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-5.2.0.tgz#71284c9cffe7927ddadac793c14f14886d3876da" + integrity sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ== + dependencies: + "@aws-sdk/types" "^3.222.0" + "@smithy/util-utf8" "^2.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-cloudwatch@^3.616.0": + version "3.616.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-cloudwatch/-/client-cloudwatch-3.616.0.tgz#111e9b24699ead284fdc5ca54ad07780a2eaaf2f" + integrity sha512-Q2hIGcoxmHj8ekMtD2sDW7ZYBcwPsguftD7+xg69SAcSM3Isj5FpWnuxwaImqSHA9cb/HSIuCj8EeMRluTEQgQ== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.616.0" + "@aws-sdk/client-sts" "3.616.0" + "@aws-sdk/core" "3.616.0" + "@aws-sdk/credential-provider-node" "3.616.0" + "@aws-sdk/middleware-host-header" "3.616.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.616.0" + "@aws-sdk/middleware-user-agent" "3.616.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.614.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.2.7" + "@smithy/fetch-http-handler" "^3.2.2" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-compression" "^3.0.6" + "@smithy/middleware-content-length" "^3.0.4" + "@smithy/middleware-endpoint" "^3.0.5" + "@smithy/middleware-retry" "^3.0.10" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.3" + "@smithy/protocol-http" "^4.0.4" + "@smithy/smithy-client" "^3.1.8" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.10" + "@smithy/util-defaults-mode-node" "^3.0.10" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + "@smithy/util-waiter" "^3.1.2" + tslib "^2.6.2" + +"@aws-sdk/client-codepipeline@^3.616.0": + version "3.616.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-codepipeline/-/client-codepipeline-3.616.0.tgz#d650d7bc8bc3ed09cdef6f03815f8da37c6eba6a" + integrity sha512-NN+Y4M7rWa8knUjG+tOxITnNCeHrTGwdNNvhq3LaZ5X1s7ZXJ3V5IPlog041hdHrVKKgHR85GTLQHTfbBb67vA== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.616.0" + "@aws-sdk/client-sts" "3.616.0" + "@aws-sdk/core" "3.616.0" + "@aws-sdk/credential-provider-node" "3.616.0" + "@aws-sdk/middleware-host-header" "3.616.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.616.0" + "@aws-sdk/middleware-user-agent" "3.616.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.614.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.2.7" + "@smithy/fetch-http-handler" "^3.2.2" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.4" + "@smithy/middleware-endpoint" "^3.0.5" + "@smithy/middleware-retry" "^3.0.10" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.3" + "@smithy/protocol-http" "^4.0.4" + "@smithy/smithy-client" "^3.1.8" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.10" + "@smithy/util-defaults-mode-node" "^3.0.10" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + uuid "^9.0.1" + +"@aws-sdk/client-s3@^3.616.0": + version "3.617.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.617.0.tgz#05c19d2813b75db20c99f5da1bdc79f89cf448f4" + integrity sha512-0f954CU42BhPFVRQCCBc1jAvV9N4XW9I3D4h7tJ8tzxft7fS62MSJkgxRIXNKgWKLeGR7DUbz+XGZ1R5e7pyjA== + dependencies: + "@aws-crypto/sha1-browser" "5.2.0" + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.616.0" + "@aws-sdk/client-sts" "3.616.0" + "@aws-sdk/core" "3.616.0" + "@aws-sdk/credential-provider-node" "3.616.0" + "@aws-sdk/middleware-bucket-endpoint" "3.616.0" + "@aws-sdk/middleware-expect-continue" "3.616.0" + "@aws-sdk/middleware-flexible-checksums" "3.616.0" + "@aws-sdk/middleware-host-header" "3.616.0" + "@aws-sdk/middleware-location-constraint" "3.609.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.616.0" + "@aws-sdk/middleware-sdk-s3" "3.617.0" + "@aws-sdk/middleware-signing" "3.616.0" + "@aws-sdk/middleware-ssec" "3.609.0" + "@aws-sdk/middleware-user-agent" "3.616.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/signature-v4-multi-region" "3.617.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.614.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@aws-sdk/xml-builder" "3.609.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.2.7" + "@smithy/eventstream-serde-browser" "^3.0.4" + "@smithy/eventstream-serde-config-resolver" "^3.0.3" + "@smithy/eventstream-serde-node" "^3.0.4" + "@smithy/fetch-http-handler" "^3.2.2" + "@smithy/hash-blob-browser" "^3.1.2" + "@smithy/hash-node" "^3.0.3" + "@smithy/hash-stream-node" "^3.1.2" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/md5-js" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.4" + "@smithy/middleware-endpoint" "^3.0.5" + "@smithy/middleware-retry" "^3.0.10" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.3" + "@smithy/protocol-http" "^4.0.4" + "@smithy/smithy-client" "^3.1.8" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.10" + "@smithy/util-defaults-mode-node" "^3.0.10" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-stream" "^3.1.0" + "@smithy/util-utf8" "^3.0.0" + "@smithy/util-waiter" "^3.1.2" + tslib "^2.6.2" + +"@aws-sdk/client-secrets-manager@^3.616.0": + version "3.616.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.616.0.tgz#5ee2b008b53f29b54a311c7e88f2396b7511824f" + integrity sha512-V8WRJ7eGBm01Y9nYg4KrQJ6fpXZkAfGTR9rtjMOdPSBcAD4hOJ6gisufxAKl9MSfTPLfzqSCb5/wWkIviobRZA== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.616.0" + "@aws-sdk/client-sts" "3.616.0" + "@aws-sdk/core" "3.616.0" + "@aws-sdk/credential-provider-node" "3.616.0" + "@aws-sdk/middleware-host-header" "3.616.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.616.0" + "@aws-sdk/middleware-user-agent" "3.616.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.614.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.2.7" + "@smithy/fetch-http-handler" "^3.2.2" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.4" + "@smithy/middleware-endpoint" "^3.0.5" + "@smithy/middleware-retry" "^3.0.10" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.3" + "@smithy/protocol-http" "^4.0.4" + "@smithy/smithy-client" "^3.1.8" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.10" + "@smithy/util-defaults-mode-node" "^3.0.10" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + uuid "^9.0.1" + +"@aws-sdk/client-ssm@^3.616.0": + version "3.616.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-ssm/-/client-ssm-3.616.0.tgz#bf5c32f3bb65feb57b8a94c9fd8ed223668182f7" + integrity sha512-8M4DcUxi9zD1bK8kvs8wfqAgWx2Qx0bpLHhC/DkFrHZ28tqP9TeoDgjAmSFLAVGxJf6VVvr1mHXIy+4LVdl5SQ== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.616.0" + "@aws-sdk/client-sts" "3.616.0" + "@aws-sdk/core" "3.616.0" + "@aws-sdk/credential-provider-node" "3.616.0" + "@aws-sdk/middleware-host-header" "3.616.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.616.0" + "@aws-sdk/middleware-user-agent" "3.616.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.614.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.2.7" + "@smithy/fetch-http-handler" "^3.2.2" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.4" + "@smithy/middleware-endpoint" "^3.0.5" + "@smithy/middleware-retry" "^3.0.10" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.3" + "@smithy/protocol-http" "^4.0.4" + "@smithy/smithy-client" "^3.1.8" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.10" + "@smithy/util-defaults-mode-node" "^3.0.10" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + "@smithy/util-waiter" "^3.1.2" + tslib "^2.6.2" + uuid "^9.0.1" + +"@aws-sdk/client-sso-oidc@3.616.0": + version "3.616.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.616.0.tgz#eb298b1c543465a5f7ebd28f8148d68654edf9d1" + integrity sha512-YY1hpYS/G1uRGjQf88dL8VLHkP/IjGxKeXdhy+JnzMdCkAWl3V9j0fEALw40NZe0x79gr6R2KUOUH/IKYQfUmg== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "3.616.0" + "@aws-sdk/credential-provider-node" "3.616.0" + "@aws-sdk/middleware-host-header" "3.616.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.616.0" + "@aws-sdk/middleware-user-agent" "3.616.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.614.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.2.7" + "@smithy/fetch-http-handler" "^3.2.2" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.4" + "@smithy/middleware-endpoint" "^3.0.5" + "@smithy/middleware-retry" "^3.0.10" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.3" + "@smithy/protocol-http" "^4.0.4" + "@smithy/smithy-client" "^3.1.8" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.10" + "@smithy/util-defaults-mode-node" "^3.0.10" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-sso@3.616.0": + version "3.616.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.616.0.tgz#d4bbb279daf6b4fde7ec2df9243526eb5119b0c0" + integrity sha512-hwW0u1f8U4dSloAe61/eupUiGd5Q13B72BuzGxvRk0cIpYX/2m0KBG8DDl7jW1b2QQ+CflTLpG2XUf2+vRJxGA== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "3.616.0" + "@aws-sdk/middleware-host-header" "3.616.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.616.0" + "@aws-sdk/middleware-user-agent" "3.616.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.614.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.2.7" + "@smithy/fetch-http-handler" "^3.2.2" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.4" + "@smithy/middleware-endpoint" "^3.0.5" + "@smithy/middleware-retry" "^3.0.10" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.3" + "@smithy/protocol-http" "^4.0.4" + "@smithy/smithy-client" "^3.1.8" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.10" + "@smithy/util-defaults-mode-node" "^3.0.10" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-sts@3.616.0": + version "3.616.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.616.0.tgz#9616c3693d9ae5232ccc12d570f46abe4ec49d2b" + integrity sha512-FP7i7hS5FpReqnysQP1ukQF1OUWy8lkomaOnbu15H415YUrfCp947SIx6+BItjmx+esKxPkEjh/fbCVzw2D6hQ== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.616.0" + "@aws-sdk/core" "3.616.0" + "@aws-sdk/credential-provider-node" "3.616.0" + "@aws-sdk/middleware-host-header" "3.616.0" + "@aws-sdk/middleware-logger" "3.609.0" + "@aws-sdk/middleware-recursion-detection" "3.616.0" + "@aws-sdk/middleware-user-agent" "3.616.0" + "@aws-sdk/region-config-resolver" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.614.0" + "@aws-sdk/util-user-agent-browser" "3.609.0" + "@aws-sdk/util-user-agent-node" "3.614.0" + "@smithy/config-resolver" "^3.0.5" + "@smithy/core" "^2.2.7" + "@smithy/fetch-http-handler" "^3.2.2" + "@smithy/hash-node" "^3.0.3" + "@smithy/invalid-dependency" "^3.0.3" + "@smithy/middleware-content-length" "^3.0.4" + "@smithy/middleware-endpoint" "^3.0.5" + "@smithy/middleware-retry" "^3.0.10" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/node-http-handler" "^3.1.3" + "@smithy/protocol-http" "^4.0.4" + "@smithy/smithy-client" "^3.1.8" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.10" + "@smithy/util-defaults-mode-node" "^3.0.10" + "@smithy/util-endpoints" "^2.0.5" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/core@3.616.0": + version "3.616.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.616.0.tgz#4d7f79cd62e545e6db677216a17dab84c2b4cda3" + integrity sha512-O/urkh2kECs/IqZIVZxyeyHZ7OR2ZWhLNK7btsVQBQvJKrEspLrk/Fp20Qfg5JDerQfBN83ZbyRXLJOOucdZpw== + dependencies: + "@smithy/core" "^2.2.7" + "@smithy/protocol-http" "^4.0.4" + "@smithy/signature-v4" "^4.0.0" + "@smithy/smithy-client" "^3.1.8" + "@smithy/types" "^3.3.0" + fast-xml-parser "4.2.5" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-env@3.609.0": + version "3.609.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.609.0.tgz#b3f32e5a8ff8b541e151eadadfb60283aa3d835e" + integrity sha512-v69ZCWcec2iuV9vLVJMa6fAb5xwkzN4jYIT8yjo2c4Ia/j976Q+TPf35Pnz5My48Xr94EFcaBazrWedF+kwfuQ== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/property-provider" "^3.1.3" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-http@3.616.0": + version "3.616.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.616.0.tgz#207cbe3e74c6c55208fd4bf0ff59df6e765d2c41" + integrity sha512-1rgCkr7XvEMBl7qWCo5BKu3yAxJs71dRaZ55Xnjte/0ZHH6Oc93ZrHzyYy6UH6t0nZrH+FAuw7Yko2YtDDwDeg== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/fetch-http-handler" "^3.2.2" + "@smithy/node-http-handler" "^3.1.3" + "@smithy/property-provider" "^3.1.3" + "@smithy/protocol-http" "^4.0.4" + "@smithy/smithy-client" "^3.1.8" + "@smithy/types" "^3.3.0" + "@smithy/util-stream" "^3.1.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-ini@3.616.0": + version "3.616.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.616.0.tgz#5bb726e969908a28e960d65016e7440b78056209" + integrity sha512-5gQdMr9cca3xV7FF2SxpxWGH2t6+t4o+XBGiwsHm8muEjf4nUmw7Ij863x25Tjt2viPYV0UStczSb5Sihp7bkA== + dependencies: + "@aws-sdk/credential-provider-env" "3.609.0" + "@aws-sdk/credential-provider-http" "3.616.0" + "@aws-sdk/credential-provider-process" "3.614.0" + "@aws-sdk/credential-provider-sso" "3.616.0" + "@aws-sdk/credential-provider-web-identity" "3.609.0" + "@aws-sdk/types" "3.609.0" + "@smithy/credential-provider-imds" "^3.1.4" + "@smithy/property-provider" "^3.1.3" + "@smithy/shared-ini-file-loader" "^3.1.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-node@3.616.0": + version "3.616.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.616.0.tgz#0887ab7b9bab3031fe3ed8aaee2d4abb5091a67f" + integrity sha512-Se+u6DAxjDPjKE3vX1X2uxjkWgGq69BTo0uTB0vDUiWwBVgh16s9BsBhSAlKEH1CCbbJHvOg4YdTrzjwzqyClg== + dependencies: + "@aws-sdk/credential-provider-env" "3.609.0" + "@aws-sdk/credential-provider-http" "3.616.0" + "@aws-sdk/credential-provider-ini" "3.616.0" + "@aws-sdk/credential-provider-process" "3.614.0" + "@aws-sdk/credential-provider-sso" "3.616.0" + "@aws-sdk/credential-provider-web-identity" "3.609.0" + "@aws-sdk/types" "3.609.0" + "@smithy/credential-provider-imds" "^3.1.4" + "@smithy/property-provider" "^3.1.3" + "@smithy/shared-ini-file-loader" "^3.1.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-process@3.614.0": + version "3.614.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.614.0.tgz#b6b9382346dfe51c8fb448595ae55b930532c897" + integrity sha512-Q0SI0sTRwi8iNODLs5+bbv8vgz8Qy2QdxbCHnPk/6Cx6LMf7i3dqmWquFbspqFRd8QiqxStrblwxrUYZi09tkA== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/property-provider" "^3.1.3" + "@smithy/shared-ini-file-loader" "^3.1.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-sso@3.616.0": + version "3.616.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.616.0.tgz#051b1a2eb31fa30866f2c1e95bbcf965911b16c3" + integrity sha512-3rsWs9GBi8Z8Gps5ROwqguxtw+J6OIg1vawZMLRNMqqZoBvbOToe9wEnpid8ylU+27+oG8uibJNlNuRyXApUjw== + dependencies: + "@aws-sdk/client-sso" "3.616.0" + "@aws-sdk/token-providers" "3.614.0" + "@aws-sdk/types" "3.609.0" + "@smithy/property-provider" "^3.1.3" + "@smithy/shared-ini-file-loader" "^3.1.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-web-identity@3.609.0": + version "3.609.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.609.0.tgz#d29222d6894347ee89c781ea090d388656df1d2a" + integrity sha512-U+PG8NhlYYF45zbr1km3ROtBMYqyyj/oK8NRp++UHHeuavgrP+4wJ4wQnlEaKvJBjevfo3+dlIBcaeQ7NYejWg== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/property-provider" "^3.1.3" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-bucket-endpoint@3.616.0": + version "3.616.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.616.0.tgz#76b32df698a6d9fddeb64d166df477d4632ce0f9" + integrity sha512-KZv78s8UE7+s3qZCfG3pE9U9XV5WTP478aNWis5gDXmsb5LF7QWzEeR8kve5dnjNlK6qVQ33v+mUZa6lR5PwMw== + dependencies: + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-arn-parser" "3.568.0" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/protocol-http" "^4.0.4" + "@smithy/types" "^3.3.0" + "@smithy/util-config-provider" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-expect-continue@3.616.0": + version "3.616.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.616.0.tgz#02e4dcee8044c60050dcf4da221b3bdbae36ccf8" + integrity sha512-IM1pfJPm7pDUXa55js9bnGjS8o3ldzDwf95mL9ZAYdEsm10q6i0ZxZbbro2gTq25Ap5ykdeeS34lOSzIqPiW1A== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/protocol-http" "^4.0.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-flexible-checksums@3.616.0": + version "3.616.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.616.0.tgz#7fac7de33f366fb769ba4d3f1f29129456908339" + integrity sha512-Mrco/dURoTXVqwcnYRcyrFaPTIg36ifg2PK0kUYfSVTGEOClZOQXlVG5zYCZoo3yEMgy/gLT907FjUQxwoifIw== + dependencies: + "@aws-crypto/crc32" "5.2.0" + "@aws-crypto/crc32c" "5.2.0" + "@aws-sdk/types" "3.609.0" + "@smithy/is-array-buffer" "^3.0.0" + "@smithy/protocol-http" "^4.0.4" + "@smithy/types" "^3.3.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-host-header@3.616.0": + version "3.616.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.616.0.tgz#542dac3370374ba3733c96a6bb153e6fe53fafe6" + integrity sha512-mhNfHuGhCDZwYCABebaOvTgOM44UCZZRq2cBpgPZLVKP0ydAv5aFHXv01goexxXHqgHoEGx0uXWxlw0s2EpFDg== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/protocol-http" "^4.0.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-location-constraint@3.609.0": + version "3.609.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.609.0.tgz#7ed82d71e5ddcd50683ef2bbde10d1cc2492057e" + integrity sha512-xzsdoTkszGVqGVPjUmgoP7TORiByLueMHieI1fhQL888WPdqctwAx3ES6d/bA9Q/i8jnc6hs+Fjhy8UvBTkE9A== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-logger@3.609.0": + version "3.609.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz#ed44d201f091b8bac908cbf14724c7a4d492553f" + integrity sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-recursion-detection@3.616.0": + version "3.616.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.616.0.tgz#fa87c9d77c6f85d02b9cf8394f52b2d6334a63af" + integrity sha512-LQKAcrZRrR9EGez4fdCIVjdn0Ot2HMN12ChnoMGEU6oIxnQ2aSC7iASFFCV39IYfeMh7iSCPj7Wopqw8rAouzg== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/protocol-http" "^4.0.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-sdk-s3@3.617.0": + version "3.617.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.617.0.tgz#515082f2d67bb1fe61e34d0d1205e9034b5c0087" + integrity sha512-zVOS6sNGcLGhq7i+5POmVqmSPNmrQYDFsynpnWMSLsNaej+xvkdSOnytLrUvag3Du4kAxfO5NNIC0GuNj9lcCg== + dependencies: + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-arn-parser" "3.568.0" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/protocol-http" "^4.0.4" + "@smithy/signature-v4" "^4.0.0" + "@smithy/smithy-client" "^3.1.8" + "@smithy/types" "^3.3.0" + "@smithy/util-config-provider" "^3.0.0" + "@smithy/util-stream" "^3.1.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-signing@3.616.0": + version "3.616.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.616.0.tgz#7270662413c6c092c2680aa37a80358e8338ec35" + integrity sha512-wwzZFlXyURwo40oz1NmufreQa5DqwnCF8hR8tIP5+oKCyhbkmlmv8xG4Wn51bzY2WEbQhvFebgZSFTEvelCoCg== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/property-provider" "^3.1.3" + "@smithy/protocol-http" "^4.0.4" + "@smithy/signature-v4" "^4.0.0" + "@smithy/types" "^3.3.0" + "@smithy/util-middleware" "^3.0.3" + tslib "^2.6.2" + +"@aws-sdk/middleware-ssec@3.609.0": + version "3.609.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.609.0.tgz#b87a8bc6133f3f6bdc6801183d0f9dad3f93cf9f" + integrity sha512-GZSD1s7+JswWOTamVap79QiDaIV7byJFssBW68GYjyRS5EBjNfwA/8s+6uE6g39R3ojyTbYOmvcANoZEhSULXg== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-user-agent@3.616.0": + version "3.616.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.616.0.tgz#fe11d62e9cdc96a354c37968499fa32637a70f45" + integrity sha512-iMcAb4E+Z3vuEcrDsG6T2OBNiqWAquwahP9qepHqfmnmJqHr1mSHtXDYTGBNid31+621sUQmneUQ+fagpGAe4w== + dependencies: + "@aws-sdk/types" "3.609.0" + "@aws-sdk/util-endpoints" "3.614.0" + "@smithy/protocol-http" "^4.0.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/region-config-resolver@3.614.0": + version "3.614.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz#9cebb31a5bcfea2a41891fff7f28d0164cde179a" + integrity sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/types" "^3.3.0" + "@smithy/util-config-provider" "^3.0.0" + "@smithy/util-middleware" "^3.0.3" + tslib "^2.6.2" + +"@aws-sdk/signature-v4-multi-region@3.617.0": + version "3.617.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.617.0.tgz#2c28e5cb2e937140ee7293000443cbf857515f4c" + integrity sha512-kGbLs9q0/ziuzA1huf0BBh05ChxDeZ8ZWc/kedb80ocq6izOLaGgeqqUR8oB0ianwjel4AQq/iv1fsOIt3wmAA== + dependencies: + "@aws-sdk/middleware-sdk-s3" "3.617.0" + "@aws-sdk/types" "3.609.0" + "@smithy/protocol-http" "^4.0.4" + "@smithy/signature-v4" "^4.0.0" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/token-providers@3.614.0": + version "3.614.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz#88da04f6d4ce916b0b0f6e045676d04201fb47fd" + integrity sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/property-provider" "^3.1.3" + "@smithy/shared-ini-file-loader" "^3.1.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/types@3.609.0", "@aws-sdk/types@^3.222.0": + version "3.609.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.609.0.tgz#06b39d799c9f197a7b43670243e8e78a3bf7d6a5" + integrity sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q== + dependencies: + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/util-arn-parser@3.568.0": + version "3.568.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.568.0.tgz#6a19a8c6bbaa520b6be1c278b2b8c17875b91527" + integrity sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w== + dependencies: + tslib "^2.6.2" + +"@aws-sdk/util-endpoints@3.614.0": + version "3.614.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.614.0.tgz#6564b0ffd7dc3728221e9f9821f5aab1cc58468e" + integrity sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/types" "^3.3.0" + "@smithy/util-endpoints" "^2.0.5" + tslib "^2.6.2" + +"@aws-sdk/util-locate-window@^3.0.0": + version "3.568.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz#2acc4b2236af0d7494f7e517401ba6b3c4af11ff" + integrity sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig== + dependencies: + tslib "^2.6.2" + +"@aws-sdk/util-user-agent-browser@3.609.0": + version "3.609.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz#aa15421b2e32ae8bc589dac2bd6e8969832ce588" + integrity sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/types" "^3.3.0" + bowser "^2.11.0" + tslib "^2.6.2" + +"@aws-sdk/util-user-agent-node@3.614.0": + version "3.614.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz#1e3f49a80f841a3f21647baed2adce01aac5beb5" + integrity sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA== + dependencies: + "@aws-sdk/types" "3.609.0" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@aws-sdk/xml-builder@3.609.0": + version "3.609.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.609.0.tgz#eeb3d5cde000a23cfeeefe0354b6193440dc7d87" + integrity sha512-l9XxNcA4HX98rwCC2/KoiWcmEiRfZe4G+mYwDbCFT87JIMj6GBhLDkAzr/W8KAaA2IDr8Vc6J8fZPgVulxxfMA== + dependencies: + "@smithy/types" "^3.3.0" + tslib "^2.6.2" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.7": version "7.24.7" @@ -812,14 +1600,7 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== -"@sinonjs/commons@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" - integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== - dependencies: - type-detect "4.0.8" - -"@sinonjs/commons@^3.0.0", "@sinonjs/commons@^3.0.1": +"@sinonjs/commons@^3.0.0": version "3.0.1" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== @@ -833,26 +1614,508 @@ dependencies: "@sinonjs/commons" "^3.0.0" -"@sinonjs/fake-timers@^11.2.2": - version "11.2.2" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz#50063cc3574f4a27bd8453180a04171c85cc9699" - integrity sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw== +"@smithy/abort-controller@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.1.tgz#291210611ff6afecfc198d0ca72d5771d8461d16" + integrity sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ== dependencies: - "@sinonjs/commons" "^3.0.0" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" -"@sinonjs/samsam@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.0.tgz#0d488c91efb3fa1442e26abea81759dfc8b5ac60" - integrity sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew== +"@smithy/chunked-blob-reader-native@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.0.tgz#f1104b30030f76f9aadcbd3cdca4377bd1ba2695" + integrity sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg== + dependencies: + "@smithy/util-base64" "^3.0.0" + tslib "^2.6.2" + +"@smithy/chunked-blob-reader@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader/-/chunked-blob-reader-3.0.0.tgz#e5d3b04e9b273ba8b7ede47461e2aa96c8aa49e0" + integrity sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA== + dependencies: + tslib "^2.6.2" + +"@smithy/config-resolver@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.5.tgz#727978bba7ace754c741c259486a19d3083431fd" + integrity sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA== + dependencies: + "@smithy/node-config-provider" "^3.1.4" + "@smithy/types" "^3.3.0" + "@smithy/util-config-provider" "^3.0.0" + "@smithy/util-middleware" "^3.0.3" + tslib "^2.6.2" + +"@smithy/core@^2.2.7": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.3.0.tgz#305da2d99f9239e6e6737d55fd073b38edad89ed" + integrity sha512-tvSwf+PF5uurExeJsl+sSNn4bPsYShL86fJ/wcj63cioJ0IF131BxC5QxX8qkIISk7Pr7g2+UJH9ib4cCafvqw== + dependencies: + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-retry" "^3.0.12" + "@smithy/middleware-serde" "^3.0.3" + "@smithy/protocol-http" "^4.1.0" + "@smithy/smithy-client" "^3.1.10" + "@smithy/types" "^3.3.0" + "@smithy/util-middleware" "^3.0.3" + tslib "^2.6.2" + +"@smithy/credential-provider-imds@^3.1.4", "@smithy/credential-provider-imds@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.0.tgz#0e0e7ddaff1a8633cb927aee1056c0ab506b7ecf" + integrity sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA== + dependencies: + "@smithy/node-config-provider" "^3.1.4" + "@smithy/property-provider" "^3.1.3" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + tslib "^2.6.2" + +"@smithy/eventstream-codec@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-3.1.2.tgz#4a1c72b34400631b829241151984a1ad8c4f963c" + integrity sha512-0mBcu49JWt4MXhrhRAlxASNy0IjDRFU+aWNDRal9OtUJvJNiwDuyKMUONSOjLjSCeGwZaE0wOErdqULer8r7yw== + dependencies: + "@aws-crypto/crc32" "5.2.0" + "@smithy/types" "^3.3.0" + "@smithy/util-hex-encoding" "^3.0.0" + tslib "^2.6.2" + +"@smithy/eventstream-serde-browser@^3.0.4": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.5.tgz#3e971afd2b8a02a098af8decc4b9e3f35296d6a2" + integrity sha512-dEyiUYL/ekDfk+2Ra4GxV+xNnFoCmk1nuIXg+fMChFTrM2uI/1r9AdiTYzPqgb72yIv/NtAj6C3dG//1wwgakQ== + dependencies: + "@smithy/eventstream-serde-universal" "^3.0.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@smithy/eventstream-serde-config-resolver@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.3.tgz#f852e096d0ad112363b4685e1d441088d1fce67a" + integrity sha512-NVTYjOuYpGfrN/VbRQgn31x73KDLfCXCsFdad8DiIc3IcdxL+dYA9zEQPyOP7Fy2QL8CPy2WE4WCUD+ZsLNfaQ== dependencies: - "@sinonjs/commons" "^2.0.0" - lodash.get "^4.4.2" - type-detect "^4.0.8" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" -"@sinonjs/text-encoding@^0.7.2": - version "0.7.2" - resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz#5981a8db18b56ba38ef0efb7d995b12aa7b51918" - integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ== +"@smithy/eventstream-serde-node@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.4.tgz#6301752ca51b3ebabcd2dec112f1dacd990de4c1" + integrity sha512-mjlG0OzGAYuUpdUpflfb9zyLrBGgmQmrobNT8b42ZTsGv/J03+t24uhhtVEKG/b2jFtPIHF74Bq+VUtbzEKOKg== + dependencies: + "@smithy/eventstream-serde-universal" "^3.0.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@smithy/eventstream-serde-universal@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.4.tgz#6754de5b94bdc286d8ef1d6bcf22d80f6ab68f30" + integrity sha512-Od9dv8zh3PgOD7Vj4T3HSuox16n0VG8jJIM2gvKASL6aCtcS8CfHZDWe1Ik3ZXW6xBouU+45Q5wgoliWDZiJ0A== + dependencies: + "@smithy/eventstream-codec" "^3.1.2" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@smithy/fetch-http-handler@^3.2.2", "@smithy/fetch-http-handler@^3.2.3": + version "3.2.3" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.3.tgz#45f56ad902182df8270b0aac9ccfc0bd4b6116d0" + integrity sha512-m4dzQeafWi5KKCCnDwGGHYk9lqcLs9LvlXZRB0J38DMectsEbxdiO/Rx1NaYYMIkath7AnjpR+r0clL+7dwclQ== + dependencies: + "@smithy/protocol-http" "^4.1.0" + "@smithy/querystring-builder" "^3.0.3" + "@smithy/types" "^3.3.0" + "@smithy/util-base64" "^3.0.0" + tslib "^2.6.2" + +"@smithy/hash-blob-browser@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.2.tgz#90281c1f183d93686fb4f26107f1819644d68829" + integrity sha512-hAbfqN2UbISltakCC2TP0kx4LqXBttEv2MqSPE98gVuDFMf05lU+TpC41QtqGP3Ff5A3GwZMPfKnEy0VmEUpmg== + dependencies: + "@smithy/chunked-blob-reader" "^3.0.0" + "@smithy/chunked-blob-reader-native" "^3.0.0" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@smithy/hash-node@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.3.tgz#82c5cb7b0f1a29ee7319081853d2d158c07dff24" + integrity sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw== + dependencies: + "@smithy/types" "^3.3.0" + "@smithy/util-buffer-from" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/hash-stream-node@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-3.1.2.tgz#89f0290ae44b113863878e75b10c484ff48af71c" + integrity sha512-PBgDMeEdDzi6JxKwbfBtwQG9eT9cVwsf0dZzLXoJF4sHKHs5HEo/3lJWpn6jibfJwT34I1EBXpBnZE8AxAft6g== + dependencies: + "@smithy/types" "^3.3.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/invalid-dependency@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.3.tgz#8d9fd70e3a94b565a4eba4ffbdc95238e1930528" + integrity sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw== + dependencies: + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@smithy/is-array-buffer@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz#f84f0d9f9a36601a9ca9381688bd1b726fd39111" + integrity sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA== + dependencies: + tslib "^2.6.2" + +"@smithy/is-array-buffer@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz#9a95c2d46b8768946a9eec7f935feaddcffa5e7a" + integrity sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ== + dependencies: + tslib "^2.6.2" + +"@smithy/md5-js@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-3.0.3.tgz#55ee40aa24075b096c39f7910590c18ff7660c98" + integrity sha512-O/SAkGVwpWmelpj/8yDtsaVe6sINHLB1q8YE/+ZQbDxIw3SRLbTZuRaI10K12sVoENdnHqzPp5i3/H+BcZ3m3Q== + dependencies: + "@smithy/types" "^3.3.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/middleware-compression@^3.0.6": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@smithy/middleware-compression/-/middleware-compression-3.0.7.tgz#d127f3ab7a1a019feae2e636e2687e55753eee4d" + integrity sha512-ide8RSj0HWHq8uGryx1PuhI/0p+xgrrG+atDBgmv1ScIVIBrH7hqk2cfXyZ3+zQYeD2z95iDn75U1BHwlSwhag== + dependencies: + "@smithy/is-array-buffer" "^3.0.0" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/types" "^3.3.0" + "@smithy/util-config-provider" "^3.0.0" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-utf8" "^3.0.0" + fflate "0.8.1" + tslib "^2.6.2" + +"@smithy/middleware-content-length@^3.0.4": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.5.tgz#1680aa4fb2a1c0505756103c9a5c2916307d9035" + integrity sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw== + dependencies: + "@smithy/protocol-http" "^4.1.0" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@smithy/middleware-endpoint@^3.0.5", "@smithy/middleware-endpoint@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.0.tgz#9b8a496d87a68ec43f3f1a0139868d6765a88119" + integrity sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw== + dependencies: + "@smithy/middleware-serde" "^3.0.3" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/shared-ini-file-loader" "^3.1.4" + "@smithy/types" "^3.3.0" + "@smithy/url-parser" "^3.0.3" + "@smithy/util-middleware" "^3.0.3" + tslib "^2.6.2" + +"@smithy/middleware-retry@^3.0.10", "@smithy/middleware-retry@^3.0.12": + version "3.0.12" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.12.tgz#e20b0ebeac724f815340a37bd927ae5401a5c94b" + integrity sha512-CncrlzNiBzuZZYLJ49H4dC6FEz62hnv0Y0nJyl/oZ73FX/9CDHWkIRD4ZOf5ntB6QyYWx0G3mXAOHOcM5omlLg== + dependencies: + "@smithy/node-config-provider" "^3.1.4" + "@smithy/protocol-http" "^4.1.0" + "@smithy/service-error-classification" "^3.0.3" + "@smithy/smithy-client" "^3.1.10" + "@smithy/types" "^3.3.0" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-retry" "^3.0.3" + tslib "^2.6.2" + uuid "^9.0.1" + +"@smithy/middleware-serde@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.3.tgz#74d974460f74d99f38c861e6862984543a880a66" + integrity sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA== + dependencies: + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@smithy/middleware-stack@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz#91845c7e61e6f137fa912b623b6def719a4f6ce7" + integrity sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA== + dependencies: + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@smithy/node-config-provider@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz#05647bed666aa8036a1ad72323c1942e5d421be1" + integrity sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ== + dependencies: + "@smithy/property-provider" "^3.1.3" + "@smithy/shared-ini-file-loader" "^3.1.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@smithy/node-http-handler@^3.1.3", "@smithy/node-http-handler@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz#be4195e45639e690d522cd5f11513ea822ff9d5f" + integrity sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg== + dependencies: + "@smithy/abort-controller" "^3.1.1" + "@smithy/protocol-http" "^4.1.0" + "@smithy/querystring-builder" "^3.0.3" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@smithy/property-provider@^3.1.3": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.3.tgz#afd57ea82a3f6c79fbda95e3cb85c0ee0a79f39a" + integrity sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g== + dependencies: + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@smithy/protocol-http@^4.0.4", "@smithy/protocol-http@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.0.tgz#23519d8f45bf4f33960ea5415847bc2b620a010b" + integrity sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA== + dependencies: + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@smithy/querystring-builder@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz#6b0e566f885bb84938d077c69e8f8555f686af13" + integrity sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw== + dependencies: + "@smithy/types" "^3.3.0" + "@smithy/util-uri-escape" "^3.0.0" + tslib "^2.6.2" + +"@smithy/querystring-parser@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz#272a6b83f88dfcbbec8283d72a6bde850cc00091" + integrity sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ== + dependencies: + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@smithy/service-error-classification@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz#73484255060a094aa9372f6cd972dcaf97e3ce80" + integrity sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ== + dependencies: + "@smithy/types" "^3.3.0" + +"@smithy/shared-ini-file-loader@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz#7dceaf5a5307a2ee347ace8aba17312a1a3ede15" + integrity sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ== + dependencies: + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@smithy/signature-v4@^4.0.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.1.0.tgz#251ff43dc1f4ad66776122732fea9e56efc56443" + integrity sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag== + dependencies: + "@smithy/is-array-buffer" "^3.0.0" + "@smithy/protocol-http" "^4.1.0" + "@smithy/types" "^3.3.0" + "@smithy/util-hex-encoding" "^3.0.0" + "@smithy/util-middleware" "^3.0.3" + "@smithy/util-uri-escape" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/smithy-client@^3.1.10", "@smithy/smithy-client@^3.1.8": + version "3.1.10" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.1.10.tgz#f2eb339006d48cf1c8f797f6e3896ec5af6ab80b" + integrity sha512-OLHJo0DAmhX69YUF3WbNfzzxGIncGdxao+v27o24msdhin2AWTxJMaBQ3iPGfIrWMjy+8YGMXUJ7PrkJlpznTw== + dependencies: + "@smithy/middleware-endpoint" "^3.1.0" + "@smithy/middleware-stack" "^3.0.3" + "@smithy/protocol-http" "^4.1.0" + "@smithy/types" "^3.3.0" + "@smithy/util-stream" "^3.1.2" + tslib "^2.6.2" + +"@smithy/types@^3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.3.0.tgz#fae037c733d09bc758946a01a3de0ef6e210b16b" + integrity sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA== + dependencies: + tslib "^2.6.2" + +"@smithy/url-parser@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.3.tgz#e8a060d9810b24b1870385fc2b02485b8a6c5955" + integrity sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A== + dependencies: + "@smithy/querystring-parser" "^3.0.3" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@smithy/util-base64@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-3.0.0.tgz#f7a9a82adf34e27a72d0719395713edf0e493017" + integrity sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ== + dependencies: + "@smithy/util-buffer-from" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-body-length-browser@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz#86ec2f6256310b4845a2f064e2f571c1ca164ded" + integrity sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ== + dependencies: + tslib "^2.6.2" + +"@smithy/util-body-length-node@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz#99a291bae40d8932166907fe981d6a1f54298a6d" + integrity sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA== + dependencies: + tslib "^2.6.2" + +"@smithy/util-buffer-from@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz#6fc88585165ec73f8681d426d96de5d402021e4b" + integrity sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA== + dependencies: + "@smithy/is-array-buffer" "^2.2.0" + tslib "^2.6.2" + +"@smithy/util-buffer-from@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz#559fc1c86138a89b2edaefc1e6677780c24594e3" + integrity sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA== + dependencies: + "@smithy/is-array-buffer" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-config-provider@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz#62c6b73b22a430e84888a8f8da4b6029dd5b8efe" + integrity sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ== + dependencies: + tslib "^2.6.2" + +"@smithy/util-defaults-mode-browser@^3.0.10": + version "3.0.12" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.12.tgz#45f5fa4cc25d5c5d6097c2948f2668253bf2a34d" + integrity sha512-5b81UUPKjD61DMg7JBYzkSM1Vny/RfRRhnZYzuWjm25OyrEXsar3RgbbXYR+otdx+wrPR3QmuFtbDZmEgGpwVg== + dependencies: + "@smithy/property-provider" "^3.1.3" + "@smithy/smithy-client" "^3.1.10" + "@smithy/types" "^3.3.0" + bowser "^2.11.0" + tslib "^2.6.2" + +"@smithy/util-defaults-mode-node@^3.0.10": + version "3.0.12" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.12.tgz#bfd460af0b7dc5e50fe6dcdf35ec1c709e91c632" + integrity sha512-g2NdtGDN67PepBs0t/mkrlQ2nVkhKUDJZCNmEJIarzYq2sK4mKO9t61Nzlv+gHEEC3ESfRaMCC/Ol3ZfCZYg7Q== + dependencies: + "@smithy/config-resolver" "^3.0.5" + "@smithy/credential-provider-imds" "^3.2.0" + "@smithy/node-config-provider" "^3.1.4" + "@smithy/property-provider" "^3.1.3" + "@smithy/smithy-client" "^3.1.10" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@smithy/util-endpoints@^2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz#e3a7a4d1c41250bfd2b2d890d591273a7d8934be" + integrity sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg== + dependencies: + "@smithy/node-config-provider" "^3.1.4" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@smithy/util-hex-encoding@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz#32938b33d5bf2a15796cd3f178a55b4155c535e6" + integrity sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ== + dependencies: + tslib "^2.6.2" + +"@smithy/util-middleware@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.3.tgz#07bf9602682f5a6c55bc2f0384303f85fc68c87e" + integrity sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw== + dependencies: + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@smithy/util-retry@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.3.tgz#9b2ac0dbb1c81f69812a8affa4d772bebfc0e049" + integrity sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w== + dependencies: + "@smithy/service-error-classification" "^3.0.3" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" + +"@smithy/util-stream@^3.1.0", "@smithy/util-stream@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.1.2.tgz#404e2437eecad13aa89269c1cc2255f253d7843e" + integrity sha512-08zDzB7BqvybHfZKnav5lL1UniFDK6o6nZ3OWp60PKsi/na2LpU6OX8MCtDNVaPBpKpc8EH26fvFhNT6wvMlbw== + dependencies: + "@smithy/fetch-http-handler" "^3.2.3" + "@smithy/node-http-handler" "^3.1.4" + "@smithy/types" "^3.3.0" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-buffer-from" "^3.0.0" + "@smithy/util-hex-encoding" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-uri-escape@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz#e43358a78bf45d50bb736770077f0f09195b6f54" + integrity sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg== + dependencies: + tslib "^2.6.2" + +"@smithy/util-utf8@^2.0.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-2.3.0.tgz#dd96d7640363259924a214313c3cf16e7dd329c5" + integrity sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A== + dependencies: + "@smithy/util-buffer-from" "^2.2.0" + tslib "^2.6.2" + +"@smithy/util-utf8@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-3.0.0.tgz#1a6a823d47cbec1fd6933e5fc87df975286d9d6a" + integrity sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA== + dependencies: + "@smithy/util-buffer-from" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-waiter@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-3.1.2.tgz#2d40c3312f3537feee763459a19acafab4c75cf3" + integrity sha512-4pP0EV3iTsexDx+8PPGAKCQpd/6hsQBaQhqWzU4hqKPHN5epPsxKbvUTIiYIHTxaKt6/kEaqPBpu/ufvfbrRzw== + dependencies: + "@smithy/abort-controller" "^3.1.1" + "@smithy/types" "^3.3.0" + tslib "^2.6.2" "@tsconfig/node10@^1.0.7": version "1.0.11" @@ -1321,57 +2584,33 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" -aws-cdk-lib@^2.76.0: - version "2.123.0" - resolved "https://registry.yarnpkg.com/aws-cdk-lib/-/aws-cdk-lib-2.123.0.tgz#a03d93f978f709471bd6e86748ae942ad47a806b" - integrity sha512-KSfX1ex52N/v25hjOlec1D9iCBLbGpegTR8rB4kYVqdQCdCWbKAwZjo6f38JZqkDlEJn+g249p8xiniq/gDniQ== +aws-cdk-lib@2.150.0: + version "2.150.0" + resolved "https://registry.yarnpkg.com/aws-cdk-lib/-/aws-cdk-lib-2.150.0.tgz#c5fb37f824e645dc7663f001eda7950bb09ec53d" + integrity sha512-A5dJ6iIAXlkSgUIKhhSd5slEjvDBiREv6/xw8CgrXU+puoFULu5bC0SOQARjTzcsAgAVtxdlaZ7qy7u9It7nHQ== dependencies: "@aws-cdk/asset-awscli-v1" "^2.2.202" "@aws-cdk/asset-kubectl-v20" "^2.1.2" - "@aws-cdk/asset-node-proxy-agent-v6" "^2.0.1" + "@aws-cdk/asset-node-proxy-agent-v6" "^2.0.3" "@balena/dockerignore" "^1.0.2" case "1.6.3" fs-extra "^11.2.0" - ignore "^5.3.0" + ignore "^5.3.1" jsonschema "^1.4.1" + mime-types "^2.1.35" minimatch "^3.1.2" punycode "^2.3.1" - semver "^7.5.4" - table "^6.8.1" + semver "^7.6.2" + table "^6.8.2" yaml "1.10.2" -aws-cdk@^2.150.0: +aws-cdk@2.150.0: version "2.150.0" resolved "https://registry.yarnpkg.com/aws-cdk/-/aws-cdk-2.150.0.tgz#364d3b208bf040b18d42d0036cff1ce5cef4021b" integrity sha512-leo4J70QrJp+SYm/87VuoOVfALsW11F7JpkAGu5TLL/qd2k/CbovZ8k9/3Ov+jCVsvAgdn9DeHL01Sn6hSl6Zg== optionalDependencies: fsevents "2.3.2" -aws-sdk-mock@^5.9.0: - version "5.9.0" - resolved "https://registry.yarnpkg.com/aws-sdk-mock/-/aws-sdk-mock-5.9.0.tgz#80e5cdef33a8357899c77d1378316e9ed777b4fa" - integrity sha512-kTUXaQQ1CTn3Cwxa2g1XqtCDq+FTEbPl/zgaYCok357f7gbWkeYEegqa5RziTRb11oNIUHrLp9DSHwZT3XdBkA== - dependencies: - aws-sdk "^2.1231.0" - sinon "^17.0.0" - traverse "^0.6.6" - -aws-sdk@^2.1231.0, aws-sdk@^2.1663.0: - version "2.1663.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1663.0.tgz#43a0f64dd5817fd3da11949f62bf55c3c17bd8a0" - integrity sha512-zgXHOw0sBhYcw/yC2YKPLEMNTLnglYLB5UzhAYYShFgOng2NvxkrkuqGFFQ9+haMx2zx6t6CgeqQ7nT0TFUf/g== - dependencies: - buffer "4.9.2" - events "1.1.1" - ieee754 "1.1.13" - jmespath "0.16.0" - querystring "0.2.0" - sax "1.2.1" - url "0.10.3" - util "^0.12.4" - uuid "8.0.0" - xml2js "0.6.2" - axios@^0.26.1: version "0.26.1" resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" @@ -1444,10 +2683,10 @@ 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 sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +bowser@^2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" + integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== brace-expansion@^1.1.7: version "1.1.11" @@ -1500,15 +2739,6 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@4.9.2: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" @@ -1685,7 +2915,12 @@ concat-stream@^2.0.0: readable-stream "^3.0.2" typedarray "^0.0.6" -constructs@^10.0.0, constructs@^10.1.31: +constructs@10.1.31: + version "10.1.31" + resolved "https://registry.yarnpkg.com/constructs/-/constructs-10.1.31.tgz#5ff527578ca8e85320ff7da0b8a5569ee3bcd9c8" + integrity sha512-rL5Vmy65kr+7n4swyEmD8gwrpiCtoUfhb1wNdg8UsdfzZT5AoU+fYx1shDOBpwAibm6yTim3Vjs/ZPR2iUFFQw== + +constructs@^10.0.0: version "10.3.0" resolved "https://registry.yarnpkg.com/constructs/-/constructs-10.3.0.tgz#4c246fce9cf8e77711ad45944e9fbd41f1501965" integrity sha512-vbK8i3rIb/xwZxSpTjz3SagHn1qq9BChLEfy5Hf6fB3/2eFbrwt2n9kHwQcS0CPTRBesreeAcsJfMq2229FnbQ== @@ -2007,11 +3242,6 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -diff@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" - integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -2368,11 +3598,6 @@ 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 sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw== - execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -2435,6 +3660,13 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-xml-parser@4.2.5: + version "4.2.5" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz#a6747a09296a6cb34f2ae634019bf1738f3b421f" + integrity sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g== + dependencies: + strnum "^1.0.5" + fastq@^1.6.0: version "1.17.1" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" @@ -2449,6 +3681,11 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" +fflate@0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.1.tgz#1ed92270674d2ad3c73f077cd0acf26486dae6c9" + integrity sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ== + figures@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -2853,26 +4090,11 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -ieee754@1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - -ieee754@^1.1.4: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - ignore@^5.2.0, ignore@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== -ignore@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" - integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== - import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -2936,14 +4158,6 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -is-arguments@^1.0.4: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - is-array-buffer@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" @@ -3013,13 +4227,6 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-generator-function@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== - dependencies: - has-tostringtag "^1.0.0" - is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" @@ -3100,7 +4307,7 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" -is-typed-array@^1.1.13, is-typed-array@^1.1.3: +is-typed-array@^1.1.13: version "1.1.13" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== @@ -3114,16 +4321,16 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" -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 sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -3272,11 +4479,6 @@ jest-config@^29.7.0: slash "^3.0.0" strip-json-comments "^3.1.1" -jest-create-mock-instance@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/jest-create-mock-instance/-/jest-create-mock-instance-2.0.0.tgz#3f79a4399af615fc2f186dfa3c9fe13b0589370b" - integrity sha512-gW3H87m8hF72JMFPMEorF2jnEyV31XpaOYtDqeRNSwFT73+MNZvbUKQfCbdixxOrCCppToSPmi9gGygIzms6Eg== - jest-diff@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" @@ -3565,11 +4767,6 @@ jest@^29: import-local "^3.0.2" jest-cli "^29.7.0" -jmespath@0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.16.0.tgz#b15b0a85dfd4d930d43e69ed605943c802785076" - integrity sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw== - js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -3661,11 +4858,6 @@ jsonschema@^1.4.1: resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.4.1.tgz#cc4c3f0077fb4542982973d8a083b6b34f482dab" integrity sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ== -just-extend@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-6.2.0.tgz#b816abfb3d67ee860482e7401564672558163947" - integrity sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw== - keyv@^4.5.3: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" @@ -3746,11 +4938,6 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash.get@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== - lodash.ismatch@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" @@ -3859,6 +5046,18 @@ micromatch@^4.0.4: braces "^3.0.3" picomatch "^2.3.1" +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.35: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -3978,17 +5177,6 @@ neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -nise@^5.1.9: - version "5.1.9" - resolved "https://registry.yarnpkg.com/nise/-/nise-5.1.9.tgz#0cb73b5e4499d738231a473cd89bd8afbb618139" - integrity sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww== - dependencies: - "@sinonjs/commons" "^3.0.0" - "@sinonjs/fake-timers" "^11.2.2" - "@sinonjs/text-encoding" "^0.7.2" - just-extend "^6.2.0" - path-to-regexp "^6.2.1" - node-ical@0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/node-ical/-/node-ical-0.15.1.tgz#0fb1fcb8ad21cbf32882eba92731f2a081216383" @@ -4224,11 +5412,6 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-to-regexp@^6.2.1: - version "6.2.2" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.2.tgz#324377a83e5049cbecadc5554d6a63a9a4866b36" - integrity sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw== - path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -4325,11 +5508,6 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== - punycode@^2.1.0, punycode@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" @@ -4345,11 +5523,6 @@ q@^1.5.1: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== - queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -4563,16 +5736,6 @@ safe-regex-test@^1.0.3: es-errors "^1.3.0" is-regex "^1.1.4" -sax@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" - integrity sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA== - -sax@>=0.6.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" - integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== - "semver@2 || 3 || 4 || 5": version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" @@ -4583,7 +5746,7 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.1.1, semver@^7.3.4, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3: +semver@^7.1.1, semver@^7.3.4, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.2, semver@^7.6.3: version "7.6.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== @@ -4654,18 +5817,6 @@ signal-exit@^3.0.3, signal-exit@^3.0.7: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -sinon@^17.0.0: - version "17.0.2" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-17.0.2.tgz#470894bcc2d24b01bad539722ea46da949892405" - integrity sha512-uihLiaB9FhzesElPDFZA7hDcNABzsVHwr3YfmM9sBllVwab3l0ltGlRV1XhpNfIacNDLGD1QRZNLs5nU5+hTuA== - dependencies: - "@sinonjs/commons" "^3.0.1" - "@sinonjs/fake-timers" "^11.2.2" - "@sinonjs/samsam" "^8.0.0" - diff "^5.2.0" - nise "^5.1.9" - supports-color "^7" - sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -4868,6 +6019,11 @@ strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +strnum@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -4875,7 +6031,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7, supports-color@^7.1.0: +supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -4894,10 +6050,10 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -table@^6.8.1: - version "6.8.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" - integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== +table@^6.8.2: + version "6.8.2" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.2.tgz#c5504ccf201213fa227248bdc8c5569716ac6c58" + integrity sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA== dependencies: ajv "^8.0.1" lodash.truncate "^4.4.2" @@ -4973,15 +6129,6 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -traverse@^0.6.6: - version "0.6.9" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.9.tgz#76cfdbacf06382d460b76f8b735a44a6209d8b81" - integrity sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg== - dependencies: - gopd "^1.0.1" - typedarray.prototype.slice "^1.0.3" - which-typed-array "^1.1.15" - trim-newlines@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" @@ -5041,7 +6188,7 @@ tslib@^1.10.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.4.0: +tslib@^2.4.0, tslib@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== @@ -5053,7 +6200,7 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-detect@4.0.8, type-detect@^4.0.8: +type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== @@ -5127,18 +6274,6 @@ typed-array-length@^1.0.6: is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" -typedarray.prototype.slice@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz#bce2f685d3279f543239e4d595e0d021731d2d1a" - integrity sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.0" - es-errors "^1.3.0" - typed-array-buffer "^1.0.2" - typed-array-byte-offset "^1.0.2" - typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -5189,40 +6324,21 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -url@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" - integrity sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ== - dependencies: - punycode "1.3.2" - querystring "0.2.0" - util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -util@^0.12.4: - version "0.12.5" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" - integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== - dependencies: - inherits "^2.0.3" - is-arguments "^1.0.4" - is-generator-function "^1.0.7" - is-typed-array "^1.1.3" - which-typed-array "^1.1.2" - -uuid@8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.0.0.tgz#bc6ccf91b5ff0ac07bbcdbf1c7c4e150db4dbb6c" - integrity sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw== - uuid@^8.3.1, uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuid@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" @@ -5263,7 +6379,7 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.2: +which-typed-array@^1.1.14, which-typed-array@^1.1.15: version "1.1.15" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== @@ -5313,14 +6429,6 @@ write-file-atomic@^4.0.2: imurmurhash "^0.1.4" signal-exit "^3.0.7" -xml2js@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.6.2.tgz#dd0b630083aa09c161e25a4d0901e2b2a929b499" - integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== - dependencies: - sax ">=0.6.0" - xmlbuilder "~11.0.0" - xml@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" @@ -5336,11 +6444,6 @@ xmlbuilder2@^3.1.1: "@oozcitak/util" "8.3.8" js-yaml "3.14.1" -xmlbuilder@~11.0.0: - version "11.0.1" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" - integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== - xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"