summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--packages/backend/package.json5
-rw-r--r--packages/backend/src/core/DriveService.ts53
-rw-r--r--packages/backend/src/core/S3Service.ts61
-rw-r--r--packages/backend/test/unit/DriveService.ts59
-rw-r--r--packages/backend/test/unit/S3Service.ts77
-rw-r--r--pnpm-lock.yaml1176
6 files changed, 1267 insertions, 164 deletions
diff --git a/packages/backend/package.json b/packages/backend/package.json
index 5a3dcfb5e7..3f640c4a63 100644
--- a/packages/backend/package.json
+++ b/packages/backend/package.json
@@ -37,6 +37,9 @@
"@tensorflow/tfjs-node": "4.2.0"
},
"dependencies": {
+ "@aws-sdk/client-s3": "^3.294.0",
+ "@aws-sdk/lib-storage": "^3.294.0",
+ "@aws-sdk/node-http-handler": "^3.292.0",
"@bull-board/api": "5.0.0",
"@bull-board/fastify": "5.0.0",
"@bull-board/ui": "5.0.0",
@@ -59,7 +62,6 @@
"ajv": "8.12.0",
"archiver": "5.3.1",
"autwh": "0.1.0",
- "aws-sdk": "2.1318.0",
"bcryptjs": "2.4.3",
"blurhash": "2.0.5",
"bull": "4.10.4",
@@ -190,6 +192,7 @@
"@types/ws": "8.5.4",
"@typescript-eslint/eslint-plugin": "5.54.1",
"@typescript-eslint/parser": "5.54.1",
+ "aws-sdk-client-mock": "^2.1.1",
"cross-env": "7.0.3",
"eslint": "8.35.0",
"eslint-plugin-import": "2.27.5",
diff --git a/packages/backend/src/core/DriveService.ts b/packages/backend/src/core/DriveService.ts
index f1e93d6dd9..97d03d5f52 100644
--- a/packages/backend/src/core/DriveService.ts
+++ b/packages/backend/src/core/DriveService.ts
@@ -4,6 +4,7 @@ import { v4 as uuid } from 'uuid';
import sharp from 'sharp';
import { sharpBmp } from 'sharp-read-bmp';
import { IsNull } from 'typeorm';
+import { DeleteObjectCommandInput, PutObjectCommandInput, NoSuchKey } from '@aws-sdk/client-s3';
import { DI } from '@/di-symbols.js';
import type { DriveFilesRepository, UsersRepository, DriveFoldersRepository, UserProfilesRepository } from '@/models/index.js';
import type { Config } from '@/config.js';
@@ -36,7 +37,6 @@ import { bindThis } from '@/decorators.js';
import { RoleService } from '@/core/RoleService.js';
import { correctFilename } from '@/misc/correct-filename.js';
import { isMimeImage } from '@/misc/is-mime-image.js';
-import type S3 from 'aws-sdk/clients/s3.js';
type AddFileArgs = {
/** User who wish to add file */
@@ -81,6 +81,7 @@ type UploadFromUrlArgs = {
export class DriveService {
private registerLogger: Logger;
private downloaderLogger: Logger;
+ private deleteLogger: Logger;
constructor(
@Inject(DI.config)
@@ -118,6 +119,7 @@ export class DriveService {
const logger = new Logger('drive', 'blue');
this.registerLogger = logger.createSubLogger('register', 'yellow');
this.downloaderLogger = logger.createSubLogger('downloader');
+ this.deleteLogger = logger.createSubLogger('delete');
}
/***
@@ -368,7 +370,7 @@ export class DriveService {
Body: stream,
ContentType: type,
CacheControl: 'max-age=31536000, immutable',
- } as S3.PutObjectRequest;
+ } as PutObjectCommandInput;
if (filename) params.ContentDisposition = contentDisposition(
'inline',
@@ -378,21 +380,16 @@ export class DriveService {
);
if (meta.objectStorageSetPublicRead) params.ACL = 'public-read';
- const s3 = this.s3Service.getS3(meta);
-
- const upload = s3.upload(params, {
- partSize: s3.endpoint.hostname === 'storage.googleapis.com' ? 500 * 1024 * 1024 : 8 * 1024 * 1024,
- });
-
- await upload.promise()
+ await this.s3Service.upload(meta, params)
.then(
result => {
- if (result) {
+ if ('Bucket' in result) { // CompleteMultipartUploadCommandOutput
this.registerLogger.debug(`Uploaded: ${result.Bucket}/${result.Key} => ${result.Location}`);
- } else {
- this.registerLogger.error(`Upload Result Empty: key = ${key}, filename = ${filename}`);
+ } else { // AbortMultipartUploadCommandOutput
+ this.registerLogger.error(`Upload Result Aborted: key = ${key}, filename = ${filename}`);
}
- },
+ })
+ .catch(
err => {
this.registerLogger.error(`Upload Failed: key = ${key}, filename = ${filename}`, err);
},
@@ -528,10 +525,10 @@ export class DriveService {
};
const properties: {
- width?: number;
- height?: number;
- orientation?: number;
- } = {};
+ width?: number;
+ height?: number;
+ orientation?: number;
+ } = {};
if (info.width) {
properties['width'] = info.width;
@@ -720,22 +717,22 @@ export class DriveService {
@bindThis
public async deleteObjectStorageFile(key: string) {
const meta = await this.metaService.fetch();
-
- const s3 = this.s3Service.getS3(meta);
-
try {
- await s3.deleteObject({
- Bucket: meta.objectStorageBucket!,
+ const param = {
+ Bucket: meta.objectStorageBucket,
Key: key,
- }).promise();
+ } as DeleteObjectCommandInput;
+
+ await this.s3Service.delete(meta, param);
} catch (err: any) {
- if (err.code === 'NoSuchKey') {
- console.warn(`The object storage had no such key to delete: ${key}. Skipping this.`, err);
+ if (err.name === 'NoSuchKey') {
+ this.deleteLogger.warn(`The object storage had no such key to delete: ${key}. Skipping this.`, err as Error);
return;
+ } else {
+ throw new Error(`Failed to delete the file from the object storage with the given key: ${key}`, {
+ cause: err,
+ });
}
- throw new Error(`Failed to delete the file from the object storage with the given key: ${key}`, {
- cause: err,
- });
}
}
diff --git a/packages/backend/src/core/S3Service.ts b/packages/backend/src/core/S3Service.ts
index cc8f950813..629278d915 100644
--- a/packages/backend/src/core/S3Service.ts
+++ b/packages/backend/src/core/S3Service.ts
@@ -1,11 +1,16 @@
import { URL } from 'node:url';
+import * as http from 'node:http';
+import * as https from 'node:https';
import { Inject, Injectable } from '@nestjs/common';
-import S3 from 'aws-sdk/clients/s3.js';
+import { DeleteObjectCommand, S3Client } from '@aws-sdk/client-s3';
+import { Upload } from '@aws-sdk/lib-storage';
+import { NodeHttpHandler, NodeHttpHandlerOptions } from '@aws-sdk/node-http-handler';
import { DI } from '@/di-symbols.js';
import type { Config } from '@/config.js';
import type { Meta } from '@/models/entities/Meta.js';
import { HttpRequestService } from '@/core/HttpRequestService.js';
import { bindThis } from '@/decorators.js';
+import type { DeleteObjectCommandInput, PutObjectCommandInput } from '@aws-sdk/client-s3';
@Injectable()
export class S3Service {
@@ -18,25 +23,47 @@ export class S3Service {
}
@bindThis
- public getS3(meta: Meta) {
+ public getS3Client(meta: Meta): S3Client {
const u = meta.objectStorageEndpoint
- ? `${meta.objectStorageUseSSL ? 'https://' : 'http://'}${meta.objectStorageEndpoint}`
- : `${meta.objectStorageUseSSL ? 'https://' : 'http://'}example.net`;
+ ? `${meta.objectStorageUseSSL ? 'https' : 'http'}://${meta.objectStorageEndpoint}`
+ : `${meta.objectStorageUseSSL ? 'https' : 'http'}://example.net`; // dummy url to select http(s) agent
- return new S3({
- endpoint: meta.objectStorageEndpoint && meta.objectStorageEndpoint.length > 0
- ? meta.objectStorageEndpoint
- : undefined,
- accessKeyId: meta.objectStorageAccessKey!,
- secretAccessKey: meta.objectStorageSecretKey!,
+ const agent = this.httpRequestService.getAgentByUrl(new URL(u), !meta.objectStorageUseProxy);
+ const handlerOption: NodeHttpHandlerOptions = {};
+ if (meta.objectStorageUseSSL) {
+ handlerOption.httpsAgent = agent as https.Agent;
+ } else {
+ handlerOption.httpAgent = agent as http.Agent;
+ }
+
+ return new S3Client({
+ endpoint: meta.objectStorageEndpoint ? u : undefined,
+ credentials: (meta.objectStorageAccessKey !== null && meta.objectStorageSecretKey !== null) ? {
+ accessKeyId: meta.objectStorageAccessKey,
+ secretAccessKey: meta.objectStorageSecretKey,
+ } : undefined,
region: meta.objectStorageRegion ?? undefined,
- sslEnabled: meta.objectStorageUseSSL,
- s3ForcePathStyle: !meta.objectStorageEndpoint // AWS with endPoint omitted
- ? false
- : meta.objectStorageS3ForcePathStyle,
- httpOptions: {
- agent: this.httpRequestService.getAgentByUrl(new URL(u), !meta.objectStorageUseProxy),
- },
+ tls: meta.objectStorageUseSSL,
+ forcePathStyle: meta.objectStorageEndpoint ? meta.objectStorageS3ForcePathStyle : false, // AWS with endPoint omitted
+ requestHandler: new NodeHttpHandler(handlerOption),
});
}
+
+ @bindThis
+ public async upload(meta: Meta, input: PutObjectCommandInput) {
+ const client = this.getS3Client(meta);
+ return new Upload({
+ client,
+ params: input,
+ partSize: (client.config.endpoint && (await client.config.endpoint()).hostname === 'storage.googleapis.com')
+ ? 500 * 1024 * 1024
+ : 8 * 1024 * 1024,
+ }).done();
+ }
+
+ @bindThis
+ public delete(meta: Meta, input: DeleteObjectCommandInput) {
+ const client = this.getS3Client(meta);
+ return client.send(new DeleteObjectCommand(input));
+ }
}
diff --git a/packages/backend/test/unit/DriveService.ts b/packages/backend/test/unit/DriveService.ts
index 0549800a68..4065665579 100644
--- a/packages/backend/test/unit/DriveService.ts
+++ b/packages/backend/test/unit/DriveService.ts
@@ -1,55 +1,56 @@
process.env.NODE_ENV = 'test';
-import { jest } from '@jest/globals';
import { Test } from '@nestjs/testing';
+import { DeleteObjectCommandOutput, DeleteObjectCommand, NoSuchKey, InvalidObjectState, S3Client } from '@aws-sdk/client-s3';
+import { mockClient } from 'aws-sdk-client-mock';
import { GlobalModule } from '@/GlobalModule.js';
import { DriveService } from '@/core/DriveService.js';
import { CoreModule } from '@/core/CoreModule.js';
-import { S3Service } from '@/core/S3Service';
-import type { Meta } from '@/models';
-import type { DeleteObjectOutput } from 'aws-sdk/clients/s3';
-import type { AWSError } from 'aws-sdk/lib/error';
-import type { PromiseResult, Request } from 'aws-sdk/lib/request';
import type { TestingModule } from '@nestjs/testing';
describe('DriveService', () => {
let app: TestingModule;
let driveService: DriveService;
+ const s3Mock = mockClient(S3Client);
- beforeEach(async () => {
+ beforeAll(async () => {
app = await Test.createTestingModule({
imports: [GlobalModule, CoreModule],
- providers: [DriveService, S3Service],
+ providers: [DriveService],
}).compile();
app.enableShutdownHooks();
driveService = app.get<DriveService>(DriveService);
+ });
- const s3Service = app.get<S3Service>(S3Service);
- const s3 = s3Service.getS3({} as Meta);
+ beforeEach(async () => {
+ s3Mock.reset();
+ });
- // new S3() surprisingly does not return an instance of class S3.
- // Let's use getPrototypeOf here to get a real prototype, since spying on S3.prototype doesn't work.
- // TODO: Use `aws-sdk-client-mock` package when upgrading to AWS SDK v3.
- jest.spyOn(Object.getPrototypeOf(s3), 'deleteObject').mockImplementation(() => {
- // Roughly mock AWS request object
- return {
- async promise(): Promise<PromiseResult<DeleteObjectOutput, AWSError>> {
- const err = new Error('mock') as AWSError;
- err.code = 'NoSuchKey';
- throw err;
- },
- } as Request<DeleteObjectOutput, AWSError>;
- });
+ afterAll(async () => {
+ await app.close();
});
describe('Object storage', () => {
+ test('delete a file', async () => {
+ s3Mock.on(DeleteObjectCommand)
+ .resolves({} as DeleteObjectCommandOutput);
+
+ await driveService.deleteObjectStorageFile('peace of the world');
+ });
+
+ test('delete a file then unexpected error', async () => {
+ s3Mock.on(DeleteObjectCommand)
+ .rejects(new InvalidObjectState({ $metadata: {}, message: '' }));
+
+ await expect(driveService.deleteObjectStorageFile('unexpected')).rejects.toThrowError(Error);
+ });
+
test('delete a file with no valid key', async () => {
- try {
- await driveService.deleteObjectStorageFile('lol no way');
- } catch (err: any) {
- console.log(err.cause);
- throw err;
- }
+ // Some S3 implementations returns 404 Not Found on deleting with a non-existent key
+ s3Mock.on(DeleteObjectCommand)
+ .rejects(new NoSuchKey({ $metadata: {}, message: 'allowed error.' }));
+
+ await driveService.deleteObjectStorageFile('lol no way');
});
});
});
diff --git a/packages/backend/test/unit/S3Service.ts b/packages/backend/test/unit/S3Service.ts
new file mode 100644
index 0000000000..1dfa22afd2
--- /dev/null
+++ b/packages/backend/test/unit/S3Service.ts
@@ -0,0 +1,77 @@
+process.env.NODE_ENV = 'test';
+
+import { Test } from '@nestjs/testing';
+import { UploadPartCommand, CompleteMultipartUploadCommand, CreateMultipartUploadCommand, S3Client, PutObjectCommand } from '@aws-sdk/client-s3';
+import { mockClient } from 'aws-sdk-client-mock';
+import { GlobalModule } from '@/GlobalModule.js';
+import { CoreModule } from '@/core/CoreModule.js';
+import { S3Service } from '@/core/S3Service';
+import { Meta } from '@/models';
+import type { TestingModule } from '@nestjs/testing';
+
+describe('S3Service', () => {
+ let app: TestingModule;
+ let s3Service: S3Service;
+ const s3Mock = mockClient(S3Client);
+
+ beforeAll(async () => {
+ app = await Test.createTestingModule({
+ imports: [GlobalModule, CoreModule],
+ providers: [S3Service],
+ }).compile();
+ app.enableShutdownHooks();
+ s3Service = app.get<S3Service>(S3Service);
+ });
+
+ beforeEach(async () => {
+ s3Mock.reset();
+ });
+
+ afterAll(async () => {
+ await app.close();
+ });
+
+ describe('upload', () => {
+ test('upload a file', async () => {
+ s3Mock.on(PutObjectCommand).resolves({});
+
+ await s3Service.upload({ objectStorageRegion: 'us-east-1' } as Meta, {
+ Bucket: 'fake',
+ Key: 'fake',
+ Body: 'x',
+ });
+ });
+
+ test('upload a large file', async () => {
+ s3Mock.on(CreateMultipartUploadCommand).resolves({ UploadId: '1' });
+ s3Mock.on(UploadPartCommand).resolves({ ETag: '1' });
+ s3Mock.on(CompleteMultipartUploadCommand).resolves({ Bucket: 'fake', Key: 'fake' });
+
+ await s3Service.upload({} as Meta, {
+ Bucket: 'fake',
+ Key: 'fake',
+ Body: 'x'.repeat(8 * 1024 * 1024 + 1), // デフォルトpartSizeにしている 8 * 1024 * 1024 を越えるサイズ
+ });
+ });
+
+ test('upload a file error', async () => {
+ s3Mock.on(PutObjectCommand).rejects({ name: 'Fake Error' });
+
+ await expect(s3Service.upload({ objectStorageRegion: 'us-east-1' } as Meta, {
+ Bucket: 'fake',
+ Key: 'fake',
+ Body: 'x',
+ })).rejects.toThrowError(Error);
+ });
+
+ test('upload a large file error', async () => {
+ s3Mock.on(UploadPartCommand).rejects();
+
+ await expect(s3Service.upload({} as Meta, {
+ Bucket: 'fake',
+ Key: 'fake',
+ Body: 'x'.repeat(8 * 1024 * 1024 + 1), // デフォルトpartSizeにしている 8 * 1024 * 1024 を越えるサイズ
+ })).rejects.toThrowError(Error);
+ });
+ });
+});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index f56f77dc97..baf1009aeb 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -48,6 +48,9 @@ importers:
packages/backend:
specifiers:
+ '@aws-sdk/client-s3': ^3.294.0
+ '@aws-sdk/lib-storage': ^3.294.0
+ '@aws-sdk/node-http-handler': ^3.292.0
'@bull-board/api': 5.0.0
'@bull-board/fastify': 5.0.0
'@bull-board/ui': 5.0.0
@@ -127,7 +130,7 @@ importers:
ajv: 8.12.0
archiver: 5.3.1
autwh: 0.1.0
- aws-sdk: 2.1318.0
+ aws-sdk-client-mock: ^2.1.1
bcryptjs: 2.4.3
blurhash: 2.0.5
bull: 4.10.4
@@ -219,6 +222,9 @@ importers:
ws: 8.12.1
xev: 3.0.2
dependencies:
+ '@aws-sdk/client-s3': 3.294.0
+ '@aws-sdk/lib-storage': 3.294.0_@aws-sdk+client-s3@3.294.0
+ '@aws-sdk/node-http-handler': 3.292.0
'@bull-board/api': 5.0.0
'@bull-board/fastify': 5.0.0
'@bull-board/ui': 5.0.0
@@ -241,7 +247,6 @@ importers:
ajv: 8.12.0
archiver: 5.3.1
autwh: 0.1.0
- aws-sdk: 2.1318.0
bcryptjs: 2.4.3
blurhash: 2.0.5
bull: 4.10.4
@@ -385,6 +390,7 @@ importers:
'@types/ws': 8.5.4
'@typescript-eslint/eslint-plugin': 5.54.1_mlk7dnz565t663n4razh6a6v6i
'@typescript-eslint/parser': 5.54.1_ycpbpc6yetojsgtrx3mwntkhsu
+ aws-sdk-client-mock: 2.1.1
cross-env: 7.0.3
eslint: 8.35.0
eslint-plugin-import: 2.27.5_uyiasnnzcqrxqkfvjklwnmwcha
@@ -606,6 +612,987 @@ packages:
'@jridgewell/trace-mapping': 0.3.17
dev: true
+ /@aws-crypto/crc32/3.0.0:
+ resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==}
+ dependencies:
+ '@aws-crypto/util': 3.0.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/crc32c/3.0.0:
+ resolution: {integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==}
+ dependencies:
+ '@aws-crypto/util': 3.0.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/ie11-detection/3.0.0:
+ resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==}
+ dependencies:
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/sha1-browser/3.0.0:
+ resolution: {integrity: sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==}
+ dependencies:
+ '@aws-crypto/ie11-detection': 3.0.0
+ '@aws-crypto/supports-web-crypto': 3.0.0
+ '@aws-crypto/util': 3.0.0
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/util-locate-window': 3.208.0
+ '@aws-sdk/util-utf8-browser': 3.259.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/sha256-browser/3.0.0:
+ resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==}
+ dependencies:
+ '@aws-crypto/ie11-detection': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-crypto/supports-web-crypto': 3.0.0
+ '@aws-crypto/util': 3.0.0
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/util-locate-window': 3.208.0
+ '@aws-sdk/util-utf8-browser': 3.259.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/sha256-js/3.0.0:
+ resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==}
+ dependencies:
+ '@aws-crypto/util': 3.0.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/supports-web-crypto/3.0.0:
+ resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==}
+ dependencies:
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/util/3.0.0:
+ resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==}
+ dependencies:
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/util-utf8-browser': 3.259.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-sdk/abort-controller/3.292.0:
+ resolution: {integrity: sha512-lf+OPptL01kvryIJy7+dvFux5KbJ6OTwLPPEekVKZ2AfEvwcVtOZWFUhyw3PJCBTVncjKB1Kjl3V/eTS3YuPXQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/chunked-blob-reader-native/3.292.0:
+ resolution: {integrity: sha512-A34sBrnggm9mXPZeeEie4jDv9zHRMS0LSm85VkfrBLuYYsfsw9DxmW59wJkuo6DIm/RK04oH5+lRMt34koBgrw==}
+ dependencies:
+ '@aws-sdk/util-base64': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/chunked-blob-reader/3.292.0:
+ resolution: {integrity: sha512-ccFPnzBjLbDCmFjTXwhsfD58vtEiAjbor3A9tvnou+3Dj6RrMEGPaTu5tcw3mwWb2zh1K3HFJg6Bmb0no49TRw==}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/client-s3/3.294.0:
+ resolution: {integrity: sha512-J0rTBpZlmeNWgpYaGM7w55Hdmh8LWfYFmb09Fr0Oee/VGFgi28p3vCCnP+ploo1TlFRdsPlGZJ7zod+m/iPeBg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/sha1-browser': 3.0.0
+ '@aws-crypto/sha256-browser': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-sdk/client-sts': 3.294.0
+ '@aws-sdk/config-resolver': 3.292.0
+ '@aws-sdk/credential-provider-node': 3.294.0
+ '@aws-sdk/eventstream-serde-browser': 3.292.0
+ '@aws-sdk/eventstream-serde-config-resolver': 3.292.0
+ '@aws-sdk/eventstream-serde-node': 3.292.0
+ '@aws-sdk/fetch-http-handler': 3.292.0
+ '@aws-sdk/hash-blob-browser': 3.292.0
+ '@aws-sdk/hash-node': 3.292.0
+ '@aws-sdk/hash-stream-node': 3.292.0
+ '@aws-sdk/invalid-dependency': 3.292.0
+ '@aws-sdk/md5-js': 3.292.0
+ '@aws-sdk/middleware-bucket-endpoint': 3.292.0
+ '@aws-sdk/middleware-content-length': 3.292.0
+ '@aws-sdk/middleware-endpoint': 3.292.0
+ '@aws-sdk/middleware-expect-continue': 3.292.0
+ '@aws-sdk/middleware-flexible-checksums': 3.292.0
+ '@aws-sdk/middleware-host-header': 3.292.0
+ '@aws-sdk/middleware-location-constraint': 3.292.0
+ '@aws-sdk/middleware-logger': 3.292.0
+ '@aws-sdk/middleware-recursion-detection': 3.292.0
+ '@aws-sdk/middleware-retry': 3.293.0
+ '@aws-sdk/middleware-sdk-s3': 3.292.0
+ '@aws-sdk/middleware-serde': 3.292.0
+ '@aws-sdk/middleware-signing': 3.292.0
+ '@aws-sdk/middleware-ssec': 3.292.0
+ '@aws-sdk/middleware-stack': 3.292.0
+ '@aws-sdk/middleware-user-agent': 3.293.0
+ '@aws-sdk/node-config-provider': 3.292.0
+ '@aws-sdk/node-http-handler': 3.292.0
+ '@aws-sdk/protocol-http': 3.292.0
+ '@aws-sdk/signature-v4-multi-region': 3.292.0
+ '@aws-sdk/smithy-client': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/url-parser': 3.292.0
+ '@aws-sdk/util-base64': 3.292.0
+ '@aws-sdk/util-body-length-browser': 3.292.0
+ '@aws-sdk/util-body-length-node': 3.292.0
+ '@aws-sdk/util-defaults-mode-browser': 3.292.0
+ '@aws-sdk/util-defaults-mode-node': 3.292.0
+ '@aws-sdk/util-endpoints': 3.293.0
+ '@aws-sdk/util-retry': 3.292.0
+ '@aws-sdk/util-stream-browser': 3.292.0
+ '@aws-sdk/util-stream-node': 3.292.0
+ '@aws-sdk/util-user-agent-browser': 3.292.0
+ '@aws-sdk/util-user-agent-node': 3.292.0
+ '@aws-sdk/util-utf8': 3.292.0
+ '@aws-sdk/util-waiter': 3.292.0
+ '@aws-sdk/xml-builder': 3.292.0
+ fast-xml-parser: 4.1.2
+ tslib: 2.5.0
+ transitivePeerDependencies:
+ - '@aws-sdk/signature-v4-crt'
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/client-sso-oidc/3.294.0:
+ resolution: {integrity: sha512-/ZfDud76MdSPJ/TxjV2xLE30XbBQDZwKQ32axwoK1eziPvrAIUBYVgpBwj+m0quhoiQhBKkg3aFl6j39AF2thw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/sha256-browser': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-sdk/config-resolver': 3.292.0
+ '@aws-sdk/fetch-http-handler': 3.292.0
+ '@aws-sdk/hash-node': 3.292.0
+ '@aws-sdk/invalid-dependency': 3.292.0
+ '@aws-sdk/middleware-content-length': 3.292.0
+ '@aws-sdk/middleware-endpoint': 3.292.0
+ '@aws-sdk/middleware-host-header': 3.292.0
+ '@aws-sdk/middleware-logger': 3.292.0
+ '@aws-sdk/middleware-recursion-detection': 3.292.0
+ '@aws-sdk/middleware-retry': 3.293.0
+ '@aws-sdk/middleware-serde': 3.292.0
+ '@aws-sdk/middleware-stack': 3.292.0
+ '@aws-sdk/middleware-user-agent': 3.293.0
+ '@aws-sdk/node-config-provider': 3.292.0
+ '@aws-sdk/node-http-handler': 3.292.0
+ '@aws-sdk/protocol-http': 3.292.0
+ '@aws-sdk/smithy-client': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/url-parser': 3.292.0
+ '@aws-sdk/util-base64': 3.292.0
+ '@aws-sdk/util-body-length-browser': 3.292.0
+ '@aws-sdk/util-body-length-node': 3.292.0
+ '@aws-sdk/util-defaults-mode-browser': 3.292.0
+ '@aws-sdk/util-defaults-mode-node': 3.292.0
+ '@aws-sdk/util-endpoints': 3.293.0
+ '@aws-sdk/util-retry': 3.292.0
+ '@aws-sdk/util-user-agent-browser': 3.292.0
+ '@aws-sdk/util-user-agent-node': 3.292.0
+ '@aws-sdk/util-utf8': 3.292.0
+ tslib: 2.5.0
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/client-sso/3.294.0:
+ resolution: {integrity: sha512-+FuxQTi5WvnaXM5JbNLkBIzQ3An4gA0ox61N1u+3xled+nywKb1yQ7WmRpyMG5bLbkmnj3aqoo5/uskFc4c4EA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/sha256-browser': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-sdk/config-resolver': 3.292.0
+ '@aws-sdk/fetch-http-handler': 3.292.0
+ '@aws-sdk/hash-node': 3.292.0
+ '@aws-sdk/invalid-dependency': 3.292.0
+ '@aws-sdk/middleware-content-length': 3.292.0
+ '@aws-sdk/middleware-endpoint': 3.292.0
+ '@aws-sdk/middleware-host-header': 3.292.0
+ '@aws-sdk/middleware-logger': 3.292.0
+ '@aws-sdk/middleware-recursion-detection': 3.292.0
+ '@aws-sdk/middleware-retry': 3.293.0
+ '@aws-sdk/middleware-serde': 3.292.0
+ '@aws-sdk/middleware-stack': 3.292.0
+ '@aws-sdk/middleware-user-agent': 3.293.0
+ '@aws-sdk/node-config-provider': 3.292.0
+ '@aws-sdk/node-http-handler': 3.292.0
+ '@aws-sdk/protocol-http': 3.292.0
+ '@aws-sdk/smithy-client': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/url-parser': 3.292.0
+ '@aws-sdk/util-base64': 3.292.0
+ '@aws-sdk/util-body-length-browser': 3.292.0
+ '@aws-sdk/util-body-length-node': 3.292.0
+ '@aws-sdk/util-defaults-mode-browser': 3.292.0
+ '@aws-sdk/util-defaults-mode-node': 3.292.0
+ '@aws-sdk/util-endpoints': 3.293.0
+ '@aws-sdk/util-retry': 3.292.0
+ '@aws-sdk/util-user-agent-browser': 3.292.0
+ '@aws-sdk/util-user-agent-node': 3.292.0
+ '@aws-sdk/util-utf8': 3.292.0
+ tslib: 2.5.0
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/client-sts/3.294.0:
+ resolution: {integrity: sha512-AefqwhFjTDzelZuSYhriJbiI+GQwf2yKiKAnCt0gRj6rswewStM63Gtlhfb01sFPp+ZiqPcyQ47LqUaHp1mz/g==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/sha256-browser': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-sdk/config-resolver': 3.292.0
+ '@aws-sdk/credential-provider-node': 3.294.0
+ '@aws-sdk/fetch-http-handler': 3.292.0
+ '@aws-sdk/hash-node': 3.292.0
+ '@aws-sdk/invalid-dependency': 3.292.0
+ '@aws-sdk/middleware-content-length': 3.292.0
+ '@aws-sdk/middleware-endpoint': 3.292.0
+ '@aws-sdk/middleware-host-header': 3.292.0
+ '@aws-sdk/middleware-logger': 3.292.0
+ '@aws-sdk/middleware-recursion-detection': 3.292.0
+ '@aws-sdk/middleware-retry': 3.293.0
+ '@aws-sdk/middleware-sdk-sts': 3.292.0
+ '@aws-sdk/middleware-serde': 3.292.0
+ '@aws-sdk/middleware-signing': 3.292.0
+ '@aws-sdk/middleware-stack': 3.292.0
+ '@aws-sdk/middleware-user-agent': 3.293.0
+ '@aws-sdk/node-config-provider': 3.292.0
+ '@aws-sdk/node-http-handler': 3.292.0
+ '@aws-sdk/protocol-http': 3.292.0
+ '@aws-sdk/smithy-client': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/url-parser': 3.292.0
+ '@aws-sdk/util-base64': 3.292.0
+ '@aws-sdk/util-body-length-browser': 3.292.0
+ '@aws-sdk/util-body-length-node': 3.292.0
+ '@aws-sdk/util-defaults-mode-browser': 3.292.0
+ '@aws-sdk/util-defaults-mode-node': 3.292.0
+ '@aws-sdk/util-endpoints': 3.293.0
+ '@aws-sdk/util-retry': 3.292.0
+ '@aws-sdk/util-user-agent-browser': 3.292.0
+ '@aws-sdk/util-user-agent-node': 3.292.0
+ '@aws-sdk/util-utf8': 3.292.0
+ fast-xml-parser: 4.1.2
+ tslib: 2.5.0
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/config-resolver/3.292.0:
+ resolution: {integrity: sha512-cB3twnNR7vYvlt2jvw8VlA1+iv/tVzl+/S39MKqw2tepU+AbJAM0EHwb/dkf1OKSmlrnANXhshx80MHF9zL4mA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/signature-v4': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/util-config-provider': 3.292.0
+ '@aws-sdk/util-middleware': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/credential-provider-env/3.292.0:
+ resolution: {integrity: sha512-YbafSG0ZEKE2969CJWVtUhh3hfOeLPecFVoXOtegCyAJgY5Ghtu4TsVhL4DgiGAgOC30ojAmUVQEXzd7xJF5xA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/property-provider': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/credential-provider-imds/3.292.0:
+ resolution: {integrity: sha512-W/peOgDSRYulgzFpUhvgi1pCm6piBz6xrVN17N4QOy+3NHBXRVMVzYk6ct2qpLPgJUSEZkcpP+Gds+bBm8ed1A==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/node-config-provider': 3.292.0
+ '@aws-sdk/property-provider': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/url-parser': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/credential-provider-ini/3.294.0:
+ resolution: {integrity: sha512-pdTPbaAb5bWA+DnuKoL2TpXeNDp6Ejpv/OYt+bw2gdzl9w5r/ZCtUTTbW+Vvejr4WL5s3c1bY96kwdqCn7iLqA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/credential-provider-env': 3.292.0
+ '@aws-sdk/credential-provider-imds': 3.292.0
+ '@aws-sdk/credential-provider-process': 3.292.0
+ '@aws-sdk/credential-provider-sso': 3.294.0
+ '@aws-sdk/credential-provider-web-identity': 3.292.0
+ '@aws-sdk/property-provider': 3.292.0
+ '@aws-sdk/shared-ini-file-loader': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/credential-provider-node/3.294.0:
+ resolution: {integrity: sha512-zUL1Qhb4BsQIZCs/TPpG4oIYH/9YsGiS+Se1tasSGjTOLfBy7jhOZ0QIdpEeyAx/EP8blOBredM9xWfEXgiHVA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/credential-provider-env': 3.292.0
+ '@aws-sdk/credential-provider-imds': 3.292.0
+ '@aws-sdk/credential-provider-ini': 3.294.0
+ '@aws-sdk/credential-provider-process': 3.292.0
+ '@aws-sdk/credential-provider-sso': 3.294.0
+ '@aws-sdk/credential-provider-web-identity': 3.292.0
+ '@aws-sdk/property-provider': 3.292.0
+ '@aws-sdk/shared-ini-file-loader': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/credential-provider-process/3.292.0:
+ resolution: {integrity: sha512-CFVXuMuUvg/a4tknzRikEDwZBnKlHs1LZCpTXIGjBdUTdosoi4WNzDLzGp93ZRTtcgFz+4wirz2f7P3lC0NrQw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/property-provider': 3.292.0
+ '@aws-sdk/shared-ini-file-loader': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/credential-provider-sso/3.294.0:
+ resolution: {integrity: sha512-UxrcAA/0l7j9+3tolYcG5M61D/IE1Bjd/9H87H1i2A2BrwUUBhW1Dp/vvROEDrrywlMDG3CDF3T/7ADtTak+sg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/client-sso': 3.294.0
+ '@aws-sdk/property-provider': 3.292.0
+ '@aws-sdk/shared-ini-file-loader': 3.292.0
+ '@aws-sdk/token-providers': 3.294.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/credential-provider-web-identity/3.292.0:
+ resolution: {integrity: sha512-4DbtIEM9gGVfqYlMdYXg3XY+vBhemjB1zXIequottW8loLYM8Vuz4/uGxxKNze6evVVzowsA0wKrYclE1aj/Rg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/property-provider': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/eventstream-codec/3.292.0:
+ resolution: {integrity: sha512-P0np4vhCKf/JH6I39Id8DxZR+UZzG+Br+vOrTinerMfOhzTa2229XmL8pwlMpOoxnJLMPmEDtD1KQqLslBEXtw==}
+ dependencies:
+ '@aws-crypto/crc32': 3.0.0
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/util-hex-encoding': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/eventstream-serde-browser/3.292.0:
+ resolution: {integrity: sha512-VzRbJqqE444GOuoNTxTJ1dC1IhNhA6jfHjgsI8iDRHraaEukGqsPx1vkc+byxrDEjgxKN5IqOwZ4yJWMIAozBA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/eventstream-serde-universal': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/eventstream-serde-config-resolver/3.292.0:
+ resolution: {integrity: sha512-Ndx+qJyWmBCW9FSm68AGLoO4AZ0AaL/wjpJEgFF2sZBWjYe9O9PB9IGR/yuqCBTElf3YtSiFMsloikQaz2ft6g==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/eventstream-serde-node/3.292.0:
+ resolution: {integrity: sha512-NFCEiNCetNye7jQfRd5y/7J9dLg9+uL57698wYeXeadlwJ8Cd/Nhsz+t7RIbP05VqshU+anXARMB1avl9oAijQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/eventstream-serde-universal': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/eventstream-serde-universal/3.292.0:
+ resolution: {integrity: sha512-1gqZNx+S1EUpl3Tq6uIesiDx8gnkpXqPsFfCZT7lSWWXBpnHmnUZAh3jbiO9UlQbYuB9SfT0EBKb1iOY9z4j1Q==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/eventstream-codec': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/fetch-http-handler/3.292.0:
+ resolution: {integrity: sha512-zh3bhUJbL8RSa39ZKDcy+AghtUkIP8LwcNlwRIoxMQh3Row4D1s4fCq0KZCx98NJBEXoiTLyTQlZxxI//BOb1Q==}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.292.0
+ '@aws-sdk/querystring-builder': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/util-base64': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/hash-blob-browser/3.292.0:
+ resolution: {integrity: sha512-4+Fm4IOkxGqgx8dU0EbExCq6xx30y369ZSXz89h9YDQYdJ2Muw7iNCHAg/4VM+gfp0vo9J8zPOTsSju8LNS5Jg==}
+ dependencies:
+ '@aws-sdk/chunked-blob-reader': 3.292.0
+ '@aws-sdk/chunked-blob-reader-native': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/hash-node/3.292.0:
+ resolution: {integrity: sha512-1yLxmIsvE+eK36JXEgEIouTITdykQLVhsA5Oai//Lar6Ddgu1sFpLDbdkMtKbrh4I0jLN9RacNCkeVQjZPTCCQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/util-buffer-from': 3.292.0
+ '@aws-sdk/util-utf8': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/hash-stream-node/3.292.0:
+ resolution: {integrity: sha512-p2nj9A5lZKQU45Q4Od3iZDvpziEpojAyuyAI0HPzpIuJIfzFQ0/7pMBKde1li6wq93rpyFLwNufV6FEZnKCYRg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/util-utf8': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/invalid-dependency/3.292.0:
+ resolution: {integrity: sha512-39OUV78CD3TmEbjhpt+V+Fk4wAGWhixqHxDSN8+4WL0uB4Fl7k5m3Z9hNY78AttHQSl2twR7WtLztnXPAFsriw==}
+ dependencies:
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/is-array-buffer/3.292.0:
+ resolution: {integrity: sha512-kW/G5T/fzI0sJH5foZG6XJiNCevXqKLxV50qIT4B1pMuw7regd4ALIy0HwSqj1nnn9mSbRWBfmby0jWCJsMcwg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/lib-storage/3.294.0_@aws-sdk+client-s3@3.294.0:
+ resolution: {integrity: sha512-5H/1EgGDIt8Ls/YOepfkyyBwkyQ9d668/gmnWGWRvytar+cVMHu/D5G88831luPrlzyZ+jR+Te7Nc2oqYqamTw==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ '@aws-sdk/abort-controller': ^3.0.0
+ '@aws-sdk/client-s3': ^3.0.0
+ dependencies:
+ '@aws-sdk/client-s3': 3.294.0
+ '@aws-sdk/middleware-endpoint': 3.292.0
+ '@aws-sdk/smithy-client': 3.292.0
+ buffer: 5.6.0
+ events: 3.3.0
+ stream-browserify: 3.0.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/md5-js/3.292.0:
+ resolution: {integrity: sha512-ngfsKLgQenXW3EbsDf47PVNys1SecTbsq6k88h7+Aa8BU49+9ZOIz4VDpWuPiNyYpeV7jJdl1dfD+ujOYvvgNw==}
+ dependencies:
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/util-utf8': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-bucket-endpoint/3.292.0:
+ resolution: {integrity: sha512-XRy9RSUIRcbxYfH504ywhQllgfdf3wVhk2k0mMPYnUbeEhAFe1/eUog2v/bi07/q5TQ4Hppi+W3nHCVualQEow==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/util-arn-parser': 3.292.0
+ '@aws-sdk/util-config-provider': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-content-length/3.292.0:
+ resolution: {integrity: sha512-2gMWzQus5mj14menolpPDbYBeaOYcj7KNFZOjTjjI3iQ0KqyetG6XasirNrcJ/8QX1BRmpTol8Xjp2Ue3Gbzwg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-endpoint/3.292.0:
+ resolution: {integrity: sha512-cPMkiSxpZGG6tYlW4OS+ucS6r43f9ddX9kcUoemJCY10MOuogdPjulCAjE0HTs2PLKSOrrG4CTP4Q4wWDrH4Bw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/middleware-serde': 3.292.0
+ '@aws-sdk/protocol-http': 3.292.0
+ '@aws-sdk/signature-v4': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/url-parser': 3.292.0
+ '@aws-sdk/util-config-provider': 3.292.0
+ '@aws-sdk/util-middleware': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-expect-continue/3.292.0:
+ resolution: {integrity: sha512-bZ2bsBud3E6BebZWGxVcWxBSg09bP0KyX8PT0jI66JM0yTbZSJhoGhlKAqfNG46R9h4K5tCYB2uYgV/3oU/ZpQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-flexible-checksums/3.292.0:
+ resolution: {integrity: sha512-AxU/Gb+TRdl/0jHmbreYh3QnB0jR25zgjPZ4/JbGBJ2SQI9jm3LCNK9XOrPUmZp/vu9wsvyxtmKQidpQ5+FX5w==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/crc32': 3.0.0
+ '@aws-crypto/crc32c': 3.0.0
+ '@aws-sdk/is-array-buffer': 3.292.0
+ '@aws-sdk/protocol-http': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/util-utf8': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-host-header/3.292.0:
+ resolution: {integrity: sha512-mHuCWe3Yg2S5YZ7mB7sKU6C97XspfqrimWjMW9pfV2usAvLA3R0HrB03jpR5vpZ3P4q7HB6wK3S6CjYMGGRNag==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-location-constraint/3.292.0:
+ resolution: {integrity: sha512-WTbMyoCckdkmq7Yok0gI4226gTmxP/zM1fbFiC+liZXBJ+H5EvIFmu30tWbX+4m41LL/XQVm65olXJFwhoExGQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-logger/3.292.0:
+ resolution: {integrity: sha512-yZNY1XYmG3NG+uonET7jzKXNiwu61xm/ZZ6i/l51SusuaYN+qQtTAhOFsieQqTehF9kP4FzbsWgPDwD8ZZX9lw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-recursion-detection/3.292.0:
+ resolution: {integrity: sha512-kA3VZpPko0Zqd7CYPTKAxhjEv0HJqFu2054L04dde1JLr43ro+2MTdX7vsHzeAFUVRphqatFFofCumvXmU6Mig==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-retry/3.293.0:
+ resolution: {integrity: sha512-7tiaz2GzRecNHaZ6YnF+Nrtk3au8qF6oiipf11R7MJiqJ0fkMLnz/iRrlakDziS9qF/a9v+3yxb4W4NHK3f4Tw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.292.0
+ '@aws-sdk/service-error-classification': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/util-middleware': 3.292.0
+ '@aws-sdk/util-retry': 3.292.0
+ tslib: 2.5.0
+ uuid: 8.3.2
+ dev: false
+
+ /@aws-sdk/middleware-sdk-s3/3.292.0:
+ resolution: {integrity: sha512-kEUmh3ZM34H+2bEQfpZhVotJCNYpSbq9Q4YxlWVbnjiO/VS+S9BFEM3Fcj5+EzEgI02tNNi6/qTXj3iS8tT6hA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/util-arn-parser': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-sdk-sts/3.292.0:
+ resolution: {integrity: sha512-GN5ZHEqXZqDi+HkVbaXRX9HaW/vA5rikYpWKYsmxTUZ7fB7ijvEO3co3lleJv2C+iGYRtUIHC4wYNB5xgoTCxg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/middleware-signing': 3.292.0
+ '@aws-sdk/property-provider': 3.292.0
+ '@aws-sdk/protocol-http': 3.292.0
+ '@aws-sdk/signature-v4': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-serde/3.292.0:
+ resolution: {integrity: sha512-6hN9mTQwSvV8EcGvtXbS/MpK7WMCokUku5Wu7X24UwCNMVkoRHLIkYcxHcvBTwttuOU0d8hph1/lIX4dkLwkQw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-signing/3.292.0:
+ resolution: {integrity: sha512-GVfoSjDjEQ4TaO6x9MffyP3uRV+2KcS5FtexLCYOM9pJcnE9tqq9FJOrZ1xl1g+YjUVKxo4x8lu3tpEtIb17qg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/property-provider': 3.292.0
+ '@aws-sdk/protocol-http': 3.292.0
+ '@aws-sdk/signature-v4': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/util-middleware': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-ssec/3.292.0:
+ resolution: {integrity: sha512-VfwrTEs9nYU6sCnt/cffhnJ2djGkMyMbBEysMZm2HEbFMloGKBd0Wtvk9y+SWPa6+DDRe2CqqX8jMzrO4JT4Eg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-stack/3.292.0:
+ resolution: {integrity: sha512-WdQpRkuMysrEwrkByCM1qCn2PPpFGGQ2iXqaFha5RzCdZDlxJni9cVNb6HzWUcgjLEYVTXCmOR9Wxm3CNW44Qg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-user-agent/3.293.0:
+ resolution: {integrity: sha512-gZ7/e6XwpKk9mvgA78q4Ffc796jTn02TUKx2qMDnkLVbeJXBNN2jnvYEKq8v70+o7fd/ALRudg8gBDmkkhM/Hw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/util-endpoints': 3.293.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/node-config-provider/3.292.0:
+ resolution: {integrity: sha512-S3NnC9dQ5GIbJYSDIldZb4zdpCOEua1tM7bjYL3VS5uqCEM93kIi/o/UkIUveMp/eqTS2LJa5HjNIz5Te6je0A==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/property-provider': 3.292.0
+ '@aws-sdk/shared-ini-file-loader': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/node-http-handler/3.292.0:
+ resolution: {integrity: sha512-L/E3UDSwXLXjt1XWWh0RBD55F+aZI1AEdPwdES9i1PjnZLyuxuDhEDptVibNN56+I9/4Q3SbmuVRVlOD0uzBag==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/abort-controller': 3.292.0
+ '@aws-sdk/protocol-http': 3.292.0
+ '@aws-sdk/querystring-builder': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/property-provider/3.292.0:
+ resolution: {integrity: sha512-dHArSvsiqhno/g55N815gXmAMrmN8DP7OeFNqJ4wJG42xsF2PFN3DAsjIuHuXMwu+7A3R1LHqIpvv0hA9KeoJQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/protocol-http/3.292.0:
+ resolution: {integrity: sha512-NLi4fq3k41aXIh1I97yX0JTy+3p6aW1NdwFwdMa674z86QNfb4SfRQRZBQe9wEnAZ/eWHVnlKIuII+U1URk/Kg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/querystring-builder/3.292.0:
+ resolution: {integrity: sha512-XElIFJaReIm24eEvBtV2dOtZvcm3gXsGu/ftG8MLJKbKXFKpAP1q+K6En0Bs7/T88voKghKdKpKT+eZUWgTqlg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/util-uri-escape': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/querystring-parser/3.292.0:
+ resolution: {integrity: sha512-iTYpYo7a8X9RxiPbjjewIpm6XQPx2EOcF1dWCPRII9EFlmZ4bwnX+PDI36fIo9oVs8TIKXmwNGODU9nsg7CSAw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/service-error-classification/3.292.0:
+ resolution: {integrity: sha512-X1k3sixCeC45XSNHBe+kRBQBwPDyTFtFITb8O5Qw4dS9XWGhrUJT4CX0qE5aj8qP3F9U5nRizs9c2mBVVP0Caw==}
+ engines: {node: '>=14.0.0'}
+ dev: false
+
+ /@aws-sdk/shared-ini-file-loader/3.292.0:
+ resolution: {integrity: sha512-Av2TTYg1Jig2kbkD56ybiqZJB6vVrYjv1W5UQwY/q3nA/T2mcrgQ20ByCOt5Bv9VvY7FSgC+znj+L4a7RLGmBg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/signature-v4-multi-region/3.292.0:
+ resolution: {integrity: sha512-MjWEIjbAr7n9vsFeLpoRzNSYFgWOROf1mLj6Db8TfRowaortUBO7PbleLV4n3SPujSnxhaVBzlmnCY2AjatH9g==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ '@aws-sdk/signature-v4-crt': ^3.118.0
+ peerDependenciesMeta:
+ '@aws-sdk/signature-v4-crt':
+ optional: true
+ dependencies:
+ '@aws-sdk/protocol-http': 3.292.0
+ '@aws-sdk/signature-v4': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/util-arn-parser': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/signature-v4/3.292.0:
+ resolution: {integrity: sha512-+rw47VY5mvBecn13tDQTl1ipGWg5tE63faWgmZe68HoBL87ZiDzsd7bUKOvjfW21iMgWlwAppkaNNQayYRb2zg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/is-array-buffer': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/util-hex-encoding': 3.292.0
+ '@aws-sdk/util-middleware': 3.292.0
+ '@aws-sdk/util-uri-escape': 3.292.0
+ '@aws-sdk/util-utf8': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/smithy-client/3.292.0:
+ resolution: {integrity: sha512-S8PKzjPkZ6SXYZuZiU787dMsvQ0d/LFEhw2OI4Oe2An9Fc2IwJ2FYukyHoQJOV2tV0DiuMebPo7eMyQyjKElvA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/middleware-stack': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/token-providers/3.294.0:
+ resolution: {integrity: sha512-6nwO04LtC5f4AsUvGZXyjaswuEK4Rr2VsuANpMKrPCgunRfI58a8YXLniudOSXN6e7CFJ6M3uo/h5YXqtnzGug==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/client-sso-oidc': 3.294.0
+ '@aws-sdk/property-provider': 3.292.0
+ '@aws-sdk/shared-ini-file-loader': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/types/3.292.0:
+ resolution: {integrity: sha512-1teYAY2M73UXZxMAxqZxVS2qwXjQh0OWtt7qyLfha0TtIk/fZ1hRwFgxbDCHUFcdNBSOSbKH/ESor90KROXLCQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/url-parser/3.292.0:
+ resolution: {integrity: sha512-NZeAuZCk1x6TIiWuRfbOU6wHPBhf0ly2qOHzWut4BCH+b4RrDmFF8EmXcH1auEfGhE7yRyR6XqIN0t3S+hYACA==}
+ dependencies:
+ '@aws-sdk/querystring-parser': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-arn-parser/3.292.0:
+ resolution: {integrity: sha512-xfE4U94TfjMC2WNNDte/kDByf16GrQKaS0BKsm+Fk/PaeHUofEp8suOEz/EVdEoa3Ayy2Uc5QdhrGnlqf8MxeA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-base64/3.292.0:
+ resolution: {integrity: sha512-zjNCwNdy617yFvEjZorepNWXB2sQCVfsShCwFy/kIQ5iW5tT2jQKaqc0K77diU9atkooxw9p1W9m9sOgrkOFNw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/util-buffer-from': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-body-length-browser/3.292.0:
+ resolution: {integrity: sha512-Wd/BM+JsMiKvKs/bN3z6TredVEHh2pKudGfg3CSjTRpqFpOG903KDfyHBD42yg5PuCHoHoewJvTPKwgn7/vhaw==}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-body-length-node/3.292.0:
+ resolution: {integrity: sha512-BBgipZ2P6RhogWE/qj0oqpdlyd3iSBYmb+aD/TBXwB2lA/X8A99GxweBd/kp06AmcJRoMS9WIXgbWkiiBlRlSA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-buffer-from/3.292.0:
+ resolution: {integrity: sha512-RxNZjLoXNxHconH9TYsk5RaEBjSgTtozHeyIdacaHPj5vlQKi4hgL2hIfKeeNiAfQEVjaUFF29lv81xpNMzVMQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/is-array-buffer': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-config-provider/3.292.0:
+ resolution: {integrity: sha512-t3noYll6bPRSxeeNNEkC5czVjAiTPcsq00OwfJ2xyUqmquhLEfLwoJKmrT1uP7DjIEXdUtfoIQ2jWiIVm/oO5A==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-defaults-mode-browser/3.292.0:
+ resolution: {integrity: sha512-7+zVUlMGfa8/KT++9humHo6IDxTnxMCmWUj5jVNlkpk6h7Ecmppf7aXotviyVIA43lhtz0p2AErs0N0ekEUK+w==}
+ engines: {node: '>= 10.0.0'}
+ dependencies:
+ '@aws-sdk/property-provider': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ bowser: 2.11.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-defaults-mode-node/3.292.0:
+ resolution: {integrity: sha512-SSIw85eF4BVs0fOJRyshT+R3b/UmBPhiVKCUZm2rq6+lIGkDPiSwQU3d/80AhXtiL5SFT/IzAKKgQd8qMa7q3A==}
+ engines: {node: '>= 10.0.0'}
+ dependencies:
+ '@aws-sdk/config-resolver': 3.292.0
+ '@aws-sdk/credential-provider-imds': 3.292.0
+ '@aws-sdk/node-config-provider': 3.292.0
+ '@aws-sdk/property-provider': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-endpoints/3.293.0:
+ resolution: {integrity: sha512-R/99aNV49Refpv5guiUjEUrZYlvnfaNBniB+/ZtMO3ixxUopapssCrUivuJrmhccmrYaTCZw7dRzIWjU1jJhKg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-hex-encoding/3.292.0:
+ resolution: {integrity: sha512-qBd5KFIUywQ3qSSbj814S2srk0vfv8A6QMI+Obs1y2LHZFdQN5zViptI4UhXhKOHe+NnrHWxSuLC/LMH6q3SmA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-locate-window/3.208.0:
+ resolution: {integrity: sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-middleware/3.292.0:
+ resolution: {integrity: sha512-KjhS7flfoBKDxbiBZjLjMvEizXgjfQb7GQEItgzGoI9rfGCmZtvqCcqQQoIlxb8bIzGRggAUHtBGWnlLbpb+GQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-retry/3.292.0:
+ resolution: {integrity: sha512-JEHyF7MpVeRF5uR4LDYgpOKcFpOPiAj8TqN46SVOQQcL1K+V7cSr7O7N7J6MwJaN9XOzAcBadeIupMm7/BFbgw==}
+ engines: {node: '>= 14.0.0'}
+ dependencies:
+ '@aws-sdk/service-error-classification': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-stream-browser/3.292.0:
+ resolution: {integrity: sha512-yzwpjq18oefyp/Sv+Z0VWh7ziRPp+qM0pDUrTfuAnXg+mrlxaPDXJOhp5LoY8AVHcDPOEdIbzz0b00G48FabIg==}
+ dependencies:
+ '@aws-sdk/fetch-http-handler': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/util-base64': 3.292.0
+ '@aws-sdk/util-hex-encoding': 3.292.0
+ '@aws-sdk/util-utf8': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-stream-node/3.292.0:
+ resolution: {integrity: sha512-p3DHXvWo4Zdka75HwewUnWjpFp/gOT4SYYEOAsv3BwuZGxfmnojK9OVCkUBJ7s6LeHMKTgGqQPwAnVFu7iIZNg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/node-http-handler': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ '@aws-sdk/util-buffer-from': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-uri-escape/3.292.0:
+ resolution: {integrity: sha512-hOQtUMQ4VcQ9iwKz50AoCp1XBD5gJ9nly/gJZccAM7zSA5mOO8RRKkbdonqquVHxrO0CnYgiFeCh3V35GFecUw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-user-agent-browser/3.292.0:
+ resolution: {integrity: sha512-dld+lpC3QdmTQHdBWJ0WFDkXDSrJgfz03q6mQ8+7H+BC12ZhT0I0g9iuvUjolqy7QR00OxOy47Y9FVhq8EC0Gg==}
+ dependencies:
+ '@aws-sdk/types': 3.292.0
+ bowser: 2.11.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-user-agent-node/3.292.0:
+ resolution: {integrity: sha512-f+NfIMal5E61MDc5WGhUEoicr7b1eNNhA+GgVdSB/Hg5fYhEZvFK9RZizH5rrtsLjjgcr9nPYSR7/nDKCJLumw==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ aws-crt: '>=1.0.0'
+ peerDependenciesMeta:
+ aws-crt:
+ optional: true
+ dependencies:
+ '@aws-sdk/node-config-provider': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-utf8-browser/3.259.0:
+ resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-utf8/3.292.0:
+ resolution: {integrity: sha512-FPkj+Z59/DQWvoVu2wFaRncc3KVwe/pgK3MfVb0Lx+Ibey5KUx+sNpJmYcVYHUAe/Nv/JeIpOtYuC96IXOnI6w==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/util-buffer-from': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-waiter/3.292.0:
+ resolution: {integrity: sha512-+7j+mcWUY4GwU8nTK4MvLWpOzS34SJZL85qLxQ04pysoCSHkInyS51D1ejBVNlJdbUSFvIcU0WHU0y6MDDeJzg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/abort-controller': 3.292.0
+ '@aws-sdk/types': 3.292.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/xml-builder/3.292.0:
+ resolution: {integrity: sha512-0zgnhdwUy30q/1NPXi5ekdzHQqCs3ZJaUeGbvYMO54osi4K5hygAyTsyWtv6oaJggRqZrB0LAZ9xN6hG+sA8/g==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
/@babel/code-frame/7.18.6:
resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==}
engines: {node: '>=6.9.0'}
@@ -2139,6 +3126,12 @@ packages:
resolution: {integrity: sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==}
engines: {node: '>=14.16'}
+ /@sinonjs/commons/1.8.6:
+ resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==}
+ dependencies:
+ type-detect: 4.0.8
+ dev: true
+
/@sinonjs/commons/2.0.0:
resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==}
dependencies:
@@ -2149,6 +3142,24 @@ packages:
dependencies:
'@sinonjs/commons': 2.0.0
+ /@sinonjs/fake-timers/9.1.2:
+ resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==}
+ dependencies:
+ '@sinonjs/commons': 1.8.6
+ dev: true
+
+ /@sinonjs/samsam/7.0.1:
+ resolution: {integrity: sha512-zsAk2Jkiq89mhZovB2LLOdTCxJF4hqqTToGP0ASWlhp4I1hqOjcfmZGafXntCN7MDC6yySH0mFHrYtHceOeLmw==}
+ dependencies:
+ '@sinonjs/commons': 2.0.0
+ lodash.get: 4.4.2
+ type-detect: 4.0.8
+ dev: true
+
+ /@sinonjs/text-encoding/0.7.2:
+ resolution: {integrity: sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==}
+ dev: true
+
/@sqltools/formatter/1.2.5:
resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==}
dev: false
@@ -2841,6 +3852,12 @@ packages:
'@types/node': 18.15.0
dev: true
+ /@types/sinon/10.0.13:
+ resolution: {integrity: sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ==}
+ dependencies:
+ '@types/sinonjs__fake-timers': 8.1.2
+ dev: true
+
/@types/sinonjs__fake-timers/8.1.1:
resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==}
dev: true
@@ -3866,6 +4883,7 @@ packages:
/available-typed-arrays/1.0.5:
resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
engines: {node: '>= 0.4'}
+ dev: true
/avvio/8.2.0:
resolution: {integrity: sha512-bbCQdg7bpEv6kGH41RO/3B2/GMMmJSo2iBK+X8AWN9mujtfUipMDfIjsgHCfpnKqoGEQrrmCDKSa5OQ19+fDmg==}
@@ -3877,21 +4895,13 @@ packages:
- supports-color
dev: false
- /aws-sdk/2.1318.0:
- resolution: {integrity: sha512-xRCKqx4XWXUIpjDCVHmdOSINEVCIC5+yhmgUGR9A6VfxfPs59HbxKyd5LB+CmXhVbwVUM4SRWG5O+agQj+w7Eg==}
- engines: {node: '>= 10.0.0'}
+ /aws-sdk-client-mock/2.1.1:
+ resolution: {integrity: sha512-UuxXmICU4nmXTRm2BzLZdXmnyI+5NEBb5McRDkObasXVxXChvLm0Ci/PGENh4sCD+Es64SJiz70mtY48JROk0A==}
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.5
- uuid: 8.0.0
- xml2js: 0.4.19
- dev: false
+ '@types/sinon': 10.0.13
+ sinon: 14.0.2
+ tslib: 2.5.0
+ dev: true
/aws-sign2/0.7.0:
resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==}
@@ -4119,6 +5129,10 @@ packages:
/boolbase/1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
+ /bowser/2.11.0:
+ resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==}
+ dev: false
+
/brace-expansion/1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
dependencies:
@@ -4215,12 +5229,11 @@ packages:
engines: {node: '>=4'}
dev: false
- /buffer/4.9.2:
- resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==}
+ /buffer/5.6.0:
+ resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==}
dependencies:
base64-js: 1.5.1
ieee754: 1.2.1
- isarray: 1.0.0
dev: false
/buffer/5.7.1:
@@ -6440,11 +7453,6 @@ packages:
resolution: {integrity: sha512-riuVbElZZNXLeLEoprfNYoDSwTBRR44X3mnhdI1YcnENpWTCsTTVZ2zFuqQcpoyqPQIUXdiPEU0ECAq0KQRaHg==}
dev: false
- /events/1.1.1:
- resolution: {integrity: sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==}
- engines: {node: '>=0.4.x'}
- dev: false
-
/events/3.3.0:
resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
engines: {node: '>=0.8.x'}
@@ -6717,6 +7725,13 @@ packages:
strnum: 1.0.5
dev: false
+ /fast-xml-parser/4.1.2:
+ resolution: {integrity: sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==}
+ hasBin: true
+ dependencies:
+ strnum: 1.0.5
+ dev: false
+
/fastify-plugin/4.5.0:
resolution: {integrity: sha512-79ak0JxddO0utAXAQ5ccKhvs6vX2MGyHHMMsmZkBANrq3hXc1CHzvNPHOcvTsVMEPl5I+NT+RO4YKMGehOfSIg==}
dev: false
@@ -6967,6 +7982,7 @@ packages:
resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
dependencies:
is-callable: 1.2.7
+ dev: true
/for-in/1.0.2:
resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==}
@@ -7402,6 +8418,7 @@ packages:
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
dependencies:
get-intrinsic: 1.2.0
+ dev: true
/got/11.8.5:
resolution: {integrity: sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==}
@@ -7824,10 +8841,6 @@ packages:
safari-14-idb-fix: 3.0.0
dev: false
- /ieee754/1.1.13:
- resolution: {integrity: sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==}
- dev: false
-
/ieee754/1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
@@ -8025,6 +9038,7 @@ packages:
dependencies:
call-bind: 1.0.2
has-tostringtag: 1.0.0
+ dev: true
/is-array-buffer/3.0.2:
resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
@@ -8068,6 +9082,7 @@ packages:
/is-callable/1.2.7:
resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
engines: {node: '>= 0.4'}
+ dev: true
/is-ci/3.0.1:
resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==}
@@ -8168,13 +9183,6 @@ packages:
engines: {node: '>=6'}
dev: true
- /is-generator-function/1.0.10:
- resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
- engines: {node: '>= 0.4'}
- dependencies:
- has-tostringtag: 1.0.0
- dev: false
-
/is-glob/3.1.0:
resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==}
engines: {node: '>=0.10.0'}
@@ -8348,6 +9356,7 @@ packages:
for-each: 0.3.3
gopd: 1.0.1
has-tostringtag: 1.0.0
+ dev: true
/is-typedarray/1.0.0:
resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==}
@@ -8397,7 +9406,6 @@ packages:
/isarray/0.0.1:
resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==}
- dev: false
/isarray/1.0.0:
resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
@@ -8934,11 +9942,6 @@ packages:
- ts-node
dev: true
- /jmespath/0.16.0:
- resolution: {integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==}
- engines: {node: '>= 0.6.0'}
- dev: false
-
/joi/17.7.0:
resolution: {integrity: sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==}
dependencies:
@@ -9173,6 +10176,10 @@ packages:
resolution: {integrity: sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==}
dev: false
+ /just-extend/4.2.1:
+ resolution: {integrity: sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==}
+ dev: true
+
/jwa/2.0.0:
resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==}
dependencies:
@@ -9393,6 +10400,10 @@ packages:
resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==}
dev: false
+ /lodash.get/4.4.2:
+ resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==}
+ dev: true
+
/lodash.isarguments/3.1.0:
resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==}
@@ -9960,6 +10971,16 @@ packages:
resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==}
dev: false
+ /nise/5.1.4:
+ resolution: {integrity: sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==}
+ dependencies:
+ '@sinonjs/commons': 2.0.0
+ '@sinonjs/fake-timers': 10.0.2
+ '@sinonjs/text-encoding': 0.7.2
+ just-extend: 4.2.1
+ path-to-regexp: 1.8.0
+ dev: true
+
/node-abi/3.31.0:
resolution: {integrity: sha512-eSKV6s+APenqVh8ubJyiu/YhZgxQpGP66ntzUb3lY1xB9ukSRaGnx0AIxI+IM+1+IVYC1oWobgG5L3Lt9ARykQ==}
engines: {node: '>=10'}
@@ -10583,6 +11604,12 @@ packages:
path-root-regex: 0.1.2
dev: false
+ /path-to-regexp/1.8.0:
+ resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==}
+ dependencies:
+ isarray: 0.0.1
+ dev: true
+
/path-to-regexp/3.2.0:
resolution: {integrity: sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==}
dev: false
@@ -11339,10 +12366,6 @@ packages:
pump: 2.0.1
dev: false
- /punycode/1.3.2:
- resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==}
- dev: false
-
/punycode/2.3.0:
resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
engines: {node: '>=6'}
@@ -11395,11 +12418,6 @@ packages:
strict-uri-encode: 1.1.0
dev: false
- /querystring/0.2.0:
- resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==}
- engines: {node: '>=0.4.x'}
- dev: false
-
/querystring/0.2.1:
resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==}
engines: {node: '>=0.4.x'}
@@ -11962,10 +12980,6 @@ packages:
immutable: 4.2.2
source-map-js: 1.0.2
- /sax/1.2.1:
- resolution: {integrity: sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==}
- dev: false
-
/sax/1.2.4:
resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
dev: false
@@ -12129,6 +13143,17 @@ packages:
is-arrayish: 0.3.2
dev: false
+ /sinon/14.0.2:
+ resolution: {integrity: sha512-PDpV0ZI3ZCS3pEqx0vpNp6kzPhHrLx72wA0G+ZLaaJjLIYeE0n8INlgaohKuGy7hP0as5tbUd23QWu5U233t+w==}
+ dependencies:
+ '@sinonjs/commons': 2.0.0
+ '@sinonjs/fake-timers': 9.1.2
+ '@sinonjs/samsam': 7.0.1
+ diff: 5.1.0
+ nise: 5.1.4
+ supports-color: 7.2.0
+ dev: true
+
/sisteransi/1.0.5:
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
dev: true
@@ -12429,6 +13454,13 @@ packages:
internal-slot: 1.0.5
dev: true
+ /stream-browserify/3.0.0:
+ resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==}
+ dependencies:
+ inherits: 2.0.4
+ readable-stream: 3.6.0
+ dev: false
+
/stream-combiner/0.0.4:
resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==}
dependencies:
@@ -13018,14 +14050,12 @@ packages:
/tslib/1.14.1:
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
- dev: true
/tslib/2.4.1:
resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==}
/tslib/2.5.0:
resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
- dev: false
/tsutils/3.21.0_typescript@4.9.5:
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
@@ -13354,13 +14384,6 @@ packages:
resolution: {integrity: sha512-mYFmBHCapZjtcNHW0MDq9967t+z4Dmg5CJ0KqysK3+ZbyoNOWQHksGCTWwDhxGXllkWlOc10Xfko6v4a3ucM6A==}
dev: false
- /url/0.10.3:
- resolution: {integrity: sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==}
- dependencies:
- punycode: 1.3.2
- querystring: 0.2.0
- dev: false
-
/urlsafe-base64/1.0.0:
resolution: {integrity: sha512-RtuPeMy7c1UrHwproMZN9gN6kiZ0SvJwRaEzwZY0j9MypEkFqyBaKv176jvlPtg58Zh36bOkS0NFABXMHvvGCA==}
dev: false
@@ -13381,26 +14404,12 @@ packages:
/util-deprecate/1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
- /util/0.12.5:
- resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==}
- dependencies:
- inherits: 2.0.4
- is-arguments: 1.1.1
- is-generator-function: 1.0.10
- is-typed-array: 1.1.10
- which-typed-array: 1.1.9
- dev: false
-
/uuid/3.4.0:
resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==}
deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
hasBin: true
dev: false
- /uuid/8.0.0:
- resolution: {integrity: sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==}
- dev: false
-
/uuid/8.3.2:
resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
hasBin: true
@@ -13849,6 +14858,7 @@ packages:
gopd: 1.0.1
has-tostringtag: 1.0.0
is-typed-array: 1.1.10
+ dev: true
/which/1.3.1:
resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
@@ -13955,13 +14965,6 @@ packages:
resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
engines: {node: '>=12'}
- /xml2js/0.4.19:
- resolution: {integrity: sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==}
- dependencies:
- sax: 1.2.4
- xmlbuilder: 9.0.7
- dev: false
-
/xml2js/0.4.23:
resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==}
engines: {node: '>=4.0.0'}
@@ -13975,11 +14978,6 @@ packages:
engines: {node: '>=4.0'}
dev: false
- /xmlbuilder/9.0.7:
- resolution: {integrity: sha512-7YXTQc3P2l9+0rjaUbLwMKRhtmwg1M1eDf6nag7urC7pIPYLD9W/jmzQ4ptRSUbodw5S0jfoGTflLemQibSpeQ==}
- engines: {node: '>=4.0'}
- dev: false
-
/xmlchars/2.2.0:
resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
dev: false