From b7217af3a70ec9ec82f5e021a80fe92cff79f221 Mon Sep 17 00:00:00 2001 From: "danilo.moraes" Date: Tue, 12 Aug 2025 11:03:03 -0300 Subject: [PATCH] feat: add local development setup with Docker and Next.js integration - Add start-local.sh script for coordinated Lambda + Next.js startup - Support configurable ports for both services - Add Next.js API proxy route to avoid CORS issues - Enable switching between local and production APIs - Update README with comprehensive local development guide - Add proper cleanup on Ctrl+C for Docker containers --- README.md | 134 +++++- lambda/package.json | 1 + scripts/start-local.sh | 96 ++++ web/app/api/run/route.ts | 29 ++ web/package.json | 1 + web/src/api.ts | 10 +- web/yarn.lock | 933 +-------------------------------------- 7 files changed, 257 insertions(+), 947 deletions(-) create mode 100755 scripts/start-local.sh create mode 100644 web/app/api/run/route.ts diff --git a/README.md b/README.md index b592725..d996d1b 100644 --- a/README.md +++ b/README.md @@ -17,33 +17,139 @@ Stop drawing recursion trees by hand. Watch the [demo video](https://youtu.be/1f ## Local development -### Web +### Prerequisites + +- [Node.js](https://nodejs.org/) (20.x for web, 14.x for lambda) +- [Docker](https://www.docker.com/) for running the Lambda function +- [Yarn](https://yarnpkg.com/) (recommended) or npm + +### Quick Start (Recommended) + +The easiest way to run the full project locally is using the provided script: + +```bash +# Clone the repository +$ git clone +$ cd recursion-tree-visualizer + +# Install web dependencies +$ cd web && yarn install && cd .. + +# Install lambda dependencies +$ cd lambda && npm install && cd .. + +# Start both services (Lambda + Next.js) +$ cd web && yarn local +``` + +This will: +- Build and run the Lambda function on port 8080 using Docker +- Start the Next.js development server on port 3003 +- Automatically configure the web app to use the local Lambda +- Clean up Docker containers when you press Ctrl+C -In the `web` directory, run: +**Access the app at:** http://localhost:3003 + +### Custom Ports + +You can specify custom ports for both services: ```bash -# to install all dependencies +# Lambda on 8081, Web on 3004 +$ cd web && yarn local -- 8081 3004 + +# Or using environment variables +$ cd web && LAMBDA_PORT=8081 WEB_PORT=3004 yarn local +``` + +### Manual Setup (Advanced) + +If you prefer to run services separately: + +#### 1. Lambda Function + +```bash +$ cd lambda + +# Install dependencies $ npm install -# to run the app on http://localhost:3003 -$ npm run start +# Build and run with Docker (detached) +$ npm run locald + +# Or with custom port +$ PORT=8081 npm run locald + +# Test the function +$ curl -XPOST "http://localhost:8080/2015-03-31/functions/function/invocations" \ + -d '{"body":"{\"lang\":\"javascript\",\"functionData\":{\"body\":\"function fibonacci(n) { return n <= 1 ? n : fibonacci(n-1) + fibonacci(n-2); }\",\"params\":[{\"name\":\"n\",\"initialValue\":\"5\"}]},\"options\":{\"memoize\":false}}"}' ``` -### Lambda +#### 2. Web Application + +```bash +$ cd web + +# Install dependencies +$ yarn install + +# For local development (uses local Lambda) +$ NEXT_PUBLIC_USE_LOCAL_API=true yarn dev + +# For production mode (uses AWS API) +$ yarn dev +``` + +### Environment Configuration + +The web application can run in two modes: + +#### Local Development Mode +- Set `NEXT_PUBLIC_USE_LOCAL_API=true` +- Uses local Lambda function via `/api/run` proxy +- Avoids CORS issues -You can use the Amazon Runtime Interface Emulator (RIE), already contained in the docker image, to test the Lambda function. +#### Production Mode (Default) +- Uses AWS Lambda endpoint: `https://c1y17h6s33.execute-api.us-east-1.amazonaws.com/production/run` +- No local setup required -In the `lambda` directory, run: +### Environment Variables +Create `web/.env.local` for custom configuration: + +```env +# Use local Lambda instead of AWS +NEXT_PUBLIC_USE_LOCAL_API=true + +# Local Lambda port (for API proxy) +LAMBDA_PORT=8080 +``` + +### Troubleshooting + +#### Docker Issues ```bash -# build your local image -$ docker build --tag rtv . +# Stop any running containers +$ docker stop $(docker ps -q --filter ancestor=rtv) -# create and run a container using AWS RIE as executable to emulate a server for your lambda function -$ docker run --rm -p 8080:8080 rtv +# Remove old images +$ docker rmi rtv +``` -# make a http request to your function, passing event with the -d in body field (escaped json), see examples in requests.http file -$ curl -XPOST "http://localhost:8080/2015-03-31/functions/function/invocations" -d '{"body":"{}"}' +#### Port Conflicts +```bash +# Check what's using a port +$ lsof -i :8080 + +# Use different ports +$ cd web && yarn local -- 8081 3004 +``` + +#### Clean Restart +```bash +# Stop all services, clean Docker, and restart +$ docker stop $(docker ps -q --filter ancestor=rtv) +$ cd web && yarn local ``` ## Deploy to production diff --git a/lambda/package.json b/lambda/package.json index 0fd9b12..620e9bc 100644 --- a/lambda/package.json +++ b/lambda/package.json @@ -11,6 +11,7 @@ "scripts": { "build": "npx tsc", "local": "docker build --platform linux/arm64 -t rtv . && docker run --rm -p 8080:8080 rtv", + "locald": "docker build --platform linux/arm64 -t rtv . && docker run --rm -p ${PORT:-8080}:8080 -d rtv", "test": "DEBUG='app:*,test:*' npx jest --config jest.config.js", "test:cov": "npx jest --config jest.config.js --coverage", "typesync": "npx typesync" diff --git a/scripts/start-local.sh b/scripts/start-local.sh new file mode 100755 index 0000000..b917448 --- /dev/null +++ b/scripts/start-local.sh @@ -0,0 +1,96 @@ +#!/bin/bash + +# Default ports - use env vars first, then command line args, then defaults +LAMBDA_PORT=${LAMBDA_PORT:-${1:-8080}} +WEB_PORT=${WEB_PORT:-${2:-3003}} + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# Variables for tracking +CONTAINER_ID="" +NEXTJS_PID="" + +# Show usage if help requested +if [[ "$1" == "-h" || "$1" == "--help" ]]; then + echo "Usage: $0 [LAMBDA_PORT] [WEB_PORT]" + echo "" + echo "Arguments:" + echo " LAMBDA_PORT Port for Lambda RIE (default: 8080)" + echo " WEB_PORT Port for Next.js dev server (default: 3003)" + echo "" + echo "Examples:" + echo " $0 # Use default ports (8080, 3003)" + echo " $0 8081 # Lambda on 8081, Web on 3003" + echo " $0 8081 3004 # Lambda on 8081, Web on 3004" + echo " yarn local -- 8081 3004 # Via yarn with arguments" + echo " LAMBDA_PORT=8081 yarn local # Via environment variables" + exit 0 +fi + +# Cleanup function +cleanup() { + echo -e "\n${YELLOW}Shutting down services...${NC}" + + # Kill Next.js process if running + if [ ! -z "$NEXTJS_PID" ]; then + echo -e "${YELLOW}Stopping Next.js (PID: $NEXTJS_PID)...${NC}" + kill $NEXTJS_PID 2>/dev/null + wait $NEXTJS_PID 2>/dev/null + fi + + # Stop Docker container if we have the ID + if [ ! -z "$CONTAINER_ID" ]; then + echo -e "${YELLOW}Stopping Docker container ($CONTAINER_ID)...${NC}" + docker stop $CONTAINER_ID 2>/dev/null + fi + + echo -e "${GREEN}All services stopped!${NC}" + exit 0 +} + +# Set trap to catch Ctrl+C +trap cleanup SIGINT SIGTERM + +echo -e "${GREEN}Starting Recursion Tree Visualizer locally...${NC}" + +# Start Lambda container with custom port +echo -e "${YELLOW}Starting Lambda container on port $LAMBDA_PORT...${NC}" +cd ../lambda +PORT=$LAMBDA_PORT npm run locald || { + echo -e "${RED}Failed to start Lambda container${NC}" + exit 1 +} + +# Get the container ID of the most recently started rtv container +CONTAINER_ID=$(docker ps --filter "ancestor=rtv" --format "{{.ID}}" | head -1) + +if [ -z "$CONTAINER_ID" ]; then + echo -e "${RED}Could not find running Lambda container${NC}" + exit 1 +fi + +echo -e "${GREEN}Lambda container started with ID: $CONTAINER_ID${NC}" + +# Wait for Lambda to be ready +echo -e "${YELLOW}Waiting for Lambda to be ready...${NC}" + +# Start Next.js in background +echo -e "${YELLOW}Starting Next.js development server on port $WEB_PORT...${NC}" +cd ../web +LAMBDA_PORT=$LAMBDA_PORT NEXT_PUBLIC_USE_LOCAL_API=true yarn dev --port $WEB_PORT & +NEXTJS_PID=$! + +echo -e "${GREEN}Services started!${NC}" +echo -e "${GREEN}Lambda RIE: http://localhost:$LAMBDA_PORT${NC}" +echo -e "${GREEN}Next.js App: http://localhost:$WEB_PORT${NC}" +echo -e "${YELLOW}Press Ctrl+C to stop all services${NC}" + +# Wait for Next.js process to finish (or be killed) +wait $NEXTJS_PID + +# If we reach here, Next.js exited naturally, so cleanup +cleanup diff --git a/web/app/api/run/route.ts b/web/app/api/run/route.ts new file mode 100644 index 0000000..be87c7f --- /dev/null +++ b/web/app/api/run/route.ts @@ -0,0 +1,29 @@ +const LAMBDA_PORT = process.env.LAMBDA_PORT ?? '8080' +const RIE_INVOKE_URL = process.env.RIE_INVOKE_URL ?? + `http://localhost:${LAMBDA_PORT}/2015-03-31/functions/function/invocations` + +type ApiGatewayProxyResult = { + statusCode: number + body: string + headers?: Record +} + +export async function POST(request: Request): Promise { + const requestJson = await request.json() + const apiGatewayEvent = { body: JSON.stringify(requestJson) } + + const upstreamResponse = await fetch(RIE_INVOKE_URL, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(apiGatewayEvent), + }) + + const upstreamJson = await upstreamResponse.json() as ApiGatewayProxyResult + + return new Response(upstreamJson.body, { + status: upstreamJson.statusCode, + headers: upstreamJson.headers, + }) +} + + diff --git a/web/package.json b/web/package.json index cc1e78a..7ffcac0 100644 --- a/web/package.json +++ b/web/package.json @@ -9,6 +9,7 @@ }, "packageManager": "yarn@1.22.22", "scripts": { + "local": "../scripts/start-local.sh", "dev": "next dev --port 3003", "build": "next build", "start": "next start", diff --git a/web/src/api.ts b/web/src/api.ts index 20277bd..ef2e94a 100644 --- a/web/src/api.ts +++ b/web/src/api.ts @@ -10,11 +10,18 @@ type RequestBody = { } } +// Configuration for API endpoint +const USE_LOCAL_API = process.env.NEXT_PUBLIC_USE_LOCAL_API === 'true' +const PRODUCTION_API_URL = 'https://c1y17h6s33.execute-api.us-east-1.amazonaws.com/production/run' +const LOCAL_API_URL = '/api/run' + +const API_ENDPOINT = USE_LOCAL_API ? LOCAL_API_URL : PRODUCTION_API_URL + export const runFunction = async ( requestBody: RequestBody ): Promise> => { try { - const response = await fetch('https://c1y17h6s33.execute-api.us-east-1.amazonaws.com/production/run', { + const response = await fetch(API_ENDPOINT, { method: 'POST', headers: { 'Content-Type': 'application/json', @@ -22,6 +29,7 @@ export const runFunction = async ( mode: 'cors', body: safeStringify(requestBody), }) + const responseBody = await response.text() if (response.ok) { diff --git a/web/yarn.lock b/web/yarn.lock index 58ae4b0..53c293e 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -24,468 +24,6 @@ jsonpointer "^5.0.0" leven "^3.1.0" -"@aws-crypto/crc32@5.2.0": - version "5.2.0" - resolved "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz" - integrity sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg== - dependencies: - "@aws-crypto/util" "^5.2.0" - "@aws-sdk/types" "^3.222.0" - tslib "^2.6.2" - -"@aws-crypto/sha256-browser@5.2.0": - version "5.2.0" - resolved "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz" - integrity sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw== - dependencies: - "@aws-crypto/sha256-js" "^5.2.0" - "@aws-crypto/supports-web-crypto" "^5.2.0" - "@aws-crypto/util" "^5.2.0" - "@aws-sdk/types" "^3.222.0" - "@aws-sdk/util-locate-window" "^3.0.0" - "@smithy/util-utf8" "^2.0.0" - tslib "^2.6.2" - -"@aws-crypto/sha256-js@5.2.0", "@aws-crypto/sha256-js@^5.2.0": - version "5.2.0" - resolved "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz" - integrity sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA== - dependencies: - "@aws-crypto/util" "^5.2.0" - "@aws-sdk/types" "^3.222.0" - tslib "^2.6.2" - -"@aws-crypto/supports-web-crypto@^5.2.0": - version "5.2.0" - resolved "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz" - integrity sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg== - dependencies: - tslib "^2.6.2" - -"@aws-crypto/util@^5.2.0": - version "5.2.0" - resolved "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz" - integrity sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ== - dependencies: - "@aws-sdk/types" "^3.222.0" - "@smithy/util-utf8" "^2.0.0" - tslib "^2.6.2" - -"@aws-sdk/client-lambda@^3.688.0": - version "3.688.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.688.0.tgz" - integrity sha512-CArdmevkUbqDQuVjDsjrWxZpzV2I4gOCGcksw63Pz482OFqbHzvWvuyButdNPCpOGdh5RczVrEa91VKTpFRJAg== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.687.0" - "@aws-sdk/client-sts" "3.687.0" - "@aws-sdk/core" "3.686.0" - "@aws-sdk/credential-provider-node" "3.687.0" - "@aws-sdk/middleware-host-header" "3.686.0" - "@aws-sdk/middleware-logger" "3.686.0" - "@aws-sdk/middleware-recursion-detection" "3.686.0" - "@aws-sdk/middleware-user-agent" "3.687.0" - "@aws-sdk/region-config-resolver" "3.686.0" - "@aws-sdk/types" "3.686.0" - "@aws-sdk/util-endpoints" "3.686.0" - "@aws-sdk/util-user-agent-browser" "3.686.0" - "@aws-sdk/util-user-agent-node" "3.687.0" - "@smithy/config-resolver" "^3.0.10" - "@smithy/core" "^2.5.1" - "@smithy/eventstream-serde-browser" "^3.0.11" - "@smithy/eventstream-serde-config-resolver" "^3.0.8" - "@smithy/eventstream-serde-node" "^3.0.10" - "@smithy/fetch-http-handler" "^4.0.0" - "@smithy/hash-node" "^3.0.8" - "@smithy/invalid-dependency" "^3.0.8" - "@smithy/middleware-content-length" "^3.0.10" - "@smithy/middleware-endpoint" "^3.2.1" - "@smithy/middleware-retry" "^3.0.25" - "@smithy/middleware-serde" "^3.0.8" - "@smithy/middleware-stack" "^3.0.8" - "@smithy/node-config-provider" "^3.1.9" - "@smithy/node-http-handler" "^3.2.5" - "@smithy/protocol-http" "^4.1.5" - "@smithy/smithy-client" "^3.4.2" - "@smithy/types" "^3.6.0" - "@smithy/url-parser" "^3.0.8" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.25" - "@smithy/util-defaults-mode-node" "^3.0.25" - "@smithy/util-endpoints" "^2.1.4" - "@smithy/util-middleware" "^3.0.8" - "@smithy/util-retry" "^3.0.8" - "@smithy/util-stream" "^3.2.1" - "@smithy/util-utf8" "^3.0.0" - "@smithy/util-waiter" "^3.1.7" - tslib "^2.6.2" - -"@aws-sdk/client-sso-oidc@3.687.0": - version "3.687.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.687.0.tgz" - integrity sha512-Rdd8kLeTeh+L5ZuG4WQnWgYgdv7NorytKdZsGjiag1D8Wv3PcJvPqqWdgnI0Og717BSXVoaTYaN34FyqFYSx6Q== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.686.0" - "@aws-sdk/credential-provider-node" "3.687.0" - "@aws-sdk/middleware-host-header" "3.686.0" - "@aws-sdk/middleware-logger" "3.686.0" - "@aws-sdk/middleware-recursion-detection" "3.686.0" - "@aws-sdk/middleware-user-agent" "3.687.0" - "@aws-sdk/region-config-resolver" "3.686.0" - "@aws-sdk/types" "3.686.0" - "@aws-sdk/util-endpoints" "3.686.0" - "@aws-sdk/util-user-agent-browser" "3.686.0" - "@aws-sdk/util-user-agent-node" "3.687.0" - "@smithy/config-resolver" "^3.0.10" - "@smithy/core" "^2.5.1" - "@smithy/fetch-http-handler" "^4.0.0" - "@smithy/hash-node" "^3.0.8" - "@smithy/invalid-dependency" "^3.0.8" - "@smithy/middleware-content-length" "^3.0.10" - "@smithy/middleware-endpoint" "^3.2.1" - "@smithy/middleware-retry" "^3.0.25" - "@smithy/middleware-serde" "^3.0.8" - "@smithy/middleware-stack" "^3.0.8" - "@smithy/node-config-provider" "^3.1.9" - "@smithy/node-http-handler" "^3.2.5" - "@smithy/protocol-http" "^4.1.5" - "@smithy/smithy-client" "^3.4.2" - "@smithy/types" "^3.6.0" - "@smithy/url-parser" "^3.0.8" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.25" - "@smithy/util-defaults-mode-node" "^3.0.25" - "@smithy/util-endpoints" "^2.1.4" - "@smithy/util-middleware" "^3.0.8" - "@smithy/util-retry" "^3.0.8" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@aws-sdk/client-sso@3.687.0": - version "3.687.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.687.0.tgz" - integrity sha512-dfj0y9fQyX4kFill/ZG0BqBTLQILKlL7+O5M4F9xlsh2WNuV2St6WtcOg14Y1j5UODPJiJs//pO+mD1lihT5Kw== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/core" "3.686.0" - "@aws-sdk/middleware-host-header" "3.686.0" - "@aws-sdk/middleware-logger" "3.686.0" - "@aws-sdk/middleware-recursion-detection" "3.686.0" - "@aws-sdk/middleware-user-agent" "3.687.0" - "@aws-sdk/region-config-resolver" "3.686.0" - "@aws-sdk/types" "3.686.0" - "@aws-sdk/util-endpoints" "3.686.0" - "@aws-sdk/util-user-agent-browser" "3.686.0" - "@aws-sdk/util-user-agent-node" "3.687.0" - "@smithy/config-resolver" "^3.0.10" - "@smithy/core" "^2.5.1" - "@smithy/fetch-http-handler" "^4.0.0" - "@smithy/hash-node" "^3.0.8" - "@smithy/invalid-dependency" "^3.0.8" - "@smithy/middleware-content-length" "^3.0.10" - "@smithy/middleware-endpoint" "^3.2.1" - "@smithy/middleware-retry" "^3.0.25" - "@smithy/middleware-serde" "^3.0.8" - "@smithy/middleware-stack" "^3.0.8" - "@smithy/node-config-provider" "^3.1.9" - "@smithy/node-http-handler" "^3.2.5" - "@smithy/protocol-http" "^4.1.5" - "@smithy/smithy-client" "^3.4.2" - "@smithy/types" "^3.6.0" - "@smithy/url-parser" "^3.0.8" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.25" - "@smithy/util-defaults-mode-node" "^3.0.25" - "@smithy/util-endpoints" "^2.1.4" - "@smithy/util-middleware" "^3.0.8" - "@smithy/util-retry" "^3.0.8" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@aws-sdk/client-sts@3.687.0": - version "3.687.0" - resolved "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.687.0.tgz" - integrity sha512-SQjDH8O4XCTtouuCVYggB0cCCrIaTzUZIkgJUpOsIEJBLlTbNOb/BZqUShAQw2o9vxr2rCeOGjAQOYPysW/Pmg== - dependencies: - "@aws-crypto/sha256-browser" "5.2.0" - "@aws-crypto/sha256-js" "5.2.0" - "@aws-sdk/client-sso-oidc" "3.687.0" - "@aws-sdk/core" "3.686.0" - "@aws-sdk/credential-provider-node" "3.687.0" - "@aws-sdk/middleware-host-header" "3.686.0" - "@aws-sdk/middleware-logger" "3.686.0" - "@aws-sdk/middleware-recursion-detection" "3.686.0" - "@aws-sdk/middleware-user-agent" "3.687.0" - "@aws-sdk/region-config-resolver" "3.686.0" - "@aws-sdk/types" "3.686.0" - "@aws-sdk/util-endpoints" "3.686.0" - "@aws-sdk/util-user-agent-browser" "3.686.0" - "@aws-sdk/util-user-agent-node" "3.687.0" - "@smithy/config-resolver" "^3.0.10" - "@smithy/core" "^2.5.1" - "@smithy/fetch-http-handler" "^4.0.0" - "@smithy/hash-node" "^3.0.8" - "@smithy/invalid-dependency" "^3.0.8" - "@smithy/middleware-content-length" "^3.0.10" - "@smithy/middleware-endpoint" "^3.2.1" - "@smithy/middleware-retry" "^3.0.25" - "@smithy/middleware-serde" "^3.0.8" - "@smithy/middleware-stack" "^3.0.8" - "@smithy/node-config-provider" "^3.1.9" - "@smithy/node-http-handler" "^3.2.5" - "@smithy/protocol-http" "^4.1.5" - "@smithy/smithy-client" "^3.4.2" - "@smithy/types" "^3.6.0" - "@smithy/url-parser" "^3.0.8" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-body-length-node" "^3.0.0" - "@smithy/util-defaults-mode-browser" "^3.0.25" - "@smithy/util-defaults-mode-node" "^3.0.25" - "@smithy/util-endpoints" "^2.1.4" - "@smithy/util-middleware" "^3.0.8" - "@smithy/util-retry" "^3.0.8" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@aws-sdk/core@3.686.0": - version "3.686.0" - resolved "https://registry.npmjs.org/@aws-sdk/core/-/core-3.686.0.tgz" - integrity sha512-Xt3DV4DnAT3v2WURwzTxWQK34Ew+iiLzoUoguvLaZrVMFOqMMrwVjP+sizqIaHp1j7rGmFcN5I8saXnsDLuQLA== - dependencies: - "@aws-sdk/types" "3.686.0" - "@smithy/core" "^2.5.1" - "@smithy/node-config-provider" "^3.1.9" - "@smithy/property-provider" "^3.1.7" - "@smithy/protocol-http" "^4.1.5" - "@smithy/signature-v4" "^4.2.0" - "@smithy/smithy-client" "^3.4.2" - "@smithy/types" "^3.6.0" - "@smithy/util-middleware" "^3.0.8" - fast-xml-parser "4.4.1" - tslib "^2.6.2" - -"@aws-sdk/credential-provider-env@3.686.0": - version "3.686.0" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.686.0.tgz" - integrity sha512-osD7lPO8OREkgxPiTWmA1i6XEmOth1uW9HWWj/+A2YGCj1G/t2sHu931w4Qj9NWHYZtbTTXQYVRg+TErALV7nQ== - dependencies: - "@aws-sdk/core" "3.686.0" - "@aws-sdk/types" "3.686.0" - "@smithy/property-provider" "^3.1.7" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@aws-sdk/credential-provider-http@3.686.0": - version "3.686.0" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.686.0.tgz" - integrity sha512-xyGAD/f3vR/wssUiZrNFWQWXZvI4zRm2wpHhoHA1cC2fbRMNFYtFn365yw6dU7l00ZLcdFB1H119AYIUZS7xbw== - dependencies: - "@aws-sdk/core" "3.686.0" - "@aws-sdk/types" "3.686.0" - "@smithy/fetch-http-handler" "^4.0.0" - "@smithy/node-http-handler" "^3.2.5" - "@smithy/property-provider" "^3.1.7" - "@smithy/protocol-http" "^4.1.5" - "@smithy/smithy-client" "^3.4.2" - "@smithy/types" "^3.6.0" - "@smithy/util-stream" "^3.2.1" - tslib "^2.6.2" - -"@aws-sdk/credential-provider-ini@3.687.0": - version "3.687.0" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.687.0.tgz" - integrity sha512-6d5ZJeZch+ZosJccksN0PuXv7OSnYEmanGCnbhUqmUSz9uaVX6knZZfHCZJRgNcfSqg9QC0zsFA/51W5HCUqSQ== - dependencies: - "@aws-sdk/core" "3.686.0" - "@aws-sdk/credential-provider-env" "3.686.0" - "@aws-sdk/credential-provider-http" "3.686.0" - "@aws-sdk/credential-provider-process" "3.686.0" - "@aws-sdk/credential-provider-sso" "3.687.0" - "@aws-sdk/credential-provider-web-identity" "3.686.0" - "@aws-sdk/types" "3.686.0" - "@smithy/credential-provider-imds" "^3.2.4" - "@smithy/property-provider" "^3.1.7" - "@smithy/shared-ini-file-loader" "^3.1.8" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@aws-sdk/credential-provider-node@3.687.0": - version "3.687.0" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.687.0.tgz" - integrity sha512-Pqld8Nx11NYaBUrVk3bYiGGpLCxkz8iTONlpQWoVWFhSOzlO7zloNOaYbD2XgFjjqhjlKzE91drs/f41uGeCTA== - dependencies: - "@aws-sdk/credential-provider-env" "3.686.0" - "@aws-sdk/credential-provider-http" "3.686.0" - "@aws-sdk/credential-provider-ini" "3.687.0" - "@aws-sdk/credential-provider-process" "3.686.0" - "@aws-sdk/credential-provider-sso" "3.687.0" - "@aws-sdk/credential-provider-web-identity" "3.686.0" - "@aws-sdk/types" "3.686.0" - "@smithy/credential-provider-imds" "^3.2.4" - "@smithy/property-provider" "^3.1.7" - "@smithy/shared-ini-file-loader" "^3.1.8" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@aws-sdk/credential-provider-process@3.686.0": - version "3.686.0" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.686.0.tgz" - integrity sha512-sXqaAgyzMOc+dm4CnzAR5Q6S9OWVHyZjLfW6IQkmGjqeQXmZl24c4E82+w64C+CTkJrFLzH1VNOYp1Hy5gE6Qw== - dependencies: - "@aws-sdk/core" "3.686.0" - "@aws-sdk/types" "3.686.0" - "@smithy/property-provider" "^3.1.7" - "@smithy/shared-ini-file-loader" "^3.1.8" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@aws-sdk/credential-provider-sso@3.687.0": - version "3.687.0" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.687.0.tgz" - integrity sha512-N1YCoE7DovIRF2ReyRrA4PZzF0WNi4ObPwdQQkVxhvSm7PwjbWxrfq7rpYB+6YB1Uq3QPzgVwUFONE36rdpxUQ== - dependencies: - "@aws-sdk/client-sso" "3.687.0" - "@aws-sdk/core" "3.686.0" - "@aws-sdk/token-providers" "3.686.0" - "@aws-sdk/types" "3.686.0" - "@smithy/property-provider" "^3.1.7" - "@smithy/shared-ini-file-loader" "^3.1.8" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@aws-sdk/credential-provider-web-identity@3.686.0": - version "3.686.0" - resolved "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.686.0.tgz" - integrity sha512-40UqCpPxyHCXDP7CGd9JIOZDgDZf+u1OyLaGBpjQJlz1HYuEsIWnnbTe29Yg3Ah/Zc3g4NBWcUdlGVotlnpnDg== - dependencies: - "@aws-sdk/core" "3.686.0" - "@aws-sdk/types" "3.686.0" - "@smithy/property-provider" "^3.1.7" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@aws-sdk/middleware-host-header@3.686.0": - version "3.686.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.686.0.tgz" - integrity sha512-+Yc6rO02z+yhFbHmRZGvEw1vmzf/ifS9a4aBjJGeVVU+ZxaUvnk+IUZWrj4YQopUQ+bSujmMUzJLXSkbDq7yuw== - dependencies: - "@aws-sdk/types" "3.686.0" - "@smithy/protocol-http" "^4.1.5" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@aws-sdk/middleware-logger@3.686.0": - version "3.686.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.686.0.tgz" - integrity sha512-cX43ODfA2+SPdX7VRxu6gXk4t4bdVJ9pkktbfnkE5t27OlwNfvSGGhnHrQL8xTOFeyQ+3T+oowf26gf1OI+vIg== - dependencies: - "@aws-sdk/types" "3.686.0" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@aws-sdk/middleware-recursion-detection@3.686.0": - version "3.686.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.686.0.tgz" - integrity sha512-jF9hQ162xLgp9zZ/3w5RUNhmwVnXDBlABEUX8jCgzaFpaa742qR/KKtjjZQ6jMbQnP+8fOCSXFAVNMU+s6v81w== - dependencies: - "@aws-sdk/types" "3.686.0" - "@smithy/protocol-http" "^4.1.5" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@aws-sdk/middleware-user-agent@3.687.0": - version "3.687.0" - resolved "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.687.0.tgz" - integrity sha512-nUgsKiEinyA50CaDXojAkOasAU3Apdg7Qox6IjNUC4ZjgOu7QWsCDB5N28AYMUt06cNYeYQdfMX1aEzG85a1Mg== - dependencies: - "@aws-sdk/core" "3.686.0" - "@aws-sdk/types" "3.686.0" - "@aws-sdk/util-endpoints" "3.686.0" - "@smithy/core" "^2.5.1" - "@smithy/protocol-http" "^4.1.5" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@aws-sdk/region-config-resolver@3.686.0": - version "3.686.0" - resolved "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.686.0.tgz" - integrity sha512-6zXD3bSD8tcsMAVVwO1gO7rI1uy2fCD3czgawuPGPopeLiPpo6/3FoUWCQzk2nvEhj7p9Z4BbjwZGSlRkVrXTw== - dependencies: - "@aws-sdk/types" "3.686.0" - "@smithy/node-config-provider" "^3.1.9" - "@smithy/types" "^3.6.0" - "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.8" - tslib "^2.6.2" - -"@aws-sdk/token-providers@3.686.0": - version "3.686.0" - resolved "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.686.0.tgz" - integrity sha512-9oL4kTCSePFmyKPskibeiOXV6qavPZ63/kXM9Wh9V6dTSvBtLeNnMxqGvENGKJcTdIgtoqyqA6ET9u0PJ5IRIg== - dependencies: - "@aws-sdk/types" "3.686.0" - "@smithy/property-provider" "^3.1.7" - "@smithy/shared-ini-file-loader" "^3.1.8" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@aws-sdk/types@3.686.0", "@aws-sdk/types@^3.222.0": - version "3.686.0" - resolved "https://registry.npmjs.org/@aws-sdk/types/-/types-3.686.0.tgz" - integrity sha512-xFnrb3wxOoJcW2Xrh63ZgFo5buIu9DF7bOHnwoUxHdNpUXicUh0AHw85TjXxyxIAd0d1psY/DU7QHoNI3OswgQ== - dependencies: - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@aws-sdk/util-endpoints@3.686.0": - version "3.686.0" - resolved "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.686.0.tgz" - integrity sha512-7msZE2oYl+6QYeeRBjlDgxQUhq/XRky3cXE0FqLFs2muLS7XSuQEXkpOXB3R782ygAP6JX0kmBxPTLurRTikZg== - dependencies: - "@aws-sdk/types" "3.686.0" - "@smithy/types" "^3.6.0" - "@smithy/util-endpoints" "^2.1.4" - tslib "^2.6.2" - -"@aws-sdk/util-locate-window@^3.0.0": - version "3.679.0" - resolved "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.679.0.tgz" - integrity sha512-zKTd48/ZWrCplkXpYDABI74rQlbR0DNHs8nH95htfSLj9/mWRSwaGptoxwcihaq/77vi/fl2X3y0a1Bo8bt7RA== - dependencies: - tslib "^2.6.2" - -"@aws-sdk/util-user-agent-browser@3.686.0": - version "3.686.0" - resolved "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.686.0.tgz" - integrity sha512-YiQXeGYZegF1b7B2GOR61orhgv79qmI0z7+Agm3NXLO6hGfVV3kFUJbXnjtH1BgWo5hbZYW7HQ2omGb3dnb6Lg== - dependencies: - "@aws-sdk/types" "3.686.0" - "@smithy/types" "^3.6.0" - bowser "^2.11.0" - tslib "^2.6.2" - -"@aws-sdk/util-user-agent-node@3.687.0": - version "3.687.0" - resolved "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.687.0.tgz" - integrity sha512-idkP6ojSTZ4ek1pJ8wIN7r9U3KR5dn0IkJn3KQBXQ58LWjkRqLtft2vxzdsktWwhPKjjmIKl1S0kbvqLawf8XQ== - dependencies: - "@aws-sdk/middleware-user-agent" "3.687.0" - "@aws-sdk/types" "3.686.0" - "@smithy/node-config-provider" "^3.1.9" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.25.7", "@babel/code-frame@^7.8.3": version "7.25.7" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz" @@ -2409,453 +1947,6 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@smithy/abort-controller@^3.1.6": - version "3.1.6" - resolved "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.6.tgz" - integrity sha512-0XuhuHQlEqbNQZp7QxxrFTdVWdwxch4vjxYgfInF91hZFkPxf9QDrdQka0KfxFMPqLNzSw0b95uGTrLliQUavQ== - dependencies: - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@smithy/config-resolver@^3.0.10": - version "3.0.10" - resolved "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.10.tgz" - integrity sha512-Uh0Sz9gdUuz538nvkPiyv1DZRX9+D15EKDtnQP5rYVAzM/dnYk3P8cg73jcxyOitPgT3mE3OVj7ky7sibzHWkw== - dependencies: - "@smithy/node-config-provider" "^3.1.9" - "@smithy/types" "^3.6.0" - "@smithy/util-config-provider" "^3.0.0" - "@smithy/util-middleware" "^3.0.8" - tslib "^2.6.2" - -"@smithy/core@^2.5.1": - version "2.5.1" - resolved "https://registry.npmjs.org/@smithy/core/-/core-2.5.1.tgz" - integrity sha512-DujtuDA7BGEKExJ05W5OdxCoyekcKT3Rhg1ZGeiUWaz2BJIWXjZmsG/DIP4W48GHno7AQwRsaCb8NcBgH3QZpg== - dependencies: - "@smithy/middleware-serde" "^3.0.8" - "@smithy/protocol-http" "^4.1.5" - "@smithy/types" "^3.6.0" - "@smithy/util-body-length-browser" "^3.0.0" - "@smithy/util-middleware" "^3.0.8" - "@smithy/util-stream" "^3.2.1" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@smithy/credential-provider-imds@^3.2.4", "@smithy/credential-provider-imds@^3.2.5": - version "3.2.5" - resolved "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.5.tgz" - integrity sha512-4FTQGAsuwqTzVMmiRVTn0RR9GrbRfkP0wfu/tXWVHd2LgNpTY0uglQpIScXK4NaEyXbB3JmZt8gfVqO50lP8wg== - dependencies: - "@smithy/node-config-provider" "^3.1.9" - "@smithy/property-provider" "^3.1.8" - "@smithy/types" "^3.6.0" - "@smithy/url-parser" "^3.0.8" - tslib "^2.6.2" - -"@smithy/eventstream-codec@^3.1.7": - version "3.1.7" - resolved "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-3.1.7.tgz" - integrity sha512-kVSXScIiRN7q+s1x7BrQtZ1Aa9hvvP9FeCqCdBxv37GimIHgBCOnZ5Ip80HLt0DhnAKpiobFdGqTFgbaJNrazA== - dependencies: - "@aws-crypto/crc32" "5.2.0" - "@smithy/types" "^3.6.0" - "@smithy/util-hex-encoding" "^3.0.0" - tslib "^2.6.2" - -"@smithy/eventstream-serde-browser@^3.0.11": - version "3.0.11" - resolved "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.11.tgz" - integrity sha512-Pd1Wnq3CQ/v2SxRifDUihvpXzirJYbbtXfEnnLV/z0OGCTx/btVX74P86IgrZkjOydOASBGXdPpupYQI+iO/6A== - dependencies: - "@smithy/eventstream-serde-universal" "^3.0.10" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@smithy/eventstream-serde-config-resolver@^3.0.8": - version "3.0.8" - resolved "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.8.tgz" - integrity sha512-zkFIG2i1BLbfoGQnf1qEeMqX0h5qAznzaZmMVNnvPZz9J5AWBPkOMckZWPedGUPcVITacwIdQXoPcdIQq5FRcg== - dependencies: - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@smithy/eventstream-serde-node@^3.0.10": - version "3.0.10" - resolved "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.10.tgz" - integrity sha512-hjpU1tIsJ9qpcoZq9zGHBJPBOeBGYt+n8vfhDwnITPhEre6APrvqq/y3XMDEGUT2cWQ4ramNqBPRbx3qn55rhw== - dependencies: - "@smithy/eventstream-serde-universal" "^3.0.10" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@smithy/eventstream-serde-universal@^3.0.10": - version "3.0.10" - resolved "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.10.tgz" - integrity sha512-ewG1GHbbqsFZ4asaq40KmxCmXO+AFSM1b+DcO2C03dyJj/ZH71CiTg853FSE/3SHK9q3jiYQIFjlGSwfxQ9kww== - dependencies: - "@smithy/eventstream-codec" "^3.1.7" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@smithy/fetch-http-handler@^4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-4.0.0.tgz" - integrity sha512-MLb1f5tbBO2X6K4lMEKJvxeLooyg7guq48C2zKr4qM7F2Gpkz4dc+hdSgu77pCJ76jVqFBjZczHYAs6dp15N+g== - dependencies: - "@smithy/protocol-http" "^4.1.5" - "@smithy/querystring-builder" "^3.0.8" - "@smithy/types" "^3.6.0" - "@smithy/util-base64" "^3.0.0" - tslib "^2.6.2" - -"@smithy/hash-node@^3.0.8": - version "3.0.8" - resolved "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.8.tgz" - integrity sha512-tlNQYbfpWXHimHqrvgo14DrMAgUBua/cNoz9fMYcDmYej7MAmUcjav/QKQbFc3NrcPxeJ7QClER4tWZmfwoPng== - dependencies: - "@smithy/types" "^3.6.0" - "@smithy/util-buffer-from" "^3.0.0" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@smithy/invalid-dependency@^3.0.8": - version "3.0.8" - resolved "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.8.tgz" - integrity sha512-7Qynk6NWtTQhnGTTZwks++nJhQ1O54Mzi7fz4PqZOiYXb4Z1Flpb2yRvdALoggTS8xjtohWUM+RygOtB30YL3Q== - dependencies: - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@smithy/is-array-buffer@^2.2.0": - version "2.2.0" - resolved "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz" - integrity sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA== - dependencies: - tslib "^2.6.2" - -"@smithy/is-array-buffer@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz" - integrity sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ== - dependencies: - tslib "^2.6.2" - -"@smithy/middleware-content-length@^3.0.10": - version "3.0.10" - resolved "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.10.tgz" - integrity sha512-T4dIdCs1d/+/qMpwhJ1DzOhxCZjZHbHazEPJWdB4GDi2HjIZllVzeBEcdJUN0fomV8DURsgOyrbEUzg3vzTaOg== - dependencies: - "@smithy/protocol-http" "^4.1.5" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@smithy/middleware-endpoint@^3.2.1": - version "3.2.1" - resolved "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.2.1.tgz" - integrity sha512-wWO3xYmFm6WRW8VsEJ5oU6h7aosFXfszlz3Dj176pTij6o21oZnzkCLzShfmRaaCHDkBXWBdO0c4sQAvLFP6zA== - dependencies: - "@smithy/core" "^2.5.1" - "@smithy/middleware-serde" "^3.0.8" - "@smithy/node-config-provider" "^3.1.9" - "@smithy/shared-ini-file-loader" "^3.1.9" - "@smithy/types" "^3.6.0" - "@smithy/url-parser" "^3.0.8" - "@smithy/util-middleware" "^3.0.8" - tslib "^2.6.2" - -"@smithy/middleware-retry@^3.0.25": - version "3.0.25" - resolved "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.25.tgz" - integrity sha512-m1F70cPaMBML4HiTgCw5I+jFNtjgz5z5UdGnUbG37vw6kh4UvizFYjqJGHvicfgKMkDL6mXwyPp5mhZg02g5sg== - dependencies: - "@smithy/node-config-provider" "^3.1.9" - "@smithy/protocol-http" "^4.1.5" - "@smithy/service-error-classification" "^3.0.8" - "@smithy/smithy-client" "^3.4.2" - "@smithy/types" "^3.6.0" - "@smithy/util-middleware" "^3.0.8" - "@smithy/util-retry" "^3.0.8" - tslib "^2.6.2" - uuid "^9.0.1" - -"@smithy/middleware-serde@^3.0.8": - version "3.0.8" - resolved "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.8.tgz" - integrity sha512-Xg2jK9Wc/1g/MBMP/EUn2DLspN8LNt+GMe7cgF+Ty3vl+Zvu+VeZU5nmhveU+H8pxyTsjrAkci8NqY6OuvZnjA== - dependencies: - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@smithy/middleware-stack@^3.0.8": - version "3.0.8" - resolved "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.8.tgz" - integrity sha512-d7ZuwvYgp1+3682Nx0MD3D/HtkmZd49N3JUndYWQXfRZrYEnCWYc8BHcNmVsPAp9gKvlurdg/mubE6b/rPS9MA== - dependencies: - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@smithy/node-config-provider@^3.1.9": - version "3.1.9" - resolved "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.9.tgz" - integrity sha512-qRHoah49QJ71eemjuS/WhUXB+mpNtwHRWQr77J/m40ewBVVwvo52kYAmb7iuaECgGTTcYxHS4Wmewfwy++ueew== - dependencies: - "@smithy/property-provider" "^3.1.8" - "@smithy/shared-ini-file-loader" "^3.1.9" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@smithy/node-http-handler@^3.2.5": - version "3.2.5" - resolved "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.2.5.tgz" - integrity sha512-PkOwPNeKdvX/jCpn0A8n9/TyoxjGZB8WVoJmm9YzsnAgggTj4CrjpRHlTQw7dlLZ320n1mY1y+nTRUDViKi/3w== - dependencies: - "@smithy/abort-controller" "^3.1.6" - "@smithy/protocol-http" "^4.1.5" - "@smithy/querystring-builder" "^3.0.8" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@smithy/property-provider@^3.1.7", "@smithy/property-provider@^3.1.8": - version "3.1.8" - resolved "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.8.tgz" - integrity sha512-ukNUyo6rHmusG64lmkjFeXemwYuKge1BJ8CtpVKmrxQxc6rhUX0vebcptFA9MmrGsnLhwnnqeH83VTU9hwOpjA== - dependencies: - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@smithy/protocol-http@^4.1.5": - version "4.1.5" - resolved "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.5.tgz" - integrity sha512-hsjtwpIemmCkm3ZV5fd/T0bPIugW1gJXwZ/hpuVubt2hEUApIoUTrf6qIdh9MAWlw0vjMrA1ztJLAwtNaZogvg== - dependencies: - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@smithy/querystring-builder@^3.0.8": - version "3.0.8" - resolved "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.8.tgz" - integrity sha512-btYxGVqFUARbUrN6VhL9c3dnSviIwBYD9Rz1jHuN1hgh28Fpv2xjU1HeCeDJX68xctz7r4l1PBnFhGg1WBBPuA== - dependencies: - "@smithy/types" "^3.6.0" - "@smithy/util-uri-escape" "^3.0.0" - tslib "^2.6.2" - -"@smithy/querystring-parser@^3.0.8": - version "3.0.8" - resolved "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.8.tgz" - integrity sha512-BtEk3FG7Ks64GAbt+JnKqwuobJNX8VmFLBsKIwWr1D60T426fGrV2L3YS5siOcUhhp6/Y6yhBw1PSPxA5p7qGg== - dependencies: - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@smithy/service-error-classification@^3.0.8": - version "3.0.8" - resolved "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.8.tgz" - integrity sha512-uEC/kCCFto83bz5ZzapcrgGqHOh/0r69sZ2ZuHlgoD5kYgXJEThCoTuw/y1Ub3cE7aaKdznb+jD9xRPIfIwD7g== - dependencies: - "@smithy/types" "^3.6.0" - -"@smithy/shared-ini-file-loader@^3.1.8", "@smithy/shared-ini-file-loader@^3.1.9": - version "3.1.9" - resolved "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.9.tgz" - integrity sha512-/+OsJRNtoRbtsX0UpSgWVxFZLsJHo/4sTr+kBg/J78sr7iC+tHeOvOJrS5hCpVQ6sWBbhWLp1UNiuMyZhE6pmA== - dependencies: - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@smithy/signature-v4@^4.2.0": - version "4.2.1" - resolved "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.2.1.tgz" - integrity sha512-NsV1jF4EvmO5wqmaSzlnTVetemBS3FZHdyc5CExbDljcyJCEEkJr8ANu2JvtNbVg/9MvKAWV44kTrGS+Pi4INg== - dependencies: - "@smithy/is-array-buffer" "^3.0.0" - "@smithy/protocol-http" "^4.1.5" - "@smithy/types" "^3.6.0" - "@smithy/util-hex-encoding" "^3.0.0" - "@smithy/util-middleware" "^3.0.8" - "@smithy/util-uri-escape" "^3.0.0" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@smithy/smithy-client@^3.4.2": - version "3.4.2" - resolved "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.4.2.tgz" - integrity sha512-dxw1BDxJiY9/zI3cBqfVrInij6ShjpV4fmGHesGZZUiP9OSE/EVfdwdRz0PgvkEvrZHpsj2htRaHJfftE8giBA== - dependencies: - "@smithy/core" "^2.5.1" - "@smithy/middleware-endpoint" "^3.2.1" - "@smithy/middleware-stack" "^3.0.8" - "@smithy/protocol-http" "^4.1.5" - "@smithy/types" "^3.6.0" - "@smithy/util-stream" "^3.2.1" - tslib "^2.6.2" - -"@smithy/types@^3.6.0": - version "3.6.0" - resolved "https://registry.npmjs.org/@smithy/types/-/types-3.6.0.tgz" - integrity sha512-8VXK/KzOHefoC65yRgCn5vG1cysPJjHnOVt9d0ybFQSmJgQj152vMn4EkYhGuaOmnnZvCPav/KnYyE6/KsNZ2w== - dependencies: - tslib "^2.6.2" - -"@smithy/url-parser@^3.0.8": - version "3.0.8" - resolved "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.8.tgz" - integrity sha512-4FdOhwpTW7jtSFWm7SpfLGKIBC9ZaTKG5nBF0wK24aoQKQyDIKUw3+KFWCQ9maMzrgTJIuOvOnsV2lLGW5XjTg== - dependencies: - "@smithy/querystring-parser" "^3.0.8" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@smithy/util-base64@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz" - integrity sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ== - dependencies: - "@smithy/util-buffer-from" "^3.0.0" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@smithy/util-body-length-browser@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz" - integrity sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ== - dependencies: - tslib "^2.6.2" - -"@smithy/util-body-length-node@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz" - integrity sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA== - dependencies: - tslib "^2.6.2" - -"@smithy/util-buffer-from@^2.2.0": - version "2.2.0" - resolved "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz" - integrity sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA== - dependencies: - "@smithy/is-array-buffer" "^2.2.0" - tslib "^2.6.2" - -"@smithy/util-buffer-from@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz" - integrity sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA== - dependencies: - "@smithy/is-array-buffer" "^3.0.0" - tslib "^2.6.2" - -"@smithy/util-config-provider@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz" - integrity sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ== - dependencies: - tslib "^2.6.2" - -"@smithy/util-defaults-mode-browser@^3.0.25": - version "3.0.25" - resolved "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.25.tgz" - integrity sha512-fRw7zymjIDt6XxIsLwfJfYUfbGoO9CmCJk6rjJ/X5cd20+d2Is7xjU5Kt/AiDt6hX8DAf5dztmfP5O82gR9emA== - dependencies: - "@smithy/property-provider" "^3.1.8" - "@smithy/smithy-client" "^3.4.2" - "@smithy/types" "^3.6.0" - bowser "^2.11.0" - tslib "^2.6.2" - -"@smithy/util-defaults-mode-node@^3.0.25": - version "3.0.25" - resolved "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.25.tgz" - integrity sha512-H3BSZdBDiVZGzt8TG51Pd2FvFO0PAx/A0mJ0EH8a13KJ6iUCdYnw/Dk/MdC1kTd0eUuUGisDFaxXVXo4HHFL1g== - dependencies: - "@smithy/config-resolver" "^3.0.10" - "@smithy/credential-provider-imds" "^3.2.5" - "@smithy/node-config-provider" "^3.1.9" - "@smithy/property-provider" "^3.1.8" - "@smithy/smithy-client" "^3.4.2" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@smithy/util-endpoints@^2.1.4": - version "2.1.4" - resolved "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.1.4.tgz" - integrity sha512-kPt8j4emm7rdMWQyL0F89o92q10gvCUa6sBkBtDJ7nV2+P7wpXczzOfoDJ49CKXe5CCqb8dc1W+ZdLlrKzSAnQ== - dependencies: - "@smithy/node-config-provider" "^3.1.9" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@smithy/util-hex-encoding@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz" - integrity sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ== - dependencies: - tslib "^2.6.2" - -"@smithy/util-middleware@^3.0.8": - version "3.0.8" - resolved "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.8.tgz" - integrity sha512-p7iYAPaQjoeM+AKABpYWeDdtwQNxasr4aXQEA/OmbOaug9V0odRVDy3Wx4ci8soljE/JXQo+abV0qZpW8NX0yA== - dependencies: - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@smithy/util-retry@^3.0.8": - version "3.0.8" - resolved "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.8.tgz" - integrity sha512-TCEhLnY581YJ+g1x0hapPz13JFqzmh/pMWL2KEFASC51qCfw3+Y47MrTmea4bUE5vsdxQ4F6/KFbUeSz22Q1ow== - dependencies: - "@smithy/service-error-classification" "^3.0.8" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - -"@smithy/util-stream@^3.2.1": - version "3.2.1" - resolved "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.2.1.tgz" - integrity sha512-R3ufuzJRxSJbE58K9AEnL/uSZyVdHzud9wLS8tIbXclxKzoe09CRohj2xV8wpx5tj7ZbiJaKYcutMm1eYgz/0A== - dependencies: - "@smithy/fetch-http-handler" "^4.0.0" - "@smithy/node-http-handler" "^3.2.5" - "@smithy/types" "^3.6.0" - "@smithy/util-base64" "^3.0.0" - "@smithy/util-buffer-from" "^3.0.0" - "@smithy/util-hex-encoding" "^3.0.0" - "@smithy/util-utf8" "^3.0.0" - tslib "^2.6.2" - -"@smithy/util-uri-escape@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz" - integrity sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg== - dependencies: - tslib "^2.6.2" - -"@smithy/util-utf8@^2.0.0": - version "2.3.0" - resolved "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz" - integrity sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A== - dependencies: - "@smithy/util-buffer-from" "^2.2.0" - tslib "^2.6.2" - -"@smithy/util-utf8@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz" - integrity sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA== - dependencies: - "@smithy/util-buffer-from" "^3.0.0" - tslib "^2.6.2" - -"@smithy/util-waiter@^3.1.7": - version "3.1.7" - resolved "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.1.7.tgz" - integrity sha512-d5yGlQtmN/z5eoTtIYgkvOw27US2Ous4VycnXatyoImIF9tzlcpnKqQ/V7qhvJmb2p6xZne1NopCLakdTnkBBQ== - dependencies: - "@smithy/abort-controller" "^3.1.6" - "@smithy/types" "^3.6.0" - tslib "^2.6.2" - "@surma/rollup-plugin-off-main-thread@^2.2.3": version "2.2.3" resolved "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz" @@ -4255,11 +3346,6 @@ boolbase@^1.0.0, boolbase@~1.0.0: resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== -bowser@^2.11.0: - version "2.11.0" - resolved "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz" - integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" @@ -5951,13 +5037,6 @@ fast-uri@^3.0.1: resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.2.tgz" integrity sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row== -fast-xml-parser@4.4.1: - version "4.4.1" - resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz" - integrity sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw== - dependencies: - strnum "^1.0.5" - fastq@^1.6.0: version "1.17.1" resolved "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz" @@ -10534,11 +9613,6 @@ strip-json-comments@^3.1.1: resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -strnum@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz" - integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== - style-loader@^3.3.1: version "3.3.4" resolved "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz" @@ -10884,7 +9958,7 @@ tslib@^1.8.1: resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.3, tslib@^2.4.0, tslib@^2.6.2: +tslib@^2.0.3, tslib@^2.4.0: version "2.8.1" resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -11122,11 +10196,6 @@ uuid@^8.3.2: resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuid@^9.0.1: - version "9.0.1" - resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz" - integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== - v8-to-istanbul@^8.1.0: version "8.1.1" resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz"