diff --git a/packages/server/dependencies/package.json b/packages/server/dependencies/package.json index 76015706..baed0b35 100644 --- a/packages/server/dependencies/package.json +++ b/packages/server/dependencies/package.json @@ -3,7 +3,6 @@ "version": "0.0.1", "type": "module", "dependencies": { - "aws-sdk": "^2.1454.0", "jsonwebtoken": "^9.0.2" } } diff --git a/packages/server/package.json b/packages/server/package.json index 67fdad2b..ab6a49a2 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -20,12 +20,13 @@ "dryrun": "sam deploy --guided --no-execute-changeset" }, "devDependencies": { + "@aws-sdk/client-dynamodb": "^3.414.0", + "@aws-sdk/types": "^3.413.0", "@types/aws-lambda": "^8.10.119", "@types/jsonwebtoken": "^9.0.2", "@types/lockerweb": "link:..\\types", "@typescript-eslint/eslint-plugin": "^6.6.0", "@typescript-eslint/parser": "^6.6.0", - "aws-sdk": "^2.1454.0", "chai": "^4.3.8", "cross-env": "^7.0.3", "eslint": "^8.49.0", diff --git a/packages/server/src/auth/data.ts b/packages/server/src/auth/data.ts index ca0e32b6..ab196216 100644 --- a/packages/server/src/auth/data.ts +++ b/packages/server/src/auth/data.ts @@ -1,7 +1,13 @@ -import type { GetItemInput, UpdateItemInput, UpdateItemOutput } from 'aws-sdk/clients/dynamodb.ts'; +import { + UpdateItemCommand, + type GetItemInput, + type UpdateItemInput, + type UpdateItemOutput, + GetItemCommand, + ConditionalCheckFailedException, +} from '@aws-sdk/client-dynamodb'; import { ForbiddenError, UnauthorizedError } from '../util/error.js'; import { adminId, dynamoDB, TableName } from '../util/database.js'; -import type { AWSError } from 'aws-sdk'; /* ISSUE/REVOKE TOKEN */ @@ -22,11 +28,12 @@ export const revokeToken = async function ( }, ReturnValues: 'UPDATED_OLD', }; + const cmd = new UpdateItemCommand(req); let res: UpdateItemOutput; try { - res = await dynamoDB.updateItem(req).promise(); + res = await dynamoDB.send(cmd); } catch (e) { - if ((e as AWSError).name === 'ConditionalCheckFailedException') { + if (e instanceof ConditionalCheckFailedException) { throw new ForbiddenError('Cannot logout when token is invalid'); } throw e; @@ -60,11 +67,12 @@ export const issueToken = async function ( }, ReturnValues: 'ALL_NEW', }; + const cmd = new UpdateItemCommand(req); let res: UpdateItemOutput; try { - res = await dynamoDB.updateItem(req).promise(); + res = await dynamoDB.send(cmd); } catch (e) { - if ((e as AWSError).name === 'ConditionalCheckFailedException') { + if (e instanceof ConditionalCheckFailedException) { throw new ForbiddenError('This user cannot login to service'); } throw e; @@ -90,7 +98,8 @@ export async function assertAccessible( }, }, }; - const authRes = await dynamoDB.getItem(authReq).promise(); + const authCmd = new GetItemCommand(authReq); + const authRes = await dynamoDB.send(authCmd); if ( authRes.Item.id.S !== `${id}` || authRes.Item.aT?.S !== token || diff --git a/packages/server/src/config/data.ts b/packages/server/src/config/data.ts index c8fc510c..72153dac 100644 --- a/packages/server/src/config/data.ts +++ b/packages/server/src/config/data.ts @@ -1,19 +1,22 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ // noinspection JSUnusedLocalSymbols -import type { - DeleteItemInput, - ExpressionAttributeNameMap, - ExpressionAttributeValueMap, - GetItemInput, - GetItemOutput, - QueryInput, - QueryOutput, - UpdateItemInput, -} from 'aws-sdk/clients/dynamodb.ts'; +import { + QueryCommand, + type AttributeValue, + type DeleteItemInput, + type GetItemInput, + type GetItemOutput, + type QueryInput, + type QueryOutput, + type UpdateItemInput, + GetItemCommand, + UpdateItemCommand, + DeleteItemCommand, + ConditionalCheckFailedException, +} from '@aws-sdk/client-dynamodb'; import { dynamoDB, TableName } from '../util/database.js'; import { NotFoundError } from '../util/error.js'; -import type { AWSError } from 'aws-sdk'; function fromLockerSubsectionData(data: LockerSubsectionData): LockerSubsection { return { @@ -178,17 +181,16 @@ export const queryConfig = async function (startsWith = ''): Promise { }; let res: GetItemOutput; try { - res = await dynamoDB.getItem(req).promise(); + const cmd = new GetItemCommand(req); + res = await dynamoDB.send(cmd); } catch (e) { - if ((e as AWSError).name === 'ConditionalCheckFailedException') { + if (e instanceof ConditionalCheckFailedException) { throw new NotFoundError(`Cannot find config of id ${id}`); } throw e; @@ -232,8 +235,8 @@ export const getConfig = async function (id: string): Promise { }; export const updateConfig = async function (config: ConfigUpdateRequest) { - const attributes: ExpressionAttributeValueMap = {}; - const attributeNames: ExpressionAttributeNameMap = {}; + const attributes: Record = {}; + const attributeNames: Record = {}; let updateExp = ''; let removeExp = ''; if (config.name) { @@ -298,7 +301,8 @@ export const updateConfig = async function (config: ConfigUpdateRequest) { ExpressionAttributeValues: attributes, }), }; - await dynamoDB.updateItem(req).promise(); + const cmd = new UpdateItemCommand(req); + await dynamoDB.send(cmd); return config; }; @@ -310,6 +314,7 @@ export const deleteConfig = async function (id: string): Promise { id: { S: id }, }, }; - await dynamoDB.deleteItem(req).promise(); + const cmd = new DeleteItemCommand(req); + await dynamoDB.send(cmd); return id; }; diff --git a/packages/server/src/locker/data.ts b/packages/server/src/locker/data.ts index 88c8f8db..d3b4e18d 100644 --- a/packages/server/src/locker/data.ts +++ b/packages/server/src/locker/data.ts @@ -1,13 +1,15 @@ -import type { - ExpressionAttributeValueMap, - QueryInput, - QueryOutput, - UpdateItemInput, - UpdateItemOutput, -} from 'aws-sdk/clients/dynamodb.ts'; +import { + QueryCommand, + type AttributeValue, + type QueryInput, + type QueryOutput, + type UpdateItemInput, + type UpdateItemOutput, + UpdateItemCommand, + ConditionalCheckFailedException, +} from '@aws-sdk/client-dynamodb'; import { adminId, dynamoDB, TableName } from '../util/database.js'; import { BlockedError, CantClaimError, CantUnclaimError, NotFoundError } from '../util/error.js'; -import type { AWSError } from 'aws-sdk'; export const claimLocker = async function ( id: string, @@ -34,9 +36,10 @@ export const claimLocker = async function ( ':lockerId': { S: lockerId }, }, }; - const checkRes = await dynamoDB.query(checkReq).promise(); + const checkCmd = new QueryCommand(checkReq); + const checkRes = await dynamoDB.send(checkCmd); if (checkRes.Count > 0) throw new CantClaimError('Requested locker is already claimed'); - let conditionValues: ExpressionAttributeValueMap = {}; + let conditionValues: Record = {}; const blockDeptCondition = blockedDepartments.map((d) => `NOT d = :${d}`).join(' AND '); let condition = ''; if (isServiceBlocked) { @@ -68,9 +71,10 @@ export const claimLocker = async function ( }; let res: UpdateItemOutput; try { - res = await dynamoDB.updateItem(req).promise(); + const cmd = new UpdateItemCommand(req); + res = await dynamoDB.send(cmd); } catch (e) { - if ((e as AWSError).name === 'ConditionalCheckFailedException') { + if (e instanceof ConditionalCheckFailedException) { throw new BlockedError(); } throw e; @@ -96,7 +100,7 @@ export const unclaimLocker = async function ( blockedDepartments: Array, isServiceBlocked: boolean, ): Promise { - let conditionValues: ExpressionAttributeValueMap = {}; + let conditionValues: Record = {}; const blockDeptCondition = blockedDepartments.map((d) => `NOT d = :${d}`).join(' AND '); let condition = ''; if (isServiceBlocked) { @@ -126,9 +130,10 @@ export const unclaimLocker = async function ( }; let res: UpdateItemOutput; try { - res = await dynamoDB.updateItem(req).promise(); + const cmd = new UpdateItemCommand(req); + res = await dynamoDB.send(cmd); } catch (e) { - if ((e as AWSError).name === 'ConditionalCheckFailedException') { + if (e instanceof ConditionalCheckFailedException) { throw new BlockedError(); } throw e; @@ -168,9 +173,10 @@ export const queryLockers = async function ( }; let res: QueryOutput; try { - res = await dynamoDB.query(req).promise(); + const cmd = new QueryCommand(req); + res = await dynamoDB.send(cmd); } catch (e) { - if ((e as AWSError).name === 'ConditionalCheckFailedException') { + if (e instanceof ConditionalCheckFailedException) { throw new NotFoundError('Cannot find lockers'); } throw e; diff --git a/packages/server/src/user/data.ts b/packages/server/src/user/data.ts index a94361d7..703666ee 100644 --- a/packages/server/src/user/data.ts +++ b/packages/server/src/user/data.ts @@ -1,19 +1,24 @@ /* USER CRUD */ -import type { - BatchWriteItemInput, - DeleteItemInput, - ExpressionAttributeValueMap, - GetItemInput, - GetItemOutput, - QueryInput, - QueryOutput, - UpdateItemInput, - WriteRequest, -} from 'aws-sdk/clients/dynamodb.ts'; +import { + type BatchWriteItemInput, + type DeleteItemInput, + type AttributeValue, + type GetItemInput, + type GetItemOutput, + type QueryInput, + type QueryOutput, + type UpdateItemInput, + type WriteRequest, + GetItemCommand, + QueryCommand, + UpdateItemCommand, + DeleteItemCommand, + BatchWriteItemCommand, + ConditionalCheckFailedException, +} from '@aws-sdk/client-dynamodb'; import { dynamoDB, TableName } from '../util/database.js'; import { InternalError, NotFoundError } from '../util/error.js'; -import type { AWSError } from 'aws-sdk'; export const fromUserDao = (dao: UserDao): User => ({ id: dao.id.S, @@ -54,9 +59,10 @@ export const getUser = async function (id: string): Promise { }; let res: GetItemOutput; try { - res = await dynamoDB.getItem(req).promise(); + const cmd = new GetItemCommand(req); + res = await dynamoDB.send(cmd); } catch (e) { - if ((e as AWSError).name === 'ConditionalCheckFailedException') { + if (e instanceof ConditionalCheckFailedException) { throw new NotFoundError(`Cannot find user info of id ${id}`); } throw e; @@ -85,17 +91,16 @@ export const queryUser = async function (startsWith: string): Promise { - const attributes: ExpressionAttributeValueMap = {}; + const attributes: Record = {}; let updateExp = ''; let removeExp = ''; if (info.name) { @@ -149,7 +154,8 @@ export const updateUser = async function (info: UserUpdateRequest): Promise { id: { S: id }, }, }; - await dynamoDB.deleteItem(req).promise(); + const cmd = new DeleteItemCommand(req); + await dynamoDB.send(cmd); return id; }; export const batchPutUser = async function (infos: Array): Promise> { @@ -178,7 +185,8 @@ export const batchPutUser = async function (infos: Array): Promise): Promise=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.414.0 + '@aws-sdk/credential-provider-node': 3.414.0 + '@aws-sdk/middleware-endpoint-discovery': 3.413.0 + '@aws-sdk/middleware-host-header': 3.413.0 + '@aws-sdk/middleware-logger': 3.413.0 + '@aws-sdk/middleware-recursion-detection': 3.413.0 + '@aws-sdk/middleware-signing': 3.413.0 + '@aws-sdk/middleware-user-agent': 3.413.0 + '@aws-sdk/region-config-resolver': 3.413.0 + '@aws-sdk/types': 3.413.0 + '@aws-sdk/util-endpoints': 3.413.0 + '@aws-sdk/util-user-agent-browser': 3.413.0 + '@aws-sdk/util-user-agent-node': 3.413.0 + '@smithy/config-resolver': 2.0.9 + '@smithy/fetch-http-handler': 2.1.4 + '@smithy/hash-node': 2.0.8 + '@smithy/invalid-dependency': 2.0.8 + '@smithy/middleware-content-length': 2.0.10 + '@smithy/middleware-endpoint': 2.0.8 + '@smithy/middleware-retry': 2.0.11 + '@smithy/middleware-serde': 2.0.8 + '@smithy/middleware-stack': 2.0.1 + '@smithy/node-config-provider': 2.0.11 + '@smithy/node-http-handler': 2.1.4 + '@smithy/protocol-http': 3.0.4 + '@smithy/smithy-client': 2.1.5 + '@smithy/types': 2.3.2 + '@smithy/url-parser': 2.0.8 + '@smithy/util-base64': 2.0.0 + '@smithy/util-body-length-browser': 2.0.0 + '@smithy/util-body-length-node': 2.1.0 + '@smithy/util-defaults-mode-browser': 2.0.9 + '@smithy/util-defaults-mode-node': 2.0.11 + '@smithy/util-retry': 2.0.1 + '@smithy/util-utf8': 2.0.0 + '@smithy/util-waiter': 2.0.8 + tslib: 2.6.2 + uuid: 8.3.2 + transitivePeerDependencies: + - aws-crt + dev: true + + /@aws-sdk/client-sso@3.414.0: + resolution: {integrity: sha512-GvRwQ7wA3edzsQEKS70ZPhkOUZ62PAiXasjp6GxrsADEb8sV1z4FxXNl9Un/7fQxKkh9QYaK1Wu1PmhLi9MLMg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/middleware-host-header': 3.413.0 + '@aws-sdk/middleware-logger': 3.413.0 + '@aws-sdk/middleware-recursion-detection': 3.413.0 + '@aws-sdk/middleware-user-agent': 3.413.0 + '@aws-sdk/region-config-resolver': 3.413.0 + '@aws-sdk/types': 3.413.0 + '@aws-sdk/util-endpoints': 3.413.0 + '@aws-sdk/util-user-agent-browser': 3.413.0 + '@aws-sdk/util-user-agent-node': 3.413.0 + '@smithy/config-resolver': 2.0.9 + '@smithy/fetch-http-handler': 2.1.4 + '@smithy/hash-node': 2.0.8 + '@smithy/invalid-dependency': 2.0.8 + '@smithy/middleware-content-length': 2.0.10 + '@smithy/middleware-endpoint': 2.0.8 + '@smithy/middleware-retry': 2.0.11 + '@smithy/middleware-serde': 2.0.8 + '@smithy/middleware-stack': 2.0.1 + '@smithy/node-config-provider': 2.0.11 + '@smithy/node-http-handler': 2.1.4 + '@smithy/protocol-http': 3.0.4 + '@smithy/smithy-client': 2.1.5 + '@smithy/types': 2.3.2 + '@smithy/url-parser': 2.0.8 + '@smithy/util-base64': 2.0.0 + '@smithy/util-body-length-browser': 2.0.0 + '@smithy/util-body-length-node': 2.1.0 + '@smithy/util-defaults-mode-browser': 2.0.9 + '@smithy/util-defaults-mode-node': 2.0.11 + '@smithy/util-retry': 2.0.1 + '@smithy/util-utf8': 2.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: true + + /@aws-sdk/client-sts@3.414.0: + resolution: {integrity: sha512-xeYH3si6Imp1EWolWn1zuxJJu2AXKwXl1HDftQULwC5AWkm1mNFbXYSJN4hQul1IM+kn+JTRB0XRHByQkKhe+Q==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/credential-provider-node': 3.414.0 + '@aws-sdk/middleware-host-header': 3.413.0 + '@aws-sdk/middleware-logger': 3.413.0 + '@aws-sdk/middleware-recursion-detection': 3.413.0 + '@aws-sdk/middleware-sdk-sts': 3.413.0 + '@aws-sdk/middleware-signing': 3.413.0 + '@aws-sdk/middleware-user-agent': 3.413.0 + '@aws-sdk/region-config-resolver': 3.413.0 + '@aws-sdk/types': 3.413.0 + '@aws-sdk/util-endpoints': 3.413.0 + '@aws-sdk/util-user-agent-browser': 3.413.0 + '@aws-sdk/util-user-agent-node': 3.413.0 + '@smithy/config-resolver': 2.0.9 + '@smithy/fetch-http-handler': 2.1.4 + '@smithy/hash-node': 2.0.8 + '@smithy/invalid-dependency': 2.0.8 + '@smithy/middleware-content-length': 2.0.10 + '@smithy/middleware-endpoint': 2.0.8 + '@smithy/middleware-retry': 2.0.11 + '@smithy/middleware-serde': 2.0.8 + '@smithy/middleware-stack': 2.0.1 + '@smithy/node-config-provider': 2.0.11 + '@smithy/node-http-handler': 2.1.4 + '@smithy/protocol-http': 3.0.4 + '@smithy/smithy-client': 2.1.5 + '@smithy/types': 2.3.2 + '@smithy/url-parser': 2.0.8 + '@smithy/util-base64': 2.0.0 + '@smithy/util-body-length-browser': 2.0.0 + '@smithy/util-body-length-node': 2.1.0 + '@smithy/util-defaults-mode-browser': 2.0.9 + '@smithy/util-defaults-mode-node': 2.0.11 + '@smithy/util-retry': 2.0.1 + '@smithy/util-utf8': 2.0.0 + fast-xml-parser: 4.2.5 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: true + + /@aws-sdk/credential-provider-env@3.413.0: + resolution: {integrity: sha512-yeMOkfG20/RlzfPMtQuDB647AcPEvFEVYOWZzAWVJfldYQ5ybKr0d7sBkgG9sdAzGkK3Aw9dE4rigYI8EIqc1Q==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.413.0 + '@smithy/property-provider': 2.0.9 + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@aws-sdk/credential-provider-ini@3.414.0: + resolution: {integrity: sha512-rlpLLx70roJL/t40opWC96LbIASejdMbRlgSCRpK8b/hKngYDe5A7SRVacaw08vYrAywxRiybxpQOwOt9b++rA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/credential-provider-env': 3.413.0 + '@aws-sdk/credential-provider-process': 3.413.0 + '@aws-sdk/credential-provider-sso': 3.414.0 + '@aws-sdk/credential-provider-web-identity': 3.413.0 + '@aws-sdk/types': 3.413.0 + '@smithy/credential-provider-imds': 2.0.11 + '@smithy/property-provider': 2.0.9 + '@smithy/shared-ini-file-loader': 2.0.10 + '@smithy/types': 2.3.2 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: true + + /@aws-sdk/credential-provider-node@3.414.0: + resolution: {integrity: sha512-xlkcOUKeGHInxWKKrZKIPSBCUL/ozyCldJBjmMKEj7ZmBAEiDcjpMe3pZ//LibMkCSy0b/7jtyQBE/eaIT2o0A==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/credential-provider-env': 3.413.0 + '@aws-sdk/credential-provider-ini': 3.414.0 + '@aws-sdk/credential-provider-process': 3.413.0 + '@aws-sdk/credential-provider-sso': 3.414.0 + '@aws-sdk/credential-provider-web-identity': 3.413.0 + '@aws-sdk/types': 3.413.0 + '@smithy/credential-provider-imds': 2.0.11 + '@smithy/property-provider': 2.0.9 + '@smithy/shared-ini-file-loader': 2.0.10 + '@smithy/types': 2.3.2 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: true + + /@aws-sdk/credential-provider-process@3.413.0: + resolution: {integrity: sha512-GFJdgS14GzJ1wc2DEnS44Z/34iBZ05CAkvDsLN2CMwcDgH4eZuif9/x0lwzIJBK3xVFHzYUeVvEzsqRPbCHRsw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.413.0 + '@smithy/property-provider': 2.0.9 + '@smithy/shared-ini-file-loader': 2.0.10 + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@aws-sdk/credential-provider-sso@3.414.0: + resolution: {integrity: sha512-w9g2hlkZn7WekWICRqk+L33py7KrjYMFryVpkKXOx2pjDchCfZDr6pL1ml782GZ0L3qsob4SbNpbtp13JprnWQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/client-sso': 3.414.0 + '@aws-sdk/token-providers': 3.413.0 + '@aws-sdk/types': 3.413.0 + '@smithy/property-provider': 2.0.9 + '@smithy/shared-ini-file-loader': 2.0.10 + '@smithy/types': 2.3.2 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: true + + /@aws-sdk/credential-provider-web-identity@3.413.0: + resolution: {integrity: sha512-5cdA1Iq9JeEHtg59ERV9fdMQ7cS0JF6gH/BWA7HYEUGdSVPXCuwyEggPtG64QgpNU7SmxH+QdDG+Ldxz09ycIA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.413.0 + '@smithy/property-provider': 2.0.9 + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@aws-sdk/endpoint-cache@3.310.0: + resolution: {integrity: sha512-y3wipforet41EDTI0vnzxILqwAGll1KfI5qcdX9pXF/WF1f+3frcOtPiWtQEZQpy4czRogKm3BHo70QBYAZxlQ==} + engines: {node: '>=14.0.0'} + dependencies: + mnemonist: 0.38.3 + tslib: 2.6.2 + dev: true + + /@aws-sdk/middleware-endpoint-discovery@3.413.0: + resolution: {integrity: sha512-guQwWLjeveLtLuoPRoX61mE00WI9VyOSiY8d2ofVWsywn92Xiq6zZG/sKhC6OzsAZXLpBY6aItVWvtQE4cr6gA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/endpoint-cache': 3.310.0 + '@aws-sdk/types': 3.413.0 + '@smithy/protocol-http': 3.0.4 + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@aws-sdk/middleware-host-header@3.413.0: + resolution: {integrity: sha512-r9PQx468EzPHo9wRzZLfgROpKtVdbkteMrdhsuM12bifVHjU1OHr7yfhc1OdWv39X8Xiv6F8n5r+RBQEM0S6+g==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.413.0 + '@smithy/protocol-http': 3.0.4 + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@aws-sdk/middleware-logger@3.413.0: + resolution: {integrity: sha512-jqcXDubcKvoqBy+kkEa0WoNjG6SveDeyNy+gdGnTV+DEtYjkcHrHJei4q0W5zFl0mzc+dP+z8tJF44rv95ZY3Q==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.413.0 + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@aws-sdk/middleware-recursion-detection@3.413.0: + resolution: {integrity: sha512-C6k0IKJk/A4/VBGwUjxEPG+WOjjnmWAZVRBUzaeM7PqRh+g5rLcuIV356ntV3pREVxyiSTePTYVYIHU9YXkLKQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.413.0 + '@smithy/protocol-http': 3.0.4 + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@aws-sdk/middleware-sdk-sts@3.413.0: + resolution: {integrity: sha512-t0u//JUyaEZRVnH5q+Ur3tWnuyIsTdwA0XOdDCZXcSlLYzGp2MI/tScLjn9IydRrceIFpFfmbjk4Nf/Q6TeBTQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/middleware-signing': 3.413.0 + '@aws-sdk/types': 3.413.0 + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@aws-sdk/middleware-signing@3.413.0: + resolution: {integrity: sha512-QFEnVvIKYPCermM+ESxEztgUgXzGSKpnPnohMYNvSZySqmOLu/4VvxiZbRO/BX9J3ZHcUgaw4vKm5VBZRrycxw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.413.0 + '@smithy/property-provider': 2.0.9 + '@smithy/protocol-http': 3.0.4 + '@smithy/signature-v4': 2.0.8 + '@smithy/types': 2.3.2 + '@smithy/util-middleware': 2.0.1 + tslib: 2.6.2 + dev: true + + /@aws-sdk/middleware-user-agent@3.413.0: + resolution: {integrity: sha512-eVMJyeWxNBqerhfD+sE9sTjDtwQiECrfU6wpUQP5fGPhJD2cVVZPxuTuJGDZCu/4k/V61dF85IYlsPUNLdVQ6w==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.413.0 + '@aws-sdk/util-endpoints': 3.413.0 + '@smithy/protocol-http': 3.0.4 + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@aws-sdk/region-config-resolver@3.413.0: + resolution: {integrity: sha512-h90e6yyOhvoc+1F5vFk3C5mxwB8RSDEMKTO/fxexyur94seczZ1yxyYkTMZv30oc9RUiToABlHNrh/wxL7TZPQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/node-config-provider': 2.0.11 + '@smithy/types': 2.3.2 + '@smithy/util-config-provider': 2.0.0 + '@smithy/util-middleware': 2.0.1 + tslib: 2.6.2 + dev: true + + /@aws-sdk/token-providers@3.413.0: + resolution: {integrity: sha512-NfP1Ib9LAWVLMTOa/1aJwt4TRrlRrNyukCpVZGfNaMnNNEoP5Rakdbcs8KFVHe/MJzU+GdKVzxQ4TgRkLOGTrA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/middleware-host-header': 3.413.0 + '@aws-sdk/middleware-logger': 3.413.0 + '@aws-sdk/middleware-recursion-detection': 3.413.0 + '@aws-sdk/middleware-user-agent': 3.413.0 + '@aws-sdk/types': 3.413.0 + '@aws-sdk/util-endpoints': 3.413.0 + '@aws-sdk/util-user-agent-browser': 3.413.0 + '@aws-sdk/util-user-agent-node': 3.413.0 + '@smithy/config-resolver': 2.0.9 + '@smithy/fetch-http-handler': 2.1.4 + '@smithy/hash-node': 2.0.8 + '@smithy/invalid-dependency': 2.0.8 + '@smithy/middleware-content-length': 2.0.10 + '@smithy/middleware-endpoint': 2.0.8 + '@smithy/middleware-retry': 2.0.11 + '@smithy/middleware-serde': 2.0.8 + '@smithy/middleware-stack': 2.0.1 + '@smithy/node-config-provider': 2.0.11 + '@smithy/node-http-handler': 2.1.4 + '@smithy/property-provider': 2.0.9 + '@smithy/protocol-http': 3.0.4 + '@smithy/shared-ini-file-loader': 2.0.10 + '@smithy/smithy-client': 2.1.5 + '@smithy/types': 2.3.2 + '@smithy/url-parser': 2.0.8 + '@smithy/util-base64': 2.0.0 + '@smithy/util-body-length-browser': 2.0.0 + '@smithy/util-body-length-node': 2.1.0 + '@smithy/util-defaults-mode-browser': 2.0.9 + '@smithy/util-defaults-mode-node': 2.0.11 + '@smithy/util-retry': 2.0.1 + '@smithy/util-utf8': 2.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: true + + /@aws-sdk/types@3.413.0: + resolution: {integrity: sha512-j1xib0f/TazIFc5ySIKOlT1ujntRbaoG4LJFeEezz4ji03/wSJMI8Vi4KjzpBp8J1tTu0oRDnsxRIGixsUBeYQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@aws-sdk/util-endpoints@3.413.0: + resolution: {integrity: sha512-VAwr7cITNb1L6/2XUPIbCOuhKGm0VtKCRblurrfUF2bxqG/wtuw/2Fm4ahYJPyxklOSXAMSq+RHdFWcir0YB/g==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.413.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/util-locate-window@3.310.0: + resolution: {integrity: sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + dev: true + + /@aws-sdk/util-user-agent-browser@3.413.0: + resolution: {integrity: sha512-7j/qWcRO2OBZBre2fC6V6M0PAS9n7k6i+VtofPkkhxC2DZszLJElqnooF9hGmVGYK3zR47Np4WjURXKIEZclWg==} + dependencies: + '@aws-sdk/types': 3.413.0 + '@smithy/types': 2.3.2 + bowser: 2.11.0 + tslib: 2.6.2 + dev: true + + /@aws-sdk/util-user-agent-node@3.413.0: + resolution: {integrity: sha512-vHm9TVZIzfWMeDvdmoOky6VarqOt8Pr68CESHN0jyuO6XbhCDnr9rpaXiBhbSR+N1Qm7R/AfJgAhQyTMu2G1OA==} + engines: {node: '>=14.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + dependencies: + '@aws-sdk/types': 3.413.0 + '@smithy/node-config-provider': 2.0.11 + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@aws-sdk/util-utf8-browser@3.259.0: + resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} + dependencies: + tslib: 2.6.2 + dev: true + /@babel/runtime@7.22.15: resolution: {integrity: sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==} engines: {node: '>=6.9.0'} @@ -531,6 +991,359 @@ packages: resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==} dev: true + /@smithy/abort-controller@2.0.8: + resolution: {integrity: sha512-2SOdVj5y0zE37Y9scSXoizoxgi6mgnDabi7a/SOfhl0p+50I0rIkuJTfyAuTPDtQ7e5dD6tSZPCLB3c/YM6Zig==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@smithy/config-resolver@2.0.9: + resolution: {integrity: sha512-QBkGPLUqyPmis9Erz8v4q5lo/ErnF7+GD5WZHa6JZiXopUPfaaM+B21n8gzS5xCkIXZmnwzNQhObP9xQPu8oqQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/node-config-provider': 2.0.11 + '@smithy/types': 2.3.2 + '@smithy/util-config-provider': 2.0.0 + '@smithy/util-middleware': 2.0.1 + tslib: 2.6.2 + dev: true + + /@smithy/credential-provider-imds@2.0.11: + resolution: {integrity: sha512-uJJs8dnM5iXkn8a2GaKvlKMhcOJ+oJPYqY9gY3CM/EieCVObIDjxUtR/g8lU/k/A+OauA78GzScAfulmFjPOYA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/node-config-provider': 2.0.11 + '@smithy/property-provider': 2.0.9 + '@smithy/types': 2.3.2 + '@smithy/url-parser': 2.0.8 + tslib: 2.6.2 + dev: true + + /@smithy/eventstream-codec@2.0.8: + resolution: {integrity: sha512-onO4to8ujCKn4m5XagReT9Nc6FlNG5vveuvjp1H7AtaG7njdet1LOl6/jmUOkskF2C/w+9jNw3r9Ak+ghOvN0A==} + dependencies: + '@aws-crypto/crc32': 3.0.0 + '@smithy/types': 2.3.2 + '@smithy/util-hex-encoding': 2.0.0 + tslib: 2.6.2 + dev: true + + /@smithy/fetch-http-handler@2.1.4: + resolution: {integrity: sha512-SL24M9W5ERByoXaVicRx+bj9GJVujDnPn+QO7GY7adhY0mPGa6DSF58pVKsgIh4r5Tx/k3SWCPlH4BxxSxA/fQ==} + dependencies: + '@smithy/protocol-http': 3.0.4 + '@smithy/querystring-builder': 2.0.8 + '@smithy/types': 2.3.2 + '@smithy/util-base64': 2.0.0 + tslib: 2.6.2 + dev: true + + /@smithy/hash-node@2.0.8: + resolution: {integrity: sha512-yZL/nmxZzjZV5/QX5JWSgXlt0HxuMTwFO89CS++jOMMPiCMZngf6VYmtNdccs8IIIAMmfQeTzwu07XgUE/Zd3Q==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.3.2 + '@smithy/util-buffer-from': 2.0.0 + '@smithy/util-utf8': 2.0.0 + tslib: 2.6.2 + dev: true + + /@smithy/invalid-dependency@2.0.8: + resolution: {integrity: sha512-88VOS7W3KzUz/bNRc+Sl/F/CDIasFspEE4G39YZRHIh9YmsXF7GUyVaAKURfMNulTie62ayk6BHC9O0nOBAVgQ==} + dependencies: + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@smithy/is-array-buffer@2.0.0: + resolution: {integrity: sha512-z3PjFjMyZNI98JFRJi/U0nGoLWMSJlDjAW4QUX2WNZLas5C0CmVV6LJ01JI0k90l7FvpmixjWxPFmENSClQ7ug==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + dev: true + + /@smithy/middleware-content-length@2.0.10: + resolution: {integrity: sha512-EGSbysyA4jH0p3xI6G0jdXoj9Iz9GUnAta6aEaHtXm3wVWtenRf80y2TeVvNkVSr5jwKOdSCjKIRI2l1A/oZLA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/protocol-http': 3.0.4 + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@smithy/middleware-endpoint@2.0.8: + resolution: {integrity: sha512-yOpogfG2d2V0cbJdAJ6GLAWkNOc9pVsL5hZUfXcxJu408N3CUCsXzIAFF6+70ZKSE+lCfG3GFErcSXv/UfUbjw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/middleware-serde': 2.0.8 + '@smithy/types': 2.3.2 + '@smithy/url-parser': 2.0.8 + '@smithy/util-middleware': 2.0.1 + tslib: 2.6.2 + dev: true + + /@smithy/middleware-retry@2.0.11: + resolution: {integrity: sha512-pknfokumZ+wvBERSuKAI2vVr+aK3ZgPiWRg6+0ZG4kKJogBRpPmDGWw+Jht0izS9ZaEbIobNzueIb4wD33JJVg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/node-config-provider': 2.0.11 + '@smithy/protocol-http': 3.0.4 + '@smithy/service-error-classification': 2.0.1 + '@smithy/types': 2.3.2 + '@smithy/util-middleware': 2.0.1 + '@smithy/util-retry': 2.0.1 + tslib: 2.6.2 + uuid: 8.3.2 + dev: true + + /@smithy/middleware-serde@2.0.8: + resolution: {integrity: sha512-Is0sm+LiNlgsc0QpstDzifugzL9ehno1wXp109GgBgpnKTK3j+KphiparBDI4hWTtH9/7OUsxuspNqai2yyhcg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@smithy/middleware-stack@2.0.1: + resolution: {integrity: sha512-UexsfY6/oQZRjTQL56s9AKtMcR60tBNibSgNYX1I2WXaUaXg97W9JCkFyth85TzBWKDBTyhLfenrukS/kyu54A==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@smithy/node-config-provider@2.0.11: + resolution: {integrity: sha512-CaR1dciSSGKttjhcefpytYjsfI/Yd5mqL8am4wfmyFCDxSiPsvnEWHl8UjM/RbcAjX0klt+CeIKPSHEc0wGvJA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/property-provider': 2.0.9 + '@smithy/shared-ini-file-loader': 2.0.10 + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@smithy/node-http-handler@2.1.4: + resolution: {integrity: sha512-8Rw/AusvWDyC6SK8esAcVBeTlQHf94NMFv805suFUJCQ2gwlh0oLDNh+6s2MDOrxcjvLxjjzv1mytM0Mt+0cPQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/abort-controller': 2.0.8 + '@smithy/protocol-http': 3.0.4 + '@smithy/querystring-builder': 2.0.8 + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@smithy/property-provider@2.0.9: + resolution: {integrity: sha512-25pPZ8f8DeRwYI5wbPRZaoMoR+3vrw8DwbA0TjP+GsdiB2KxScndr4HQehiJ5+WJ0giOTWhLz0bd+7Djv1qpUQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@smithy/protocol-http@3.0.4: + resolution: {integrity: sha512-CGfSWk6TRlbwa8YgrSXdn80Yu7pov3EV/h7TSfiCHhq6/LO3WymmqnzgH1f0qV2bdTDipIkTNp5dGCGN3Af/5g==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@smithy/querystring-builder@2.0.8: + resolution: {integrity: sha512-+vzIMwjC8Saz97/ptPn+IJRCRRZ+pP95ZIWDRqEqZV/a6hiKbaFoMSa2iCKsnKzR696U2JZXrDqMu3e/FD1+2g==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.3.2 + '@smithy/util-uri-escape': 2.0.0 + tslib: 2.6.2 + dev: true + + /@smithy/querystring-parser@2.0.8: + resolution: {integrity: sha512-ArbanNuR7O/MmTd90ZqhDqGOPPDYmxx3huHxD+R3cuCnazcK/1tGQA+SnnR5307T7ZRb5WTpB6qBggERuibVSA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@smithy/service-error-classification@2.0.1: + resolution: {integrity: sha512-QHa9+t+v4s0cMuDCcbjIJN67mNZ42/+fc3jKe8P6ZMPXZl5ksKk6a8vhZ/m494GZng5eFTc3OePv+NF9cG83yg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.3.2 + dev: true + + /@smithy/shared-ini-file-loader@2.0.10: + resolution: {integrity: sha512-jWASteSezRKohJ7GdA7pHDvmr7Q7tw3b5mu3xLHIkZy/ICftJ+O7aqNaF8wklhI7UNFoQ7flFRM3Rd0KA+1BbQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@smithy/signature-v4@2.0.8: + resolution: {integrity: sha512-qrtiYMzaLlQ5HSJOaFwnyTQ3JLjmPY+3+pr9IBDpCVM6YtVj22cBLVB9bPOiZMIpkdI7ZRdxLBFlIjh5CO1Bhw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/eventstream-codec': 2.0.8 + '@smithy/is-array-buffer': 2.0.0 + '@smithy/types': 2.3.2 + '@smithy/util-hex-encoding': 2.0.0 + '@smithy/util-middleware': 2.0.1 + '@smithy/util-uri-escape': 2.0.0 + '@smithy/util-utf8': 2.0.0 + tslib: 2.6.2 + dev: true + + /@smithy/smithy-client@2.1.5: + resolution: {integrity: sha512-7S865uKzsxApM8W8Q6zkij7tcUFgaG8PuADMFdMt1yL/ku3d0+s6Zwrg3N7iXCPM08Gu/mf0BIfTXIu/9i450Q==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/middleware-stack': 2.0.1 + '@smithy/types': 2.3.2 + '@smithy/util-stream': 2.0.11 + tslib: 2.6.2 + dev: true + + /@smithy/types@2.3.2: + resolution: {integrity: sha512-iH0cdKi7HQlzfAM3w2shFk/qZYKAqJWswtpmQpPtlruF+uFZeGEpMJjgDRyhWiddfVM4e2oP4nMaOBsMy6lXgg==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + dev: true + + /@smithy/url-parser@2.0.8: + resolution: {integrity: sha512-wQw7j004ScCrBRJ+oNPXlLE9mtofxyadSZ9D8ov/rHkyurS7z1HTNuyaGRj6OvKsEk0SVQsuY0C9+EfM75XTkw==} + dependencies: + '@smithy/querystring-parser': 2.0.8 + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@smithy/util-base64@2.0.0: + resolution: {integrity: sha512-Zb1E4xx+m5Lud8bbeYi5FkcMJMnn+1WUnJF3qD7rAdXpaL7UjkFQLdmW5fHadoKbdHpwH9vSR8EyTJFHJs++tA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/util-buffer-from': 2.0.0 + tslib: 2.6.2 + dev: true + + /@smithy/util-body-length-browser@2.0.0: + resolution: {integrity: sha512-JdDuS4ircJt+FDnaQj88TzZY3+njZ6O+D3uakS32f2VNnDo3vyEuNdBOh/oFd8Df1zSZOuH1HEChk2AOYDezZg==} + dependencies: + tslib: 2.6.2 + dev: true + + /@smithy/util-body-length-node@2.1.0: + resolution: {integrity: sha512-/li0/kj/y3fQ3vyzn36NTLGmUwAICb7Jbe/CsWCktW363gh1MOcpEcSO3mJ344Gv2dqz8YJCLQpb6hju/0qOWw==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + dev: true + + /@smithy/util-buffer-from@2.0.0: + resolution: {integrity: sha512-/YNnLoHsR+4W4Vf2wL5lGv0ksg8Bmk3GEGxn2vEQt52AQaPSCuaO5PM5VM7lP1K9qHRKHwrPGktqVoAHKWHxzw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/is-array-buffer': 2.0.0 + tslib: 2.6.2 + dev: true + + /@smithy/util-config-provider@2.0.0: + resolution: {integrity: sha512-xCQ6UapcIWKxXHEU4Mcs2s7LcFQRiU3XEluM2WcCjjBtQkUN71Tb+ydGmJFPxMUrW/GWMgQEEGipLym4XG0jZg==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + dev: true + + /@smithy/util-defaults-mode-browser@2.0.9: + resolution: {integrity: sha512-JONLJVQWT8165XoSV36ERn3SVlZLJJ4D6IeGsCSePv65Uxa93pzSLE0UMSR9Jwm4zix7rst9AS8W5QIypZWP8Q==} + engines: {node: '>= 10.0.0'} + dependencies: + '@smithy/property-provider': 2.0.9 + '@smithy/smithy-client': 2.1.5 + '@smithy/types': 2.3.2 + bowser: 2.11.0 + tslib: 2.6.2 + dev: true + + /@smithy/util-defaults-mode-node@2.0.11: + resolution: {integrity: sha512-tmqjNsfj+bgZN6jXBe6efZnukzILA7BUytHkzqikuRLNtR+0VVchQHvawD0w6vManh76rO81ydhioe7i4oBzuA==} + engines: {node: '>= 10.0.0'} + dependencies: + '@smithy/config-resolver': 2.0.9 + '@smithy/credential-provider-imds': 2.0.11 + '@smithy/node-config-provider': 2.0.11 + '@smithy/property-provider': 2.0.9 + '@smithy/smithy-client': 2.1.5 + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@smithy/util-hex-encoding@2.0.0: + resolution: {integrity: sha512-c5xY+NUnFqG6d7HFh1IFfrm3mGl29lC+vF+geHv4ToiuJCBmIfzx6IeHLg+OgRdPFKDXIw6pvi+p3CsscaMcMA==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + dev: true + + /@smithy/util-middleware@2.0.1: + resolution: {integrity: sha512-LnsBMi0Mg3gfz/TpNGLv2Jjcz2ra1OX5HR/4IaCepIYmtPQzqMWDdhX/XTW1LS8OZ0xbQuyQPcHkQ+2XkhWOVQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@smithy/util-retry@2.0.1: + resolution: {integrity: sha512-naj4X0IafJ9yJnVJ58QgSMkCNLjyQOnyrnKh/T0f+0UOUxJiT8vuFn/hS7B/pNqbo2STY7PyJ4J4f+5YqxwNtA==} + engines: {node: '>= 14.0.0'} + dependencies: + '@smithy/service-error-classification': 2.0.1 + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + + /@smithy/util-stream@2.0.11: + resolution: {integrity: sha512-2MeWfqSpZKdmEJ+tH8CJQSgzLWhH5cmdE24X7JB0hiamXrOmswWGGuPvyj/9sQCTclo57pNxLR2p7KrP8Ahiyg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/fetch-http-handler': 2.1.4 + '@smithy/node-http-handler': 2.1.4 + '@smithy/types': 2.3.2 + '@smithy/util-base64': 2.0.0 + '@smithy/util-buffer-from': 2.0.0 + '@smithy/util-hex-encoding': 2.0.0 + '@smithy/util-utf8': 2.0.0 + tslib: 2.6.2 + dev: true + + /@smithy/util-uri-escape@2.0.0: + resolution: {integrity: sha512-ebkxsqinSdEooQduuk9CbKcI+wheijxEb3utGXkCoYQkJnwTnLbH1JXGimJtUkQwNQbsbuYwG2+aFVyZf5TLaw==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + dev: true + + /@smithy/util-utf8@2.0.0: + resolution: {integrity: sha512-rctU1VkziY84n5OXe3bPNpKR001ZCME2JCaBBFgtiM2hfKbHFudc/BkMuPab8hRbLd0j3vbnBTTZ1igBf0wgiQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/util-buffer-from': 2.0.0 + tslib: 2.6.2 + dev: true + + /@smithy/util-waiter@2.0.8: + resolution: {integrity: sha512-t9yaoofNhdEhNlyDeV5al/JJEFJ62HIQBGktgCUE63MvKn6imnbkh1qISsYMyMYVLwhWCpZ3Xa3R1LA+SnWcng==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/abort-controller': 2.0.8 + '@smithy/types': 2.3.2 + tslib: 2.6.2 + dev: true + /@sveltejs/adapter-auto@2.1.0(@sveltejs/kit@1.24.1): resolution: {integrity: sha512-o2pZCfATFtA/Gw/BB0Xm7k4EYaekXxaPGER3xGSY3FvzFJGTlJlZjBseaXwYSM94lZ0HniOjTokN3cWaLX6fow==} peerDependencies: @@ -975,22 +1788,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /aws-sdk@2.1454.0: - resolution: {integrity: sha512-k+wBy+ev2HWawdfYlZqGMD4WI8zyS+r6t1hc8pwSxm3s8wjP69s8df4LjUaMxMwK8xu7UscVVsXJBpMMsXFhew==} - engines: {node: '>= 10.0.0'} - 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.5.0 - dev: true - /axobject-query@3.2.1: resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} dependencies: @@ -1001,15 +1798,15 @@ packages: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: true - /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} dev: true + /bowser@2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + dev: true + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -1053,14 +1850,6 @@ packages: resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} dev: true - /buffer@4.9.2: - resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.1.13 - isarray: 1.0.0 - dev: true - /busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -1805,11 +2594,6 @@ packages: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} dev: true - /events@1.1.1: - resolution: {integrity: sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==} - engines: {node: '>=0.4.x'} - dev: true - /execa@7.2.0: resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} @@ -1848,6 +2632,13 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true + /fast-xml-parser@4.2.5: + resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} + hasBin: true + dependencies: + strnum: 1.0.5 + dev: true + /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: @@ -2109,10 +2900,6 @@ packages: engines: {node: '>=14.18.0'} dev: true - /ieee754@1.1.13: - resolution: {integrity: sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==} - dev: true - /ignore@5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} @@ -2160,14 +2947,6 @@ packages: side-channel: 1.0.4 dev: true - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - 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==} dependencies: @@ -2230,13 +3009,6 @@ packages: engines: {node: '>=12'} 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: true - /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -2328,10 +3100,6 @@ packages: call-bind: 1.0.2 dev: true - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: true - /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true @@ -2345,11 +3113,6 @@ packages: hasBin: true dev: true - /jmespath@0.16.0: - resolution: {integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==} - engines: {node: '>= 0.6.0'} - dev: true - /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -2644,6 +3407,12 @@ packages: minimist: 1.2.8 dev: true + /mnemonist@0.38.3: + resolution: {integrity: sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==} + dependencies: + obliterator: 1.6.1 + dev: true + /mocha@10.2.0: resolution: {integrity: sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==} engines: {node: '>= 14.0.0'} @@ -2800,6 +3569,10 @@ packages: es-abstract: 1.22.1 dev: true + /obliterator@1.6.1: + resolution: {integrity: sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==} + dev: true + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -3090,21 +3863,11 @@ packages: hasBin: true dev: true - /punycode@1.3.2: - resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} - dev: true - /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} dev: true - /querystring@0.2.0: - resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} - engines: {node: '>=0.4.x'} - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - dev: true - /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true @@ -3263,10 +4026,6 @@ packages: rimraf: 2.7.1 dev: true - /sax@1.2.1: - resolution: {integrity: sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==} - dev: true - /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true @@ -3453,6 +4212,10 @@ packages: engines: {node: '>=8'} dev: true + /strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + dev: true + /sucrase@3.34.0: resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} engines: {node: '>=8'} @@ -3701,6 +4464,10 @@ packages: strip-bom: 3.0.0 dev: true + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true @@ -3804,29 +4571,12 @@ packages: punycode: 2.3.0 dev: true - /url@0.10.3: - resolution: {integrity: sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==} - dependencies: - punycode: 1.3.2 - querystring: 0.2.0 - dev: true - /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /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.12 - which-typed-array: 1.1.11 - dev: true - - /uuid@8.0.0: - resolution: {integrity: sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==} + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true dev: true @@ -3931,19 +4681,6 @@ packages: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true - /xml2js@0.5.0: - resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} - engines: {node: '>=4.0.0'} - dependencies: - sax: 1.2.1 - xmlbuilder: 11.0.1 - dev: true - - /xmlbuilder@11.0.1: - resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} - engines: {node: '>=4.0'} - dev: true - /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'}