diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 725c0bdd..00000000 --- a/Dockerfile +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright 2024 Hathor Labs -# This software is provided ‘as-is’, without any express or implied -# warranty. In no event will the authors be held liable for any damages -# arising from the use of this software. -# This software cannot be redistributed unless explicitly agreed in writing with the authors. - -# Build phase -FROM node:22-alpine AS builder - -WORKDIR /app - -RUN apk update && apk add python3 g++ make py3-setuptools - -COPY . . - -# corepack will use the version of yarn specified in package.json -RUN corepack enable - -# This will install dependencies for all packages, except for the lambdas since -# they are ignored in .dockerignore -RUN yarn install - -RUN yarn workspace sync-daemon run build - -# This will remove all dev dependencies and install production deps only -RUN yarn workspaces focus -A --production - -# Run phase -FROM node:22-alpine AS runner - -WORKDIR /app - -# Copy only the necessary files from the build phase -COPY --from=builder /app . - -WORKDIR /app/packages/daemon/ - -CMD ["node", "dist/index.js"] diff --git a/Makefile b/Makefile index 35f7dedb..596c7d63 100644 --- a/Makefile +++ b/Makefile @@ -6,6 +6,14 @@ build-and-push-daemon: build-daemon: bash scripts/build-daemon.sh +.PHONY: build-migrator +build-migrator: + bash scripts/build-migrator.sh + +.PHONY: build-service +build-service: + bash scripts/build-service.sh + .PHONY: push-daemon push-daemon: bash scripts/push-daemon.sh diff --git a/README.md b/README.md index b8dde33e..cccc56a1 100644 --- a/README.md +++ b/README.md @@ -113,3 +113,25 @@ mysql -u -p < cleanup.sql ``` After cleaning the database, you can reseed the HTR token as described in the previous section. + +## Running Inside Containers +When running these applications inside containers, it's worth noting that there are a few Dockerfiles in this monorepo. + +### 1) The Daemon container +This Dockerfile is located at `./packages/daemon` and is used to build the sync daemon image. It, however,needs a properly migrated database and all the fullnode identifiers to run correctly. + +The fullnode identifiers may be fetched dynamically at startup with the use of the `FETCH_FULLNODE_IDS` environment variable, provided the remaining fullnode connection config is available. Please note that this dynamic fetching is only recommended in development environments, as the identifiers are an additional security measure on production builds. + +Its image can be build using the `make build-daemon` while on the root folder. + +### 2) The Migrator container +The Migrator Dockerfile is located at `./db` and is used to build the migrator image then shut off. This image is responsible for applying database migrations to the database connection passed through the environment variables. + +It's specially important if the database has just been created by the dockerized environment, in which case run this migrator container before starting the daemon. This, again, is only expected in discardable development environments, as production and other more persistent databases should be managed externally. + +Its image can be build using the `make build-migrator` while on the root folder. + +### 3) The Wallet Service container +This is the actual serverless application containing the externally consumed API. Its Dockerfile is located at `./packages/wallet-service` and is used to build the wallet service image. It needs a healthy Daemon to run correctly. + +Its image can be build using the `make build-service` while on the root folder. diff --git a/db/Dockerfile.dev b/db/Dockerfile.dev new file mode 100644 index 00000000..18b976ea --- /dev/null +++ b/db/Dockerfile.dev @@ -0,0 +1,66 @@ +# Copyright 2025 Hathor Labs +# This software is provided ‘as-is’, without any express or implied +# warranty. In no event will the authors be held liable for any damages +# arising from the use of this software. +# This software cannot be redistributed unless explicitly agreed in writing with the authors. + +# ========================================================================= +# This Dockerfile is intended for migrating the database of a dockerized private blockchain +# for the Wallet Service Daemon. +# +# It serves only as a means to run the migration scripts in an isolated environment. The container will run only +# for as long as the migration is running, and then it will exit. +# +# The migration scripts do not cause any impact if it is ran multiple times, so it is safe to run this container +# for each deployment of the Wallet Service Daemon. +# +# The expected image size is about 250MB as of v1.9.0 +# +# Sample usage in a docker-compose.yml: +# ws-migrator: +# image: hathornetwork/hathor-wallet-service-migrator +# restart: "no" # Critical: don't restart migration service +# depends_on: +# mysql: # Replace with your actual mysql service name +# condition: service_healthy +# environment: +# DB_ENDPOINT: "mysql" +# DB_NAME: "wallet_service" +# DB_USER: "wallet_service_user" +# DB_PASS: "password" +# DB_PORT: 3306 +# networks: +# - hathor-privnet + +# This Dockerfile is used to build and run the database migration container. +FROM node:22-alpine + +WORKDIR /app + +# Copy only the necessary files for the migration +COPY ./db ./db +COPY ./db/migrations ./migrations + +# This will install only the exact versions of sequelize, sequelize-cli and mysql2 +# that are already in use in the project, avoiding any unwanted upgrades. +# It will also install the dotenv package, but it's not as critical and we can use the latest version. +# +# Note that this migrator container does not need to have all the dependencies of the main project, +# as it will only be used to run the migration scripts. For this, a new package.json is created +# with only the necessary dependencies, reducing image size. + +ARG SEQUELIZE_VERSION +ARG SEQUELIZE_CLI_VERSION +ARG MYSQL2_VERSION +RUN test -n "$SEQUELIZE_VERSION" \ + && test -n "$SEQUELIZE_CLI_VERSION" \ + || (echo "Both SEQUELIZE_VERSION and SEQUELIZE_CLI_VERSION must be set" && exit 1) +# Avoids potential conflicts with pre-installed v1.x versions of yarn +RUN npm uninstall -g yarn +RUN corepack enable +RUN echo '{"name": "migrator", "private": true}' > package.json +RUN yarn add sequelize@"$SEQUELIZE_VERSION" sequelize-cli@"$SEQUELIZE_CLI_VERSION" mysql2@"$MYSQL2_VERSION" dotenv + +# Run the migration scripts +RUN cp /app/db/migration-entrypoint.sh /app; +ENTRYPOINT ["/bin/sh", "/app/migration-entrypoint.sh"] diff --git a/db/config.js b/db/config.js index b3ed932c..a804ab39 100644 --- a/db/config.js +++ b/db/config.js @@ -5,7 +5,7 @@ module.exports = { username: process.env.DB_USER, password: process.env.DB_PASS, database: process.env.DB_NAME, - host: '127.0.0.1', + host: process.env.DB_ENDPOINT || '127.0.0.1', port: process.env.DB_PORT || 3306, dialect: 'mysql', dialectOptions: { diff --git a/db/migration-entrypoint.sh b/db/migration-entrypoint.sh new file mode 100755 index 00000000..0fcc25ed --- /dev/null +++ b/db/migration-entrypoint.sh @@ -0,0 +1,10 @@ +#!/bin/sh +set -e + +# Run the migration script. +# Note that this is supposed to run from the root of the repository, inside a container +corepack enable +yarn sequelize db:migrate --config db/config.js + +# Run the command passed to the entrypoint (if any). +exec "$@" diff --git a/.dockerignore b/packages/daemon/.dockerignore similarity index 100% rename from .dockerignore rename to packages/daemon/.dockerignore diff --git a/packages/daemon/Dockerfile b/packages/daemon/Dockerfile new file mode 100644 index 00000000..0fc152dc --- /dev/null +++ b/packages/daemon/Dockerfile @@ -0,0 +1,83 @@ +# Copyright 2024 Hathor Labs +# This software is provided ‘as-is’, without any express or implied +# warranty. In no event will the authors be held liable for any damages +# arising from the use of this software. +# This software cannot be redistributed unless explicitly agreed in writing with the authors. + +# ========================================================================= +# This Dockerfile is used to build and run the Wallet Service Daemon container. +# It requires: +# - A MySQL instance, properly migrated ( see /db/Dockerfile ) +# - A Fullnode instance +# - A Redis instance +# +# The expected image size is about 500MB as of v1.9.0 +# +# See the HathorNetwork / Wallet Lib repository for a live example on how to use this Dockerfile, but in short: +# ws-daemon: +# image: hathornetwork/hathor-wallet-service-sync-daemon +# depends_on: +# ws-migrator: +# condition: service_completed_successfully +# fullnode: +# condition: service_healthy +# mysql: +# condition: service_healthy +# environment: +# ... +# ports: +# - "8081:8081" +# - "8082:8082" +# networks: +# - hathor-privnet + +# Build phase +FROM node:22-alpine AS builder + +WORKDIR /app + +RUN apk update && apk add python3 g++ make py3-setuptools + +COPY . . + +# corepack will use the version of yarn specified in package.json +RUN corepack enable + +# This will install dependencies for all packages, except for the lambdas since +# they are ignored in .dockerignore +RUN yarn install + +RUN yarn workspace sync-daemon run build + +# This will remove all dev dependencies and install production deps only +RUN yarn workspaces focus -A --production + +# Run phase +FROM node:22-alpine AS dev + +WORKDIR /app + +# Copy only the necessary files from the build phase +COPY --from=builder /app . + +WORKDIR /app/packages/daemon/ + +# The script should already be available from the builder stage copy +RUN cp /app/scripts/fetch-fullnode-ids.js ./fetch-fullnode-ids.js +RUN cp /app/scripts/merge-complementary-envs.sh ./merge-complementary-envs.sh +RUN chmod +x ./merge-complementary-envs.sh + +# The daemon could need complementary environment variables dynamically. +# The entrypoint script manages this before actually running the daemon. +ENTRYPOINT ["./merge-complementary-envs.sh"] + +FROM node:22-alpine AS prod + +WORKDIR /app + +# Copy only the necessary files from the build phase +COPY --from=builder /app . + +WORKDIR /app/packages/daemon/ + +CMD ["node", "dist/index.js"] diff --git a/packages/wallet-service/.dockerignore b/packages/wallet-service/.dockerignore new file mode 100644 index 00000000..1569e075 --- /dev/null +++ b/packages/wallet-service/.dockerignore @@ -0,0 +1,11 @@ +dist/ +__tests__/ +.git/ +../../.github/ +.direnv/ +flake.* +node_modules/ +packages/daemon +packages/wallet-service/dist/ +packages/wallet-service/node_modules/ +packages/common/node_modules/ diff --git a/packages/wallet-service/.nvmrc b/packages/wallet-service/.nvmrc new file mode 100644 index 00000000..2bd5a0a9 --- /dev/null +++ b/packages/wallet-service/.nvmrc @@ -0,0 +1 @@ +22 diff --git a/packages/wallet-service/Dockerfile.dev b/packages/wallet-service/Dockerfile.dev new file mode 100644 index 00000000..1df9ab3e --- /dev/null +++ b/packages/wallet-service/Dockerfile.dev @@ -0,0 +1,72 @@ +# Copyright 2025 Hathor Labs +# This software is provided 'as-is', without any express or implied +# warranty. In no event will the authors be held liable for any damages +# arising from the use of this software. +# This software cannot be redistributed unless explicitly agreed in writing with the authors. + +# ========================================================================= +# This Dockerfile is used to build and run the Wallet Service container. +# It requires: +# - A MySQL instance, properly migrated ( see /db/Dockerfile ) +# - A Fullnode instance +# - A started Wallet Service Daemon instance ( see /packages/daemon/Dockerfile ) +# +# The expected image size is about 1800MB as of v1.9.0. This is because `serverless` is a development +# dependency and needs to be installed in the final image, reducing the optimization options for +# reducing this size. +# +# To properly connect to a dockerized private network, in the environment variables, you should set `MOCK_AWS=true` +# to avoid trying to connect to external AWS services, except if the container is being run connected to a publicly +# available network. +# +# See the HathorNetwork / Wallet Lib repository for a live example on how to use this Dockerfile, but in short: +# ws-serverless: +# image: hathornetwork/hathor-wallet-service-service +# depends_on: +# fullnode: +# condition: service_healthy +# mysql: +# condition: service_healthy +# ws-daemon: +# condition: service_started +# environment: +# IS_OFFLINE: true +# ENV MOCK_AWS=true # Necessary to avoid trying to connect to external AWS services +# ... +# ports: +# - "3000:3000" +# - "3001:3001" +# networks: +# - hathor-privnet + +# Build stage +FROM node:22-alpine + +# Install system dependencies needed for native modules +RUN apk add --no-cache \ + python3 \ + g++ \ + make \ + py3-setuptools \ + git + +WORKDIR /app + +# Copy root package files +COPY . . + +# Enable corepack for yarn +RUN corepack enable +RUN yarn install + +WORKDIR /app/packages/wallet-service + +# Expose serverless-offline default port +EXPOSE 3000 +# Expose websocket port +EXPOSE 3001 + +RUN chmod +x ./entrypoint.sh + +# Run serverless offline +ENTRYPOINT ["./entrypoint.sh"] diff --git a/packages/wallet-service/README.md b/packages/wallet-service/README.md index ba29aa41..84e61ba3 100644 --- a/packages/wallet-service/README.md +++ b/packages/wallet-service/README.md @@ -31,7 +31,7 @@ database to get the information. The plugin `serverless-offline` is used to emulate AWS Lambda and API Gateway on a local machine. ### Requirements -1. NodeJS v16 +1. NodeJS v22 ### Local database To setup a local database, you will need: diff --git a/packages/wallet-service/entrypoint.sh b/packages/wallet-service/entrypoint.sh new file mode 100755 index 00000000..3bfa0e06 --- /dev/null +++ b/packages/wallet-service/entrypoint.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e + +# When MOCK_AWS is set to true, copy the mocked AWS credentials fixtures to .aws in the working directory +if [ "$MOCK_AWS" = "true" ]; then + cp -r tests/fixtures/aws ./.aws +fi + +yarn serverless offline start --host 0.0.0.0 --httpPort 3000 diff --git a/packages/wallet-service/package.json b/packages/wallet-service/package.json index bafb4a13..eaca1b62 100644 --- a/packages/wallet-service/package.json +++ b/packages/wallet-service/package.json @@ -6,7 +6,11 @@ "lint": "eslint src/ tests/ --ext .js,.jsx,.ts,.tsx src tests", "lint-fix": "eslint src/ tests/ --fix --ext .js,.jsx,.ts,.tsx src tests", "check-types": "tsc --noemit --skipLibCheck", - "test": "jest" + "test": "jest", + "debug:offline": "node --inspect-brk ./node_modules/.bin/serverless offline start --host 0.0.0.0 --httpPort 3000" + }, + "engines": { + "node": "22" }, "author": "Hathor Labs", "license": "MIT", @@ -64,7 +68,7 @@ "serverless-api-gateway-throttling": "2.0.3", "serverless-better-credentials": "2.0.0", "serverless-iam-roles-per-function": "3.2.0", - "serverless-offline": "13.1.2", + "serverless-offline": "14.4.0", "serverless-plugin-aws-alerts": "1.7.5", "serverless-plugin-monorepo": "0.11.0", "serverless-plugin-warmup": "8.2.1", diff --git a/packages/wallet-service/src/api/wallet.ts b/packages/wallet-service/src/api/wallet.ts index 73fdeb88..bbcd3e7c 100644 --- a/packages/wallet-service/src/api/wallet.ts +++ b/packages/wallet-service/src/api/wallet.ts @@ -6,9 +6,10 @@ */ import { APIGatewayProxyHandler, Handler, SNSEvent } from 'aws-lambda'; -import { LambdaClient, InvokeCommand, InvokeCommandOutput } from '@aws-sdk/client-lambda'; +import { InvokeCommand, InvokeCommandOutput } from '@aws-sdk/client-lambda'; import 'source-map-support/register'; +import { createLambdaClient } from '@src/utils/aws.utils'; import { ApiError } from '@src/api/errors'; import { addNewAddresses, @@ -94,7 +95,7 @@ const loadBodySchema = Joi.object({ */ /* istanbul ignore next */ export const invokeLoadWalletAsync = async (xpubkey: string, maxGap: number): Promise => { - const client = new LambdaClient({ + const client = createLambdaClient({ endpoint: config.stage === 'dev' ? 'http://localhost:3002' : `https://lambda.${config.awsRegion}.amazonaws.com`, @@ -124,7 +125,7 @@ export const invokeLoadWalletAsync = async (xpubkey: string, maxGap: number): Pr * @param xpubkeyStr - A string with the wallet's xpubkey * @param xpubkeySignature - A string with the signature that proves the user owns the xpub * @param authXpubkeyStr - A string with the auth xpubkey - * @param authXpubkeySignature- A string with the signature that proves the user owns the xpub + * @param authXpubkeySignature - A string with the signature that proves the user owns the xpub */ export const validateSignatures = ( walletId: string, diff --git a/packages/wallet-service/src/config.ts b/packages/wallet-service/src/config.ts index 78589f31..2e6bde3a 100644 --- a/packages/wallet-service/src/config.ts +++ b/packages/wallet-service/src/config.ts @@ -31,6 +31,7 @@ export function loadEnvConfig(): EnvironmentConfig { pushNotificationEnabled: process.env.PUSH_NOTIFICATION_ENABLED === 'true', pushAllowedProviders: process.env.PUSH_ALLOWED_PROVIDERS, isOffline: process.env.IS_OFFLINE === 'true', + shouldMockAWS: process.env.MOCK_AWS === 'true', txHistoryMaxCount: Number.parseInt(process.env.TX_HISTORY_MAX_COUNT || '50', 10), healthCheckMaximumHeightDifference: Number.parseInt(process.env.HEALTHCHECK_MAXIMUM_HEIGHT_DIFFERENCE ?? '5', 10), diff --git a/packages/wallet-service/src/redis.ts b/packages/wallet-service/src/redis.ts index 20456b83..2d263ccc 100644 --- a/packages/wallet-service/src/redis.ts +++ b/packages/wallet-service/src/redis.ts @@ -9,8 +9,12 @@ import config from '@src/config'; const redisConfig: RedisConfig = { url: config.redisUrl, - password: config.redisPassword, }; +// Only set password if it is not empty. +// Dockerized environments use passwordless redis instances by default. +if (config.redisPassword) { + redisConfig.password = config.redisPassword; +} export const svcPrefix = 'walletsvc'; diff --git a/packages/wallet-service/src/schemas.ts b/packages/wallet-service/src/schemas.ts index 54fb0333..949d795f 100644 --- a/packages/wallet-service/src/schemas.ts +++ b/packages/wallet-service/src/schemas.ts @@ -52,6 +52,7 @@ export const EnvironmentConfigSchema = Joi.object({ pushNotificationEnabled: Joi.boolean().required(), pushAllowedProviders: Joi.string().required(), isOffline: Joi.boolean().required(), + shouldMockAWS: Joi.boolean().required(), txHistoryMaxCount: Joi.number().required(), healthCheckMaximumHeightDifference: Joi.number().required(), awsRegion: Joi.string().required(), diff --git a/packages/wallet-service/src/types.ts b/packages/wallet-service/src/types.ts index 5f9a4632..64ce266e 100644 --- a/packages/wallet-service/src/types.ts +++ b/packages/wallet-service/src/types.ts @@ -63,6 +63,7 @@ export interface EnvironmentConfig { pushNotificationEnabled: boolean; pushAllowedProviders: string; isOffline: boolean; + shouldMockAWS: boolean; txHistoryMaxCount: number; healthCheckMaximumHeightDifference: number; awsRegion: string; diff --git a/packages/wallet-service/src/utils/aws.utils.ts b/packages/wallet-service/src/utils/aws.utils.ts new file mode 100644 index 00000000..6bb33bb0 --- /dev/null +++ b/packages/wallet-service/src/utils/aws.utils.ts @@ -0,0 +1,121 @@ +/** + * Copyright (c) Hathor Labs and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * AWS Utils and mocker for Local Development + * + * This module provides mock implementations of AWS services when running offline AND in a private network without + * EC2 instances available, for example when running inside a Dockerized private network. + * + * When requested, it prevents the AWS SDK from attempting to connect to EC2 metadata service. + * + * This behavior could be further improved by adding conditional logic to the requests themselves, but this will be + * considered and planned in the future if needed. + */ + +import { InvokeCommand, LambdaClient } from '@aws-sdk/client-lambda'; +import { ApiGatewayManagementApiClient, PostToConnectionCommand } from '@aws-sdk/client-apigatewaymanagementapi'; +import createDefaultLogger from '@src/logger' +import wsConfig from '@src/config'; + +/** + * Mock credentials for offline development + */ +const mockCredentials = { + accessKeyId: 'mock-access-key', + secretAccessKey: 'mock-secret-key', + sessionToken: 'mock-session-token', +}; + +/** + * Create a LambdaClient with proper configuration for offline/online mode + */ +export function createLambdaClient(config: { endpoint?: string; region?: string } = {}) { + const clientConfig: any = { + region: config.region || process.env.AWS_REGION || 'us-east-1', + }; + + // If not mocking, return a real LambdaClient + if (!wsConfig.shouldMockAWS) { + if (config.endpoint) { + clientConfig.endpoint = config.endpoint; + } + return new LambdaClient(clientConfig); + } + + const logger = createDefaultLogger(); + logger.log({level: 'debug', message: '[AWS Mock] Creating mocked LambdaClient for offline development'}); + clientConfig.credentials = mockCredentials; + clientConfig.endpoint = config.endpoint || 'http://localhost:3002'; + + // Create a mock client that doesn't actually call AWS + const mockClient = { + send: async (command: InvokeCommand) => { + logger.log({ + level: 'debug', message: '[AWS Mock] Intercepted Lambda invoke:', invocationData: { + functionName: command.input.FunctionName, + invocationType: command.input.InvocationType, + payload: command.input.Payload ? JSON.parse(command.input.Payload as string) : null, + } + }); + + // Return a successful response for Event invocations + if (command.input.InvocationType === 'Event') { + return {StatusCode: 202}; + } + + // Return a mock response for synchronous invocations + return { + StatusCode: 200, + Payload: JSON.stringify({success: true}), + }; + }, + }; + + return mockClient as any; +} + +/** + * Create an ApiGatewayManagementApiClient with proper configuration for offline/online mode + */ +export function createApiGatewayManagementApiClient(config: { endpoint?: string; region?: string } = {}) { + const clientConfig: any = { + region: config.region || process.env.AWS_REGION || 'us-east-1', + }; + + // If not mocking, return a real ApiGatewayManagementApiClient + if (!wsConfig.shouldMockAWS) { + if (config.endpoint) { + clientConfig.endpoint = config.endpoint; + } + return new ApiGatewayManagementApiClient(clientConfig); + } + + const logger = createDefaultLogger(); + logger.log({ + level: 'debug', + message: '[AWS Mock] Creating mocked ApiGatewayManagementApiClient for offline development' + }); + clientConfig.credentials = mockCredentials; + + const mockClient = { + send: async (command: PostToConnectionCommand) => { + logger.log({ + level: 'debug', + message: '[AWS Mock] Intercepted API Gateway post to connection:', + postData: { + connectionId: command.input.ConnectionId, + data: command.input.Data, + } + }); + + return {StatusCode: 200}; + }, + }; + + return mockClient as any; +} diff --git a/packages/wallet-service/src/ws/utils.ts b/packages/wallet-service/src/ws/utils.ts index 13cb601e..02d4571d 100644 --- a/packages/wallet-service/src/ws/utils.ts +++ b/packages/wallet-service/src/ws/utils.ts @@ -14,6 +14,7 @@ import createDefaultLogger from '@src/logger'; import config from '@src/config'; import util from 'util'; +import { createApiGatewayManagementApiClient } from '@src/utils/aws.utils'; import { Severity } from '@wallet-service/common/src/types'; import { WsConnectionInfo } from '@src/types'; import { endWsConnection } from '@src/redis'; @@ -61,7 +62,7 @@ export const sendMessageToClient = async ( connInfo: WsConnectionInfo, payload: any, // eslint-disable-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any ): Promise => { // eslint-disable-line @typescript-eslint/no-explicit-any - const apiGwClient = new ApiGatewayManagementApiClient({ + const apiGwClient = createApiGatewayManagementApiClient({ endpoint: connInfo.url, }); @@ -108,7 +109,7 @@ export const disconnectClient = async ( client: RedisClient, connInfo: WsConnectionInfo, ): Promise => { // eslint-disable-line @typescript-eslint/no-explicit-any - const apiGwClient = new ApiGatewayManagementApiClient({ + const apiGwClient = createApiGatewayManagementApiClient({ endpoint: connInfo.url, }); diff --git a/packages/wallet-service/tests/fixtures/aws/config b/packages/wallet-service/tests/fixtures/aws/config new file mode 100644 index 00000000..e69de29b diff --git a/packages/wallet-service/tests/fixtures/aws/credentials b/packages/wallet-service/tests/fixtures/aws/credentials new file mode 100644 index 00000000..79b6da0c --- /dev/null +++ b/packages/wallet-service/tests/fixtures/aws/credentials @@ -0,0 +1,8 @@ +# AWS Credentials for Local Development +# This file provides mock AWS credentials to prevent the serverless framework +# from attempting to fetch credentials from EC2 metadata service + +[default] +aws_access_key_id = fake-access-key-id +aws_secret_access_key = fake-secret-access-key +region = us-east-1 diff --git a/packages/wallet-service/tests/utils/aws.utils.test.ts b/packages/wallet-service/tests/utils/aws.utils.test.ts new file mode 100644 index 00000000..06b3c773 --- /dev/null +++ b/packages/wallet-service/tests/utils/aws.utils.test.ts @@ -0,0 +1,78 @@ +/** + * @fileoverview Tests for aws-utils.ts + */ +import { createLambdaClient, createApiGatewayManagementApiClient } from '@src/utils/aws.utils'; +import { InvokeCommand } from '@aws-sdk/client-lambda'; +import { PostToConnectionCommand } from '@aws-sdk/client-apigatewaymanagementapi'; +import config, { loadEnvConfig } from '@src/config'; + +describe('aws-utils', () => { + const OLD_ENV = process.env; + beforeEach(() => { + jest.resetModules(); + process.env = { + ...OLD_ENV, + AWS_ACCESS_KEY_ID: 'test-access-key', + AWS_SECRET_ACCESS_KEY: 'test-secret-key', + AWS_REGION: 'us-east-1', + }; + loadEnvConfig(); + }); + afterEach(() => { + process.env = OLD_ENV; + }); + + describe('createLambdaClient', () => { + it('should return a mock LambdaClient when MOCK_AWS is true', async () => { + config.shouldMockAWS = true; + const client = createLambdaClient(); + const command = new InvokeCommand({ + FunctionName: 'test-fn', + InvocationType: 'Event', + Payload: JSON.stringify({ foo: 'bar' }), + }); + const result = await client.send(command); + expect(result.StatusCode).toBe(202); + }); + + it('should return a mock LambdaClient with sync invocation', async () => { + config.shouldMockAWS = true; + const client = createLambdaClient(); + const command = new InvokeCommand({ + FunctionName: 'test-fn', + InvocationType: 'RequestResponse', + Payload: JSON.stringify({ foo: 'bar' }), + }); + const result = await client.send(command); + expect(result.StatusCode).toBe(200); + expect(JSON.parse(result.Payload)).toEqual({ success: true }); + }); + + it('should return a real LambdaClient when MOCK_AWS is not true', () => { + config.shouldMockAWS = false; + const client = createLambdaClient(); + expect(client).toBeInstanceOf(Object); // Not a mock + expect(typeof client.send).toBe('function'); + }); + }); + + describe('createApiGatewayManagementApiClient', () => { + it('should return a mock ApiGatewayManagementApiClient when MOCK_AWS is true', async () => { + config.shouldMockAWS = true; + const client = createApiGatewayManagementApiClient(); + const command = new PostToConnectionCommand({ + ConnectionId: 'abc123', + Data: Buffer.from('hello'), + }); + const result = await client.send(command); + expect(result.StatusCode).toBe(200); + }); + + it('should return a real ApiGatewayManagementApiClient when MOCK_AWS is not true', () => { + config.shouldMockAWS = false; + const client = createApiGatewayManagementApiClient(); + expect(client).toBeInstanceOf(Object); // Not a mock + expect(typeof client.send).toBe('function'); + }); + }); +}); diff --git a/scripts/build-daemon.sh b/scripts/build-daemon.sh index 1d8a29e9..8d185c02 100644 --- a/scripts/build-daemon.sh +++ b/scripts/build-daemon.sh @@ -1,11 +1,24 @@ set -e set -o pipefail +# ACCOUNT_ID is a mandatory env var because the script was built to be used in AWS environments, +# however it's no longer mandatory to publish it there. So we're keeping this variable temporarily and +# implementing a specific behavior in case it's set to "NONE". + if [ -z "$ACCOUNT_ID" ]; then echo "Please export a ACCOUNT_ID env var before running this"; + echo "Set it to NONE if you don't want to publish to AWS ECR"; exit 1; fi +# DYNAMIC_FULLNODE_IDS is an optional env var that, if set to "true", will make the daemon fetch the fullnode +# identifiers dynamically from the fullnode before starting the daemon. This is needed inside containerized private +# networks where the fullnode IDs are not known in advance. +SHOULD_FETCH_IDS=false +if [ "$DYNAMIC_FULLNODE_IDS" = "true" ]; then + SHOULD_FETCH_IDS=true +fi + # Fetch the image tag from the temp file, this should be filled if the stage # is not `dev` DOCKER_IMAGE_TAG=$(cat /tmp/docker_image_tag 2>/dev/null || echo "") @@ -22,6 +35,34 @@ echo $DOCKER_IMAGE_TAG; # it echo $DOCKER_IMAGE_TAG > /tmp/docker_image_tag; -aws ecr get-login-password --region eu-central-1 | docker login --username AWS --password-stdin $ACCOUNT_ID.dkr.ecr.eu-central-1.amazonaws.com; +# Handling th Account ID +if [ "$ACCOUNT_ID" = "NONE" ]; then + echo "== Skipping AWS ECR login since ACCOUNT_ID is set to NONE"; + FINAL_TAG="hathornetwork/hathor-wallet-service-sync-daemon:dev"; + SHOULD_FETCH_IDS=true # Always fetch IDs when not using AWS ECR +else + aws ecr get-login-password --region eu-central-1 | docker login --username AWS --password-stdin $ACCOUNT_ID.dkr.ecr.eu-central-1.amazonaws.com; + FINAL_TAG="$ACCOUNT_ID.dkr.ecr.eu-central-1.amazonaws.com/hathor-wallet-service-sync-daemon:$DOCKER_IMAGE_TAG" +fi; + +# Handling the dynamic fullnode IDs to decide the correct build target +if [ "$SHOULD_FETCH_IDS" = true ]; then + echo "== Building the daemon to fetch fullnode IDs dynamically"; + BUILD_TARGET="dev"; +else + echo "== Building the daemon with statically defined fullnode IDs"; + BUILD_TARGET="prod"; +fi; + +# Copying the correct .dockerignore file +cp packages/daemon/.dockerignore .dockerignore; + +# Fetching the daemon Dockerfile to build +docker build \ + -t $FINAL_TAG\ + -f packages/daemon/Dockerfile\ + --target $BUILD_TARGET \ + .; -docker build -t $ACCOUNT_ID.dkr.ecr.eu-central-1.amazonaws.com/hathor-wallet-service-sync-daemon:$DOCKER_IMAGE_TAG .; +# Removing the copied .dockerignore file to avoid confusion with other builds in this monorepo +rm .dockerignore diff --git a/scripts/build-migrator.sh b/scripts/build-migrator.sh new file mode 100755 index 00000000..05c7ea5c --- /dev/null +++ b/scripts/build-migrator.sh @@ -0,0 +1,25 @@ +set -e +set -o pipefail + +# The image will be tagged as latest by default +FINAL_TAG="hathornetwork/hathor-wallet-service-migrator:dev"; + +# Fetching the versions of the critical dependencies from package.json +# to ensure consistency +SEQUELIZE_VERSION=$(cat ./package.json | jq -r '.devDependencies["sequelize"]'); +echo "Using Sequelize version: $SEQUELIZE_VERSION"; + +SEQUELIZE_CLI_VERSION=$(cat ./package.json | jq -r '.devDependencies["sequelize-cli"]'); +echo "Using Sequelize-Cli version: $SEQUELIZE_CLI_VERSION"; + +MYSQL2_VERSION=$(cat ./package.json | jq -r '.devDependencies["mysql2"]'); +echo "Using MySql2 version: $MYSQL2_VERSION"; + +# Build the Docker image, passing the versions as build arguments +docker build \ + --build-arg SEQUELIZE_VERSION=$SEQUELIZE_VERSION \ + --build-arg SEQUELIZE_CLI_VERSION=$SEQUELIZE_CLI_VERSION \ + --build-arg MYSQL2_VERSION=$MYSQL2_VERSION \ + -t $FINAL_TAG \ + -f db/Dockerfile.dev \ + .; diff --git a/scripts/build-service.sh b/scripts/build-service.sh new file mode 100644 index 00000000..d280da6e --- /dev/null +++ b/scripts/build-service.sh @@ -0,0 +1,17 @@ +set -e +set -o pipefail + + +FINAL_TAG="hathornetwork/hathor-wallet-service-lambdas:dev"; + +# Copying the correct .dockerignore file +cp packages/wallet-service/.dockerignore .dockerignore; + +# Fetching the daemon Dockerfile to build +docker build \ + -t $FINAL_TAG\ + -f packages/wallet-service/Dockerfile.dev\ + .; + +# Removing the copied .dockerignore file to avoid confusion with other builds in this monorepo +rm .dockerignore diff --git a/scripts/fetch-fullnode-ids.js b/scripts/fetch-fullnode-ids.js new file mode 100644 index 00000000..3a9f5c41 --- /dev/null +++ b/scripts/fetch-fullnode-ids.js @@ -0,0 +1,125 @@ +// Copyright 2025 Hathor Labs +// This software is provided ‘as-is’, without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// This software cannot be redistributed unless explicitly agreed in writing with the authors. + +const WebSocket = require('ws'); +const fs = require('fs'); + +/** + * Please note that by default this URL assumes a Docker setup where the fullnode service + * is accessible via the hostname 'fullnode' on port 8080. + * It is possible to adjust this using the FULLNODE_WEBSOCKET_BASEURL environment variable. + * @type {string} + */ +const fullnodeBaseUrl = process.env.FULLNODE_WEBSOCKET_BASEURL || 'fullnode:8080'; + +/** + * Output file name. + * By default, it is 'export-identifiers.sh' in the current directory. + * This can be changed using the FULLNODE_IDENTIFIER_ENVS_FILE environment variable. + * @type {string} + */ +const outputFileName = process.env.FULLNODE_IDENTIFIER_ENVS_FILE || 'export-identifiers.sh'; + +/** + * Fetches identifiers from the fullnode WebSocket endpoint and writes them to an .env file. + * + * This is especially useful when first running a containerized Wallet Service Daemon + * ( see /packages/daemon/Dockerfile ). + */ +async function fetchFullnodeIds() { + const wsUrl = `ws://${fullnodeBaseUrl}/v1a/event_ws`; + const payload = { type: 'START_STREAM', window_size: 1 }; + + console.log('Connecting to fullnode WebSocket...'); + + return new Promise((resolve, reject) => { + const ws = new WebSocket(wsUrl); + + // Set a timeout for the connection + const timeout = setTimeout(() => { + ws.close(); + reject(new Error('WebSocket connection timeout')); + }, 3000); + + ws.on('open', () => { + console.log('WebSocket connected, sending payload...'); + ws.send(JSON.stringify(payload)); + }); + + ws.on('message', (data) => { + clearTimeout(timeout); + console.log('Received response from fullnode'); + + try { + const response = JSON.parse(data.toString()); + console.log('Parsed response:', JSON.stringify(response, null, 2)); + + // Extract the required fields + const streamId = response.stream_id; + const fullnodePeerId = response.peer_id; + + if (!streamId || !fullnodePeerId) { + throw new Error(`Missing required fields in response. stream_id: ${streamId}, peer_id: ${fullnodePeerId}`); + } + + // Create .env file content + const envContent = `export STREAM_ID=${streamId}\nexport FULLNODE_PEER_ID=${fullnodePeerId}\n`; + + // Write to output file + fs.writeFileSync(outputFileName, envContent); + console.warn(`Written identifiers to ${outputFileName}: ${envContent}`); + + ws.close(); + resolve({ streamId, fullnodePeerId }); + + } catch (error) { + ws.close(); + reject(new Error(`Failed to parse response: ${error.message}`)); + } + }); + + ws.on('error', (error) => { + clearTimeout(timeout); + console.error('WebSocket error:', error.message); + reject(new Error(`WebSocket connection failed: ${error.message}`)); + }); + + ws.on('close', (code, reason) => { + clearTimeout(timeout); + if (code !== 1000) { + console.error(`WebSocket closed with code ${code}, reason: ${reason}`); + reject(new Error(`WebSocket closed unexpectedly: ${code} ${reason}`)); + } + }); + }); +} + +/* + * In this script, all console output is directed to stderr except for the final + * .env content which is printed to stdout. This allows the script to be used + * in shell scripts that capture the output directly into environment variables. + */ + +// Main execution +if (require.main === module) { + fetchFullnodeIds() + .then(({ streamId, fullnodePeerId }) => { + console.log(`Successfully fetched identifiers. Exiting.`); + process.exit(0); + }) + .catch((error) => { + console.error('Failed to fetch identifiers with error:', error.message); + + // Create empty .env file as fallback + const fallbackContent = 'STREAM_ID=\nFULLNODE_PEER_ID=\n'; + fs.writeFileSync(outputFileName, fallbackContent); + + console.log(`Created ${outputFileName} with empty values due to error. Exiting.`); + process.exit(1); + }); +} + +module.exports = { fetchFullnodeIds }; diff --git a/scripts/merge-complementary-envs.sh b/scripts/merge-complementary-envs.sh new file mode 100755 index 00000000..6be38c89 --- /dev/null +++ b/scripts/merge-complementary-envs.sh @@ -0,0 +1,48 @@ +#!/bin/sh + +# Copyright 2025 Hathor Labs +# This software is provided ‘as-is’, without any express or implied +# warranty. In no event will the authors be held liable for any damages +# arising from the use of this software. +# This software cannot be redistributed unless explicitly agreed in writing with the authors. + +# ========================================================================= +# This script is meant to be run inside the Wallet Service Daemon container: if the environment variable +# FETCH_FULLNODE_IDS is set, it will fetch the dynamically created fullnode ids and add them to the current +# environment variables. This way, the Wallet Service can connect to the fullnode. +# +# Outside of this containerized scope, it's not advisable to dynamically obtain the fullnode ids, as it +# serves as an additional security layer. The recommended approach is to set the fullnode ids as +# environment variables directly, ensuring that only the trusted fullnode is used. + +set -e + +# Skip the dynamic fetching if the specific environment variable is not set +if [ -z "$FETCH_FULLNODE_IDS" ]; then + echo "FETCH_FULLNODE_IDS not set, skipping merge of complementary environment variables" + # No fetching needed, run the main script for the Wallet Service Daemon + node dist/index.js + exit 0 +fi + +echo "FETCH_FULLNODE_IDS is set, merging complementary environment variables..." +node fetch-fullnode-ids.js + +# Check if the identifiers env file exists +FULLNODE_IDENTIFIER_ENVS_FILE="${FULLNODE_IDENTIFIER_ENVS_FILE:-export-identifiers.sh}" +if [ ! -f "$FULLNODE_IDENTIFIER_ENVS_FILE" ]; then + echo "Warning: $FULLNODE_IDENTIFIER_ENVS_FILE file not found, skipping merge" + # No fetching needed, run the main script for the Wallet Service Daemon + node dist/index.js + exit 0 +fi + +# Export each environment variable from the identifiers env file +echo "Exporting environment variables from $FULLNODE_IDENTIFIER_ENVS_FILE file..." + +source "$FULLNODE_IDENTIFIER_ENVS_FILE" + +echo "Successfully merged and exported complementary environment variables" + +# Finally, run the main script for the Wallet Service Daemon +node dist/index.js diff --git a/scripts/migrate.sh b/scripts/migrate.sh new file mode 100755 index 00000000..757b8c3a --- /dev/null +++ b/scripts/migrate.sh @@ -0,0 +1,5 @@ +set -e +set -o pipefail + +echo "==== Starting migration script" +yarn sequelize db:migrate diff --git a/yarn.lock b/yarn.lock index 67ceeff4..a05d9d25 100644 --- a/yarn.lock +++ b/yarn.lock @@ -522,56 +522,6 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-lambda@npm:^3.421.0": - version: 3.423.0 - resolution: "@aws-sdk/client-lambda@npm:3.423.0" - dependencies: - "@aws-crypto/sha256-browser": "npm:3.0.0" - "@aws-crypto/sha256-js": "npm:3.0.0" - "@aws-sdk/client-sts": "npm:3.423.0" - "@aws-sdk/credential-provider-node": "npm:3.423.0" - "@aws-sdk/middleware-host-header": "npm:3.418.0" - "@aws-sdk/middleware-logger": "npm:3.418.0" - "@aws-sdk/middleware-recursion-detection": "npm:3.418.0" - "@aws-sdk/middleware-signing": "npm:3.418.0" - "@aws-sdk/middleware-user-agent": "npm:3.418.0" - "@aws-sdk/region-config-resolver": "npm:3.418.0" - "@aws-sdk/types": "npm:3.418.0" - "@aws-sdk/util-endpoints": "npm:3.418.0" - "@aws-sdk/util-user-agent-browser": "npm:3.418.0" - "@aws-sdk/util-user-agent-node": "npm:3.418.0" - "@smithy/config-resolver": "npm:^2.0.10" - "@smithy/eventstream-serde-browser": "npm:^2.0.9" - "@smithy/eventstream-serde-config-resolver": "npm:^2.0.9" - "@smithy/eventstream-serde-node": "npm:^2.0.9" - "@smithy/fetch-http-handler": "npm:^2.1.5" - "@smithy/hash-node": "npm:^2.0.9" - "@smithy/invalid-dependency": "npm:^2.0.9" - "@smithy/middleware-content-length": "npm:^2.0.11" - "@smithy/middleware-endpoint": "npm:^2.0.9" - "@smithy/middleware-retry": "npm:^2.0.12" - "@smithy/middleware-serde": "npm:^2.0.9" - "@smithy/middleware-stack": "npm:^2.0.2" - "@smithy/node-config-provider": "npm:^2.0.12" - "@smithy/node-http-handler": "npm:^2.1.5" - "@smithy/protocol-http": "npm:^3.0.5" - "@smithy/smithy-client": "npm:^2.1.6" - "@smithy/types": "npm:^2.3.3" - "@smithy/url-parser": "npm:^2.0.9" - "@smithy/util-base64": "npm:^2.0.0" - "@smithy/util-body-length-browser": "npm:^2.0.0" - "@smithy/util-body-length-node": "npm:^2.1.0" - "@smithy/util-defaults-mode-browser": "npm:^2.0.10" - "@smithy/util-defaults-mode-node": "npm:^2.0.12" - "@smithy/util-retry": "npm:^2.0.2" - "@smithy/util-stream": "npm:^2.0.12" - "@smithy/util-utf8": "npm:^2.0.0" - "@smithy/util-waiter": "npm:^2.0.9" - tslib: "npm:^2.5.0" - checksum: 10/796c3c36bacbaec44b9d66cb3b20cc73e391fa9b80775705679b8c24ea241c3dd1ddaf6a54dbddf2aa31d2b2a93b805693de26a40a52931dff6a03aaad33d3ab - languageName: node - linkType: hard - "@aws-sdk/client-lambda@npm:^3.588.0": version: 3.835.0 resolution: "@aws-sdk/client-lambda@npm:3.835.0" @@ -624,6 +574,58 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-lambda@npm:^3.636.0": + version: 3.865.0 + resolution: "@aws-sdk/client-lambda@npm:3.865.0" + dependencies: + "@aws-crypto/sha256-browser": "npm:5.2.0" + "@aws-crypto/sha256-js": "npm:5.2.0" + "@aws-sdk/core": "npm:3.864.0" + "@aws-sdk/credential-provider-node": "npm:3.864.0" + "@aws-sdk/middleware-host-header": "npm:3.862.0" + "@aws-sdk/middleware-logger": "npm:3.862.0" + "@aws-sdk/middleware-recursion-detection": "npm:3.862.0" + "@aws-sdk/middleware-user-agent": "npm:3.864.0" + "@aws-sdk/region-config-resolver": "npm:3.862.0" + "@aws-sdk/types": "npm:3.862.0" + "@aws-sdk/util-endpoints": "npm:3.862.0" + "@aws-sdk/util-user-agent-browser": "npm:3.862.0" + "@aws-sdk/util-user-agent-node": "npm:3.864.0" + "@smithy/config-resolver": "npm:^4.1.5" + "@smithy/core": "npm:^3.8.0" + "@smithy/eventstream-serde-browser": "npm:^4.0.5" + "@smithy/eventstream-serde-config-resolver": "npm:^4.1.3" + "@smithy/eventstream-serde-node": "npm:^4.0.5" + "@smithy/fetch-http-handler": "npm:^5.1.1" + "@smithy/hash-node": "npm:^4.0.5" + "@smithy/invalid-dependency": "npm:^4.0.5" + "@smithy/middleware-content-length": "npm:^4.0.5" + "@smithy/middleware-endpoint": "npm:^4.1.18" + "@smithy/middleware-retry": "npm:^4.1.19" + "@smithy/middleware-serde": "npm:^4.0.9" + "@smithy/middleware-stack": "npm:^4.0.5" + "@smithy/node-config-provider": "npm:^4.1.4" + "@smithy/node-http-handler": "npm:^4.1.1" + "@smithy/protocol-http": "npm:^5.1.3" + "@smithy/smithy-client": "npm:^4.4.10" + "@smithy/types": "npm:^4.3.2" + "@smithy/url-parser": "npm:^4.0.5" + "@smithy/util-base64": "npm:^4.0.0" + "@smithy/util-body-length-browser": "npm:^4.0.0" + "@smithy/util-body-length-node": "npm:^4.0.0" + "@smithy/util-defaults-mode-browser": "npm:^4.0.26" + "@smithy/util-defaults-mode-node": "npm:^4.0.26" + "@smithy/util-endpoints": "npm:^3.0.7" + "@smithy/util-middleware": "npm:^4.0.5" + "@smithy/util-retry": "npm:^4.0.7" + "@smithy/util-stream": "npm:^4.2.4" + "@smithy/util-utf8": "npm:^4.0.0" + "@smithy/util-waiter": "npm:^4.0.7" + tslib: "npm:^2.6.2" + checksum: 10/0f9e6c04d4ebb5e69358f5e26eee438da504eeb1af0efe3e705c1e94efec93d35e176a8eaa3bba07cbac32f190d189c74e93d71fac87797dfbfaf2b13ab50bde + languageName: node + linkType: hard + "@aws-sdk/client-s3@npm:^3.588.0": version: 3.837.0 resolution: "@aws-sdk/client-s3@npm:3.837.0" @@ -923,6 +925,52 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/client-sso@npm:3.864.0": + version: 3.864.0 + resolution: "@aws-sdk/client-sso@npm:3.864.0" + dependencies: + "@aws-crypto/sha256-browser": "npm:5.2.0" + "@aws-crypto/sha256-js": "npm:5.2.0" + "@aws-sdk/core": "npm:3.864.0" + "@aws-sdk/middleware-host-header": "npm:3.862.0" + "@aws-sdk/middleware-logger": "npm:3.862.0" + "@aws-sdk/middleware-recursion-detection": "npm:3.862.0" + "@aws-sdk/middleware-user-agent": "npm:3.864.0" + "@aws-sdk/region-config-resolver": "npm:3.862.0" + "@aws-sdk/types": "npm:3.862.0" + "@aws-sdk/util-endpoints": "npm:3.862.0" + "@aws-sdk/util-user-agent-browser": "npm:3.862.0" + "@aws-sdk/util-user-agent-node": "npm:3.864.0" + "@smithy/config-resolver": "npm:^4.1.5" + "@smithy/core": "npm:^3.8.0" + "@smithy/fetch-http-handler": "npm:^5.1.1" + "@smithy/hash-node": "npm:^4.0.5" + "@smithy/invalid-dependency": "npm:^4.0.5" + "@smithy/middleware-content-length": "npm:^4.0.5" + "@smithy/middleware-endpoint": "npm:^4.1.18" + "@smithy/middleware-retry": "npm:^4.1.19" + "@smithy/middleware-serde": "npm:^4.0.9" + "@smithy/middleware-stack": "npm:^4.0.5" + "@smithy/node-config-provider": "npm:^4.1.4" + "@smithy/node-http-handler": "npm:^4.1.1" + "@smithy/protocol-http": "npm:^5.1.3" + "@smithy/smithy-client": "npm:^4.4.10" + "@smithy/types": "npm:^4.3.2" + "@smithy/url-parser": "npm:^4.0.5" + "@smithy/util-base64": "npm:^4.0.0" + "@smithy/util-body-length-browser": "npm:^4.0.0" + "@smithy/util-body-length-node": "npm:^4.0.0" + "@smithy/util-defaults-mode-browser": "npm:^4.0.26" + "@smithy/util-defaults-mode-node": "npm:^4.0.26" + "@smithy/util-endpoints": "npm:^3.0.7" + "@smithy/util-middleware": "npm:^4.0.5" + "@smithy/util-retry": "npm:^4.0.7" + "@smithy/util-utf8": "npm:^4.0.0" + tslib: "npm:^2.6.2" + checksum: 10/77bf9ec221976d878b053b5731f6d829757dba4bb9376ba40e068352464c4a3508b9a6622b59da7554084f88ec17d68ae98344d0cd76b30cd2fa1161de578d86 + languageName: node + linkType: hard + "@aws-sdk/client-sts@npm:3.423.0, @aws-sdk/client-sts@npm:^3.410.0": version: 3.423.0 resolution: "@aws-sdk/client-sts@npm:3.423.0" @@ -1055,6 +1103,29 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/core@npm:3.864.0": + version: 3.864.0 + resolution: "@aws-sdk/core@npm:3.864.0" + dependencies: + "@aws-sdk/types": "npm:3.862.0" + "@aws-sdk/xml-builder": "npm:3.862.0" + "@smithy/core": "npm:^3.8.0" + "@smithy/node-config-provider": "npm:^4.1.4" + "@smithy/property-provider": "npm:^4.0.5" + "@smithy/protocol-http": "npm:^5.1.3" + "@smithy/signature-v4": "npm:^5.1.3" + "@smithy/smithy-client": "npm:^4.4.10" + "@smithy/types": "npm:^4.3.2" + "@smithy/util-base64": "npm:^4.0.0" + "@smithy/util-body-length-browser": "npm:^4.0.0" + "@smithy/util-middleware": "npm:^4.0.5" + "@smithy/util-utf8": "npm:^4.0.0" + fast-xml-parser: "npm:5.2.5" + tslib: "npm:^2.6.2" + checksum: 10/298750f09e54c241a6d0db4e9c836fe352fc0e184d9f08a769efd3817d8982a08e0d312c3ce296565a6708bb7b721a8994c8eb5e8bfe589951da79b329a46c20 + languageName: node + linkType: hard + "@aws-sdk/credential-provider-env@npm:3.418.0": version: 3.418.0 resolution: "@aws-sdk/credential-provider-env@npm:3.418.0" @@ -1092,6 +1163,19 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-env@npm:3.864.0": + version: 3.864.0 + resolution: "@aws-sdk/credential-provider-env@npm:3.864.0" + dependencies: + "@aws-sdk/core": "npm:3.864.0" + "@aws-sdk/types": "npm:3.862.0" + "@smithy/property-provider": "npm:^4.0.5" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/ec9439ef54872cebcee4a06495a70b2cfa0ce54215c94b41450d50d3096091d301aef25a4145e8788e60b9696b7907ad33735398c63c2e84f99a9c5e059db686 + languageName: node + linkType: hard + "@aws-sdk/credential-provider-http@npm:3.535.0": version: 3.535.0 resolution: "@aws-sdk/credential-provider-http@npm:3.535.0" @@ -1127,6 +1211,24 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-http@npm:3.864.0": + version: 3.864.0 + resolution: "@aws-sdk/credential-provider-http@npm:3.864.0" + dependencies: + "@aws-sdk/core": "npm:3.864.0" + "@aws-sdk/types": "npm:3.862.0" + "@smithy/fetch-http-handler": "npm:^5.1.1" + "@smithy/node-http-handler": "npm:^4.1.1" + "@smithy/property-provider": "npm:^4.0.5" + "@smithy/protocol-http": "npm:^5.1.3" + "@smithy/smithy-client": "npm:^4.4.10" + "@smithy/types": "npm:^4.3.2" + "@smithy/util-stream": "npm:^4.2.4" + tslib: "npm:^2.6.2" + checksum: 10/65f529449b07280df715f57e47cf20dc35f00a489cc2c3508507b44bef809457830a3d2ee8189d633f45766c1619bb0031e645f6a10dd8130947c380c7b7325a + languageName: node + linkType: hard + "@aws-sdk/credential-provider-ini@npm:3.423.0": version: 3.423.0 resolution: "@aws-sdk/credential-provider-ini@npm:3.423.0" @@ -1185,6 +1287,27 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-ini@npm:3.864.0": + version: 3.864.0 + resolution: "@aws-sdk/credential-provider-ini@npm:3.864.0" + dependencies: + "@aws-sdk/core": "npm:3.864.0" + "@aws-sdk/credential-provider-env": "npm:3.864.0" + "@aws-sdk/credential-provider-http": "npm:3.864.0" + "@aws-sdk/credential-provider-process": "npm:3.864.0" + "@aws-sdk/credential-provider-sso": "npm:3.864.0" + "@aws-sdk/credential-provider-web-identity": "npm:3.864.0" + "@aws-sdk/nested-clients": "npm:3.864.0" + "@aws-sdk/types": "npm:3.862.0" + "@smithy/credential-provider-imds": "npm:^4.0.7" + "@smithy/property-provider": "npm:^4.0.5" + "@smithy/shared-ini-file-loader": "npm:^4.0.5" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/5b779614ea468d96767672c6f2f94fbe50e9252c954d935d1bd52e41308e896b720d0d5d84fbd289dc9ae32c26fd9179ed9f1bd541d5756002486ae4f3b03be3 + languageName: node + linkType: hard + "@aws-sdk/credential-provider-node@npm:3.423.0": version: 3.423.0 resolution: "@aws-sdk/credential-provider-node@npm:3.423.0" @@ -1244,6 +1367,26 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-node@npm:3.864.0": + version: 3.864.0 + resolution: "@aws-sdk/credential-provider-node@npm:3.864.0" + dependencies: + "@aws-sdk/credential-provider-env": "npm:3.864.0" + "@aws-sdk/credential-provider-http": "npm:3.864.0" + "@aws-sdk/credential-provider-ini": "npm:3.864.0" + "@aws-sdk/credential-provider-process": "npm:3.864.0" + "@aws-sdk/credential-provider-sso": "npm:3.864.0" + "@aws-sdk/credential-provider-web-identity": "npm:3.864.0" + "@aws-sdk/types": "npm:3.862.0" + "@smithy/credential-provider-imds": "npm:^4.0.7" + "@smithy/property-provider": "npm:^4.0.5" + "@smithy/shared-ini-file-loader": "npm:^4.0.5" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/e6e40d909495581e078bcec802588c192f7d38cb9e73b3b7e56c18b3418b7f5cddc0ba94bd5ec64705fe08f99a3a0ee6816279243d6b4a3ace0ca7d1e14976c5 + languageName: node + linkType: hard + "@aws-sdk/credential-provider-process@npm:3.418.0": version: 3.418.0 resolution: "@aws-sdk/credential-provider-process@npm:3.418.0" @@ -1284,6 +1427,20 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-process@npm:3.864.0": + version: 3.864.0 + resolution: "@aws-sdk/credential-provider-process@npm:3.864.0" + dependencies: + "@aws-sdk/core": "npm:3.864.0" + "@aws-sdk/types": "npm:3.862.0" + "@smithy/property-provider": "npm:^4.0.5" + "@smithy/shared-ini-file-loader": "npm:^4.0.5" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/1cb789a7988841cd55ffcc81c239b9b1f50a00db9c86bbcbbb023b48be9f94332a694118dd03e2d90f3e9a401da513d1960de29e97ca89919d75b8bf38383c8f + languageName: node + linkType: hard + "@aws-sdk/credential-provider-sso@npm:3.423.0": version: 3.423.0 resolution: "@aws-sdk/credential-provider-sso@npm:3.423.0" @@ -1330,6 +1487,22 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-sso@npm:3.864.0": + version: 3.864.0 + resolution: "@aws-sdk/credential-provider-sso@npm:3.864.0" + dependencies: + "@aws-sdk/client-sso": "npm:3.864.0" + "@aws-sdk/core": "npm:3.864.0" + "@aws-sdk/token-providers": "npm:3.864.0" + "@aws-sdk/types": "npm:3.862.0" + "@smithy/property-provider": "npm:^4.0.5" + "@smithy/shared-ini-file-loader": "npm:^4.0.5" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/f30b050083d788deaf481bf6154819401d08925003a88db7c98cc8c3f0d4e3aacdeb4bf70958b7d75f1fafaf8386dbb5671cb899d46424ab59a7e16d17bc6b5a + languageName: node + linkType: hard + "@aws-sdk/credential-provider-web-identity@npm:3.418.0": version: 3.418.0 resolution: "@aws-sdk/credential-provider-web-identity@npm:3.418.0" @@ -1369,6 +1542,20 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/credential-provider-web-identity@npm:3.864.0": + version: 3.864.0 + resolution: "@aws-sdk/credential-provider-web-identity@npm:3.864.0" + dependencies: + "@aws-sdk/core": "npm:3.864.0" + "@aws-sdk/nested-clients": "npm:3.864.0" + "@aws-sdk/types": "npm:3.862.0" + "@smithy/property-provider": "npm:^4.0.5" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/524cd4c48552707bb8fc87d02c21a9a05b8be224c1a650ed79083cff6c1302bd6f16bfd6893cfbc8568314d724c67095612a452e79a2405f8147eae316b7b187 + languageName: node + linkType: hard + "@aws-sdk/middleware-bucket-endpoint@npm:3.830.0": version: 3.830.0 resolution: "@aws-sdk/middleware-bucket-endpoint@npm:3.830.0" @@ -1453,6 +1640,18 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-host-header@npm:3.862.0": + version: 3.862.0 + resolution: "@aws-sdk/middleware-host-header@npm:3.862.0" + dependencies: + "@aws-sdk/types": "npm:3.862.0" + "@smithy/protocol-http": "npm:^5.1.3" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/c1847951c8d573f9411ac15fe83542d37f72fab0b09847b46a4de3bd4335c6f5537ba0cc226f7bcb1f0e30c613e2dc5bc36e71d4b2872f5b021118cc3e09abb1 + languageName: node + linkType: hard + "@aws-sdk/middleware-location-constraint@npm:3.821.0": version: 3.821.0 resolution: "@aws-sdk/middleware-location-constraint@npm:3.821.0" @@ -1497,6 +1696,17 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-logger@npm:3.862.0": + version: 3.862.0 + resolution: "@aws-sdk/middleware-logger@npm:3.862.0" + dependencies: + "@aws-sdk/types": "npm:3.862.0" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/8b73ccf8bb66fc1b966354a10d8d868a16b1321075dfb61b9a5406683da7e4da9ba8959409a2261cfddeacd55c357afa92119c8e5b21f4e47cf840610942048a + languageName: node + linkType: hard + "@aws-sdk/middleware-recursion-detection@npm:3.418.0": version: 3.418.0 resolution: "@aws-sdk/middleware-recursion-detection@npm:3.418.0" @@ -1533,6 +1743,18 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-recursion-detection@npm:3.862.0": + version: 3.862.0 + resolution: "@aws-sdk/middleware-recursion-detection@npm:3.862.0" + dependencies: + "@aws-sdk/types": "npm:3.862.0" + "@smithy/protocol-http": "npm:^5.1.3" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/3ed38bcfe62d8237ba79f022806482e755b50fe5cee996ea4873251ceae59a5e4ad6c9d43bd23a2a751411fa0809cdc5f9fbb44283fadd5581c9852e0e1f26ed + languageName: node + linkType: hard + "@aws-sdk/middleware-sdk-api-gateway@npm:3.821.0": version: 3.821.0 resolution: "@aws-sdk/middleware-sdk-api-gateway@npm:3.821.0" @@ -1660,6 +1882,21 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/middleware-user-agent@npm:3.864.0": + version: 3.864.0 + resolution: "@aws-sdk/middleware-user-agent@npm:3.864.0" + dependencies: + "@aws-sdk/core": "npm:3.864.0" + "@aws-sdk/types": "npm:3.862.0" + "@aws-sdk/util-endpoints": "npm:3.862.0" + "@smithy/core": "npm:^3.8.0" + "@smithy/protocol-http": "npm:^5.1.3" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/c7616eebc06b7c572cbe4277a45855ecce589106fbfe5f321d5bcc22996c03717a277e223e020987bae2dc1326ffed25f96543f7f599aa854e4835ae69561685 + languageName: node + linkType: hard + "@aws-sdk/nested-clients@npm:3.835.0": version: 3.835.0 resolution: "@aws-sdk/nested-clients@npm:3.835.0" @@ -1706,6 +1943,52 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/nested-clients@npm:3.864.0": + version: 3.864.0 + resolution: "@aws-sdk/nested-clients@npm:3.864.0" + dependencies: + "@aws-crypto/sha256-browser": "npm:5.2.0" + "@aws-crypto/sha256-js": "npm:5.2.0" + "@aws-sdk/core": "npm:3.864.0" + "@aws-sdk/middleware-host-header": "npm:3.862.0" + "@aws-sdk/middleware-logger": "npm:3.862.0" + "@aws-sdk/middleware-recursion-detection": "npm:3.862.0" + "@aws-sdk/middleware-user-agent": "npm:3.864.0" + "@aws-sdk/region-config-resolver": "npm:3.862.0" + "@aws-sdk/types": "npm:3.862.0" + "@aws-sdk/util-endpoints": "npm:3.862.0" + "@aws-sdk/util-user-agent-browser": "npm:3.862.0" + "@aws-sdk/util-user-agent-node": "npm:3.864.0" + "@smithy/config-resolver": "npm:^4.1.5" + "@smithy/core": "npm:^3.8.0" + "@smithy/fetch-http-handler": "npm:^5.1.1" + "@smithy/hash-node": "npm:^4.0.5" + "@smithy/invalid-dependency": "npm:^4.0.5" + "@smithy/middleware-content-length": "npm:^4.0.5" + "@smithy/middleware-endpoint": "npm:^4.1.18" + "@smithy/middleware-retry": "npm:^4.1.19" + "@smithy/middleware-serde": "npm:^4.0.9" + "@smithy/middleware-stack": "npm:^4.0.5" + "@smithy/node-config-provider": "npm:^4.1.4" + "@smithy/node-http-handler": "npm:^4.1.1" + "@smithy/protocol-http": "npm:^5.1.3" + "@smithy/smithy-client": "npm:^4.4.10" + "@smithy/types": "npm:^4.3.2" + "@smithy/url-parser": "npm:^4.0.5" + "@smithy/util-base64": "npm:^4.0.0" + "@smithy/util-body-length-browser": "npm:^4.0.0" + "@smithy/util-body-length-node": "npm:^4.0.0" + "@smithy/util-defaults-mode-browser": "npm:^4.0.26" + "@smithy/util-defaults-mode-node": "npm:^4.0.26" + "@smithy/util-endpoints": "npm:^3.0.7" + "@smithy/util-middleware": "npm:^4.0.5" + "@smithy/util-retry": "npm:^4.0.7" + "@smithy/util-utf8": "npm:^4.0.0" + tslib: "npm:^2.6.2" + checksum: 10/3b3e3bcb19fda8b5387fc32fac47522a5867e39a6b3f39c7ea76d998a0fb114c6a2b291babcebe41e14d3fb3577696106e91c1c44d71213137058f5e7bc22ad3 + languageName: node + linkType: hard + "@aws-sdk/region-config-resolver@npm:3.418.0": version: 3.418.0 resolution: "@aws-sdk/region-config-resolver@npm:3.418.0" @@ -1747,6 +2030,20 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/region-config-resolver@npm:3.862.0": + version: 3.862.0 + resolution: "@aws-sdk/region-config-resolver@npm:3.862.0" + dependencies: + "@aws-sdk/types": "npm:3.862.0" + "@smithy/node-config-provider": "npm:^4.1.4" + "@smithy/types": "npm:^4.3.2" + "@smithy/util-config-provider": "npm:^4.0.0" + "@smithy/util-middleware": "npm:^4.0.5" + tslib: "npm:^2.6.2" + checksum: 10/dbe5de1352e3e6329126238cca1f5e894e41039f5baff82a38e213015e8ebc195edd7623ef8ec708d73dd1f302d9da4a2dcaf9f23d9528b0def5648916d8cb74 + languageName: node + linkType: hard + "@aws-sdk/signature-v4-multi-region@npm:3.835.0": version: 3.835.0 resolution: "@aws-sdk/signature-v4-multi-region@npm:3.835.0" @@ -1833,6 +2130,21 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/token-providers@npm:3.864.0": + version: 3.864.0 + resolution: "@aws-sdk/token-providers@npm:3.864.0" + dependencies: + "@aws-sdk/core": "npm:3.864.0" + "@aws-sdk/nested-clients": "npm:3.864.0" + "@aws-sdk/types": "npm:3.862.0" + "@smithy/property-provider": "npm:^4.0.5" + "@smithy/shared-ini-file-loader": "npm:^4.0.5" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/c9600468245072acea9149e2522e6b08a937778fb01501a28dffc86d341897c3af28e29973b47a72c4e4120e00d8613c8e978725b854388168569bbae0de2255 + languageName: node + linkType: hard + "@aws-sdk/types@npm:3.418.0, @aws-sdk/types@npm:^3.222.0": version: 3.418.0 resolution: "@aws-sdk/types@npm:3.418.0" @@ -1863,6 +2175,16 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/types@npm:3.862.0": + version: 3.862.0 + resolution: "@aws-sdk/types@npm:3.862.0" + dependencies: + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/056d6712a4782d1c4c9d82d59980afacdaccecb80c64d9044e22a27b505b2e09dd9afca7127262a911ea71f88b0e0acab3d000133ed24bacc3b93175be306114 + languageName: node + linkType: hard + "@aws-sdk/util-arn-parser@npm:3.804.0": version: 3.804.0 resolution: "@aws-sdk/util-arn-parser@npm:3.804.0" @@ -1906,6 +2228,19 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-endpoints@npm:3.862.0": + version: 3.862.0 + resolution: "@aws-sdk/util-endpoints@npm:3.862.0" + dependencies: + "@aws-sdk/types": "npm:3.862.0" + "@smithy/types": "npm:^4.3.2" + "@smithy/url-parser": "npm:^4.0.5" + "@smithy/util-endpoints": "npm:^3.0.7" + tslib: "npm:^2.6.2" + checksum: 10/4043d87c0e458504392095b5e03047cd2dbadffd4ad49f86b54d4c862cd9f009639f61cad153eacc36204b28ac289e420f52b1c516f45f2efbe0952bf0517d8a + languageName: node + linkType: hard + "@aws-sdk/util-locate-window@npm:^3.0.0": version: 3.310.0 resolution: "@aws-sdk/util-locate-window@npm:3.310.0" @@ -1951,6 +2286,18 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-user-agent-browser@npm:3.862.0": + version: 3.862.0 + resolution: "@aws-sdk/util-user-agent-browser@npm:3.862.0" + dependencies: + "@aws-sdk/types": "npm:3.862.0" + "@smithy/types": "npm:^4.3.2" + bowser: "npm:^2.11.0" + tslib: "npm:^2.6.2" + checksum: 10/8133658cd0622eb48e2fff5d9100f059c37c752a6531f64e3b4e9d5ab32532eb5f22efa3eb2413c26f50df7b5337d10af4cad464c381e4931f532ecaccc4f2e9 + languageName: node + linkType: hard + "@aws-sdk/util-user-agent-node@npm:3.418.0": version: 3.418.0 resolution: "@aws-sdk/util-user-agent-node@npm:3.418.0" @@ -2003,6 +2350,24 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/util-user-agent-node@npm:3.864.0": + version: 3.864.0 + resolution: "@aws-sdk/util-user-agent-node@npm:3.864.0" + dependencies: + "@aws-sdk/middleware-user-agent": "npm:3.864.0" + "@aws-sdk/types": "npm:3.862.0" + "@smithy/node-config-provider": "npm:^4.1.4" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + peerDependencies: + aws-crt: ">=1.0.0" + peerDependenciesMeta: + aws-crt: + optional: true + checksum: 10/f7434a7bcfb11af1f77ac2f4f4a76d6efd692f0522383ff15602c9cc0ace579a7dccef853143812bfb98ab01800bbef31913808e125ed879e7cd77701fcf212a + languageName: node + linkType: hard + "@aws-sdk/util-utf8-browser@npm:^3.0.0": version: 3.259.0 resolution: "@aws-sdk/util-utf8-browser@npm:3.259.0" @@ -2022,6 +2387,16 @@ __metadata: languageName: node linkType: hard +"@aws-sdk/xml-builder@npm:3.862.0": + version: 3.862.0 + resolution: "@aws-sdk/xml-builder@npm:3.862.0" + dependencies: + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/96d5958ce5776814c7cebc1694d5bc4aafa230bf69df642239ab3b0c83e868ff12033e5f119b7f16de1ba5d4d79f9323056ddc06fa633381ee3f142dea4986a6 + languageName: node + linkType: hard + "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.22.13": version: 7.22.13 resolution: "@babel/code-frame@npm:7.22.13" @@ -2449,6 +2824,188 @@ __metadata: languageName: node linkType: hard +"@esbuild/aix-ppc64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/aix-ppc64@npm:0.25.9" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/android-arm64@npm:0.25.9" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/android-arm@npm:0.25.9" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/android-x64@npm:0.25.9" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/darwin-arm64@npm:0.25.9" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/darwin-x64@npm:0.25.9" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/freebsd-arm64@npm:0.25.9" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/freebsd-x64@npm:0.25.9" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-arm64@npm:0.25.9" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-arm@npm:0.25.9" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-ia32@npm:0.25.9" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-loong64@npm:0.25.9" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-mips64el@npm:0.25.9" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-ppc64@npm:0.25.9" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-riscv64@npm:0.25.9" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-s390x@npm:0.25.9" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/linux-x64@npm:0.25.9" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/netbsd-arm64@npm:0.25.9" + conditions: os=netbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/netbsd-x64@npm:0.25.9" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/openbsd-arm64@npm:0.25.9" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/openbsd-x64@npm:0.25.9" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openharmony-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/openharmony-arm64@npm:0.25.9" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/sunos-x64@npm:0.25.9" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/win32-arm64@npm:0.25.9" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/win32-ia32@npm:0.25.9" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.25.9": + version: 0.25.9 + resolution: "@esbuild/win32-x64@npm:0.25.9" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": version: 4.4.0 resolution: "@eslint-community/eslint-utils@npm:4.4.0" @@ -2708,13 +3265,13 @@ __metadata: languageName: node linkType: hard -"@hapi/accept@npm:^6.0.1": - version: 6.0.2 - resolution: "@hapi/accept@npm:6.0.2" +"@hapi/accept@npm:^6.0.3": + version: 6.0.3 + resolution: "@hapi/accept@npm:6.0.3" dependencies: "@hapi/boom": "npm:^10.0.1" "@hapi/hoek": "npm:^11.0.2" - checksum: 10/5511abf491f08a75863527c8eefe88b9508e608926a42b5d622309ab8c3937de857df1ade43fe0054a324bd539e3677ad20e2c28f0a688087b9d38f7f30d5096 + checksum: 10/40134e34c61093835f5bc9616d9a05cff378dd8a4cd9ef23cf21a8961fb2c2b4e2aca487204e3e9331e1f29d6345fadd7c20ef3023a9229a14e2e5980a5c7d2b languageName: node linkType: hard @@ -2755,6 +3312,16 @@ __metadata: languageName: node linkType: hard +"@hapi/bounce@npm:^3.0.2": + version: 3.0.2 + resolution: "@hapi/bounce@npm:3.0.2" + dependencies: + "@hapi/boom": "npm:^10.0.1" + "@hapi/hoek": "npm:^11.0.2" + checksum: 10/5278d41aa2dd4b10ff2ed9cccf41f1b4f663a4d25828fcc7bb0036c7bc99fd98d6e49bb893a16e341833fc515fb09a413445174ed3b837f95c486a0d260528ab + languageName: node + linkType: hard + "@hapi/bourne@npm:^3.0.0": version: 3.0.0 resolution: "@hapi/bourne@npm:3.0.0" @@ -2772,13 +3339,13 @@ __metadata: languageName: node linkType: hard -"@hapi/catbox-memory@npm:^6.0.1": - version: 6.0.1 - resolution: "@hapi/catbox-memory@npm:6.0.1" +"@hapi/catbox-memory@npm:^6.0.2": + version: 6.0.2 + resolution: "@hapi/catbox-memory@npm:6.0.2" dependencies: "@hapi/boom": "npm:^10.0.1" "@hapi/hoek": "npm:^11.0.2" - checksum: 10/e1876b066dcf3f0a1fc779490ef97e98b71f829cf70d263fe1b7958264e5f4b253ab10504b7f819d43a3cf83ff8bc26ea205f42b5f0b006af2bfd6a636cd40f9 + checksum: 10/5edf65ba73583e880c16c78cf9ec80c7016e08d042ebd2108b171e1b75f9d5a510411a140c8851312639aef7aa391414a0a3ebaf527d6dbdfa577f67f2d6e96b languageName: node linkType: hard @@ -2831,29 +3398,29 @@ __metadata: languageName: node linkType: hard -"@hapi/hapi@npm:^21.3.2": - version: 21.3.2 - resolution: "@hapi/hapi@npm:21.3.2" +"@hapi/hapi@npm:^21.3.10": + version: 21.4.3 + resolution: "@hapi/hapi@npm:21.4.3" dependencies: - "@hapi/accept": "npm:^6.0.1" + "@hapi/accept": "npm:^6.0.3" "@hapi/ammo": "npm:^6.0.1" "@hapi/boom": "npm:^10.0.1" - "@hapi/bounce": "npm:^3.0.1" + "@hapi/bounce": "npm:^3.0.2" "@hapi/call": "npm:^9.0.1" "@hapi/catbox": "npm:^12.1.1" - "@hapi/catbox-memory": "npm:^6.0.1" + "@hapi/catbox-memory": "npm:^6.0.2" "@hapi/heavy": "npm:^8.0.1" - "@hapi/hoek": "npm:^11.0.2" + "@hapi/hoek": "npm:^11.0.7" "@hapi/mimos": "npm:^7.0.1" - "@hapi/podium": "npm:^5.0.1" - "@hapi/shot": "npm:^6.0.1" + "@hapi/podium": "npm:^5.0.2" + "@hapi/shot": "npm:^6.0.2" "@hapi/somever": "npm:^4.1.1" - "@hapi/statehood": "npm:^8.1.1" - "@hapi/subtext": "npm:^8.1.0" + "@hapi/statehood": "npm:^8.2.0" + "@hapi/subtext": "npm:^8.1.1" "@hapi/teamwork": "npm:^6.0.0" - "@hapi/topo": "npm:^6.0.1" + "@hapi/topo": "npm:^6.0.2" "@hapi/validate": "npm:^2.0.1" - checksum: 10/202dca65873835eb15fc24b5afe3d8174be8ca673a6c9365f2d46d33ec09883cc7d37c98ff7bedcd381e8c761f35ddf4320127e384d44a4a82232c31d63e4330 + checksum: 10/f23bda02b4337331a6dce4cfa85ecbe877e5e8f81394ed09dde701b3ca7ff88108c9e92b2c1fd7d5c22a9ebd84a8a34278d93ee6ad46a16a834e1f0d207581e8 languageName: node linkType: hard @@ -2875,6 +3442,13 @@ __metadata: languageName: node linkType: hard +"@hapi/hoek@npm:^11.0.7": + version: 11.0.7 + resolution: "@hapi/hoek@npm:11.0.7" + checksum: 10/d0cbacf2edcedac1f06dd1d731c1f8c83ef32f2432630c4b1ebe119729cbf79e3da69fa3e5991f19d80e344f5d246b03b7e96998a032940e18bfda7ba2a56f0e + languageName: node + linkType: hard + "@hapi/hoek@npm:^9.0.0, @hapi/hoek@npm:^9.3.0": version: 9.3.0 resolution: "@hapi/hoek@npm:9.3.0" @@ -2928,7 +3502,7 @@ __metadata: languageName: node linkType: hard -"@hapi/podium@npm:^5.0.0, @hapi/podium@npm:^5.0.1": +"@hapi/podium@npm:^5.0.0": version: 5.0.1 resolution: "@hapi/podium@npm:5.0.1" dependencies: @@ -2939,13 +3513,24 @@ __metadata: languageName: node linkType: hard -"@hapi/shot@npm:^6.0.1": - version: 6.0.1 - resolution: "@hapi/shot@npm:6.0.1" +"@hapi/podium@npm:^5.0.2": + version: 5.0.2 + resolution: "@hapi/podium@npm:5.0.2" dependencies: "@hapi/hoek": "npm:^11.0.2" + "@hapi/teamwork": "npm:^6.0.0" "@hapi/validate": "npm:^2.0.1" - checksum: 10/6eb387f9c676922c504b042671139aefa943e0460534179501e793e3658741f45be7fc0a45a4972dd2907ba05157a5a3f9b04c19b0f8de71239e2719744d5a43 + checksum: 10/ed709e417f6095675b79c44384f084d5d53df592050127122c4ae241e1c8a42bda2c93ec699b2fc5203d2f0e76cd5b6119b5f5030e7a7a189f09cd20d59d51f5 + languageName: node + linkType: hard + +"@hapi/shot@npm:^6.0.2": + version: 6.0.2 + resolution: "@hapi/shot@npm:6.0.2" + dependencies: + "@hapi/hoek": "npm:^11.0.2" + "@hapi/validate": "npm:^2.0.1" + checksum: 10/8715f5759c5cc0ac4c5fdb3c932862cd257320a19cfeadaf78d16491515b19b0aa27df95b91273d31d99e1d20d7bf10ed77078f42c844793817365797e6bfdab languageName: node linkType: hard @@ -2959,9 +3544,9 @@ __metadata: languageName: node linkType: hard -"@hapi/statehood@npm:^8.1.1": - version: 8.1.1 - resolution: "@hapi/statehood@npm:8.1.1" +"@hapi/statehood@npm:^8.2.0": + version: 8.2.0 + resolution: "@hapi/statehood@npm:8.2.0" dependencies: "@hapi/boom": "npm:^10.0.1" "@hapi/bounce": "npm:^3.0.1" @@ -2970,13 +3555,13 @@ __metadata: "@hapi/hoek": "npm:^11.0.2" "@hapi/iron": "npm:^7.0.1" "@hapi/validate": "npm:^2.0.1" - checksum: 10/b8259b5470d88064da0f803d39d2ccd244894cd9c20c26f65299398a528eb3a9450c32cde250cb3499d3c80a2e1d9523c609c05658616fcc5be3a8d9f05bbbe1 + checksum: 10/d55129f8bd9fa65d2b5305c922506baed677a1f36a8a3be8c9005d7a9009154a8b783d94603c49f88f1f24b23dd9e9b262cb19be6a4dc6130679bd0a33d63a75 languageName: node linkType: hard -"@hapi/subtext@npm:^8.1.0": - version: 8.1.0 - resolution: "@hapi/subtext@npm:8.1.0" +"@hapi/subtext@npm:^8.1.1": + version: 8.1.1 + resolution: "@hapi/subtext@npm:8.1.1" dependencies: "@hapi/boom": "npm:^10.0.1" "@hapi/bourne": "npm:^3.0.0" @@ -2985,7 +3570,7 @@ __metadata: "@hapi/hoek": "npm:^11.0.2" "@hapi/pez": "npm:^6.1.0" "@hapi/wreck": "npm:^18.0.1" - checksum: 10/3f7bf0c689d67307fa4fd454ce491e210c610823386def3155422c0c45c7e0512429a14d8091f72e10b289ae4e6bf1d449f926945148b9e216238412e6aa6901 + checksum: 10/9ce8251d5ee273e475febf32730d2e77ee5f276dc594a991508ea59916cba9148a00610c0cf942008844a44d6e39e1070bf7be952a35b1599faf1f060bd70a92 languageName: node linkType: hard @@ -3005,7 +3590,7 @@ __metadata: languageName: node linkType: hard -"@hapi/topo@npm:^6.0.1": +"@hapi/topo@npm:^6.0.1, @hapi/topo@npm:^6.0.2": version: 6.0.2 resolution: "@hapi/topo@npm:6.0.2" dependencies: @@ -3452,6 +4037,24 @@ __metadata: languageName: node linkType: hard +"@jsep-plugin/assignment@npm:^1.3.0": + version: 1.3.0 + resolution: "@jsep-plugin/assignment@npm:1.3.0" + peerDependencies: + jsep: ^0.4.0||^1.0.0 + checksum: 10/0c93b703d84af95b4be9fb6c23fbdbe7c7b6985b41c98fd10386cd54686ed1eb751cb39f5d54abcb621e4da2a0900a3b2a852e5bf7f2d322b756db3b22e42a45 + languageName: node + linkType: hard + +"@jsep-plugin/regex@npm:^1.0.4": + version: 1.0.4 + resolution: "@jsep-plugin/regex@npm:1.0.4" + peerDependencies: + jsep: ^0.4.0||^1.0.0 + checksum: 10/0ea6ba81f03955972b762fd9fbc8e3fd7e1c1c12e52ce3d4366e23c0a63c8bff8528687b8b3d8f641cf9f626f8bf5a7841efcd31a2489fe967e1900e5738ee3a + languageName: node + linkType: hard + "@kwsites/file-exists@npm:^1.1.1": version: 1.1.1 resolution: "@kwsites/file-exists@npm:1.1.1" @@ -3719,7 +4322,7 @@ __metadata: languageName: node linkType: hard -"@serverless/utils@npm:^6.13.1, @serverless/utils@npm:^6.14.0, @serverless/utils@npm:^6.15.0": +"@serverless/utils@npm:^6.13.1, @serverless/utils@npm:^6.14.0": version: 6.15.0 resolution: "@serverless/utils@npm:6.15.0" dependencies: @@ -3845,6 +4448,16 @@ __metadata: languageName: node linkType: hard +"@smithy/abort-controller@npm:^4.0.5": + version: 4.0.5 + resolution: "@smithy/abort-controller@npm:4.0.5" + dependencies: + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/6144fd382208d12b9818b0b937a2915cf2c6258854aa0bd860932857c4cafb0324a4c085387372a301854cc0eb4d36e9fe1a5c2400d6e2d3dee396ed6995c3c8 + languageName: node + linkType: hard + "@smithy/chunked-blob-reader-native@npm:^4.0.0": version: 4.0.0 resolution: "@smithy/chunked-blob-reader-native@npm:4.0.0" @@ -3903,6 +4516,19 @@ __metadata: languageName: node linkType: hard +"@smithy/config-resolver@npm:^4.1.5": + version: 4.1.5 + resolution: "@smithy/config-resolver@npm:4.1.5" + dependencies: + "@smithy/node-config-provider": "npm:^4.1.4" + "@smithy/types": "npm:^4.3.2" + "@smithy/util-config-provider": "npm:^4.0.0" + "@smithy/util-middleware": "npm:^4.0.5" + tslib: "npm:^2.6.2" + checksum: 10/c87dcd61c654c840ea820f8955d859d775633c5e39ceed4661353ea199b38e114d11e6a9311fbc49a789986cb75bf0c17705af590ac28a62dd710e75d1e8006f + languageName: node + linkType: hard + "@smithy/core@npm:^1.4.0": version: 1.4.0 resolution: "@smithy/core@npm:1.4.0" @@ -3936,6 +4562,25 @@ __metadata: languageName: node linkType: hard +"@smithy/core@npm:^3.8.0": + version: 3.8.0 + resolution: "@smithy/core@npm:3.8.0" + dependencies: + "@smithy/middleware-serde": "npm:^4.0.9" + "@smithy/protocol-http": "npm:^5.1.3" + "@smithy/types": "npm:^4.3.2" + "@smithy/util-base64": "npm:^4.0.0" + "@smithy/util-body-length-browser": "npm:^4.0.0" + "@smithy/util-middleware": "npm:^4.0.5" + "@smithy/util-stream": "npm:^4.2.4" + "@smithy/util-utf8": "npm:^4.0.0" + "@types/uuid": "npm:^9.0.1" + tslib: "npm:^2.6.2" + uuid: "npm:^9.0.1" + checksum: 10/76b86b04fc530285ef73e34e4d47cf4a53b6eaf1b3f54a9a0126990766258670d8686015cee39da797afe3f931347ceb8f6c18a620a6744a7fc901e4822d678a + languageName: node + linkType: hard + "@smithy/credential-provider-imds@npm:^2.0.0, @smithy/credential-provider-imds@npm:^2.0.13": version: 2.0.13 resolution: "@smithy/credential-provider-imds@npm:2.0.13" @@ -3975,6 +4620,19 @@ __metadata: languageName: node linkType: hard +"@smithy/credential-provider-imds@npm:^4.0.7": + version: 4.0.7 + resolution: "@smithy/credential-provider-imds@npm:4.0.7" + dependencies: + "@smithy/node-config-provider": "npm:^4.1.4" + "@smithy/property-provider": "npm:^4.0.5" + "@smithy/types": "npm:^4.3.2" + "@smithy/url-parser": "npm:^4.0.5" + tslib: "npm:^2.6.2" + checksum: 10/e6fe92ac78a562f4f12ab1106bdc201348e356fabbf073027ee02d49dd8d3bd193d06ad9e6a62e995c48f8e4ebdfd76ab532471471a120fafc52301896eaac63 + languageName: node + linkType: hard + "@smithy/eventstream-codec@npm:^2.0.10": version: 2.0.10 resolution: "@smithy/eventstream-codec@npm:2.0.10" @@ -4011,14 +4669,15 @@ __metadata: languageName: node linkType: hard -"@smithy/eventstream-serde-browser@npm:^2.0.9": - version: 2.0.10 - resolution: "@smithy/eventstream-serde-browser@npm:2.0.10" +"@smithy/eventstream-codec@npm:^4.0.5": + version: 4.0.5 + resolution: "@smithy/eventstream-codec@npm:4.0.5" dependencies: - "@smithy/eventstream-serde-universal": "npm:^2.0.10" - "@smithy/types": "npm:^2.3.4" - tslib: "npm:^2.5.0" - checksum: 10/b66bd20abb727dba1e4aa45f08222ce88501b8fb55a4eae8d2e8f1d5133979a2d73395a5439908bbe250e2c4201063fbb077eb1c18518ecf3cf01037965fae86 + "@aws-crypto/crc32": "npm:5.2.0" + "@smithy/types": "npm:^4.3.2" + "@smithy/util-hex-encoding": "npm:^4.0.0" + tslib: "npm:^2.6.2" + checksum: 10/7b3100f60e069e0237ef96921574bb6ee0e459bc4a269d447e7f5c2e83c2e97cf8edf0635aba458658f1c7c278a90036a8eb89f6eee237c4a6c776257eafaf28 languageName: node linkType: hard @@ -4044,13 +4703,14 @@ __metadata: languageName: node linkType: hard -"@smithy/eventstream-serde-config-resolver@npm:^2.0.9": - version: 2.0.10 - resolution: "@smithy/eventstream-serde-config-resolver@npm:2.0.10" +"@smithy/eventstream-serde-browser@npm:^4.0.5": + version: 4.0.5 + resolution: "@smithy/eventstream-serde-browser@npm:4.0.5" dependencies: - "@smithy/types": "npm:^2.3.4" - tslib: "npm:^2.5.0" - checksum: 10/bd8a16aa1bf68c9544dc5d74ebbdb3ef450b1e2d46994d047ae54e24b4b8f0de3c014858ea7a4f3afd2b281f13a36882b0fac88e8ab5d3496dc9584b969b989f + "@smithy/eventstream-serde-universal": "npm:^4.0.5" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/054415f6452ddb85f301cecb1a9ea180522b74fbb434ba295f8df43ed404533a1ad2f6706e5d0fdff142fc18b8f2cee8b10cc308076d3365a93a802b0077c72e languageName: node linkType: hard @@ -4074,14 +4734,13 @@ __metadata: languageName: node linkType: hard -"@smithy/eventstream-serde-node@npm:^2.0.9": - version: 2.0.10 - resolution: "@smithy/eventstream-serde-node@npm:2.0.10" +"@smithy/eventstream-serde-config-resolver@npm:^4.1.3": + version: 4.1.3 + resolution: "@smithy/eventstream-serde-config-resolver@npm:4.1.3" dependencies: - "@smithy/eventstream-serde-universal": "npm:^2.0.10" - "@smithy/types": "npm:^2.3.4" - tslib: "npm:^2.5.0" - checksum: 10/b990642ad9f7c652edf4758e96d800ff998a15edd33de7266c5429669c60dd6d3e45e079a98a1a2f3574089bc9037dc10a02b97f75b359bb5750c45aae26be9c + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/c55ef558afcce6940d7aced9405b376a6844b9e6cd95980b3eb02dd2c9ce468e4e52e2219f9e9fb60c76b07c70e4578d7faeb6f970400d356e81faf125343da5 languageName: node linkType: hard @@ -4107,14 +4766,14 @@ __metadata: languageName: node linkType: hard -"@smithy/eventstream-serde-universal@npm:^2.0.10": - version: 2.0.10 - resolution: "@smithy/eventstream-serde-universal@npm:2.0.10" +"@smithy/eventstream-serde-node@npm:^4.0.5": + version: 4.0.5 + resolution: "@smithy/eventstream-serde-node@npm:4.0.5" dependencies: - "@smithy/eventstream-codec": "npm:^2.0.10" - "@smithy/types": "npm:^2.3.4" - tslib: "npm:^2.5.0" - checksum: 10/3ed6a6deb16b5b41e79146f49599fb464392c5d501d2555f259534543508db3479fa6b47d7e435156e6e39303fb87cec27091808efd71d264e27504ca657c2fa + "@smithy/eventstream-serde-universal": "npm:^4.0.5" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/10989968e3afa0e41ca19b2bd04283ff41edb4f7d4157a1d2e7582b7299ee3b5f971100bf5d8ce870e81ffd50118c3895568f0ff36dfd6b9d2dc339387119def languageName: node linkType: hard @@ -4140,6 +4799,17 @@ __metadata: languageName: node linkType: hard +"@smithy/eventstream-serde-universal@npm:^4.0.5": + version: 4.0.5 + resolution: "@smithy/eventstream-serde-universal@npm:4.0.5" + dependencies: + "@smithy/eventstream-codec": "npm:^4.0.5" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/fee891fc18b55225c953602177277f2855361bf167f04aed62ea5433dc54a9a8feaba58962954534de77b7de3c791b0852f236823e89fbc983dbd436b2cc0154 + languageName: node + linkType: hard + "@smithy/fetch-http-handler@npm:^2.1.5, @smithy/fetch-http-handler@npm:^2.2.1": version: 2.2.1 resolution: "@smithy/fetch-http-handler@npm:2.2.1" @@ -4179,6 +4849,19 @@ __metadata: languageName: node linkType: hard +"@smithy/fetch-http-handler@npm:^5.1.1": + version: 5.1.1 + resolution: "@smithy/fetch-http-handler@npm:5.1.1" + dependencies: + "@smithy/protocol-http": "npm:^5.1.3" + "@smithy/querystring-builder": "npm:^4.0.5" + "@smithy/types": "npm:^4.3.2" + "@smithy/util-base64": "npm:^4.0.0" + tslib: "npm:^2.6.2" + checksum: 10/9fecb55396374678a0e662fa4134b20415625e71389b68b42cdb4ad4b523a865ea066a612a53546fc5be8cfb10a3c93aae966170038e8c268bba94c7ad5160e6 + languageName: node + linkType: hard + "@smithy/hash-blob-browser@npm:^4.0.4": version: 4.0.4 resolution: "@smithy/hash-blob-browser@npm:4.0.4" @@ -4227,6 +4910,18 @@ __metadata: languageName: node linkType: hard +"@smithy/hash-node@npm:^4.0.5": + version: 4.0.5 + resolution: "@smithy/hash-node@npm:4.0.5" + dependencies: + "@smithy/types": "npm:^4.3.2" + "@smithy/util-buffer-from": "npm:^4.0.0" + "@smithy/util-utf8": "npm:^4.0.0" + tslib: "npm:^2.6.2" + checksum: 10/ccb4a706bc78daaeb9eaa9d3c49a94a14afa50462776656a319b219acb2ab6e8a5de9ffd4df5ee21f57daa7ade92386c307cf52c07603442de00030dbad1e8b9 + languageName: node + linkType: hard + "@smithy/hash-stream-node@npm:^4.0.4": version: 4.0.4 resolution: "@smithy/hash-stream-node@npm:4.0.4" @@ -4268,6 +4963,16 @@ __metadata: languageName: node linkType: hard +"@smithy/invalid-dependency@npm:^4.0.5": + version: 4.0.5 + resolution: "@smithy/invalid-dependency@npm:4.0.5" + dependencies: + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/35611817dc981cf266c55f10e21af53653129effa3915641e357a4d31aebb5b34bd452fed5dcbedd45d8ab3dc2abd1882f3bc971a56d269ac1b636adcf939ed8 + languageName: node + linkType: hard + "@smithy/is-array-buffer@npm:^2.0.0": version: 2.0.0 resolution: "@smithy/is-array-buffer@npm:2.0.0" @@ -4350,6 +5055,17 @@ __metadata: languageName: node linkType: hard +"@smithy/middleware-content-length@npm:^4.0.5": + version: 4.0.5 + resolution: "@smithy/middleware-content-length@npm:4.0.5" + dependencies: + "@smithy/protocol-http": "npm:^5.1.3" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/f5b0c24c1a4a1a627fef2143afbff6e8627bb375b57fe1d8c5a78837856397c92411a92f7ea4eef29546405c3e3f2fb6adcc44bd2665de2a9e2a4ce52559ef0c + languageName: node + linkType: hard + "@smithy/middleware-endpoint@npm:^2.0.9": version: 2.0.10 resolution: "@smithy/middleware-endpoint@npm:2.0.10" @@ -4394,6 +5110,22 @@ __metadata: languageName: node linkType: hard +"@smithy/middleware-endpoint@npm:^4.1.18": + version: 4.1.18 + resolution: "@smithy/middleware-endpoint@npm:4.1.18" + dependencies: + "@smithy/core": "npm:^3.8.0" + "@smithy/middleware-serde": "npm:^4.0.9" + "@smithy/node-config-provider": "npm:^4.1.4" + "@smithy/shared-ini-file-loader": "npm:^4.0.5" + "@smithy/types": "npm:^4.3.2" + "@smithy/url-parser": "npm:^4.0.5" + "@smithy/util-middleware": "npm:^4.0.5" + tslib: "npm:^2.6.2" + checksum: 10/757a7e195a5f1e8d6b04ba3687a3ee530d29bfbe880b9bc2a7c9fc4cc9dc656f2ebcc5c6ff2c7c919e58d616c01bc350f097d8181d72f223a3fa9ab62ef0f1fa + languageName: node + linkType: hard + "@smithy/middleware-retry@npm:^2.0.12": version: 2.0.13 resolution: "@smithy/middleware-retry@npm:2.0.13" @@ -4444,6 +5176,24 @@ __metadata: languageName: node linkType: hard +"@smithy/middleware-retry@npm:^4.1.19": + version: 4.1.19 + resolution: "@smithy/middleware-retry@npm:4.1.19" + dependencies: + "@smithy/node-config-provider": "npm:^4.1.4" + "@smithy/protocol-http": "npm:^5.1.3" + "@smithy/service-error-classification": "npm:^4.0.7" + "@smithy/smithy-client": "npm:^4.4.10" + "@smithy/types": "npm:^4.3.2" + "@smithy/util-middleware": "npm:^4.0.5" + "@smithy/util-retry": "npm:^4.0.7" + "@types/uuid": "npm:^9.0.1" + tslib: "npm:^2.6.2" + uuid: "npm:^9.0.1" + checksum: 10/f7ce55a4d66e8b569dacee92796a4096e32ca6c992ba7036a7f62532e1a7e5c570b1a042dca3810d92f196411a85e3a6735f40c7247fc4464e28b4c5c3b997ed + languageName: node + linkType: hard + "@smithy/middleware-serde@npm:^2.0.10, @smithy/middleware-serde@npm:^2.0.9": version: 2.0.10 resolution: "@smithy/middleware-serde@npm:2.0.10" @@ -4475,6 +5225,17 @@ __metadata: languageName: node linkType: hard +"@smithy/middleware-serde@npm:^4.0.9": + version: 4.0.9 + resolution: "@smithy/middleware-serde@npm:4.0.9" + dependencies: + "@smithy/protocol-http": "npm:^5.1.3" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/eea044c2f6de809543d1d43d498b3434f8a94e67b8e3c00190a03b9e79f862ac7140d2954e39eee63b18a23b9ec0405bd35910224e22a7b2b74177e2771c9a2c + languageName: node + linkType: hard + "@smithy/middleware-stack@npm:^2.0.2, @smithy/middleware-stack@npm:^2.0.4": version: 2.0.4 resolution: "@smithy/middleware-stack@npm:2.0.4" @@ -4499,9 +5260,19 @@ __metadata: version: 4.0.4 resolution: "@smithy/middleware-stack@npm:4.0.4" dependencies: - "@smithy/types": "npm:^4.3.1" + "@smithy/types": "npm:^4.3.1" + tslib: "npm:^2.6.2" + checksum: 10/7cfea213e9dafc93061388631828bed7c20a1f87e14c1d32a2c1fbabba802253ca32519277288ce5457189fe015422573c4a9dd4d27ce60b6f0e8f15c127a5be + languageName: node + linkType: hard + +"@smithy/middleware-stack@npm:^4.0.5": + version: 4.0.5 + resolution: "@smithy/middleware-stack@npm:4.0.5" + dependencies: + "@smithy/types": "npm:^4.3.2" tslib: "npm:^2.6.2" - checksum: 10/7cfea213e9dafc93061388631828bed7c20a1f87e14c1d32a2c1fbabba802253ca32519277288ce5457189fe015422573c4a9dd4d27ce60b6f0e8f15c127a5be + checksum: 10/23c3dbde1d41855b7467dbd9a4342131f6e9446d5ae1ff980c025e849e2e1ad950f344aaa9c2b431df87d968b2a5586c376c3e1f6bc6da8c9da18306dac8c5fb languageName: node linkType: hard @@ -4541,6 +5312,18 @@ __metadata: languageName: node linkType: hard +"@smithy/node-config-provider@npm:^4.1.4": + version: 4.1.4 + resolution: "@smithy/node-config-provider@npm:4.1.4" + dependencies: + "@smithy/property-provider": "npm:^4.0.5" + "@smithy/shared-ini-file-loader": "npm:^4.0.5" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/ac411cb19303279c8c0568dbd431cca7c5c1791fe7185b5637cb8540e725ebd7b59852c8d06afa64621d6a070e7fed1109bbcde9856dbe14b09f0b23d58c4564 + languageName: node + linkType: hard + "@smithy/node-http-handler@npm:^2.1.5, @smithy/node-http-handler@npm:^2.1.6": version: 2.1.6 resolution: "@smithy/node-http-handler@npm:2.1.6" @@ -4580,6 +5363,19 @@ __metadata: languageName: node linkType: hard +"@smithy/node-http-handler@npm:^4.1.1": + version: 4.1.1 + resolution: "@smithy/node-http-handler@npm:4.1.1" + dependencies: + "@smithy/abort-controller": "npm:^4.0.5" + "@smithy/protocol-http": "npm:^5.1.3" + "@smithy/querystring-builder": "npm:^4.0.5" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/0f73f5c11a2efb12688ff8957ef49948926a29a5e3d9c01eafb9621f7bffcbca4eeab3eec23859753965a95d8ccf92b9df0880170773daf012a1ac364573921c + languageName: node + linkType: hard + "@smithy/property-provider@npm:^2.0.0, @smithy/property-provider@npm:^2.0.11": version: 2.0.11 resolution: "@smithy/property-provider@npm:2.0.11" @@ -4610,6 +5406,16 @@ __metadata: languageName: node linkType: hard +"@smithy/property-provider@npm:^4.0.5": + version: 4.0.5 + resolution: "@smithy/property-provider@npm:4.0.5" + dependencies: + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/f3d204dea729a1189dc90a0938a41a8f5bf20b64e975c8b7698e3d39b1e69a593436d871f084517a28e69ffe690d422fadc4acf1913991bc96ee777f152b1ce6 + languageName: node + linkType: hard + "@smithy/protocol-http@npm:^3.0.5, @smithy/protocol-http@npm:^3.0.6": version: 3.0.6 resolution: "@smithy/protocol-http@npm:3.0.6" @@ -4640,6 +5446,16 @@ __metadata: languageName: node linkType: hard +"@smithy/protocol-http@npm:^5.1.3": + version: 5.1.3 + resolution: "@smithy/protocol-http@npm:5.1.3" + dependencies: + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/582e502fe1f9b52672ddfad3b1f28facfedae517d04fbbdb4ad1bb2bd6ce617f34052682f2738abb7a193eb47d55244abd9005e9f9a4612e820e7bff1056093a + languageName: node + linkType: hard + "@smithy/querystring-builder@npm:^2.0.10": version: 2.0.10 resolution: "@smithy/querystring-builder@npm:2.0.10" @@ -4673,6 +5489,17 @@ __metadata: languageName: node linkType: hard +"@smithy/querystring-builder@npm:^4.0.5": + version: 4.0.5 + resolution: "@smithy/querystring-builder@npm:4.0.5" + dependencies: + "@smithy/types": "npm:^4.3.2" + "@smithy/util-uri-escape": "npm:^4.0.0" + tslib: "npm:^2.6.2" + checksum: 10/0ffd02b9add467385051deca9e8abb0bf25702b8643265a715752cbb6afd7b40e7d8a6978163dc32f7d478a5b1840b77bc99b5b823cc9f4ca535594b94aa0243 + languageName: node + linkType: hard + "@smithy/querystring-parser@npm:^2.0.10": version: 2.0.10 resolution: "@smithy/querystring-parser@npm:2.0.10" @@ -4703,6 +5530,16 @@ __metadata: languageName: node linkType: hard +"@smithy/querystring-parser@npm:^4.0.5": + version: 4.0.5 + resolution: "@smithy/querystring-parser@npm:4.0.5" + dependencies: + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/5a9b65a4ff417aa75e7452eeb393499e57661a0834a60950f23d49522b76a86d2411e06336f4b61364b0ced3639d8162828a13cfa49daf86b87bfa222e819dfd + languageName: node + linkType: hard + "@smithy/service-error-classification@npm:^2.0.3": version: 2.0.3 resolution: "@smithy/service-error-classification@npm:2.0.3" @@ -4730,6 +5567,15 @@ __metadata: languageName: node linkType: hard +"@smithy/service-error-classification@npm:^4.0.7": + version: 4.0.7 + resolution: "@smithy/service-error-classification@npm:4.0.7" + dependencies: + "@smithy/types": "npm:^4.3.2" + checksum: 10/4bc16b0b85576b5e3f2669cd216abff43a46da7f722d3b9a267736beee9365ea011b1b71454dc728a1233b890243fed797e361f32c912f7a2577ba6574ce8f74 + languageName: node + linkType: hard + "@smithy/shared-ini-file-loader@npm:^2.0.12, @smithy/shared-ini-file-loader@npm:^2.0.6": version: 2.0.12 resolution: "@smithy/shared-ini-file-loader@npm:2.0.12" @@ -4760,6 +5606,16 @@ __metadata: languageName: node linkType: hard +"@smithy/shared-ini-file-loader@npm:^4.0.5": + version: 4.0.5 + resolution: "@smithy/shared-ini-file-loader@npm:4.0.5" + dependencies: + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/06e85753313b90fe4a8800aac0e3a768c1bd064df56503c3309fc6839cb002c40f75f44f5582bd87c13712eb3ed554dc89f36999df70c31a5adb553213ab939a + languageName: node + linkType: hard + "@smithy/signature-v4@npm:^2.0.0": version: 2.0.10 resolution: "@smithy/signature-v4@npm:2.0.10" @@ -4808,6 +5664,22 @@ __metadata: languageName: node linkType: hard +"@smithy/signature-v4@npm:^5.1.3": + version: 5.1.3 + resolution: "@smithy/signature-v4@npm:5.1.3" + dependencies: + "@smithy/is-array-buffer": "npm:^4.0.0" + "@smithy/protocol-http": "npm:^5.1.3" + "@smithy/types": "npm:^4.3.2" + "@smithy/util-hex-encoding": "npm:^4.0.0" + "@smithy/util-middleware": "npm:^4.0.5" + "@smithy/util-uri-escape": "npm:^4.0.0" + "@smithy/util-utf8": "npm:^4.0.0" + tslib: "npm:^2.6.2" + checksum: 10/a8f23ea144535b35c3c9d65f30ee67b78f86eb60b74809d9e3c7f439c6dba32a6a2fc1dfd97eb763c655ae7a69132d90b3397bf7a9d3867e3949ae2720c8b6f9 + languageName: node + linkType: hard + "@smithy/smithy-client@npm:^2.1.6, @smithy/smithy-client@npm:^2.1.9": version: 2.1.9 resolution: "@smithy/smithy-client@npm:2.1.9" @@ -4834,6 +5706,21 @@ __metadata: languageName: node linkType: hard +"@smithy/smithy-client@npm:^4.4.10": + version: 4.4.10 + resolution: "@smithy/smithy-client@npm:4.4.10" + dependencies: + "@smithy/core": "npm:^3.8.0" + "@smithy/middleware-endpoint": "npm:^4.1.18" + "@smithy/middleware-stack": "npm:^4.0.5" + "@smithy/protocol-http": "npm:^5.1.3" + "@smithy/types": "npm:^4.3.2" + "@smithy/util-stream": "npm:^4.2.4" + tslib: "npm:^2.6.2" + checksum: 10/f43302822fd95b71d570db6deba638ca3c02e8a87d00468c3644074e7ebe7627529f12ee13876b7e9a883567ca8b473df2082e184ca9667f4a4dfc3875f5d0c9 + languageName: node + linkType: hard + "@smithy/smithy-client@npm:^4.4.4, @smithy/smithy-client@npm:^4.4.5": version: 4.4.5 resolution: "@smithy/smithy-client@npm:4.4.5" @@ -4876,6 +5763,15 @@ __metadata: languageName: node linkType: hard +"@smithy/types@npm:^4.3.2": + version: 4.3.2 + resolution: "@smithy/types@npm:4.3.2" + dependencies: + tslib: "npm:^2.6.2" + checksum: 10/2828937ef949b1e5eb45beea2c03f20daec4390db1485e142a7c9c2efc9dfa90430332cf4fb1523b31df3a9a4ff97cb87c157294cc65ef2f0f7e376eab3fd7a8 + languageName: node + linkType: hard + "@smithy/url-parser@npm:^2.0.10, @smithy/url-parser@npm:^2.0.9": version: 2.0.10 resolution: "@smithy/url-parser@npm:2.0.10" @@ -4909,6 +5805,17 @@ __metadata: languageName: node linkType: hard +"@smithy/url-parser@npm:^4.0.5": + version: 4.0.5 + resolution: "@smithy/url-parser@npm:4.0.5" + dependencies: + "@smithy/querystring-parser": "npm:^4.0.5" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/8874b5c14ec86d4f320c0f58419194dbfe02e34070f224218caf42c55a824cd70d1469fb3a857af88859fe99a655accb1288f0faf3e3cbac77c29aa950fdf1a4 + languageName: node + linkType: hard + "@smithy/util-base64@npm:^2.0.0": version: 2.0.0 resolution: "@smithy/util-base64@npm:2.0.0" @@ -5091,6 +5998,19 @@ __metadata: languageName: node linkType: hard +"@smithy/util-defaults-mode-browser@npm:^4.0.26": + version: 4.0.26 + resolution: "@smithy/util-defaults-mode-browser@npm:4.0.26" + dependencies: + "@smithy/property-provider": "npm:^4.0.5" + "@smithy/smithy-client": "npm:^4.4.10" + "@smithy/types": "npm:^4.3.2" + bowser: "npm:^2.11.0" + tslib: "npm:^2.6.2" + checksum: 10/fb919771ee1f986f8534f1e28159442941e3eeb464889a9fcb22bd3985c0fb99af771d8ac8fd697df4f69d6c6c81ba2c9b6463d8f4cce022b2f83bbde9ef1fa6 + languageName: node + linkType: hard + "@smithy/util-defaults-mode-node@npm:^2.0.12": version: 2.0.15 resolution: "@smithy/util-defaults-mode-node@npm:2.0.15" @@ -5136,6 +6056,21 @@ __metadata: languageName: node linkType: hard +"@smithy/util-defaults-mode-node@npm:^4.0.26": + version: 4.0.26 + resolution: "@smithy/util-defaults-mode-node@npm:4.0.26" + dependencies: + "@smithy/config-resolver": "npm:^4.1.5" + "@smithy/credential-provider-imds": "npm:^4.0.7" + "@smithy/node-config-provider": "npm:^4.1.4" + "@smithy/property-provider": "npm:^4.0.5" + "@smithy/smithy-client": "npm:^4.4.10" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/a13dca7b48772ad0373900fe3e6498e7264fa7403af4171898e5950910fd78d945b49e3185397ea06dbb2b65c2b8289f8f522e7b941a3dbb0144e39dd49cc775 + languageName: node + linkType: hard + "@smithy/util-endpoints@npm:^1.2.0": version: 1.2.0 resolution: "@smithy/util-endpoints@npm:1.2.0" @@ -5158,6 +6093,17 @@ __metadata: languageName: node linkType: hard +"@smithy/util-endpoints@npm:^3.0.7": + version: 3.0.7 + resolution: "@smithy/util-endpoints@npm:3.0.7" + dependencies: + "@smithy/node-config-provider": "npm:^4.1.4" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/30fab2affea2338abdca833af2da75c7dd5580df4fc990ba234712836cc7600f5f69be76e8728108c0c3eb035265f5044fd890df1ef6e1a903879607d2760a03 + languageName: node + linkType: hard + "@smithy/util-hex-encoding@npm:^2.0.0": version: 2.0.0 resolution: "@smithy/util-hex-encoding@npm:2.0.0" @@ -5215,6 +6161,16 @@ __metadata: languageName: node linkType: hard +"@smithy/util-middleware@npm:^4.0.5": + version: 4.0.5 + resolution: "@smithy/util-middleware@npm:4.0.5" + dependencies: + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/3138f0524ab8a287657d3a49ac00e83ccd19704d9781bac8835b4bb036dfb2e4196390121852e5d69a45d35372b984d8442f20fdd667559a3e3ec4e11d28985d + languageName: node + linkType: hard + "@smithy/util-retry@npm:^2.0.2, @smithy/util-retry@npm:^2.0.3": version: 2.0.3 resolution: "@smithy/util-retry@npm:2.0.3" @@ -5248,7 +6204,18 @@ __metadata: languageName: node linkType: hard -"@smithy/util-stream@npm:^2.0.12, @smithy/util-stream@npm:^2.0.14": +"@smithy/util-retry@npm:^4.0.7": + version: 4.0.7 + resolution: "@smithy/util-retry@npm:4.0.7" + dependencies: + "@smithy/service-error-classification": "npm:^4.0.7" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/40f18631bea926bec4c039e56d7a922349d9e52d030d3b60d6d116495241991ed6a7713979af442959aa51c48fd942ff942acb2c19b4ae144c4cc1e022b0b61c + languageName: node + linkType: hard + +"@smithy/util-stream@npm:^2.0.14": version: 2.0.14 resolution: "@smithy/util-stream@npm:2.0.14" dependencies: @@ -5296,6 +6263,22 @@ __metadata: languageName: node linkType: hard +"@smithy/util-stream@npm:^4.2.4": + version: 4.2.4 + resolution: "@smithy/util-stream@npm:4.2.4" + dependencies: + "@smithy/fetch-http-handler": "npm:^5.1.1" + "@smithy/node-http-handler": "npm:^4.1.1" + "@smithy/types": "npm:^4.3.2" + "@smithy/util-base64": "npm:^4.0.0" + "@smithy/util-buffer-from": "npm:^4.0.0" + "@smithy/util-hex-encoding": "npm:^4.0.0" + "@smithy/util-utf8": "npm:^4.0.0" + tslib: "npm:^2.6.2" + checksum: 10/34cde9fef3c7a6d3e544fdc5026f5745a399e500bf0adf93a0c2e98a85cd5353e08dd3bee02a7a44729999ebd52fe260407f8ff6ab1030230f9014b1ff30c9a7 + languageName: node + linkType: hard + "@smithy/util-uri-escape@npm:^2.0.0": version: 2.0.0 resolution: "@smithy/util-uri-escape@npm:2.0.0" @@ -5386,6 +6369,17 @@ __metadata: languageName: node linkType: hard +"@smithy/util-waiter@npm:^4.0.7": + version: 4.0.7 + resolution: "@smithy/util-waiter@npm:4.0.7" + dependencies: + "@smithy/abort-controller": "npm:^4.0.5" + "@smithy/types": "npm:^4.3.2" + tslib: "npm:^2.6.2" + checksum: 10/335e88f06ebb6d118a69a6c52bed7e39d9586fc97dfb8229d7365dcff8de4ba359981d0d7488844d36ac4e81b55634e891eb19c5d209fab282172508ddd1c2c5 + languageName: node + linkType: hard + "@szmarczak/http-timer@npm:^4.0.5": version: 4.0.6 resolution: "@szmarczak/http-timer@npm:4.0.6" @@ -5870,13 +6864,6 @@ __metadata: languageName: node linkType: hard -"@types/retry@npm:0.12.2": - version: 0.12.2 - resolution: "@types/retry@npm:0.12.2" - checksum: 10/e5675035717b39ce4f42f339657cae9637cf0c0051cf54314a6a2c44d38d91f6544be9ddc0280587789b6afd056be5d99dbe3e9f4df68c286c36321579b1bf4a - languageName: node - linkType: hard - "@types/semver@npm:^7.3.12, @types/semver@npm:^7.5.0": version: 7.5.3 resolution: "@types/semver@npm:7.5.3" @@ -8571,6 +9558,13 @@ __metadata: languageName: node linkType: hard +"data-uri-to-buffer@npm:^4.0.0": + version: 4.0.1 + resolution: "data-uri-to-buffer@npm:4.0.1" + checksum: 10/0d0790b67ffec5302f204c2ccca4494f70b4e2d940fea3d36b09f0bb2b8539c2e86690429eb1f1dc4bcc9e4df0644193073e63d9ee48ac9fce79ec1506e4aa4c + languageName: node + linkType: hard + "data-view-buffer@npm:^1.0.1": version: 1.0.1 resolution: "data-view-buffer@npm:1.0.1" @@ -8843,10 +9837,10 @@ __metadata: languageName: node linkType: hard -"desm@npm:^1.3.0": - version: 1.3.0 - resolution: "desm@npm:1.3.0" - checksum: 10/0954cb5492f787331714dafadd484e8ee4abc7b4ada410b2835408a566ee8f4160eb6b2cd692de68250c3b65db8a1961ac45878137455a01111f18e5b62c5a2c +"desm@npm:^1.3.1": + version: 1.3.1 + resolution: "desm@npm:1.3.1" + checksum: 10/9bf5bfaf863d355b9ea64c71550fc1d7fff9d1e68cd90fa263f0b512f1e520d166f2279a66fc0125633b40ae749e2056d92426f22a7843d8548420ad86332f5d languageName: node linkType: hard @@ -9385,6 +10379,95 @@ __metadata: languageName: node linkType: hard +"esbuild@npm:~0.25.0": + version: 0.25.9 + resolution: "esbuild@npm:0.25.9" + dependencies: + "@esbuild/aix-ppc64": "npm:0.25.9" + "@esbuild/android-arm": "npm:0.25.9" + "@esbuild/android-arm64": "npm:0.25.9" + "@esbuild/android-x64": "npm:0.25.9" + "@esbuild/darwin-arm64": "npm:0.25.9" + "@esbuild/darwin-x64": "npm:0.25.9" + "@esbuild/freebsd-arm64": "npm:0.25.9" + "@esbuild/freebsd-x64": "npm:0.25.9" + "@esbuild/linux-arm": "npm:0.25.9" + "@esbuild/linux-arm64": "npm:0.25.9" + "@esbuild/linux-ia32": "npm:0.25.9" + "@esbuild/linux-loong64": "npm:0.25.9" + "@esbuild/linux-mips64el": "npm:0.25.9" + "@esbuild/linux-ppc64": "npm:0.25.9" + "@esbuild/linux-riscv64": "npm:0.25.9" + "@esbuild/linux-s390x": "npm:0.25.9" + "@esbuild/linux-x64": "npm:0.25.9" + "@esbuild/netbsd-arm64": "npm:0.25.9" + "@esbuild/netbsd-x64": "npm:0.25.9" + "@esbuild/openbsd-arm64": "npm:0.25.9" + "@esbuild/openbsd-x64": "npm:0.25.9" + "@esbuild/openharmony-arm64": "npm:0.25.9" + "@esbuild/sunos-x64": "npm:0.25.9" + "@esbuild/win32-arm64": "npm:0.25.9" + "@esbuild/win32-ia32": "npm:0.25.9" + "@esbuild/win32-x64": "npm:0.25.9" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-arm64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-arm64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/openharmony-arm64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10/fc174ae7f646ad413adb641c7e46f16be575e462ed209866b55d5954d382e5da839e3f3f89a8e42e2b71d48895cc636ba43523011249fe5ff9c63d8d39d3a364 + languageName: node + linkType: hard + "escalade@npm:^3.1.1": version: 3.1.1 resolution: "escalade@npm:3.1.1" @@ -10109,6 +11192,17 @@ __metadata: languageName: node linkType: hard +"fast-xml-parser@npm:5.2.5": + version: 5.2.5 + resolution: "fast-xml-parser@npm:5.2.5" + dependencies: + strnum: "npm:^2.1.0" + bin: + fxparser: src/cli/cli.js + checksum: 10/305017cff6968a34cbac597317be1516e85c44f650f30d982c84f8c30043e81fd38d39a8810d570136c921399dd43b9ac4775bdfbbbcfee96456f3c086b48bdd + languageName: node + linkType: hard + "fast-xml-parser@npm:^4.4.1": version: 4.5.0 resolution: "fast-xml-parser@npm:4.5.0" @@ -10170,6 +11264,16 @@ __metadata: languageName: node linkType: hard +"fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4": + version: 3.2.0 + resolution: "fetch-blob@npm:3.2.0" + dependencies: + node-domexception: "npm:^1.0.0" + web-streams-polyfill: "npm:^3.0.3" + checksum: 10/5264ecceb5fdc19eb51d1d0359921f12730941e333019e673e71eb73921146dceabcb0b8f534582be4497312d656508a439ad0f5edeec2b29ab2e10c72a1f86b + languageName: node + linkType: hard + "figures@npm:^3.0.0": version: 3.2.0 resolution: "figures@npm:3.2.0" @@ -10498,6 +11602,15 @@ __metadata: languageName: node linkType: hard +"formdata-polyfill@npm:^4.0.10": + version: 4.0.10 + resolution: "formdata-polyfill@npm:4.0.10" + dependencies: + fetch-blob: "npm:^3.1.2" + checksum: 10/9b5001d2edef3c9449ac3f48bd4f8cc92e7d0f2e7c1a5c8ba555ad4e77535cc5cf621fabe49e97f304067037282dd9093b9160a3cb533e46420b446c4e6bc06f + languageName: node + linkType: hard + "formidable@npm:^2.0.1": version: 2.1.2 resolution: "formidable@npm:2.1.2" @@ -10539,6 +11652,17 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:^11.2.0": + version: 11.3.1 + resolution: "fs-extra@npm:11.3.1" + dependencies: + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10/2b893213411b1da11f9b061ccb0bcff4d6dd66fe90aa8f5b1616219a5e7ca659da869f454ebd8e94aa21c58342730fb43a2e5c98b5c6c5124f0c54a4633f64b0 + languageName: node + linkType: hard + "fs-extra@npm:^9.0.1, fs-extra@npm:^9.1.0": version: 9.1.0 resolution: "fs-extra@npm:9.1.0" @@ -10598,7 +11722,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": +"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -10608,7 +11732,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": +"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: @@ -10812,6 +11936,15 @@ __metadata: languageName: node linkType: hard +"get-tsconfig@npm:^4.7.5": + version: 4.10.1 + resolution: "get-tsconfig@npm:4.10.1" + dependencies: + resolve-pkg-maps: "npm:^1.0.0" + checksum: 10/04d63f47fdecaefbd1f73ec02949be4ec4db7d6d9fbc8d4e81f9a4bb1c6f876e48943712f2f9236643d3e4d61d9a7b06da08564d08b034631ebe3f5605bef237 + languageName: node + linkType: hard + "github-from-package@npm:0.0.0": version: 0.0.0 resolution: "github-from-package@npm:0.0.0" @@ -11733,13 +12866,6 @@ __metadata: languageName: node linkType: hard -"is-network-error@npm:^1.0.0": - version: 1.0.0 - resolution: "is-network-error@npm:1.0.0" - checksum: 10/2ca2b4b2d420015e0237abe28ebf316fcd26a82304b07432abf155759a3bee6895609ac91e692a72ad61b7fc902c3283b2dece61e1ddb05a6257777a8573e468 - languageName: node - linkType: hard - "is-number-object@npm:^1.0.4": version: 1.0.7 resolution: "is-number-object@npm:1.0.7" @@ -12545,6 +13671,13 @@ __metadata: languageName: node linkType: hard +"jose@npm:^5.7.0": + version: 5.10.0 + resolution: "jose@npm:5.10.0" + checksum: 10/03881d1dfb390dcf50926402edcfe233bf557b5a77321fcb1bdb53453bc1cdd26d2d0a9ab28c7445cbb826881f84fdf5074179700f10c2711ccb9880f51065d7 + languageName: node + linkType: hard + "js-beautify@npm:^1.14.5": version: 1.14.9 resolution: "js-beautify@npm:1.14.9" @@ -12605,6 +13738,13 @@ __metadata: languageName: node linkType: hard +"jsep@npm:^1.4.0": + version: 1.4.0 + resolution: "jsep@npm:1.4.0" + checksum: 10/935824fe6ac28fcff3cd13878f508f99f6c13e7f0f53ec9fca0d3db465e6dd15f8af030bcdc75a38b07c78359c656647435923a26aceb91607027021f00c17f2 + languageName: node + linkType: hard + "jsesc@npm:^2.5.1": version: 2.5.2 resolution: "jsesc@npm:2.5.2" @@ -12700,6 +13840,13 @@ __metadata: languageName: node linkType: hard +"json-stringify-safe@npm:^5.0.1": + version: 5.0.1 + resolution: "json-stringify-safe@npm:5.0.1" + checksum: 10/59169a081e4eeb6f9559ae1f938f656191c000e0512aa6df9f3c8b2437a4ab1823819c6b9fd1818a4e39593ccfd72e9a051fdd3e2d1e340ed913679e888ded8c + languageName: node + linkType: hard + "json5@npm:^0.5.1": version: 0.5.1 resolution: "json5@npm:0.5.1" @@ -12742,10 +13889,17 @@ __metadata: languageName: node linkType: hard -"jsonpath-plus@npm:^7.2.0": - version: 7.2.0 - resolution: "jsonpath-plus@npm:7.2.0" - checksum: 10/f602445b1aa2d55abc2875859fd948f942980ef6400ca2a0362c7a6aa6f912467865262f4d092e04a16889fa74f0dbf6fd67b9dc9583485a5059be6e0a62c6c2 +"jsonpath-plus@npm:^10.2.0": + version: 10.3.0 + resolution: "jsonpath-plus@npm:10.3.0" + dependencies: + "@jsep-plugin/assignment": "npm:^1.3.0" + "@jsep-plugin/regex": "npm:^1.0.4" + jsep: "npm:^1.4.0" + bin: + jsonpath: bin/jsonpath-cli.js + jsonpath-plus: bin/jsonpath-cli.js + checksum: 10/082302334414c7c5ab0cc8239563118f7f14bb2949d001b009f436491d00f94a7a293eed3eaf61ffdaf72f6fda9d25198a4280c4f68a4c403154ca7ed2bd0dc9 languageName: node linkType: hard @@ -13285,13 +14439,20 @@ __metadata: languageName: node linkType: hard -"luxon@npm:^3.2.0, luxon@npm:^3.2.1": +"luxon@npm:^3.2.1": version: 3.4.3 resolution: "luxon@npm:3.4.3" checksum: 10/b155c9961cf45dadae763b0ec2f5a38d81a2197714154c1dece3ed3a553f1984a34138c1856f248863c998cb623796b27de96b7f7286acdeae68220451e24540 languageName: node linkType: hard +"luxon@npm:^3.5.0": + version: 3.7.1 + resolution: "luxon@npm:3.7.1" + checksum: 10/3582460c0e2d4a88f6f0c11df30cac70c7e09a3d595b66b1d04543759a38afe6e5be28c601c4d81ee73d2e8602c65f825e2c8a8542392cc564624f2bf7d6301f + languageName: node + linkType: hard + "make-dir@npm:^1.0.0": version: 1.3.0 resolution: "make-dir@npm:1.3.0" @@ -13868,6 +15029,17 @@ __metadata: languageName: node linkType: hard +"nock@npm:^13.5.6": + version: 13.5.6 + resolution: "nock@npm:13.5.6" + dependencies: + debug: "npm:^4.1.0" + json-stringify-safe: "npm:^5.0.1" + propagate: "npm:^2.0.0" + checksum: 10/a57c265b75e5f7767e2f8baf058773cdbf357c31c5fea2761386ec03a008a657f9df921899fe2a9502773b47145b708863b32345aef529b3c45cba4019120f88 + languageName: node + linkType: hard + "node-abi@npm:^3.3.0": version: 3.68.0 resolution: "node-abi@npm:3.68.0" @@ -13902,6 +15074,13 @@ __metadata: languageName: node linkType: hard +"node-domexception@npm:^1.0.0": + version: 1.0.0 + resolution: "node-domexception@npm:1.0.0" + checksum: 10/e332522f242348c511640c25a6fc7da4f30e09e580c70c6b13cb0be83c78c3e71c8d4665af2527e869fc96848924a4316ae7ec9014c091e2156f41739d4fa233 + languageName: node + linkType: hard + "node-fetch@npm:^2.6.11, node-fetch@npm:^2.6.7, node-fetch@npm:^2.6.8, node-fetch@npm:^2.6.9, node-fetch@npm:^2.7.0": version: 2.7.0 resolution: "node-fetch@npm:2.7.0" @@ -13916,6 +15095,17 @@ __metadata: languageName: node linkType: hard +"node-fetch@npm:^3.3.2": + version: 3.3.2 + resolution: "node-fetch@npm:3.3.2" + dependencies: + data-uri-to-buffer: "npm:^4.0.0" + fetch-blob: "npm:^3.1.4" + formdata-polyfill: "npm:^4.0.10" + checksum: 10/24207ca8c81231c7c59151840e3fded461d67a31cf3e3b3968e12201a42f89ce4a0b5fb7079b1fa0a4655957b1ca9257553200f03a9f668b45ebad265ca5593d + languageName: node + linkType: hard + "node-forge@npm:^1.3.1": version: 1.3.1 resolution: "node-forge@npm:1.3.1" @@ -14430,17 +15620,6 @@ __metadata: languageName: node linkType: hard -"p-retry@npm:^6.1.0": - version: 6.1.0 - resolution: "p-retry@npm:6.1.0" - dependencies: - "@types/retry": "npm:0.12.2" - is-network-error: "npm:^1.0.0" - retry: "npm:^0.13.1" - checksum: 10/5366014084c62f3a3acf5f95d0b7ad36817973e57d4a6638c3d1ad35fc710432840b1acc5b3f30b2943407b1532808a57a08cb5835199fdb02157ccc516b96e8 - languageName: node - linkType: hard - "p-timeout@npm:^3.1.0": version: 3.2.0 resolution: "p-timeout@npm:3.2.0" @@ -14802,6 +15981,13 @@ __metadata: languageName: node linkType: hard +"propagate@npm:^2.0.0": + version: 2.0.1 + resolution: "propagate@npm:2.0.1" + checksum: 10/8c761c16e8232f82f6d015d3e01e8bd4109f47ad804f904d950f6fe319813b448ca112246b6bfdc182b400424b155b0b7c4525a9bb009e6fa950200157569c14 + languageName: node + linkType: hard + "proto-list@npm:~1.2.1": version: 1.2.4 resolution: "proto-list@npm:1.2.4" @@ -15154,6 +16340,13 @@ __metadata: languageName: node linkType: hard +"resolve-pkg-maps@npm:^1.0.0": + version: 1.0.0 + resolution: "resolve-pkg-maps@npm:1.0.0" + checksum: 10/0763150adf303040c304009231314d1e84c6e5ebfa2d82b7d94e96a6e82bacd1dcc0b58ae257315f3c8adb89a91d8d0f12928241cba2df1680fbe6f60bf99b0e + languageName: node + linkType: hard + "resolve.exports@npm:^2.0.0": version: 2.0.2 resolution: "resolve.exports@npm:2.0.2" @@ -15224,7 +16417,7 @@ __metadata: languageName: node linkType: hard -"retry@npm:0.13.1, retry@npm:^0.13.1": +"retry@npm:0.13.1": version: 0.13.1 resolution: "retry@npm:0.13.1" checksum: 10/6125ec2e06d6e47e9201539c887defba4e47f63471db304c59e4b82fc63c8e89ca06a77e9d34939a9a42a76f00774b2f46c0d4a4cbb3e287268bd018ed69426d @@ -15658,37 +16851,39 @@ __metadata: languageName: node linkType: hard -"serverless-offline@npm:13.1.2": - version: 13.1.2 - resolution: "serverless-offline@npm:13.1.2" +"serverless-offline@npm:14.4.0": + version: 14.4.0 + resolution: "serverless-offline@npm:14.4.0" dependencies: - "@aws-sdk/client-lambda": "npm:^3.421.0" + "@aws-sdk/client-lambda": "npm:^3.636.0" "@hapi/boom": "npm:^10.0.1" "@hapi/h2o2": "npm:^10.0.4" - "@hapi/hapi": "npm:^21.3.2" - "@serverless/utils": "npm:^6.15.0" + "@hapi/hapi": "npm:^21.3.10" array-unflat-js: "npm:^0.1.3" boxen: "npm:^7.1.1" chalk: "npm:^5.3.0" - desm: "npm:^1.3.0" + desm: "npm:^1.3.1" execa: "npm:^8.0.1" - fs-extra: "npm:^11.1.1" + fs-extra: "npm:^11.2.0" is-wsl: "npm:^3.1.0" java-invoke-local: "npm:0.0.6" - jose: "npm:^4.14.6" + jose: "npm:^5.7.0" js-string-escape: "npm:^1.0.1" - jsonpath-plus: "npm:^7.2.0" + jsonpath-plus: "npm:^10.2.0" jsonschema: "npm:^1.4.1" jszip: "npm:^3.10.1" - luxon: "npm:^3.2.0" + luxon: "npm:^3.5.0" + nock: "npm:^13.5.6" + node-fetch: "npm:^3.3.2" node-schedule: "npm:^2.1.1" p-memoize: "npm:^7.1.1" - p-retry: "npm:^6.1.0" + tree-kill: "npm:^1.2.2" + tsx: "npm:^4.17.0" velocityjs: "npm:^2.0.6" - ws: "npm:^8.14.2" + ws: "npm:^8.18.0" peerDependencies: - serverless: ^3.2.0 - checksum: 10/bcc5d3cd2dfe2d4b599540f8f6f38533b802325ba291f9e81b8952049ab2d32013b0c1ec874e46ec021fadb5fc1f8474994bb879cd163769c9e1043a0f2b317d + serverless: ^4.0.0 + checksum: 10/727948c2ff126374e8b03e203a8134d31e3aca4f3f16f88c1786261c11a53db56fdfde683e11262b7f551529d4548bb06d4112bfdca97e49b6f2920ab96cdde8 languageName: node linkType: hard @@ -16501,6 +17696,13 @@ __metadata: languageName: node linkType: hard +"strnum@npm:^2.1.0": + version: 2.1.1 + resolution: "strnum@npm:2.1.1" + checksum: 10/d5fe6e4333cddc17569331048e403e876ffcf629989815f0359b0caf05dae9441b7eef3d7dd07427313ac8b3f05a8f60abc1f61efc15f97245dbc24028362bc9 + languageName: node + linkType: hard + "strtok3@npm:^6.2.4": version: 6.3.0 resolution: "strtok3@npm:6.3.0" @@ -16890,6 +18092,15 @@ __metadata: languageName: node linkType: hard +"tree-kill@npm:^1.2.2": + version: 1.2.2 + resolution: "tree-kill@npm:1.2.2" + bin: + tree-kill: cli.js + checksum: 10/49117f5f410d19c84b0464d29afb9642c863bc5ba40fcb9a245d474c6d5cc64d1b177a6e6713129eb346b40aebb9d4631d967517f9fbe8251c35b21b13cd96c7 + languageName: node + linkType: hard + "trim-repeated@npm:^1.0.0": version: 1.0.0 resolution: "trim-repeated@npm:1.0.0" @@ -17078,6 +18289,22 @@ __metadata: languageName: node linkType: hard +"tsx@npm:^4.17.0": + version: 4.20.4 + resolution: "tsx@npm:4.20.4" + dependencies: + esbuild: "npm:~0.25.0" + fsevents: "npm:~2.3.3" + get-tsconfig: "npm:^4.7.5" + dependenciesMeta: + fsevents: + optional: true + bin: + tsx: dist/cli.mjs + checksum: 10/dc5d7b7a15fc67f9e3bd20a6d0b3322bd798aa544ce6ab1e857134ea5803f2cd7ac8f4a2099e4ca842dd6e22f2d5a5ea0e0057f571f4d2101ba64b676ffaea3d + languageName: node + linkType: hard + "tunnel-agent@npm:^0.6.0": version: 0.6.0 resolution: "tunnel-agent@npm:0.6.0" @@ -17693,7 +18920,7 @@ __metadata: serverless-better-credentials: "npm:2.0.0" serverless-iam-roles-per-function: "npm:3.2.0" serverless-mysql: "npm:1.5.4" - serverless-offline: "npm:13.1.2" + serverless-offline: "npm:14.4.0" serverless-plugin-aws-alerts: "npm:1.7.5" serverless-plugin-monorepo: "npm:0.11.0" serverless-plugin-warmup: "npm:8.2.1" @@ -17735,6 +18962,13 @@ __metadata: languageName: node linkType: hard +"web-streams-polyfill@npm:^3.0.3": + version: 3.3.3 + resolution: "web-streams-polyfill@npm:3.3.3" + checksum: 10/8e7e13501b3834094a50abe7c0b6456155a55d7571312b89570012ef47ec2a46d766934768c50aabad10a9c30dd764a407623e8bfcc74fcb58495c29130edea9 + languageName: node + linkType: hard + "webidl-conversions@npm:^3.0.0": version: 3.0.1 resolution: "webidl-conversions@npm:3.0.1" @@ -18057,9 +19291,9 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.14.2": - version: 8.14.2 - resolution: "ws@npm:8.14.2" +"ws@npm:^8.18.0": + version: 8.18.3 + resolution: "ws@npm:8.18.3" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -18068,7 +19302,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 10/815ff01d9bc20a249b2228825d9739268a03a4408c2e0b14d49b0e2ae89d7f10847e813b587ba26992bdc33e9d03bed131e4cae73ff996baf789d53e99c31186 + checksum: 10/725964438d752f0ab0de582cd48d6eeada58d1511c3f613485b5598a83680bedac6187c765b0fe082e2d8cc4341fc57707c813ae780feee82d0c5efe6a4c61b6 languageName: node linkType: hard