From 9382b76bf804111c0ecddec242f14beab6316d1e Mon Sep 17 00:00:00 2001 From: Sam Sussman Date: Tue, 15 Nov 2022 02:56:38 -0600 Subject: [PATCH 1/4] test harness --- apps/test-app-runtime/src/open-account.ts | 2 +- apps/test-app-runtime/src/test.ts | 33 +++++++++++++++++++ apps/test-app/src/app.ts | 10 ++++++ .../src/clients/workflow-client.ts | 2 +- .../src/functions/start-workflow.ts | 10 ++---- packages/@eventual/aws-runtime/src/index.ts | 1 + packages/@eventual/aws-runtime/src/types.ts | 4 +++ 7 files changed, 53 insertions(+), 9 deletions(-) create mode 100644 apps/test-app-runtime/src/test.ts create mode 100644 packages/@eventual/aws-runtime/src/types.ts diff --git a/apps/test-app-runtime/src/open-account.ts b/apps/test-app-runtime/src/open-account.ts index 37e354908..fe23b4044 100644 --- a/apps/test-app-runtime/src/open-account.ts +++ b/apps/test-app-runtime/src/open-account.ts @@ -24,7 +24,7 @@ interface Owner { lastName: string; } -interface OpenAccountRequest { +export interface OpenAccountRequest { accountId: string; address: PostalAddress; email: string; diff --git a/apps/test-app-runtime/src/test.ts b/apps/test-app-runtime/src/test.ts new file mode 100644 index 000000000..29e697dfb --- /dev/null +++ b/apps/test-app-runtime/src/test.ts @@ -0,0 +1,33 @@ +import { Handler } from "aws-lambda"; +import { InvokeCommand, LambdaClient } from "@aws-sdk/client-lambda"; +import { StartWorkflowRequest } from "@eventual/aws-runtime"; +import type { OpenAccountRequest } from "./open-account.js"; + +const lambda = new LambdaClient({}); +const workflowStartFunction = process.env.WORKFLOW_STARTER; + +export const handler: Handler<{ count: number }> = async ({ count }) => { + for (let i = 0; i < count; i++) { + const bankRequest: OpenAccountRequest = { + accountId: String(i), + address: { address1: "", postalCode: "", address2: "" }, + bankDetails: { + accountNumber: String(i), + accountType: "something", + personalOwner: { firstName: "sam", lastName: "sussman" }, + routingNumber: "", + }, + email: "", + }; + const request: StartWorkflowRequest = { + input: bankRequest, + }; + + await lambda.send( + new InvokeCommand({ + FunctionName: workflowStartFunction, + Payload: Buffer.from(JSON.stringify(request)), + }) + ); + } +}; diff --git a/apps/test-app/src/app.ts b/apps/test-app/src/app.ts index 51103a17d..60e24ae22 100644 --- a/apps/test-app/src/app.ts +++ b/apps/test-app/src/app.ts @@ -1,4 +1,5 @@ import { App, aws_dynamodb, Stack } from "aws-cdk-lib"; +import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs"; import { Workflow } from "@eventual/aws-cdk"; const app = new App(); @@ -25,3 +26,12 @@ accountTable.grantReadWriteData(openAccount); new Workflow(stack, "workflow1", { entry: require.resolve("test-app-runtime/lib/my-workflow.js"), }); + +const testHarness = new NodejsFunction(stack, "testing", { + entry: require.resolve("test-app-runtime/lib/test.js"), + environment: { + WORKFLOW_STARTER: openAccount.startWorkflowFunction.functionName, + }, +}); + +openAccount.startWorkflowFunction.grantInvoke(testHarness); diff --git a/packages/@eventual/aws-runtime/src/clients/workflow-client.ts b/packages/@eventual/aws-runtime/src/clients/workflow-client.ts index 22d02b8c9..075ea2ccb 100644 --- a/packages/@eventual/aws-runtime/src/clients/workflow-client.ts +++ b/packages/@eventual/aws-runtime/src/clients/workflow-client.ts @@ -26,7 +26,7 @@ export interface WorkflowClientProps { export class WorkflowClient { constructor(private props: WorkflowClientProps) {} - public async startWorkflow(name: string, input: any) { + public async startWorkflow(input: any, name?: string) { const executionId = `execution_${name ? name : ulid()}`; await this.props.dynamo.send( diff --git a/packages/@eventual/aws-runtime/src/functions/start-workflow.ts b/packages/@eventual/aws-runtime/src/functions/start-workflow.ts index 533668cc5..d273ae74b 100644 --- a/packages/@eventual/aws-runtime/src/functions/start-workflow.ts +++ b/packages/@eventual/aws-runtime/src/functions/start-workflow.ts @@ -1,13 +1,9 @@ import { Handler } from "aws-lambda"; +import { StartWorkflowRequest } from "../types.js"; import { createWorkflowClient } from "../clients/index.js"; const workflowClient = createWorkflowClient(); -export interface StartWorkflowRequest { - name: string; - input: any; -} - export interface StartWorkflowResponse { executionId: string; } @@ -18,8 +14,8 @@ export const handle: Handler< > = async (request) => { return { executionId: await workflowClient.startWorkflow( - request.name, - request.input + request.input, + request.name ), }; }; diff --git a/packages/@eventual/aws-runtime/src/index.ts b/packages/@eventual/aws-runtime/src/index.ts index d34d5dae5..adab0b58b 100644 --- a/packages/@eventual/aws-runtime/src/index.ts +++ b/packages/@eventual/aws-runtime/src/index.ts @@ -1,2 +1,3 @@ export * from "./env.js"; export * from "./clients/index.js"; +export * from "./types.js"; diff --git a/packages/@eventual/aws-runtime/src/types.ts b/packages/@eventual/aws-runtime/src/types.ts new file mode 100644 index 000000000..27271e9cb --- /dev/null +++ b/packages/@eventual/aws-runtime/src/types.ts @@ -0,0 +1,4 @@ +export interface StartWorkflowRequest { + name?: string; + input: any; +} From 60748fe6594f68ff8bcc2e24dfa5b8f4eebf2de3 Mon Sep 17 00:00:00 2001 From: Sam Sussman Date: Wed, 16 Nov 2022 18:22:09 -0600 Subject: [PATCH 2/4] progress tester machine and UI --- .vscode/settings.json | 5 +- apps/test-app-runtime/package.json | 24 +- .../src/tester/website/data.ts | 1 + .../src/tester/website/index.tsx | 32 + .../src/tester/websocket-handler.ts | 80 + apps/test-app-runtime/src/tester/workflow.ts | 118 ++ .../test-app-runtime/static/tester/index.html | 8 + apps/test-app-runtime/tsconfig.json | 5 +- apps/test-app/package.json | 4 +- apps/test-app/src/app.ts | 3 + apps/test-app/src/tester.ts | 134 ++ pnpm-lock.yaml | 1448 ++++++----------- 12 files changed, 885 insertions(+), 977 deletions(-) create mode 100644 apps/test-app-runtime/src/tester/website/data.ts create mode 100644 apps/test-app-runtime/src/tester/website/index.tsx create mode 100644 apps/test-app-runtime/src/tester/websocket-handler.ts create mode 100644 apps/test-app-runtime/src/tester/workflow.ts create mode 100644 apps/test-app-runtime/static/tester/index.html create mode 100644 apps/test-app/src/tester.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index eca31b33e..3120de807 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -39,5 +39,6 @@ "editor.tabSize": 2, "editor.insertSpaces": true, "editor.formatOnSave": true, - "eslint.format.enable": false -} \ No newline at end of file + "eslint.format.enable": false, + "typescript.tsdk": "node_modules/typescript/lib" +} diff --git a/apps/test-app-runtime/package.json b/apps/test-app-runtime/package.json index 0d2753af4..4b19726b3 100644 --- a/apps/test-app-runtime/package.json +++ b/apps/test-app-runtime/package.json @@ -6,21 +6,33 @@ "scripts": { "test": "jest --passWithNoTests" }, + "files": [ + "lib", + "static" + ], "dependencies": { - "@aws-sdk/client-s3": "^3.204.0", - "@aws-sdk/client-dynamodb": "^3.204.0", - "@aws-sdk/client-sqs": "^3.204.0", - "@aws-sdk/client-lambda": "^3.204.0", - "@aws-sdk/lib-dynamodb": "^3.204.0", + "@aws-sdk/client-s3": "^3.208.0", + "@aws-sdk/client-dynamodb": "^3.208.0", + "@aws-sdk/client-sqs": "^3.208.0", + "@aws-sdk/client-lambda": "^3.208.0", + "@aws-sdk/client-apigatewaymanagementapi": "^3.208.0", + "@aws-sdk/lib-dynamodb": "^3.208.0", "@eventual/aws-runtime": "workspace:^", "@eventual/core": "workspace:^", - "ulid": "^2.3.0" + "ulid": "^2.3.0", + "websocket": "^1.0.34", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-use-websocket": "^4.2.0" }, "devDependencies": { "@eventual/compiler": "workspace:^", "@types/jest": "^29", "@types/node": "^16", "@types/aws-lambda": "^8.10.108", + "@types/websocket": "1.0.5", + "@types/react": "18.0.25", + "@types/react-dom": "^18.0.9", "jest": "^29", "ts-jest": "^29", "ts-node": "^10.9.1", diff --git a/apps/test-app-runtime/src/tester/website/data.ts b/apps/test-app-runtime/src/tester/website/data.ts new file mode 100644 index 000000000..782fe51fc --- /dev/null +++ b/apps/test-app-runtime/src/tester/website/data.ts @@ -0,0 +1 @@ +export default { websocketUrl: "" } as { websocketUrl: string }; diff --git a/apps/test-app-runtime/src/tester/website/index.tsx b/apps/test-app-runtime/src/tester/website/index.tsx new file mode 100644 index 000000000..f80d47b3d --- /dev/null +++ b/apps/test-app-runtime/src/tester/website/index.tsx @@ -0,0 +1,32 @@ +import { useCallback, useEffect } from "react"; +import ReactDOM from "react-dom/client"; +import useWebSocket from "react-use-websocket"; + +const websocketUrl = "[WEBSOCKETURL]"; + +const App = () => { + // TODO, make dynamic + const { sendMessage, lastMessage, readyState } = + useWebSocket.default(websocketUrl); + + const startWorkflow = useCallback(() => sendMessage(JSON.stringify({})), []); + + useEffect(() => { + if (lastMessage !== null) { + console.log(lastMessage); + } + }, [lastMessage]); + + useEffect(() => { + console.log(readyState); + }, [readyState]); + + return ( +
+ +
+ ); +}; + +const root = ReactDOM.createRoot(document.querySelector("#container")!); +root.render(); diff --git a/apps/test-app-runtime/src/tester/websocket-handler.ts b/apps/test-app-runtime/src/tester/websocket-handler.ts new file mode 100644 index 000000000..345201f1f --- /dev/null +++ b/apps/test-app-runtime/src/tester/websocket-handler.ts @@ -0,0 +1,80 @@ +import { APIGatewayProxyWebsocketHandlerV2 } from "aws-lambda"; +import { + DeleteItemCommand, + DynamoDBClient, + PutItemCommand, +} from "@aws-sdk/client-dynamodb"; +import { ExecutionHistoryClient, WorkflowClient } from "@eventual/aws-runtime"; +import { SQSClient } from "@aws-sdk/client-sqs"; + +const tableName = process.env.TABLE_NAME ?? ""; +const workflowTable = process.env.WORKFLOW_TABLE ?? ""; +const dynamo = new DynamoDBClient({}); +const sqs = new SQSClient({}); +const workflowQueueUrl = process.env.WORKFLOW_QUEUE_URL ?? ""; + +const workflowClient = new WorkflowClient({ + dynamo, + executionHistory: new ExecutionHistoryClient({ + dynamo, + tableName: workflowTable, + }), + sqs, + tableName: workflowTable, + workflowQueueUrl, +}); + +export const handler: APIGatewayProxyWebsocketHandlerV2 = async (event) => { + console.log(JSON.stringify(event, null, 2)); + + const { + requestContext: { connectionId, routeKey }, + } = event; + + if (routeKey === "$connect") { + await dynamo.send( + new PutItemCommand({ + Item: { + pk: { S: "Connection" }, + sk: { S: `C#${connectionId}` }, + connectionId: { S: connectionId }, + }, + TableName: tableName, + }) + ); + return { statusCode: 200 }; + } else if (routeKey === "$disconnect") { + await dynamo.send( + new DeleteItemCommand({ + Key: { + pk: { S: "Connection" }, + sk: { S: `C#${connectionId}` }, + }, + TableName: tableName, + }) + ); + + return { + statusCode: 200, + }; + } + + if (routeKey === "$default") { + console.log(event.body); + + if (!event.body) { + throw new Error("No body!"); + } + + const request: Request = JSON.parse(event.body); + + const started = await workflowClient.startWorkflow(request); + + return { + body: JSON.stringify({ executionId: started }), + statusCode: 200, + }; + } + + throw new Error("Unknown route key: " + routeKey); +}; diff --git a/apps/test-app-runtime/src/tester/workflow.ts b/apps/test-app-runtime/src/tester/workflow.ts new file mode 100644 index 000000000..dfa076019 --- /dev/null +++ b/apps/test-app-runtime/src/tester/workflow.ts @@ -0,0 +1,118 @@ +import { activity, eventual } from "@eventual/core"; +import { + ApiGatewayManagementApiClient, + PostToConnectionCommand, +} from "@aws-sdk/client-apigatewaymanagementapi"; +import { DynamoDBClient, QueryCommand } from "@aws-sdk/client-dynamodb"; + +const dynamo = new DynamoDBClient({}); +const apig = new ApiGatewayManagementApiClient({ + endpoint: "https://nklz9hg986.execute-api.us-east-1.amazonaws.com/dev", +}); +const tableName = process.env.TABLE_NAME; + +interface Props { + /** + * Start value. + * + * Default: 0. + */ + start: number; + /** + * Value to increase by on each interval. + * + * Default: 1. + */ + step: number; + /** + * Will report progress each time the current value passes the next interval. + * + * Default: 1. + */ + reportInterval: number; + /** + * Value at which the progress is considered 100% complete. + * + * Default: 100. + */ + goal: number; + /** + * Delay seconds between each step. + * + * Default: 1s. + */ + delaySeconds: number; +} + +export type Request = Partial; + +export default eventual(async (request: Request) => { + const defaults: Props = { + delaySeconds: 1, + goal: 100, + reportInterval: 1, + start: 0, + step: 1, + }; + + const props: Props = { + ...defaults, + ...request, + }; + + let value = props.start; + let nextReportValue = value + props.reportInterval; + + while (value < props.goal) { + if (value >= nextReportValue) { + nextReportValue = value + props.reportInterval; + report(value / (props.goal * 1.0), value, false); + } + + await delay(props.delaySeconds); + + value = value + props.step; + } + + await report(1, value, true); + + return "DONE"; +}); + +const report = activity( + "report", + async (progress: number, value: number, done: boolean) => { + const connectionsResults = await dynamo.send( + new QueryCommand({ + KeyConditionExpression: "pk=:pk and begins_with(sk,:sk)", + ExpressionAttributeValues: { + ":pk": { S: "Connection" }, + ":sk": { S: "C#" }, + }, + TableName: tableName, + }) + ); + + const connections = + connectionsResults.Items?.map((s) => s.connectionId?.S).filter( + (s): s is string => !!s + ) ?? []; + + console.log("Reporting to " + connections.join(",")); + + await Promise.allSettled( + connections.map((c) => + apig.send( + new PostToConnectionCommand({ + ConnectionId: c, + Data: Buffer.from(JSON.stringify({ progress, value, done })), + }) + ) + ) + ); + } +); + +const delay = activity("delay", async (seconds: number) => { + return new Promise((resolve) => setTimeout(resolve, seconds * 1000)); +}); diff --git a/apps/test-app-runtime/static/tester/index.html b/apps/test-app-runtime/static/tester/index.html new file mode 100644 index 000000000..fafc3517e --- /dev/null +++ b/apps/test-app-runtime/static/tester/index.html @@ -0,0 +1,8 @@ + + +
+ + + + + \ No newline at end of file diff --git a/apps/test-app-runtime/tsconfig.json b/apps/test-app-runtime/tsconfig.json index fa7d14277..f9e8783f2 100644 --- a/apps/test-app-runtime/tsconfig.json +++ b/apps/test-app-runtime/tsconfig.json @@ -4,10 +4,13 @@ "module": "NodeNext", "outDir": "lib", "declaration": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, "inlineSourceMap": true, "rootDir": "src", "typeRoots": ["./node_modules/@types"], - "allowJs": true + "allowJs": true, + "jsx": "react-jsx" }, "include": ["src"], "exclude": ["lib", "node_modules"], diff --git a/apps/test-app/package.json b/apps/test-app/package.json index 9a4b9802c..4d5172488 100644 --- a/apps/test-app/package.json +++ b/apps/test-app/package.json @@ -9,7 +9,9 @@ "dependencies": { "aws-cdk-lib": "^2.50.0", "constructs": "^10.1.154", - "ulid": "^2.3.0" + "ulid": "^2.3.0", + "@aws-cdk/aws-apigatewayv2-integrations-alpha": "^2.50.0-alpha.0", + "@aws-cdk/aws-apigatewayv2-alpha": "^2.50.0-alpha.0" }, "devDependencies": { "@types/jest": "^29", diff --git a/apps/test-app/src/app.ts b/apps/test-app/src/app.ts index 60e24ae22..c7b285c9e 100644 --- a/apps/test-app/src/app.ts +++ b/apps/test-app/src/app.ts @@ -1,6 +1,7 @@ import { App, aws_dynamodb, Stack } from "aws-cdk-lib"; import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs"; import { Workflow } from "@eventual/aws-cdk"; +import { Tester } from "./tester"; const app = new App(); @@ -35,3 +36,5 @@ const testHarness = new NodejsFunction(stack, "testing", { }); openAccount.startWorkflowFunction.grantInvoke(testHarness); + +new Tester(stack, "tester"); diff --git a/apps/test-app/src/tester.ts b/apps/test-app/src/tester.ts new file mode 100644 index 000000000..449867b63 --- /dev/null +++ b/apps/test-app/src/tester.ts @@ -0,0 +1,134 @@ +import { ArnFormat, RemovalPolicy, Stack } from "aws-cdk-lib"; +import { Construct } from "constructs"; +import { WebSocketLambdaIntegration } from "@aws-cdk/aws-apigatewayv2-integrations-alpha"; +import { + WebSocketApi, + WebSocketIntegration, + WebSocketStage, +} from "@aws-cdk/aws-apigatewayv2-alpha"; +import { CfnIntegrationResponse } from "aws-cdk-lib/aws-apigatewayv2"; +import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs"; +import { CfnPermission } from "aws-cdk-lib/aws-lambda"; +import { Workflow } from "@eventual/aws-cdk"; +import { AttributeType, BillingMode, Table } from "aws-cdk-lib/aws-dynamodb"; +import { Bucket } from "aws-cdk-lib/aws-s3"; +import esbuild from "esbuild"; +import { BucketDeployment, Source } from "aws-cdk-lib/aws-s3-deployment"; +import path from "path"; + +export class Tester extends Construct { + constructor(scope: Construct, id: string) { + super(scope, id); + + const table = new Table(this, "table", { + billingMode: BillingMode.PAY_PER_REQUEST, + partitionKey: { + name: "pk", + type: AttributeType.STRING, + }, + sortKey: { name: "sk", type: AttributeType.STRING }, + removalPolicy: RemovalPolicy.DESTROY, + }); + + const workflow = new Workflow(this, "testWorkflow", { + entry: require.resolve("test-app-runtime/lib/tester/workflow.js"), + environment: { + TABLE_NAME: table.tableName, + }, + }); + + const wsHandler = new NodejsFunction(this, "node", { + entry: require.resolve( + "test-app-runtime/lib/tester/websocket-handler.js" + ), + environment: { + TABLE_NAME: table.tableName, + WORKFLOW_TABLE: workflow.table.tableName, + WORKFLOW_QUEUE_URL: workflow.workflowQueue.queueUrl, + }, + }); + + const handlerIntegration = new WebSocketLambdaIntegration( + "handler", + wsHandler + ); + + const api = new WebSocketApi(this, "api", { + connectRouteOptions: { integration: handlerIntegration }, + disconnectRouteOptions: { integration: handlerIntegration }, + defaultRouteOptions: { integration: handlerIntegration }, + }); + + // @ts-ignore - integration isn't exposed, but integrationId is needed to create a response. + const integration = handlerIntegration.integration as WebSocketIntegration; + + new CfnIntegrationResponse(this, "response", { + integrationId: integration.integrationId, + apiId: api.apiId, + integrationResponseKey: "$default", + }); + + // https://aws.amazon.com/premiumsupport/knowledge-center/api-gateway-rest-api-lambda-integrations/ + new CfnPermission(this, "LambdaInvokeAccessRemote", { + action: "lambda:InvokeFunction", + functionName: wsHandler.functionName, + principal: "apigateway.amazonaws.com", + sourceArn: `${Stack.of(this).formatArn({ + resource: api.apiId, + service: "execute-api", + arnFormat: ArnFormat.COLON_RESOURCE_NAME, + })}/*`, + }); + + const apiStage = new WebSocketStage(this, "propState", { + webSocketApi: api, + stageName: "dev", + autoDeploy: true, + }); + + const webBucket = new Bucket(this, "websiteBucket", { + websiteIndexDocument: "index.html", + removalPolicy: RemovalPolicy.DESTROY, + publicReadAccess: true, + autoDeleteObjects: true, + }); + + const result = esbuild.buildSync({ + bundle: true, + entryPoints: [ + require.resolve("test-app-runtime/lib/tester/website/index.js"), + ], + external: ["./data.js"], + write: false, + }); + + new BucketDeployment(this, "deployWeb", { + sources: [ + Source.asset( + path.join(require.resolve("test-app-runtime"), "../../static/tester") + ), + Source.data( + "index.js", + Buffer.from(result.outputFiles![0]!.contents) + .toString("utf-8") + .replace("[WEBSOCKETURL]", apiStage.url) + ), + ], + destinationBucket: webBucket, + }); + + // Grant the worker the ability to send messages to connections. + api.grantManageConnections(workflow.grantPrincipal); + + // Grant the worker the ability to read from dynamo + table.grantReadData(workflow.activityWorker); + table.grantReadWriteData(wsHandler); + + // TODO: Support method on Workflow to grant all start workflow permissions + // grant the handler the ability to start workflows (send to SQS) + workflow.workflowQueue.grantSendMessages(wsHandler); + + // grant the handler the ability to start workflows (write new workflow to dynamo) + workflow.table.grantReadWriteData(wsHandler); + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 88784e7ff..89176a556 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,6 +24,8 @@ importers: apps/test-app: specifiers: + '@aws-cdk/aws-apigatewayv2-alpha': ^2.50.0-alpha.0 + '@aws-cdk/aws-apigatewayv2-integrations-alpha': ^2.50.0-alpha.0 '@eventual/aws-cdk': workspace:^ '@types/jest': ^29 '@types/node': ^16 @@ -38,6 +40,8 @@ importers: typescript: ^4.8.4 ulid: ^2.3.0 dependencies: + '@aws-cdk/aws-apigatewayv2-alpha': 2.50.0-alpha.0_wfetmkylzcavk2jugrcqqsc5se + '@aws-cdk/aws-apigatewayv2-integrations-alpha': 2.50.0-alpha.0_ntleitg5fbqtbxprhns64fsb3a aws-cdk-lib: 2.50.0_constructs@10.1.154 constructs: 10.1.154 ulid: 2.3.0 @@ -55,36 +59,52 @@ importers: apps/test-app-runtime: specifiers: - '@aws-sdk/client-dynamodb': ^3.204.0 - '@aws-sdk/client-lambda': ^3.204.0 - '@aws-sdk/client-s3': ^3.204.0 - '@aws-sdk/client-sqs': ^3.204.0 - '@aws-sdk/lib-dynamodb': ^3.204.0 + '@aws-sdk/client-apigatewaymanagementapi': ^3.208.0 + '@aws-sdk/client-dynamodb': ^3.208.0 + '@aws-sdk/client-lambda': ^3.208.0 + '@aws-sdk/client-s3': ^3.208.0 + '@aws-sdk/client-sqs': ^3.208.0 + '@aws-sdk/lib-dynamodb': ^3.208.0 '@eventual/aws-runtime': workspace:^ '@eventual/compiler': workspace:^ '@eventual/core': workspace:^ '@types/aws-lambda': ^8.10.108 '@types/jest': ^29 '@types/node': ^16 + '@types/react': 18.0.25 + '@types/react-dom': ^18.0.9 + '@types/websocket': 1.0.5 jest: ^29 + react: ^18.2.0 + react-dom: ^18.2.0 + react-use-websocket: ^4.2.0 ts-jest: ^29 ts-node: ^10.9.1 typescript: ^4.8.4 ulid: ^2.3.0 + websocket: ^1.0.34 dependencies: - '@aws-sdk/client-dynamodb': 3.204.0 - '@aws-sdk/client-lambda': 3.204.0 - '@aws-sdk/client-s3': 3.204.0 - '@aws-sdk/client-sqs': 3.204.0 - '@aws-sdk/lib-dynamodb': 3.210.0_73bdnjpthx2jju6khjl3jxm5cu + '@aws-sdk/client-apigatewaymanagementapi': 3.211.0 + '@aws-sdk/client-dynamodb': 3.208.0 + '@aws-sdk/client-lambda': 3.208.0 + '@aws-sdk/client-s3': 3.208.0 + '@aws-sdk/client-sqs': 3.208.0 + '@aws-sdk/lib-dynamodb': 3.210.0_j7tkjcrxueywswdl3cfvvhj2ym '@eventual/aws-runtime': link:../../packages/@eventual/aws-runtime '@eventual/core': link:../../packages/@eventual/core + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-use-websocket: 4.2.0_biqbaboplfbrettd7655fr4n2y ulid: 2.3.0 + websocket: 1.0.34 devDependencies: '@eventual/compiler': link:../../packages/@eventual/compiler '@types/aws-lambda': 8.10.108 '@types/jest': 29.2.2 '@types/node': 16.18.3 + '@types/react': 18.0.25 + '@types/react-dom': 18.0.9 + '@types/websocket': 1.0.5 jest: 29.3.1_dnlfjp7n5lpfgnj4digwzn5fhe ts-jest: 29.0.3_25xopm7qx5wgmsgnog4okhpq5a ts-node: 10.9.1_e7yvbkxpwwqnzxz2s2bfjt7zx4 @@ -209,6 +229,30 @@ packages: '@jridgewell/trace-mapping': 0.3.17 dev: true + /@aws-cdk/aws-apigatewayv2-alpha/2.50.0-alpha.0_wfetmkylzcavk2jugrcqqsc5se: + resolution: {integrity: sha512-dttWDqy+nTg/fD9y0egvj7/zdnOVEo0qyGsep1RV+p16R3F4ObMKyPVIg15fz57tK//Gp/i1QgXsZaSqbcWHOg==} + engines: {node: '>= 14.15.0'} + peerDependencies: + aws-cdk-lib: ^2.50.0 + constructs: ^10.0.0 + dependencies: + aws-cdk-lib: 2.50.0_constructs@10.1.154 + constructs: 10.1.154 + dev: false + + /@aws-cdk/aws-apigatewayv2-integrations-alpha/2.50.0-alpha.0_ntleitg5fbqtbxprhns64fsb3a: + resolution: {integrity: sha512-XEhz4HsU0HtQJnbs9XSb/yPN/1EEYAOZthWRKyniS9IWeGruVjEhWndoXpu0S7w+M5Bni7D9wrCTkqTgmTEvlw==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@aws-cdk/aws-apigatewayv2-alpha': 2.50.0-alpha.0 + aws-cdk-lib: ^2.50.0 + constructs: ^10.0.0 + dependencies: + '@aws-cdk/aws-apigatewayv2-alpha': 2.50.0-alpha.0_wfetmkylzcavk2jugrcqqsc5se + aws-cdk-lib: 2.50.0_constructs@10.1.154 + constructs: 10.1.154 + dev: false + /@aws-crypto/crc32/2.0.0: resolution: {integrity: sha512-TvE1r2CUueyXOuHdEigYjIZVesInd9KN+K/TFFNfkkxRThiNxO6i4ZqqAVMoEjAamZZ1AA8WXJkjCz7YShHPQA==} dependencies: @@ -254,7 +298,7 @@ packages: resolution: {integrity: sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig==} dependencies: '@aws-crypto/util': 2.0.2 - '@aws-sdk/types': 3.201.0 + '@aws-sdk/types': 3.208.0 tslib: 1.14.1 /@aws-crypto/supports-web-crypto/2.0.2: @@ -269,85 +313,63 @@ packages: '@aws-sdk/util-utf8-browser': 3.188.0 tslib: 1.14.1 - /@aws-sdk/abort-controller/3.201.0: - resolution: {integrity: sha512-xJ984k+CKlGjBmvNarzM8Y+b6X4L1Zt0TycQmVBJq7fAr/ju9l13pQIoXR5WlDIW1FkGeVczF5Nu6fN46SCORQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false - /@aws-sdk/abort-controller/3.208.0: resolution: {integrity: sha512-mQkDR+8VLCafg9KI4TgftftBOL170ricyb+HgV8n5jLDrEG+TfOfud8e6us2lIFESEuMpohC+/8yIcf6JjKkMg==} engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/chunked-blob-reader-native/3.204.0: - resolution: {integrity: sha512-ejJntS6usQpKKwisIaK4yYjo8DKEPpk7eJ7fJCw0r4WmIa7xN3amZISP4TrnKa401nWxbfzd40Wh/R5p75JMNQ==} - dependencies: - '@aws-sdk/util-base64': 3.202.0 - tslib: 2.4.1 - dev: false /@aws-sdk/chunked-blob-reader-native/3.208.0: resolution: {integrity: sha512-JeOZ95PW+fJ6bbuqPySYqLqHk1n4+4ueEEraJsiUrPBV0S1ZtyvOGHcnGztKUjr2PYNaiexmpWuvUve9K12HRA==} dependencies: '@aws-sdk/util-base64': 3.208.0 tslib: 2.4.1 - dev: true /@aws-sdk/chunked-blob-reader/3.188.0: resolution: {integrity: sha512-zkPRFZZPL3eH+kH86LDYYXImiClA1/sW60zYOjse9Pgka+eDJlvBN6hcYxwDEKjcwATYiSRR1aVQHcfCinlGXg==} dependencies: tslib: 2.4.1 - /@aws-sdk/client-dynamodb/3.204.0: - resolution: {integrity: sha512-5rf3OtE3Q6+HqW4GktWWQ10t4wMnCN3lRJU2fYFlwcD1DxOk+lHjU9H7ND+WdT0fTBOdVC5u7I3lBL/F4b5JnA==} + /@aws-sdk/client-apigatewaymanagementapi/3.211.0: + resolution: {integrity: sha512-rWYSo2GVXx0yk3UoBeDNH+ePXOHeWhPBCo+IUhYmIB/E93XheV3bCr49iQ8MKNqBU9CZDHOas6CGmX7rFNoX+Q==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha256-browser': 2.0.0 '@aws-crypto/sha256-js': 2.0.0 - '@aws-sdk/client-sts': 3.204.0 - '@aws-sdk/config-resolver': 3.201.0 - '@aws-sdk/credential-provider-node': 3.204.0 - '@aws-sdk/fetch-http-handler': 3.204.0 - '@aws-sdk/hash-node': 3.201.0 - '@aws-sdk/invalid-dependency': 3.201.0 - '@aws-sdk/middleware-content-length': 3.201.0 - '@aws-sdk/middleware-endpoint': 3.201.0 - '@aws-sdk/middleware-endpoint-discovery': 3.201.0 - '@aws-sdk/middleware-host-header': 3.201.0 - '@aws-sdk/middleware-logger': 3.201.0 - '@aws-sdk/middleware-recursion-detection': 3.201.0 - '@aws-sdk/middleware-retry': 3.201.0 - '@aws-sdk/middleware-serde': 3.201.0 - '@aws-sdk/middleware-signing': 3.201.0 - '@aws-sdk/middleware-stack': 3.201.0 - '@aws-sdk/middleware-user-agent': 3.201.0 - '@aws-sdk/node-config-provider': 3.201.0 - '@aws-sdk/node-http-handler': 3.201.0 - '@aws-sdk/protocol-http': 3.201.0 - '@aws-sdk/smithy-client': 3.201.0 - '@aws-sdk/types': 3.201.0 - '@aws-sdk/url-parser': 3.201.0 - '@aws-sdk/util-base64': 3.202.0 - '@aws-sdk/util-base64-browser': 3.188.0 - '@aws-sdk/util-base64-node': 3.201.0 + '@aws-sdk/client-sts': 3.211.0 + '@aws-sdk/config-resolver': 3.209.0 + '@aws-sdk/credential-provider-node': 3.211.0 + '@aws-sdk/fetch-http-handler': 3.208.0 + '@aws-sdk/hash-node': 3.208.0 + '@aws-sdk/invalid-dependency': 3.208.0 + '@aws-sdk/middleware-content-length': 3.208.0 + '@aws-sdk/middleware-endpoint': 3.208.0 + '@aws-sdk/middleware-host-header': 3.208.0 + '@aws-sdk/middleware-logger': 3.208.0 + '@aws-sdk/middleware-recursion-detection': 3.208.0 + '@aws-sdk/middleware-retry': 3.209.0 + '@aws-sdk/middleware-serde': 3.208.0 + '@aws-sdk/middleware-signing': 3.208.0 + '@aws-sdk/middleware-stack': 3.208.0 + '@aws-sdk/middleware-user-agent': 3.208.0 + '@aws-sdk/node-config-provider': 3.209.0 + '@aws-sdk/node-http-handler': 3.208.0 + '@aws-sdk/protocol-http': 3.208.0 + '@aws-sdk/smithy-client': 3.209.0 + '@aws-sdk/types': 3.208.0 + '@aws-sdk/url-parser': 3.208.0 + '@aws-sdk/util-base64': 3.208.0 '@aws-sdk/util-body-length-browser': 3.188.0 - '@aws-sdk/util-body-length-node': 3.201.0 - '@aws-sdk/util-defaults-mode-browser': 3.201.0 - '@aws-sdk/util-defaults-mode-node': 3.201.0 - '@aws-sdk/util-endpoints': 3.202.0 - '@aws-sdk/util-user-agent-browser': 3.201.0 - '@aws-sdk/util-user-agent-node': 3.201.0 + '@aws-sdk/util-body-length-node': 3.208.0 + '@aws-sdk/util-defaults-mode-browser': 3.209.0 + '@aws-sdk/util-defaults-mode-node': 3.209.0 + '@aws-sdk/util-endpoints': 3.211.0 + '@aws-sdk/util-user-agent-browser': 3.208.0 + '@aws-sdk/util-user-agent-node': 3.209.0 '@aws-sdk/util-utf8-browser': 3.188.0 - '@aws-sdk/util-utf8-node': 3.201.0 - '@aws-sdk/util-waiter': 3.201.0 - tslib: 2.4.0 - uuid: 8.3.2 + '@aws-sdk/util-utf8-node': 3.208.0 + tslib: 2.4.1 transitivePeerDependencies: - aws-crt dev: false @@ -398,53 +420,6 @@ packages: uuid: 8.3.2 transitivePeerDependencies: - aws-crt - dev: true - - /@aws-sdk/client-lambda/3.204.0: - resolution: {integrity: sha512-iDWWOzhG6PWfpOkXXJQZvBCms4jNItHutesVCSDZY/cu0VWmKq7Wri6Fc5TaaZoFD2nJmmPR7Z4gJ9NWPVLMyg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 2.0.0 - '@aws-crypto/sha256-js': 2.0.0 - '@aws-sdk/client-sts': 3.204.0 - '@aws-sdk/config-resolver': 3.201.0 - '@aws-sdk/credential-provider-node': 3.204.0 - '@aws-sdk/fetch-http-handler': 3.204.0 - '@aws-sdk/hash-node': 3.201.0 - '@aws-sdk/invalid-dependency': 3.201.0 - '@aws-sdk/middleware-content-length': 3.201.0 - '@aws-sdk/middleware-endpoint': 3.201.0 - '@aws-sdk/middleware-host-header': 3.201.0 - '@aws-sdk/middleware-logger': 3.201.0 - '@aws-sdk/middleware-recursion-detection': 3.201.0 - '@aws-sdk/middleware-retry': 3.201.0 - '@aws-sdk/middleware-serde': 3.201.0 - '@aws-sdk/middleware-signing': 3.201.0 - '@aws-sdk/middleware-stack': 3.201.0 - '@aws-sdk/middleware-user-agent': 3.201.0 - '@aws-sdk/node-config-provider': 3.201.0 - '@aws-sdk/node-http-handler': 3.201.0 - '@aws-sdk/protocol-http': 3.201.0 - '@aws-sdk/smithy-client': 3.201.0 - '@aws-sdk/types': 3.201.0 - '@aws-sdk/url-parser': 3.201.0 - '@aws-sdk/util-base64': 3.202.0 - '@aws-sdk/util-base64-browser': 3.188.0 - '@aws-sdk/util-base64-node': 3.201.0 - '@aws-sdk/util-body-length-browser': 3.188.0 - '@aws-sdk/util-body-length-node': 3.201.0 - '@aws-sdk/util-defaults-mode-browser': 3.201.0 - '@aws-sdk/util-defaults-mode-node': 3.201.0 - '@aws-sdk/util-endpoints': 3.202.0 - '@aws-sdk/util-user-agent-browser': 3.201.0 - '@aws-sdk/util-user-agent-node': 3.201.0 - '@aws-sdk/util-utf8-browser': 3.188.0 - '@aws-sdk/util-utf8-node': 3.201.0 - '@aws-sdk/util-waiter': 3.201.0 - tslib: 2.4.0 - transitivePeerDependencies: - - aws-crt - dev: false /@aws-sdk/client-lambda/3.208.0: resolution: {integrity: sha512-/T61phXhpOsWE8wMD4u76zt/eb7noDANsCLJNfXRrm3I/gemd+3MNneEctj3fkBP0kM08Rcl90evu7ak9Y6NEQ==} @@ -490,72 +465,6 @@ packages: tslib: 2.4.1 transitivePeerDependencies: - aws-crt - dev: true - - /@aws-sdk/client-s3/3.204.0: - resolution: {integrity: sha512-TtaOQ0ArmqV23Ie/FUChMIdAT5ebg5FSSimN3X2SFVmXRt9c9N73X/gLHKqzf30Dgsl7M/w9O6jFtlbvANjBmA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha1-browser': 2.0.0 - '@aws-crypto/sha256-browser': 2.0.0 - '@aws-crypto/sha256-js': 2.0.0 - '@aws-sdk/client-sts': 3.204.0 - '@aws-sdk/config-resolver': 3.201.0 - '@aws-sdk/credential-provider-node': 3.204.0 - '@aws-sdk/eventstream-serde-browser': 3.201.0 - '@aws-sdk/eventstream-serde-config-resolver': 3.201.0 - '@aws-sdk/eventstream-serde-node': 3.201.0 - '@aws-sdk/fetch-http-handler': 3.204.0 - '@aws-sdk/hash-blob-browser': 3.204.0 - '@aws-sdk/hash-node': 3.201.0 - '@aws-sdk/hash-stream-node': 3.201.0 - '@aws-sdk/invalid-dependency': 3.201.0 - '@aws-sdk/md5-js': 3.204.0 - '@aws-sdk/middleware-bucket-endpoint': 3.201.0 - '@aws-sdk/middleware-content-length': 3.201.0 - '@aws-sdk/middleware-endpoint': 3.201.0 - '@aws-sdk/middleware-expect-continue': 3.201.0 - '@aws-sdk/middleware-flexible-checksums': 3.201.0 - '@aws-sdk/middleware-host-header': 3.201.0 - '@aws-sdk/middleware-location-constraint': 3.201.0 - '@aws-sdk/middleware-logger': 3.201.0 - '@aws-sdk/middleware-recursion-detection': 3.201.0 - '@aws-sdk/middleware-retry': 3.201.0 - '@aws-sdk/middleware-sdk-s3': 3.201.0 - '@aws-sdk/middleware-serde': 3.201.0 - '@aws-sdk/middleware-signing': 3.201.0 - '@aws-sdk/middleware-ssec': 3.201.0 - '@aws-sdk/middleware-stack': 3.201.0 - '@aws-sdk/middleware-user-agent': 3.201.0 - '@aws-sdk/node-config-provider': 3.201.0 - '@aws-sdk/node-http-handler': 3.201.0 - '@aws-sdk/protocol-http': 3.201.0 - '@aws-sdk/signature-v4-multi-region': 3.201.0 - '@aws-sdk/smithy-client': 3.201.0 - '@aws-sdk/types': 3.201.0 - '@aws-sdk/url-parser': 3.201.0 - '@aws-sdk/util-base64': 3.202.0 - '@aws-sdk/util-base64-browser': 3.188.0 - '@aws-sdk/util-base64-node': 3.201.0 - '@aws-sdk/util-body-length-browser': 3.188.0 - '@aws-sdk/util-body-length-node': 3.201.0 - '@aws-sdk/util-defaults-mode-browser': 3.201.0 - '@aws-sdk/util-defaults-mode-node': 3.201.0 - '@aws-sdk/util-endpoints': 3.202.0 - '@aws-sdk/util-stream-browser': 3.204.0 - '@aws-sdk/util-stream-node': 3.201.0 - '@aws-sdk/util-user-agent-browser': 3.201.0 - '@aws-sdk/util-user-agent-node': 3.201.0 - '@aws-sdk/util-utf8-browser': 3.188.0 - '@aws-sdk/util-utf8-node': 3.201.0 - '@aws-sdk/util-waiter': 3.201.0 - '@aws-sdk/xml-builder': 3.201.0 - fast-xml-parser: 4.0.11 - tslib: 2.4.0 - transitivePeerDependencies: - - '@aws-sdk/signature-v4-crt' - - aws-crt - dev: false /@aws-sdk/client-s3/3.208.0: resolution: {integrity: sha512-NBwSB8IwZ18cVEP1tEBtZ9f/dp5mEhSZnqwWYtOtLgcSyCMJSklVEtrN+CvGGIV6Ut1gwyL3trKT5qWONChO1g==} @@ -620,55 +529,6 @@ packages: transitivePeerDependencies: - '@aws-sdk/signature-v4-crt' - aws-crt - dev: true - - /@aws-sdk/client-sqs/3.204.0: - resolution: {integrity: sha512-/CyXol4hFqASQ4rhk7QJX7TwrfAnpTIFTS1F/BFkxx4bFI+B33Y+X65P/EYKOiZK9gS5XS3QzcQylOOLScQZCQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/sha256-browser': 2.0.0 - '@aws-crypto/sha256-js': 2.0.0 - '@aws-sdk/client-sts': 3.204.0 - '@aws-sdk/config-resolver': 3.201.0 - '@aws-sdk/credential-provider-node': 3.204.0 - '@aws-sdk/fetch-http-handler': 3.204.0 - '@aws-sdk/hash-node': 3.201.0 - '@aws-sdk/invalid-dependency': 3.201.0 - '@aws-sdk/md5-js': 3.204.0 - '@aws-sdk/middleware-content-length': 3.201.0 - '@aws-sdk/middleware-endpoint': 3.201.0 - '@aws-sdk/middleware-host-header': 3.201.0 - '@aws-sdk/middleware-logger': 3.201.0 - '@aws-sdk/middleware-recursion-detection': 3.201.0 - '@aws-sdk/middleware-retry': 3.201.0 - '@aws-sdk/middleware-sdk-sqs': 3.201.0 - '@aws-sdk/middleware-serde': 3.201.0 - '@aws-sdk/middleware-signing': 3.201.0 - '@aws-sdk/middleware-stack': 3.201.0 - '@aws-sdk/middleware-user-agent': 3.201.0 - '@aws-sdk/node-config-provider': 3.201.0 - '@aws-sdk/node-http-handler': 3.201.0 - '@aws-sdk/protocol-http': 3.201.0 - '@aws-sdk/smithy-client': 3.201.0 - '@aws-sdk/types': 3.201.0 - '@aws-sdk/url-parser': 3.201.0 - '@aws-sdk/util-base64': 3.202.0 - '@aws-sdk/util-base64-browser': 3.188.0 - '@aws-sdk/util-base64-node': 3.201.0 - '@aws-sdk/util-body-length-browser': 3.188.0 - '@aws-sdk/util-body-length-node': 3.201.0 - '@aws-sdk/util-defaults-mode-browser': 3.201.0 - '@aws-sdk/util-defaults-mode-node': 3.201.0 - '@aws-sdk/util-endpoints': 3.202.0 - '@aws-sdk/util-user-agent-browser': 3.201.0 - '@aws-sdk/util-user-agent-node': 3.201.0 - '@aws-sdk/util-utf8-browser': 3.188.0 - '@aws-sdk/util-utf8-node': 3.201.0 - fast-xml-parser: 4.0.11 - tslib: 2.4.0 - transitivePeerDependencies: - - aws-crt - dev: false /@aws-sdk/client-sqs/3.208.0: resolution: {integrity: sha512-oHw+wp55iqaWG7ayi5q5dFfWWHetRBp0OMrBrAzcYmdUHteHdY+yu5U8VBVbVppzngEkk5SJYytXgPv4Jxfuog==} @@ -716,45 +576,42 @@ packages: tslib: 2.4.1 transitivePeerDependencies: - aws-crt - dev: true - /@aws-sdk/client-sso/3.204.0: - resolution: {integrity: sha512-AECcNrcAQxV/Jlu8ogshRaYwt2jayx0omQJs/SXj70mWxmbk4MQnb+DqJIpPpOKBHaza/xlC2TKS1RzkiuZxyw==} + /@aws-sdk/client-sso-oidc/3.211.0: + resolution: {integrity: sha512-oJ+5ROykVsXpBFpWUfSUYHz/RcTjsZPri6CIY+wQmEFDAOxTsgxd7l8VkqX1r/U/QiK/xDXuK+Z7MurywXS+rQ==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha256-browser': 2.0.0 '@aws-crypto/sha256-js': 2.0.0 - '@aws-sdk/config-resolver': 3.201.0 - '@aws-sdk/fetch-http-handler': 3.204.0 - '@aws-sdk/hash-node': 3.201.0 - '@aws-sdk/invalid-dependency': 3.201.0 - '@aws-sdk/middleware-content-length': 3.201.0 - '@aws-sdk/middleware-endpoint': 3.201.0 - '@aws-sdk/middleware-host-header': 3.201.0 - '@aws-sdk/middleware-logger': 3.201.0 - '@aws-sdk/middleware-recursion-detection': 3.201.0 - '@aws-sdk/middleware-retry': 3.201.0 - '@aws-sdk/middleware-serde': 3.201.0 - '@aws-sdk/middleware-stack': 3.201.0 - '@aws-sdk/middleware-user-agent': 3.201.0 - '@aws-sdk/node-config-provider': 3.201.0 - '@aws-sdk/node-http-handler': 3.201.0 - '@aws-sdk/protocol-http': 3.201.0 - '@aws-sdk/smithy-client': 3.201.0 - '@aws-sdk/types': 3.201.0 - '@aws-sdk/url-parser': 3.201.0 - '@aws-sdk/util-base64': 3.202.0 - '@aws-sdk/util-base64-browser': 3.188.0 - '@aws-sdk/util-base64-node': 3.201.0 + '@aws-sdk/config-resolver': 3.209.0 + '@aws-sdk/fetch-http-handler': 3.208.0 + '@aws-sdk/hash-node': 3.208.0 + '@aws-sdk/invalid-dependency': 3.208.0 + '@aws-sdk/middleware-content-length': 3.208.0 + '@aws-sdk/middleware-endpoint': 3.208.0 + '@aws-sdk/middleware-host-header': 3.208.0 + '@aws-sdk/middleware-logger': 3.208.0 + '@aws-sdk/middleware-recursion-detection': 3.208.0 + '@aws-sdk/middleware-retry': 3.209.0 + '@aws-sdk/middleware-serde': 3.208.0 + '@aws-sdk/middleware-stack': 3.208.0 + '@aws-sdk/middleware-user-agent': 3.208.0 + '@aws-sdk/node-config-provider': 3.209.0 + '@aws-sdk/node-http-handler': 3.208.0 + '@aws-sdk/protocol-http': 3.208.0 + '@aws-sdk/smithy-client': 3.209.0 + '@aws-sdk/types': 3.208.0 + '@aws-sdk/url-parser': 3.208.0 + '@aws-sdk/util-base64': 3.208.0 '@aws-sdk/util-body-length-browser': 3.188.0 - '@aws-sdk/util-body-length-node': 3.201.0 - '@aws-sdk/util-defaults-mode-browser': 3.201.0 - '@aws-sdk/util-defaults-mode-node': 3.201.0 - '@aws-sdk/util-endpoints': 3.202.0 - '@aws-sdk/util-user-agent-browser': 3.201.0 - '@aws-sdk/util-user-agent-node': 3.201.0 + '@aws-sdk/util-body-length-node': 3.208.0 + '@aws-sdk/util-defaults-mode-browser': 3.209.0 + '@aws-sdk/util-defaults-mode-node': 3.209.0 + '@aws-sdk/util-endpoints': 3.211.0 + '@aws-sdk/util-user-agent-browser': 3.208.0 + '@aws-sdk/util-user-agent-node': 3.209.0 '@aws-sdk/util-utf8-browser': 3.188.0 - '@aws-sdk/util-utf8-node': 3.201.0 + '@aws-sdk/util-utf8-node': 3.208.0 tslib: 2.4.1 transitivePeerDependencies: - aws-crt @@ -800,49 +657,42 @@ packages: tslib: 2.4.1 transitivePeerDependencies: - aws-crt - dev: true - /@aws-sdk/client-sts/3.204.0: - resolution: {integrity: sha512-Tp6FqENRw31XK5r5hul1JXnQgHBhbbXhoMebyFih6/zjpATaqg0bnV6tpww4yPi3uc+yDGXKw2/tDroSsyTsRA==} + /@aws-sdk/client-sso/3.211.0: + resolution: {integrity: sha512-Wuo3ZYPy9L+OixlZ7/wM1BbPBdC22xO/a8z/J1sgQZiRDl80Ax+jf1u17D91xdZJGH0hTU5AlvEY7mHP0y/hAw==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha256-browser': 2.0.0 '@aws-crypto/sha256-js': 2.0.0 - '@aws-sdk/config-resolver': 3.201.0 - '@aws-sdk/credential-provider-node': 3.204.0 - '@aws-sdk/fetch-http-handler': 3.204.0 - '@aws-sdk/hash-node': 3.201.0 - '@aws-sdk/invalid-dependency': 3.201.0 - '@aws-sdk/middleware-content-length': 3.201.0 - '@aws-sdk/middleware-endpoint': 3.201.0 - '@aws-sdk/middleware-host-header': 3.201.0 - '@aws-sdk/middleware-logger': 3.201.0 - '@aws-sdk/middleware-recursion-detection': 3.201.0 - '@aws-sdk/middleware-retry': 3.201.0 - '@aws-sdk/middleware-sdk-sts': 3.201.0 - '@aws-sdk/middleware-serde': 3.201.0 - '@aws-sdk/middleware-signing': 3.201.0 - '@aws-sdk/middleware-stack': 3.201.0 - '@aws-sdk/middleware-user-agent': 3.201.0 - '@aws-sdk/node-config-provider': 3.201.0 - '@aws-sdk/node-http-handler': 3.201.0 - '@aws-sdk/protocol-http': 3.201.0 - '@aws-sdk/smithy-client': 3.201.0 - '@aws-sdk/types': 3.201.0 - '@aws-sdk/url-parser': 3.201.0 - '@aws-sdk/util-base64': 3.202.0 - '@aws-sdk/util-base64-browser': 3.188.0 - '@aws-sdk/util-base64-node': 3.201.0 + '@aws-sdk/config-resolver': 3.209.0 + '@aws-sdk/fetch-http-handler': 3.208.0 + '@aws-sdk/hash-node': 3.208.0 + '@aws-sdk/invalid-dependency': 3.208.0 + '@aws-sdk/middleware-content-length': 3.208.0 + '@aws-sdk/middleware-endpoint': 3.208.0 + '@aws-sdk/middleware-host-header': 3.208.0 + '@aws-sdk/middleware-logger': 3.208.0 + '@aws-sdk/middleware-recursion-detection': 3.208.0 + '@aws-sdk/middleware-retry': 3.209.0 + '@aws-sdk/middleware-serde': 3.208.0 + '@aws-sdk/middleware-stack': 3.208.0 + '@aws-sdk/middleware-user-agent': 3.208.0 + '@aws-sdk/node-config-provider': 3.209.0 + '@aws-sdk/node-http-handler': 3.208.0 + '@aws-sdk/protocol-http': 3.208.0 + '@aws-sdk/smithy-client': 3.209.0 + '@aws-sdk/types': 3.208.0 + '@aws-sdk/url-parser': 3.208.0 + '@aws-sdk/util-base64': 3.208.0 '@aws-sdk/util-body-length-browser': 3.188.0 - '@aws-sdk/util-body-length-node': 3.201.0 - '@aws-sdk/util-defaults-mode-browser': 3.201.0 - '@aws-sdk/util-defaults-mode-node': 3.201.0 - '@aws-sdk/util-endpoints': 3.202.0 - '@aws-sdk/util-user-agent-browser': 3.201.0 - '@aws-sdk/util-user-agent-node': 3.201.0 + '@aws-sdk/util-body-length-node': 3.208.0 + '@aws-sdk/util-defaults-mode-browser': 3.209.0 + '@aws-sdk/util-defaults-mode-node': 3.209.0 + '@aws-sdk/util-endpoints': 3.211.0 + '@aws-sdk/util-user-agent-browser': 3.208.0 + '@aws-sdk/util-user-agent-node': 3.209.0 '@aws-sdk/util-utf8-browser': 3.188.0 - '@aws-sdk/util-utf8-node': 3.201.0 - fast-xml-parser: 4.0.11 + '@aws-sdk/util-utf8-node': 3.208.0 tslib: 2.4.1 transitivePeerDependencies: - aws-crt @@ -892,17 +742,49 @@ packages: tslib: 2.4.1 transitivePeerDependencies: - aws-crt - dev: true - /@aws-sdk/config-resolver/3.201.0: - resolution: {integrity: sha512-6YLIel7OGMGi+r8XC1A54cQJRIpx/NJ4fBALy44zFpQ+fdJUEmw4daUf1LECmAQiPA2Pr/hD0nBtX+wiiTf5/g==} + /@aws-sdk/client-sts/3.211.0: + resolution: {integrity: sha512-39/PMIKLEaRUztx3m4I0x9SCnqTStaQuqIabAK/wk0uy+O2p32sv7eacRrGjZWHngqdsK7S1s/LSFErYzzIvkw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/signature-v4': 3.201.0 - '@aws-sdk/types': 3.201.0 - '@aws-sdk/util-config-provider': 3.201.0 - '@aws-sdk/util-middleware': 3.201.0 + '@aws-crypto/sha256-browser': 2.0.0 + '@aws-crypto/sha256-js': 2.0.0 + '@aws-sdk/config-resolver': 3.209.0 + '@aws-sdk/credential-provider-node': 3.211.0 + '@aws-sdk/fetch-http-handler': 3.208.0 + '@aws-sdk/hash-node': 3.208.0 + '@aws-sdk/invalid-dependency': 3.208.0 + '@aws-sdk/middleware-content-length': 3.208.0 + '@aws-sdk/middleware-endpoint': 3.208.0 + '@aws-sdk/middleware-host-header': 3.208.0 + '@aws-sdk/middleware-logger': 3.208.0 + '@aws-sdk/middleware-recursion-detection': 3.208.0 + '@aws-sdk/middleware-retry': 3.209.0 + '@aws-sdk/middleware-sdk-sts': 3.208.0 + '@aws-sdk/middleware-serde': 3.208.0 + '@aws-sdk/middleware-signing': 3.208.0 + '@aws-sdk/middleware-stack': 3.208.0 + '@aws-sdk/middleware-user-agent': 3.208.0 + '@aws-sdk/node-config-provider': 3.209.0 + '@aws-sdk/node-http-handler': 3.208.0 + '@aws-sdk/protocol-http': 3.208.0 + '@aws-sdk/smithy-client': 3.209.0 + '@aws-sdk/types': 3.208.0 + '@aws-sdk/url-parser': 3.208.0 + '@aws-sdk/util-base64': 3.208.0 + '@aws-sdk/util-body-length-browser': 3.188.0 + '@aws-sdk/util-body-length-node': 3.208.0 + '@aws-sdk/util-defaults-mode-browser': 3.209.0 + '@aws-sdk/util-defaults-mode-node': 3.209.0 + '@aws-sdk/util-endpoints': 3.211.0 + '@aws-sdk/util-user-agent-browser': 3.208.0 + '@aws-sdk/util-user-agent-node': 3.209.0 + '@aws-sdk/util-utf8-browser': 3.188.0 + '@aws-sdk/util-utf8-node': 3.208.0 + fast-xml-parser: 4.0.11 tslib: 2.4.1 + transitivePeerDependencies: + - aws-crt dev: false /@aws-sdk/config-resolver/3.208.0: @@ -914,14 +796,15 @@ packages: '@aws-sdk/util-config-provider': 3.208.0 '@aws-sdk/util-middleware': 3.208.0 tslib: 2.4.1 - dev: true - /@aws-sdk/credential-provider-env/3.201.0: - resolution: {integrity: sha512-g2MJsowzFhSsIOITUjYp7EzWFeHINjEP526Uf+5z2/p2kxQVwYYWZQK7j+tPE2Bk3MEjGOCmVHbbE7IFj0rNHw==} + /@aws-sdk/config-resolver/3.209.0: + resolution: {integrity: sha512-wLXI1Jg9xx9wE8vdIfOgSKnoBWbn9j3IvW4+7PnM/nf5xC30/Jp4j+JndEG/BKyDQF7HJQTIeRpSkwKaqJhCRA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/property-provider': 3.201.0 - '@aws-sdk/types': 3.201.0 + '@aws-sdk/signature-v4': 3.208.0 + '@aws-sdk/types': 3.208.0 + '@aws-sdk/util-config-provider': 3.208.0 + '@aws-sdk/util-middleware': 3.208.0 tslib: 2.4.1 dev: false @@ -932,18 +815,6 @@ packages: '@aws-sdk/property-provider': 3.208.0 '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/credential-provider-imds/3.201.0: - resolution: {integrity: sha512-i8U2k3/L3iUWJJ1GSlwVBMfLQ2OTUT97E8yJi/xz5GavYuPOsUQWQe4fp7WGQivxh+AqybXAGFUCYub6zfUqag==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/node-config-provider': 3.201.0 - '@aws-sdk/property-provider': 3.201.0 - '@aws-sdk/types': 3.201.0 - '@aws-sdk/url-parser': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/credential-provider-imds/3.208.0: resolution: {integrity: sha512-z4Bk42FQefBzS1SZ6/4gsAFE7tQhEoDmSUrFVSDu/9WwvGpFMnFfHLTBhivlcAHjc/eQ/hiWYLnQ8vahqhHl8w==} @@ -954,22 +825,16 @@ packages: '@aws-sdk/types': 3.208.0 '@aws-sdk/url-parser': 3.208.0 tslib: 2.4.1 - dev: true - /@aws-sdk/credential-provider-ini/3.204.0: - resolution: {integrity: sha512-ddtaS0ya5lgZZwfuJ/FuniroreLJ6yDgPAasol/rla9U5EU0qUEK1+6PX463exghUGjYfTqxdrKXhGYZfuEoIw==} + /@aws-sdk/credential-provider-imds/3.209.0: + resolution: {integrity: sha512-EjA1nWduIHjALjNF6O2lpKVOoTIlfGHgvqCxjFf7XNqBTTKWCxEflcmUgqXwo9A7TU0mTTyr7nLGMAsNE2CR3w==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/credential-provider-env': 3.201.0 - '@aws-sdk/credential-provider-imds': 3.201.0 - '@aws-sdk/credential-provider-sso': 3.204.0 - '@aws-sdk/credential-provider-web-identity': 3.201.0 - '@aws-sdk/property-provider': 3.201.0 - '@aws-sdk/shared-ini-file-loader': 3.201.0 - '@aws-sdk/types': 3.201.0 + '@aws-sdk/node-config-provider': 3.209.0 + '@aws-sdk/property-provider': 3.208.0 + '@aws-sdk/types': 3.208.0 + '@aws-sdk/url-parser': 3.208.0 tslib: 2.4.1 - transitivePeerDependencies: - - aws-crt dev: false /@aws-sdk/credential-provider-ini/3.208.0: @@ -986,21 +851,18 @@ packages: tslib: 2.4.1 transitivePeerDependencies: - aws-crt - dev: true - /@aws-sdk/credential-provider-node/3.204.0: - resolution: {integrity: sha512-kGbR5JE90zBGDS4cIz7tlUklMMeOm5oc5ES74YStLUacpQKwzVcHmDG8aT2DCONS/wEYysOIs5LygHurOJ/+Ww==} + /@aws-sdk/credential-provider-ini/3.211.0: + resolution: {integrity: sha512-kFekBDGX3tMsbEBjpCHt2dp5hx7xBN0d7v+fNXky4fB61bNUxcLNpXkTgDIqRyMzEje3Jov9Be9Qgqb8ud0Fiw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/credential-provider-env': 3.201.0 - '@aws-sdk/credential-provider-imds': 3.201.0 - '@aws-sdk/credential-provider-ini': 3.204.0 - '@aws-sdk/credential-provider-process': 3.201.0 - '@aws-sdk/credential-provider-sso': 3.204.0 - '@aws-sdk/credential-provider-web-identity': 3.201.0 - '@aws-sdk/property-provider': 3.201.0 - '@aws-sdk/shared-ini-file-loader': 3.201.0 - '@aws-sdk/types': 3.201.0 + '@aws-sdk/credential-provider-env': 3.208.0 + '@aws-sdk/credential-provider-imds': 3.209.0 + '@aws-sdk/credential-provider-sso': 3.211.0 + '@aws-sdk/credential-provider-web-identity': 3.208.0 + '@aws-sdk/property-provider': 3.208.0 + '@aws-sdk/shared-ini-file-loader': 3.209.0 + '@aws-sdk/types': 3.208.0 tslib: 2.4.1 transitivePeerDependencies: - aws-crt @@ -1022,16 +884,23 @@ packages: tslib: 2.4.1 transitivePeerDependencies: - aws-crt - dev: true - /@aws-sdk/credential-provider-process/3.201.0: - resolution: {integrity: sha512-jTK3HSZgNj/hVrWb0wuF/cPUWSJYoRI/80fnN55o6QLS8WWIgOI8o2PNeVTAT5OrKioSoN4fgKTeUm3DZy3npQ==} + /@aws-sdk/credential-provider-node/3.211.0: + resolution: {integrity: sha512-RWDitzHmZOfrfTZCnL8nOLQgYgawAAw8IF5pqeNjcN9TZ/pR64B9pusTYD7a+uVDB8kb9vMU767g89ts2pqmfQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/property-provider': 3.201.0 - '@aws-sdk/shared-ini-file-loader': 3.201.0 - '@aws-sdk/types': 3.201.0 + '@aws-sdk/credential-provider-env': 3.208.0 + '@aws-sdk/credential-provider-imds': 3.209.0 + '@aws-sdk/credential-provider-ini': 3.211.0 + '@aws-sdk/credential-provider-process': 3.209.0 + '@aws-sdk/credential-provider-sso': 3.211.0 + '@aws-sdk/credential-provider-web-identity': 3.208.0 + '@aws-sdk/property-provider': 3.208.0 + '@aws-sdk/shared-ini-file-loader': 3.209.0 + '@aws-sdk/types': 3.208.0 tslib: 2.4.1 + transitivePeerDependencies: + - aws-crt dev: false /@aws-sdk/credential-provider-process/3.208.0: @@ -1042,19 +911,15 @@ packages: '@aws-sdk/shared-ini-file-loader': 3.208.0 '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - /@aws-sdk/credential-provider-sso/3.204.0: - resolution: {integrity: sha512-iS884Gda99x4zmdCK3XxFcceve4wB+wudpeTUm2wwX9AGrSzoUnLWqNXv/R8UAMAsKANaWMBkqv/bsHpsEitZw==} + /@aws-sdk/credential-provider-process/3.209.0: + resolution: {integrity: sha512-G0urC5p1kgUfgpK8lncdisSewa8onnoQAVdf2Uh51hOqc7UufGce+ouvLH8J2iMkMaL1MSyu8fqwfZNyDtH37g==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/client-sso': 3.204.0 - '@aws-sdk/property-provider': 3.201.0 - '@aws-sdk/shared-ini-file-loader': 3.201.0 - '@aws-sdk/types': 3.201.0 + '@aws-sdk/property-provider': 3.208.0 + '@aws-sdk/shared-ini-file-loader': 3.209.0 + '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - transitivePeerDependencies: - - aws-crt dev: false /@aws-sdk/credential-provider-sso/3.208.0: @@ -1068,15 +933,19 @@ packages: tslib: 2.4.1 transitivePeerDependencies: - aws-crt - dev: true - /@aws-sdk/credential-provider-web-identity/3.201.0: - resolution: {integrity: sha512-U54bqhYaClPVZfswgknhlICp3BAtKXpOgHQCUF8cko5xUgbL4lVgd1rC3lWviGFMQAaTIF3QOXyEouemxr3VXw==} + /@aws-sdk/credential-provider-sso/3.211.0: + resolution: {integrity: sha512-S8ciHRypUCi0Uz0D80yVGkWmvpCBCvkEaj+IO0LdYX05GDnH/B44DA8UQ0pfAJqLy5BeSO5snKVRKSPzxNtUGw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/property-provider': 3.201.0 - '@aws-sdk/types': 3.201.0 + '@aws-sdk/client-sso': 3.211.0 + '@aws-sdk/property-provider': 3.208.0 + '@aws-sdk/shared-ini-file-loader': 3.209.0 + '@aws-sdk/token-providers': 3.211.0 + '@aws-sdk/types': 3.208.0 tslib: 2.4.1 + transitivePeerDependencies: + - aws-crt dev: false /@aws-sdk/credential-provider-web-identity/3.208.0: @@ -1086,15 +955,6 @@ packages: '@aws-sdk/property-provider': 3.208.0 '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/endpoint-cache/3.201.0: - resolution: {integrity: sha512-QgT4Wm19yQ/HbvxNeYaR7m9uEYhW+0YY9nSpnRLHmhMJP90kmt9ANESIHCukPxc6ecDEZXIo7C2rica9P3H/ew==} - engines: {node: '>=14.0.0'} - dependencies: - mnemonist: 0.38.3 - tslib: 2.4.1 - dev: false /@aws-sdk/endpoint-cache/3.208.0: resolution: {integrity: sha512-MkrCvaZhTb1qZCjcDH73t5n43h0Kr0GS+30lpXZ9PAnHJZPqv+vhWFPK0ZsFe1XktbS0WOoDR4ED+lWm0Dw7Rg==} @@ -1102,16 +962,6 @@ packages: dependencies: mnemonist: 0.38.3 tslib: 2.4.1 - dev: true - - /@aws-sdk/eventstream-codec/3.201.0: - resolution: {integrity: sha512-lz0FFzOMXvVdy47GnRk+niK+L7MxUZITvK7UUOL6u++JB+54jS+EsD9iLSNhM5qoR9vCiFjabBhkPz9Ml6bdmw==} - dependencies: - '@aws-crypto/crc32': 2.0.0 - '@aws-sdk/types': 3.201.0 - '@aws-sdk/util-hex-encoding': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/eventstream-codec/3.208.0: resolution: {integrity: sha512-CT5+DV92xvGpGivFCcg/Hb2HOEad52XMVVgxHkgwnsy8Z+S+mk7xON3+BG0U8+TCQXTlq3pDs05iJ6EPeBs2Wg==} @@ -1120,16 +970,6 @@ packages: '@aws-sdk/types': 3.208.0 '@aws-sdk/util-hex-encoding': 3.201.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/eventstream-serde-browser/3.201.0: - resolution: {integrity: sha512-3/rZRBTxikj1Uyo8NDdaXey9zy7Xck/rKjykpBMbUYr4lnvXZDGQ0ie4/EMz+k5UbRsZgP46KdJo2ThgwTBvdw==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/eventstream-serde-universal': 3.201.0 - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/eventstream-serde-browser/3.208.0: resolution: {integrity: sha512-8nK/geIqWTuSJODTQ2dXhEuLhjpdXWm+ZU5iB76B7RoDXFGL+iX2VS9lsSNoxEcFQPx0iJ1OgV88JbXk13GmTg==} @@ -1138,15 +978,6 @@ packages: '@aws-sdk/eventstream-serde-universal': 3.208.0 '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/eventstream-serde-config-resolver/3.201.0: - resolution: {integrity: sha512-dUpqO5yX1TdAShIuyBuWMiW7DWj9adtoeAzFvqPyQMXRFTPDQcggSelfoaXGcvUQUfcNZDUbCoigU23f+xmk6Q==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/eventstream-serde-config-resolver/3.208.0: resolution: {integrity: sha512-pmq52299XfBwx72hVO3+qXH10VTGw9Ef6HmdQGhSAIs91F6pFWNZdkdGtEtJHBooGf93rtGxpJuk6Io+XhynCw==} @@ -1154,16 +985,6 @@ packages: dependencies: '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/eventstream-serde-node/3.201.0: - resolution: {integrity: sha512-h7YYPKrPIRjsAq8PnpkAmmwnz2UofHr98BCFtw/eAIFVLZ8lzQbi1kI+dAmwPSlY1L59tgXakmJ6cGvtsDdG5w==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/eventstream-serde-universal': 3.201.0 - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/eventstream-serde-node/3.208.0: resolution: {integrity: sha512-N1nr1cIyyroGsqw7c02JESZP5EC8iN14VX9WwyZidlmPwtcTuyDgSzw1EYfC+QQQDW2nHkYtGfpweBNRlic6+g==} @@ -1172,16 +993,6 @@ packages: '@aws-sdk/eventstream-serde-universal': 3.208.0 '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/eventstream-serde-universal/3.201.0: - resolution: {integrity: sha512-Iq7sofa2Ns/ToseL8/m0PwIO5PHY800K4fi3i+6P1JA0bpZxmvkA/bfn+WCLvcB7sNluasqETHNxGs6DgNteIA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/eventstream-codec': 3.201.0 - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/eventstream-serde-universal/3.208.0: resolution: {integrity: sha512-On8s1akmiUMqZIQ5Uj/F3Dzy6BkA4EzMnDsxDTVMRWKa3WQ4E574yvayQY/i6Z2TL7QvFD5sYT10iE5yPCy/Mg==} @@ -1190,17 +1001,6 @@ packages: '@aws-sdk/eventstream-codec': 3.208.0 '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/fetch-http-handler/3.204.0: - resolution: {integrity: sha512-TfIhWYQ4CTjrD+FSuBcKMSVrqq8GCwqCfUyalWmSKo4JIFhN5OxUnOFb1/ecE/TJX+YgZ65w4qhVJVHHmh229Q==} - dependencies: - '@aws-sdk/protocol-http': 3.201.0 - '@aws-sdk/querystring-builder': 3.201.0 - '@aws-sdk/types': 3.201.0 - '@aws-sdk/util-base64': 3.202.0 - tslib: 2.4.1 - dev: false /@aws-sdk/fetch-http-handler/3.208.0: resolution: {integrity: sha512-GuwkwOeyLKCbSbnFlyHdlKd7u54cnQUI8NfVDAxpZvomY3PV476Tzg8XEyOYE67r5rR6XMqn6IK1PmFAACY+ew==} @@ -1210,16 +1010,6 @@ packages: '@aws-sdk/types': 3.208.0 '@aws-sdk/util-base64': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/hash-blob-browser/3.204.0: - resolution: {integrity: sha512-Et0Nic7jnrYtqQt97JMPGkKJ3CFaulW70vFElDypV+TURsuxelweANQfrHsurk+xvHLHakMG5glAVHgyONtXZg==} - dependencies: - '@aws-sdk/chunked-blob-reader': 3.188.0 - '@aws-sdk/chunked-blob-reader-native': 3.204.0 - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/hash-blob-browser/3.208.0: resolution: {integrity: sha512-Mj9dOA2cLk3WvYgcK0myf4AGqXWi3IDcbbj6oFWeBYQ6tGolehzUeVHQH8inE0iRZSbDGXUwWhoa8vlyciYmew==} @@ -1228,16 +1018,6 @@ packages: '@aws-sdk/chunked-blob-reader-native': 3.208.0 '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/hash-node/3.201.0: - resolution: {integrity: sha512-WJsMZg5/TMoWnLM+0NuwLwFzHsi89Bi9J1Dt7JdJHXFLoEZV54FEz1PK/Sq5NOldhVljpXQwWOB2dHA2wxFztg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.201.0 - '@aws-sdk/util-buffer-from': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/hash-node/3.208.0: resolution: {integrity: sha512-X5u6nD9+wzaA6qhqbobxsIgiyDJMW8NgqjZgHoc5x1wz4unHUCEuSBZy1kbIZ6+EPZ9bQHQZ21gKgf1j5vhsvQ==} @@ -1246,15 +1026,6 @@ packages: '@aws-sdk/types': 3.208.0 '@aws-sdk/util-buffer-from': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/hash-stream-node/3.201.0: - resolution: {integrity: sha512-nagsIlflHlFNswa6XQfpH7/G0OkKu8t2BhZ5NnNzPCx56kcY2asztwBTEeRJEGu8FaaHhUXbVuWi746AK6PHSQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/hash-stream-node/3.208.0: resolution: {integrity: sha512-gMmlzYsLXVt8ehibhTvQWHsPGR3RHytPOP33Jk/YLKyELnUvfn27396JgRgMv/mihIgMq7J2ZEbKkVRvx+FKZw==} @@ -1262,21 +1033,12 @@ packages: dependencies: '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/invalid-dependency/3.201.0: - resolution: {integrity: sha512-f/zgntOfIozNyKSaG9dvHjjBaR3y20kYNswMYkSuCM2NIT5LpyHiiq5I11TwaocatUFcDztWpcsv7vHpIgI5Ig==} - dependencies: - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/invalid-dependency/3.208.0: resolution: {integrity: sha512-mUpbtijk14KntYy+w5FSvmsfj/Dqa8HylYeCKniKBKkQ1avjEz7CdizVoxyZrR3rldnLE3gItr0FEDRUhtfkAA==} dependencies: '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true /@aws-sdk/is-array-buffer/3.201.0: resolution: {integrity: sha512-UPez5qLh3dNgt0DYnPD/q0mVJY84rA17QE26hVNOW3fAji8W2wrwrxdacWOxyXvlxWsVRcKmr+lay1MDqpAMfg==} @@ -1284,7 +1046,7 @@ packages: dependencies: tslib: 2.4.1 - /@aws-sdk/lib-dynamodb/3.210.0_73bdnjpthx2jju6khjl3jxm5cu: + /@aws-sdk/lib-dynamodb/3.210.0_j7tkjcrxueywswdl3cfvvhj2ym: resolution: {integrity: sha512-nDcvOnzxon1tn0xA5ZNRk5AxS2AaHRBxegaoou131DC/HOm5lQOxVG6AiYDJGCT9hAf8bzSxNI/Iut9dnwc7bQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -1292,22 +1054,13 @@ packages: '@aws-sdk/smithy-client': ^3.0.0 '@aws-sdk/types': ^3.0.0 dependencies: - '@aws-sdk/client-dynamodb': 3.204.0 - '@aws-sdk/smithy-client': 3.208.0 + '@aws-sdk/client-dynamodb': 3.208.0 + '@aws-sdk/smithy-client': 3.209.0 '@aws-sdk/types': 3.208.0 '@aws-sdk/util-dynamodb': 3.210.0 tslib: 2.4.1 dev: false - /@aws-sdk/md5-js/3.204.0: - resolution: {integrity: sha512-RXiCvi58Xl2ja9bmd5iFVZyzhGVzBdlLC7uu8Ug9IbF++6muBJ2WdjMkhoMsi5GXqs6238rX3rRt3dLVGKEIqA==} - dependencies: - '@aws-sdk/types': 3.201.0 - '@aws-sdk/util-utf8-browser': 3.188.0 - '@aws-sdk/util-utf8-node': 3.201.0 - tslib: 2.4.1 - dev: false - /@aws-sdk/md5-js/3.208.0: resolution: {integrity: sha512-1yaf3gtXDJmWDMwU9gyswTGa1jG4cEFDydk8G2vkHPpSOrgbxLWtX31Hwnrxdw3FFJDasjLR99OylqHOh6D2lw==} dependencies: @@ -1315,18 +1068,6 @@ packages: '@aws-sdk/util-utf8-browser': 3.188.0 '@aws-sdk/util-utf8-node': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/middleware-bucket-endpoint/3.201.0: - resolution: {integrity: sha512-ZZp3YwkEaPqrdL46WzYOMWdBixaVDG0crCdoyBNw/3cI+4bFcsgFp369mqDDmRj3cuJKV4QNSRjlr2ElTz65dQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/protocol-http': 3.201.0 - '@aws-sdk/types': 3.201.0 - '@aws-sdk/util-arn-parser': 3.201.0 - '@aws-sdk/util-config-provider': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/middleware-bucket-endpoint/3.208.0: resolution: {integrity: sha512-ttvwDsYfQRZRC/1Lbn50jlY4haK35DFt6IP7UdcI1R0aycM81LJYsTCgZ3yjAmouBZ7AX4IH7CCGeDcl0q0USg==} @@ -1337,16 +1078,6 @@ packages: '@aws-sdk/util-arn-parser': 3.208.0 '@aws-sdk/util-config-provider': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/middleware-content-length/3.201.0: - resolution: {integrity: sha512-p4G9AtdrKO8A3Z4RyZiy0isEYwuge7bQRBS7UzcGkcIOhJONq2pcM+gRZYz+NWvfYYNWUg5uODsFQfU8342yKg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/protocol-http': 3.201.0 - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/middleware-content-length/3.208.0: resolution: {integrity: sha512-8bLh7lHtmKQQ2fk0fGiP7pcVJglB/dz7Q9OooxFYK+eybqxfIDDUgKphA8AFT5W34tJRh5nhT3QTJ6zrOTQM3w==} @@ -1355,18 +1086,6 @@ packages: '@aws-sdk/protocol-http': 3.208.0 '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/middleware-endpoint-discovery/3.201.0: - resolution: {integrity: sha512-EHQ+AH/bflmfM2qDN3Aa2ufhw2irv6+FE/13yW09KsunaKiuSyg7Clh6+T8ESw3fCaI4IE2ol0d6HNwJ4JLOVQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/config-resolver': 3.201.0 - '@aws-sdk/endpoint-cache': 3.201.0 - '@aws-sdk/protocol-http': 3.201.0 - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/middleware-endpoint-discovery/3.208.0: resolution: {integrity: sha512-RSbqxZ/oVBY7VvIjwm8ZrpcI4jd+oZZJVXNA2H++J12yEVGNLYOFXZzUatq+Z8ryfuugdsvfMYvVA64qzT8rQw==} @@ -1377,21 +1096,6 @@ packages: '@aws-sdk/protocol-http': 3.208.0 '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/middleware-endpoint/3.201.0: - resolution: {integrity: sha512-F3JlXo5GusbeZR956hA9VxmDxUeg77Xh6o8fveAE2+G4Bjcb1iq9jPNlw6A14vDj3oTKenv2LLnjL2OIfl6hRA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/middleware-serde': 3.201.0 - '@aws-sdk/protocol-http': 3.201.0 - '@aws-sdk/signature-v4': 3.201.0 - '@aws-sdk/types': 3.201.0 - '@aws-sdk/url-parser': 3.201.0 - '@aws-sdk/util-config-provider': 3.201.0 - '@aws-sdk/util-middleware': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/middleware-endpoint/3.208.0: resolution: {integrity: sha512-pVa/cyB6ronfTVAoKUUTFbAPslDPU43DWOKXY/bACC3ys1lFo1CWjz4dLSQARxEEW3iZ1yZTy0zoHXnNrw5CFQ==} @@ -1405,16 +1109,6 @@ packages: '@aws-sdk/util-config-provider': 3.208.0 '@aws-sdk/util-middleware': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/middleware-expect-continue/3.201.0: - resolution: {integrity: sha512-tpNLdHpwgWAvoMicUARld5MwQ2B6iKGW6vN1Z1si9LTJWGtu8ZXAWACuUDLxC+6A1mDkAcbEc7oy4ABjFldUqA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/protocol-http': 3.201.0 - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/middleware-expect-continue/3.208.0: resolution: {integrity: sha512-T/oTNwmJCbv36BidaE8GYY53dXnKKO6GkExp5RLcTeNx7ZGSarV5j+LMeTYPkx6Ha4IkMMIlz8DB4B7rb9bpRQ==} @@ -1423,19 +1117,6 @@ packages: '@aws-sdk/protocol-http': 3.208.0 '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/middleware-flexible-checksums/3.201.0: - resolution: {integrity: sha512-InmDcMeaBu1QQ9oS+85eq+hJWTZjYUe9QK2f6S035Tka9FBee4kI8eU61ImNit5FsFsw+POcVGmjYukeXsB4QA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-crypto/crc32': 2.0.0 - '@aws-crypto/crc32c': 2.0.0 - '@aws-sdk/is-array-buffer': 3.201.0 - '@aws-sdk/protocol-http': 3.201.0 - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/middleware-flexible-checksums/3.208.0: resolution: {integrity: sha512-5VrjGKZ2PCp6+VtyWzVintsHA6J2n0gsMyRCQGMn2LC4+22TIUQIyYaIpVp0SzbJveV7z+5iGnxTMYlpYApr3Q==} @@ -1447,16 +1128,6 @@ packages: '@aws-sdk/protocol-http': 3.208.0 '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/middleware-host-header/3.201.0: - resolution: {integrity: sha512-7KNzdV7nFcKAoahvgGAlzsOq9FFDsU5h3w2iPtVdJhz6ZRDH/2v6WFeUCji+UNZip36gFfMPivoO8Y5smb5r/A==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/protocol-http': 3.201.0 - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/middleware-host-header/3.208.0: resolution: {integrity: sha512-3oyXK81TLWOZ2T/9Ltpbj/Z7R4QWSf+FCQRpY48ND2im/ALkgFRk/tmDTOshv+TQzW1q2lOSEeq4vK6yOCar7g==} @@ -1465,15 +1136,6 @@ packages: '@aws-sdk/protocol-http': 3.208.0 '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/middleware-location-constraint/3.201.0: - resolution: {integrity: sha512-3QL6rM/7Qw0rIqRRI7hQJ6YupR1EXbyhrGQC5nMoZSZ/dQkGkYQLQJmwQDc4yadkJEGE8E1k2yQN0dF65PnJDA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/middleware-location-constraint/3.208.0: resolution: {integrity: sha512-TNU8/NibMyi97qf7/VL1CFIijY6mS9GP7dgN+J6BiMOLS3pJLCmFd5BiaZNsdhOnepQ3jnr+zpVxmfn3D8miVA==} @@ -1481,15 +1143,6 @@ packages: dependencies: '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/middleware-logger/3.201.0: - resolution: {integrity: sha512-kYLsa9x3oUJxYU7V5KOO50Kl7b0kk+I4ltkrdarLvvXcVI7ZXmWHzHLT2dkUhj8S0ceVdi0FYHVPJ3GoE8re4A==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/middleware-logger/3.208.0: resolution: {integrity: sha512-mwSpuWruB8RrgUAAW7w/lvadnMDesl/bZ2IELBgJri+2rIqLGbAtygJBiG0Y3e8/IeOHuKuGkN1rFYZ4SKr7/A==} @@ -1497,16 +1150,6 @@ packages: dependencies: '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/middleware-recursion-detection/3.201.0: - resolution: {integrity: sha512-NGOr+n559ZcJLdFoJR8LNGdrOJFIp2BTuWEDYeicNdNb0bETTXrkzcfT1BRhV9CWqCDmjFvjdrzbhS0cw/UUGA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/protocol-http': 3.201.0 - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/middleware-recursion-detection/3.208.0: resolution: {integrity: sha512-Dgpf5NEOYXvkQuGcbxvDovTh4HwO4ULJReGko67NJjgdZZyFS1fNykVPncxenRpsN9SJBigswYs3lwPVpqijzA==} @@ -1515,19 +1158,6 @@ packages: '@aws-sdk/protocol-http': 3.208.0 '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/middleware-retry/3.201.0: - resolution: {integrity: sha512-4jQjSKCpSc4oB1X9nNq4FbIAwQrr+mvmUSmg/oe2Llf42Ak1G9gg3rNTtQdfzA/wNMlL4ZFfF5Br+uz06e1hnQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/protocol-http': 3.201.0 - '@aws-sdk/service-error-classification': 3.201.0 - '@aws-sdk/types': 3.201.0 - '@aws-sdk/util-middleware': 3.201.0 - tslib: 2.4.1 - uuid: 8.3.2 - dev: false /@aws-sdk/middleware-retry/3.208.0: resolution: {integrity: sha512-JAcN2e3PKWGcNX7run/jP6xJ7w2m15a2CpVrfMtka9p/I/3qnqB86jGUs/3Iv04FEqgXq7KTHbFBg8CndsaHEw==} @@ -1539,17 +1169,17 @@ packages: '@aws-sdk/util-middleware': 3.208.0 tslib: 2.4.1 uuid: 8.3.2 - dev: true - /@aws-sdk/middleware-sdk-s3/3.201.0: - resolution: {integrity: sha512-IZGFWevHMQnyDnJTK2MponaSuFbHkj7z7MYX964hC0qoJEfED+rYPYIhUIPjZm5RiQq34MDQPWHLkNQLf9HnPg==} + /@aws-sdk/middleware-retry/3.209.0: + resolution: {integrity: sha512-PGHbpGw74HxmtqsMEH+xn2oC5/BPdHVyapB66x83n+sywt1ejTiarbQhNs70YzcSsTrJfbhbrFP1V9AzRmMaQA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/middleware-bucket-endpoint': 3.201.0 - '@aws-sdk/protocol-http': 3.201.0 - '@aws-sdk/types': 3.201.0 - '@aws-sdk/util-arn-parser': 3.201.0 + '@aws-sdk/protocol-http': 3.208.0 + '@aws-sdk/service-error-classification': 3.208.0 + '@aws-sdk/types': 3.208.0 + '@aws-sdk/util-middleware': 3.208.0 tslib: 2.4.1 + uuid: 8.3.2 dev: false /@aws-sdk/middleware-sdk-s3/3.208.0: @@ -1561,16 +1191,6 @@ packages: '@aws-sdk/types': 3.208.0 '@aws-sdk/util-arn-parser': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/middleware-sdk-sqs/3.201.0: - resolution: {integrity: sha512-lsQlSyyJpTFYiyi6eWoWGVzQYOZYOUoZ6eLzY5oOIr45dTgofC590NsO2+fF8hH0Uknuj5neD2povFXYMDx7+Q==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.201.0 - '@aws-sdk/util-hex-encoding': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/middleware-sdk-sqs/3.208.0: resolution: {integrity: sha512-8Mkba4n9Bz4IukLSFjECAS8FJ+0/GJKlJgeeK/fxGpfWZmXnwKAi5/TAp37wrbtaKHXmbzHi2bsLWcUm9+G/xw==} @@ -1579,19 +1199,6 @@ packages: '@aws-sdk/types': 3.208.0 '@aws-sdk/util-hex-encoding': 3.201.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/middleware-sdk-sts/3.201.0: - resolution: {integrity: sha512-clZuXcoN0mAP4JH5C6pW5+0tdF25+fpFJqE7GNRjjH/NYNk6ImVI0Kq2espEWwVBuaS0/chTDK3b+pK8YOWdhw==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/middleware-signing': 3.201.0 - '@aws-sdk/property-provider': 3.201.0 - '@aws-sdk/protocol-http': 3.201.0 - '@aws-sdk/signature-v4': 3.201.0 - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/middleware-sdk-sts/3.208.0: resolution: {integrity: sha512-lFVodZHYLF7puXgNZ1m5ycKbyCPp79nqI+pkRXl066ZtZWzCW8+JKCaLjF3jfXlnvg6foPDJdxUvt0VU5EddGg==} @@ -1603,15 +1210,6 @@ packages: '@aws-sdk/signature-v4': 3.208.0 '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/middleware-serde/3.201.0: - resolution: {integrity: sha512-Z7AzIuqEDvsZmp80zeT1oYxsoB8uQZby20Z8kF6/vNoq3sIzaGf/wHeNn0p+Vgo2auGSbZcVUZKoDptQLSLwIQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/middleware-serde/3.208.0: resolution: {integrity: sha512-3h2yP6qyf/IhfdvyFeNX7w4BF37vOZvfUDBq+wb1QEc7DCAskoUKWtCCKJ9HDq3IJQp8hzqY82eawUir6flqlQ==} @@ -1619,19 +1217,6 @@ packages: dependencies: '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/middleware-signing/3.201.0: - resolution: {integrity: sha512-08ri5+mB28tva9RjVIXFcUP5lRTx+Pj8C2HYqF2GL5H3uAo+h3RQ++fEG1uwUMLf7tCEFivcw6SHA1KmCnB7+w==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/property-provider': 3.201.0 - '@aws-sdk/protocol-http': 3.201.0 - '@aws-sdk/signature-v4': 3.201.0 - '@aws-sdk/types': 3.201.0 - '@aws-sdk/util-middleware': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/middleware-signing/3.208.0: resolution: {integrity: sha512-cMSWhg8xOrxZw04EYKEQQQ7RT+03rigS4KS3Uy6x/M+jFyoM+sRiY/7376sJCwlpvKH2xJIVpwPbKk/uz4j4DA==} @@ -1643,15 +1228,6 @@ packages: '@aws-sdk/types': 3.208.0 '@aws-sdk/util-middleware': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/middleware-ssec/3.201.0: - resolution: {integrity: sha512-o1OUjVhtXeFbNyNijw4NPu/2xcA2SqqGNg0e5TP0j4HKfZ1S/QVKVCenx+9dlwlElW0tAQxL4bsNGNWOar3FTA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/middleware-ssec/3.208.0: resolution: {integrity: sha512-Kx3Z8RQu/tHTDTBQPXT3SyvsW8KxoNPBxP2d84Gugb6Pj766fZlYj7qOqWTSx+aCOSOIHcPjxilgTNJ6VBbJmA==} @@ -1659,14 +1235,6 @@ packages: dependencies: '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/middleware-stack/3.201.0: - resolution: {integrity: sha512-lqHYSBP5FBxzA5w5XiYYYpfXabFzleXonqRkqZts1tapNJ4sOd+itiKG8JoNP7LDOwJ8qxNW/a33/gQeh3wkwQ==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.4.1 - dev: false /@aws-sdk/middleware-stack/3.208.0: resolution: {integrity: sha512-bvFPUa+RTB7PSRCUsO6bRlEtiEadrDES+dpNmInMNQ9kmbd4OhNOCb664hhtiglIIXX5cd8mSPEo+w/RV0kEEQ==} @@ -1674,15 +1242,6 @@ packages: dependencies: tslib: 2.4.1 - /@aws-sdk/middleware-user-agent/3.201.0: - resolution: {integrity: sha512-/rYZ93WN1gDJudXis/0382CEoTqRa4qZJA608u2EPWs5aiMocUrm7pjH5XvKm2OYX8K/lyaMSBvL2OTIMzXGaQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/protocol-http': 3.201.0 - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false - /@aws-sdk/middleware-user-agent/3.208.0: resolution: {integrity: sha512-6RNf+TOZpiCy7xUcDSh8ji/x8ht1oAM+qIhm6hsEPLdI1cTvbPZrwowO9Y6L0J68V9OkEgLYiq77KKKYT7QQSw==} engines: {node: '>=14.0.0'} @@ -1690,17 +1249,6 @@ packages: '@aws-sdk/protocol-http': 3.208.0 '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/node-config-provider/3.201.0: - resolution: {integrity: sha512-JO0K2qPTYn+pPC7g8rWr1oueg9CqGCkYbINuAuz79vjToOLUQnZT9GiFm7QADe6J6RT1oGEKRQabNaJnp8cFpQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/property-provider': 3.201.0 - '@aws-sdk/shared-ini-file-loader': 3.201.0 - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/node-config-provider/3.208.0: resolution: {integrity: sha512-htjs1cDXYXEMwZ1q2vb7wfG3bOW4weWWkKcfT7vqzZKfTXoMH2mPpJIXnPE1PxXerOLXHGUU8qqhfl6LxjlnfQ==} @@ -1710,16 +1258,14 @@ packages: '@aws-sdk/shared-ini-file-loader': 3.208.0 '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - /@aws-sdk/node-http-handler/3.201.0: - resolution: {integrity: sha512-bWjXBd4WCiQcV4PwY+eFnlz9tZ4UiqfiJteav4MDt8YWkVlsVnR8RutmVSm3KZZjO2tJNSrla0ZWBebkNnI/Xg==} + /@aws-sdk/node-config-provider/3.209.0: + resolution: {integrity: sha512-jNrUn8qTN9BIxHCcLTv2s2h8Riaz4kjwDhubVQNyI0WGZ+PYKATnZjA+Guzbnq2WMzZmwrMIE5GoOiVsPD8xYQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/abort-controller': 3.201.0 - '@aws-sdk/protocol-http': 3.201.0 - '@aws-sdk/querystring-builder': 3.201.0 - '@aws-sdk/types': 3.201.0 + '@aws-sdk/property-provider': 3.208.0 + '@aws-sdk/shared-ini-file-loader': 3.209.0 + '@aws-sdk/types': 3.208.0 tslib: 2.4.1 dev: false @@ -1732,15 +1278,6 @@ packages: '@aws-sdk/querystring-builder': 3.208.0 '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/property-provider/3.201.0: - resolution: {integrity: sha512-lVMP75VsYHIW04uYbkjA0I8Bb7b+aEj6PBBLdFoA22S0uCeJOD42OSr2Gtg2fToDGO7LQJw/K2D+LMCYKfZ3vQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/property-provider/3.208.0: resolution: {integrity: sha512-aUhfuwXjZ5TGzLhBstuAMmbnxHXeSGhzoIS8yy465ifgc95p6cHFZf+ZibgwgCMaGrKlTDCia2zwwpKQHN+4cw==} @@ -1748,15 +1285,6 @@ packages: dependencies: '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/protocol-http/3.201.0: - resolution: {integrity: sha512-RdOc1elWFpj8MogxG87nkhtylw0a+OD7W8WFM+Gw4yJMkl7cwW42VIBFfb0+KCGZfIQltIeSLRvfe3WvVPyo7Q==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/protocol-http/3.208.0: resolution: {integrity: sha512-Sr9dmaW0Z9X9s16NHZn94efLRpaqLyLqABFPgjqE8cYP6eLX/VrmZGNR62GFVxCiyEEpVxy4Ddk1YkbRwnuonA==} @@ -1764,16 +1292,6 @@ packages: dependencies: '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/querystring-builder/3.201.0: - resolution: {integrity: sha512-FgQnVHpYR19w/HmHEgWpykCn9tdogW0n45Ins6LBCo2aImDf9kBATD4xgN/F2rtogGuLGgu5LIIMHIOj1Tzs/w==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.201.0 - '@aws-sdk/util-uri-escape': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/querystring-builder/3.208.0: resolution: {integrity: sha512-1Rpauh5hWlK++KjsHQjHcSN7yE05hj1FVb0HaeLrFIJB5rQYWXK7DpOUhmv5SOmU+q6cIM2kNCrSxH31+WglMw==} @@ -1781,42 +1299,18 @@ packages: dependencies: '@aws-sdk/types': 3.208.0 '@aws-sdk/util-uri-escape': 3.201.0 - tslib: 2.4.1 - dev: true - - /@aws-sdk/querystring-parser/3.201.0: - resolution: {integrity: sha512-vS9Ljbqrwi0sIKYxgyZYJUN1AcE291hvuqwty9etgD2w/26SbWiMhjIW/fXJUOZjUvGKkYCpbivJYSzAGAuWfQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false - - /@aws-sdk/querystring-parser/3.208.0: - resolution: {integrity: sha512-dVVLdP3il9bJX74/BNBjFn59XrEVBUZ4xSKYH6t7dgSz9uSu8DcT4pPzwaq+/94dVewCW3zq2jVA1iw1rK7JVQ==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/types': 3.208.0 - tslib: 2.4.1 - dev: true - - /@aws-sdk/service-error-classification/3.201.0: - resolution: {integrity: sha512-Pfcfmurgq8UpM0rXco6FVblcruqN4Mo3TW8/yaXrbctWpmdNT/8v19fffQIIgk94TU8Vf/nPJ7E5DXL7MZr4Fw==} - engines: {node: '>=14.0.0'} - dev: false - - /@aws-sdk/service-error-classification/3.208.0: - resolution: {integrity: sha512-ZZWV3AOTd8UDcfXCNoQ8v4sHaTgFxGaXWO0NHHgqFbVYr1d+8EXQiOy/v8JsY1jrfoXBWXptTOcioCTeM0xBpw==} - engines: {node: '>=14.0.0'} - dev: true + tslib: 2.4.1 - /@aws-sdk/shared-ini-file-loader/3.201.0: - resolution: {integrity: sha512-Pbxk0TXep0yI8MnK7Prly6JuBm5Me9AITav8/zPEgTZ3fMhXhQhhiuQcuTCI9GeosSzoiu8VvK53oPtBZZFnXQ==} + /@aws-sdk/querystring-parser/3.208.0: + resolution: {integrity: sha512-dVVLdP3il9bJX74/BNBjFn59XrEVBUZ4xSKYH6t7dgSz9uSu8DcT4pPzwaq+/94dVewCW3zq2jVA1iw1rK7JVQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.201.0 + '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: false + + /@aws-sdk/service-error-classification/3.208.0: + resolution: {integrity: sha512-ZZWV3AOTd8UDcfXCNoQ8v4sHaTgFxGaXWO0NHHgqFbVYr1d+8EXQiOy/v8JsY1jrfoXBWXptTOcioCTeM0xBpw==} + engines: {node: '>=14.0.0'} /@aws-sdk/shared-ini-file-loader/3.208.0: resolution: {integrity: sha512-ZDmwOLNiBKfvtN1M2eG2bItw0+4hKDU/XKqB+yVI9Uo29o4XwtQ4Br7HixTlPYJAavmM1cCch8PVvnwngYAKPA==} @@ -1824,21 +1318,12 @@ packages: dependencies: '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - /@aws-sdk/signature-v4-multi-region/3.201.0: - resolution: {integrity: sha512-5lVYYcWDwZd/q0mYPGn4zht08nIeeACYCM8HKYMwF7Qzcrne+RM0F4GU1ZWoId1pxjiX+xQSOUEeskx3A5wUtg==} + /@aws-sdk/shared-ini-file-loader/3.209.0: + resolution: {integrity: sha512-hji3B/q3zFuElaUQM/ZZUFbCFBsaVjpWATgiDTnSYP+MShWvvwm/WigeC2aCNos1bs/8HVizOy9cmvK63vLZbw==} engines: {node: '>=14.0.0'} - peerDependencies: - '@aws-sdk/signature-v4-crt': ^3.118.0 - peerDependenciesMeta: - '@aws-sdk/signature-v4-crt': - optional: true dependencies: - '@aws-sdk/protocol-http': 3.201.0 - '@aws-sdk/signature-v4': 3.201.0 - '@aws-sdk/types': 3.201.0 - '@aws-sdk/util-arn-parser': 3.201.0 + '@aws-sdk/types': 3.208.0 tslib: 2.4.1 dev: false @@ -1856,19 +1341,6 @@ packages: '@aws-sdk/types': 3.208.0 '@aws-sdk/util-arn-parser': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/signature-v4/3.201.0: - resolution: {integrity: sha512-zEHoG1/hzJq169slggkPy1SN9YPWI78Bbe/MvHGYmCmQDspblu60JSBIbAatNqAxAmcWKc2HqpyGKjCkMG94ZA==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/is-array-buffer': 3.201.0 - '@aws-sdk/types': 3.201.0 - '@aws-sdk/util-hex-encoding': 3.201.0 - '@aws-sdk/util-middleware': 3.201.0 - '@aws-sdk/util-uri-escape': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/signature-v4/3.208.0: resolution: {integrity: sha512-+c5A8RsN4Lk3TXFiQ3ZsW7sJ4zYPPmYQ55ITSfjock5hzgM1vW43Mgvjjq6foW5L7SNfdhLH+NrhpgFwSF/GeA==} @@ -1880,82 +1352,58 @@ packages: '@aws-sdk/util-middleware': 3.208.0 '@aws-sdk/util-uri-escape': 3.201.0 tslib: 2.4.1 - dev: true - /@aws-sdk/smithy-client/3.201.0: - resolution: {integrity: sha512-cL87Jgxczee8YFkWGWKQ2Ze0vjn4+eCa1kDvEYMCOQvNujTuFgatXLgije5a7nVkSnL9WLoIP7Y7fsBGrKfMnQ==} + /@aws-sdk/smithy-client/3.208.0: + resolution: {integrity: sha512-4SGPAs7ZtG9AUYknJNkZTs+ww1cpdcPth5te+R/dN4anUbqtL2qvmbdZJ+8rzdAZKndXu0huKE1OZrR3COLciw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/middleware-stack': 3.201.0 - '@aws-sdk/types': 3.201.0 + '@aws-sdk/middleware-stack': 3.208.0 + '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: false - /@aws-sdk/smithy-client/3.208.0: - resolution: {integrity: sha512-4SGPAs7ZtG9AUYknJNkZTs+ww1cpdcPth5te+R/dN4anUbqtL2qvmbdZJ+8rzdAZKndXu0huKE1OZrR3COLciw==} + /@aws-sdk/smithy-client/3.209.0: + resolution: {integrity: sha512-+d9lPAFOu3hZdLfyzMurRU6xZ+eqwKbF6HY7mDL4hGafRb/uw28HBncSwyUk5s7MIND9+RnvY4F/MwBq9wznXg==} engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/middleware-stack': 3.208.0 '@aws-sdk/types': 3.208.0 tslib: 2.4.1 + dev: false - /@aws-sdk/types/3.201.0: - resolution: {integrity: sha512-RCQj2pQyHD330Jd4c5CHJ87k2ZqC3Mmtl6nhwH1dy3vbnGUpc3q+3yinOKoTAY934kIa7ia32Y/2EjuyHxaj1A==} + /@aws-sdk/token-providers/3.211.0: + resolution: {integrity: sha512-dxdUT+JKCl9krmBQde1HeV6rwYP+ZTBkfx5vIa3PdfDI7XljRBf1XdE0mS18eSURfQA7v969Y5sJ6/rFyjT/QA==} engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/client-sso-oidc': 3.211.0 + '@aws-sdk/property-provider': 3.208.0 + '@aws-sdk/shared-ini-file-loader': 3.209.0 + '@aws-sdk/types': 3.208.0 + tslib: 2.4.1 + transitivePeerDependencies: + - aws-crt + dev: false /@aws-sdk/types/3.208.0: resolution: {integrity: sha512-5AuOPtY1Hdf4xoEo+voRijl3OnFm8IB+oITXl+SN2iASJv+XPnRNw/QVbIxfGeWgWhmK31F+XdjTYsjT2rx8Qw==} engines: {node: '>=14.0.0'} - /@aws-sdk/url-parser/3.201.0: - resolution: {integrity: sha512-V15aqj0tj4Y79VpuIdHUvX4Nvn4hYPB0RAn/qg5CCComIl0doLOirAQtW1MOBOyctdRlD9Uv7d1QdPLzJZMHjQ==} - dependencies: - '@aws-sdk/querystring-parser': 3.201.0 - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false - /@aws-sdk/url-parser/3.208.0: resolution: {integrity: sha512-zhU231xkZbUh68Z/TGNRW30MGTZQVigGuMiJU6eOtL2aOulnKqI1Yjs/QejrTtPWsqSihWvxOUZ2cVRPyeOvrA==} dependencies: '@aws-sdk/querystring-parser': 3.208.0 '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/util-arn-parser/3.201.0: - resolution: {integrity: sha512-FNZsr9ofEf3Ybglgj8ElhuXnHnSFCF1ctT/zGPwNc+7XTMROO36uPIxP22J/GTyMpf4Bx48rXs8JTFvu3P3hig==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.4.1 - dev: false /@aws-sdk/util-arn-parser/3.208.0: resolution: {integrity: sha512-QV4af+kscova9dv4VuHOgH8wEr/IIYHDGcnyVtkUEqahCejWr1Kuk+SBK0xMwnZY5LSycOtQ8aeqHOn9qOjZtA==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.4.1 - dev: true - - /@aws-sdk/util-base64-browser/3.188.0: - resolution: {integrity: sha512-qlH+5NZBLiyKziL335BEPedYxX6j+p7KFRWXvDQox9S+s+gLCayednpK+fteOhBenCcR9fUZOVuAPScy1I8qCg==} - dependencies: - tslib: 2.4.1 - dev: false /@aws-sdk/util-base64-browser/3.208.0: resolution: {integrity: sha512-nR6S6aZqlr//Sy3+2J7G2mn5XG1ELBBTswvbp6kCo5BK9v/kESuzsHC5b6f3xzl/TY4JSG8Aj+h7x+kZHfKwwg==} dependencies: tslib: 2.4.1 - dev: true - - /@aws-sdk/util-base64-node/3.201.0: - resolution: {integrity: sha512-ydZqNpB3l5kiicInpPDExPb5xHI7uyVIa1vMupnuIrJ412iNb0F2+K8LlFynzw6fSJShVKnqFcWOYRA96z1iIw==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/util-buffer-from': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/util-base64-node/3.208.0: resolution: {integrity: sha512-tCkSexa90loq8yU+BKAX5WIVQGq8IM/DdFhFphQd1azgOIBYxafA/aVw9mDY+to0mq4QRHiUwmUsmzLWEFSDJg==} @@ -1963,15 +1411,6 @@ packages: dependencies: '@aws-sdk/util-buffer-from': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/util-base64/3.202.0: - resolution: {integrity: sha512-0QlvxCSU2CITeR/x87zls9ma+CkN3EXRGM3M5XnHWaneDI9K+O2uPpAbDfLh0SBJyO0AfIMn7Vh/BvnNNPEDpg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/util-buffer-from': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/util-base64/3.208.0: resolution: {integrity: sha512-PQniZph5A6N7uuEOQi+1hnMz/FSOK/8kMFyFO+4DgA1dZ5pcKcn5wiFwHkcTb/BsgVqQa3Jx0VHNnvhlS8JyTg==} @@ -1979,34 +1418,17 @@ packages: dependencies: '@aws-sdk/util-buffer-from': 3.208.0 tslib: 2.4.1 - dev: true /@aws-sdk/util-body-length-browser/3.188.0: resolution: {integrity: sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg==} dependencies: tslib: 2.4.1 - /@aws-sdk/util-body-length-node/3.201.0: - resolution: {integrity: sha512-q+gwQoLn/DOwirb2hgZJeEwo1D3vLhoD6FfSV42Ecfvtb4jHnWReWMHguujfCubuDgZCrMEvYQzuocS75HHsbA==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.4.1 - dev: false - /@aws-sdk/util-body-length-node/3.208.0: resolution: {integrity: sha512-3zj50e5g7t/MQf53SsuuSf0hEELzMtD8RX8C76f12OSRo2Bca4FLLYHe0TZbxcfQHom8/hOaeZEyTyMogMglqg==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.4.1 - dev: true - - /@aws-sdk/util-buffer-from/3.201.0: - resolution: {integrity: sha512-s6Wjltd9vU+vR3n0pqSPmNDcrrkrVTdV4t7x2zz3nDsFKTI77iVNafDmuaUlOA/bIlpjCJqaWecoVrZmEKeR7A==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/is-array-buffer': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/util-buffer-from/3.208.0: resolution: {integrity: sha512-7L0XUixNEFcLUGPeBF35enCvB9Xl+K6SQsmbrPk1P3mlV9mguWSDQqbOBwY1Ir0OVbD6H/ZOQU7hI/9RtRI0Zw==} @@ -2014,31 +1436,12 @@ packages: dependencies: '@aws-sdk/is-array-buffer': 3.201.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/util-config-provider/3.201.0: - resolution: {integrity: sha512-cCRJlnRRP8vrLJomzJRBIyiyohsjJKmnIaQ9t0tAhGCywZbyjx6TlpYRZYfVWo+MwdF1Pi8ZScTrFPW0JuBOIQ==} - engines: {node: '>=14.0.0'} - dependencies: - tslib: 2.4.1 - dev: false /@aws-sdk/util-config-provider/3.208.0: resolution: {integrity: sha512-DSRqwrERUsT34ug+anlMBIFooBEGwM8GejC7q00Y/9IPrQy50KnG5PW2NiTjuLKNi7pdEOlwTSEocJE15eDZIg==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.4.1 - dev: true - - /@aws-sdk/util-defaults-mode-browser/3.201.0: - resolution: {integrity: sha512-skRMAM+xrV/sDvvtHC81ExEKQEiZFaRrRdUT39fBX1SpGnFTo2wpv7XK+rAW2XopGgnLPytXLQD97Kub79o4zA==} - engines: {node: '>= 10.0.0'} - dependencies: - '@aws-sdk/property-provider': 3.201.0 - '@aws-sdk/types': 3.201.0 - bowser: 2.11.0 - tslib: 2.4.1 - dev: false /@aws-sdk/util-defaults-mode-browser/3.208.0: resolution: {integrity: sha512-i4cA074pycou1BPr7axFMiK3iHv+Tzjl/ZiN3Yc0BQDLWC9AQdrNodB4WAKnn4a4fWgA/MadfzKXnW1oltSzIg==} @@ -2048,17 +1451,14 @@ packages: '@aws-sdk/types': 3.208.0 bowser: 2.11.0 tslib: 2.4.1 - dev: true - /@aws-sdk/util-defaults-mode-node/3.201.0: - resolution: {integrity: sha512-9N5LXRhxigbkbEcjQ4nNXHuQxp0VFlbc2/5wbcuPjIKX/OROiQI4mYQ6nuSKk7eku5sNFb9FtEHeD/RZo8od6Q==} + /@aws-sdk/util-defaults-mode-browser/3.209.0: + resolution: {integrity: sha512-c+AlHqsgeDr9+87fS1wfnyVzEH3myt56GvNt0puzIv0QQqfpobMnfN8/Fy0cqMpf1eQNYY4a6lFlkComsXi5dw==} engines: {node: '>= 10.0.0'} dependencies: - '@aws-sdk/config-resolver': 3.201.0 - '@aws-sdk/credential-provider-imds': 3.201.0 - '@aws-sdk/node-config-provider': 3.201.0 - '@aws-sdk/property-provider': 3.201.0 - '@aws-sdk/types': 3.201.0 + '@aws-sdk/property-provider': 3.208.0 + '@aws-sdk/types': 3.208.0 + bowser: 2.11.0 tslib: 2.4.1 dev: false @@ -2072,20 +1472,23 @@ packages: '@aws-sdk/property-provider': 3.208.0 '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - /@aws-sdk/util-dynamodb/3.210.0: - resolution: {integrity: sha512-/HvxkzYtsQmP0zP8NZ53f9TwvFrU5Lk/gGmtZrN/wc6h22XTtqEnq2Z9MnXbGqm4JpgywANPLz5f6Cu4yGOb3w==} - engines: {node: '>=14.0.0'} + /@aws-sdk/util-defaults-mode-node/3.209.0: + resolution: {integrity: sha512-RljPVLog6EX052DQjx4XQ95n7ZiAbmn7Vd6YSn1x93U797umaC5CnrT7a/WusTQACtxBDFWcosRgO1ZGDXuRKQ==} + engines: {node: '>= 10.0.0'} dependencies: + '@aws-sdk/config-resolver': 3.209.0 + '@aws-sdk/credential-provider-imds': 3.209.0 + '@aws-sdk/node-config-provider': 3.209.0 + '@aws-sdk/property-provider': 3.208.0 + '@aws-sdk/types': 3.208.0 tslib: 2.4.1 dev: false - /@aws-sdk/util-endpoints/3.202.0: - resolution: {integrity: sha512-sNees5uDp7nfEbvzaA1DAHqoEvEb9ZOkdNH5gcj/FMBETbr00YtsuXsTZogTHQsX/otRTiudZBE3iH7R4SLSAQ==} + /@aws-sdk/util-dynamodb/3.210.0: + resolution: {integrity: sha512-/HvxkzYtsQmP0zP8NZ53f9TwvFrU5Lk/gGmtZrN/wc6h22XTtqEnq2Z9MnXbGqm4JpgywANPLz5f6Cu4yGOb3w==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.201.0 tslib: 2.4.1 dev: false @@ -2095,44 +1498,32 @@ packages: dependencies: '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true - /@aws-sdk/util-hex-encoding/3.201.0: - resolution: {integrity: sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA==} + /@aws-sdk/util-endpoints/3.211.0: + resolution: {integrity: sha512-FY0h897WFltaUBF5aedLCBP2OlxN0aIqrInAa7aYGz3HsUTl97liHTii34bZrMJQHxmfcKBXAsjV1jJGc2orLw==} engines: {node: '>=14.0.0'} dependencies: + '@aws-sdk/types': 3.208.0 tslib: 2.4.1 + dev: false - /@aws-sdk/util-locate-window/3.201.0: - resolution: {integrity: sha512-hPJgifWh/rADabLAk1C9xXA2B3O4NUmbU58KgBRgC1HksiiHGFVZObB5fkBH8US/XV2jwORkpSf4OhretXQuKg==} + /@aws-sdk/util-hex-encoding/3.201.0: + resolution: {integrity: sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.4.1 - /@aws-sdk/util-middleware/3.201.0: - resolution: {integrity: sha512-iAitcEZo17IyKn4ku1IBgtomr25esu5OuSRjw5Or4bNOeqXB0w50cItf/9qft8LIhbvBEAUtNAYXvqNzvhTZdQ==} + /@aws-sdk/util-locate-window/3.201.0: + resolution: {integrity: sha512-hPJgifWh/rADabLAk1C9xXA2B3O4NUmbU58KgBRgC1HksiiHGFVZObB5fkBH8US/XV2jwORkpSf4OhretXQuKg==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.4.1 - dev: false /@aws-sdk/util-middleware/3.208.0: resolution: {integrity: sha512-oXilrYpXwaPyMw1uNjL1wmR54zeFzIWx2ve1MSMheIYr26deFP3RpMfKkGXwiOvXzZ9pzTcA8shNLhg1frO/zg==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.4.1 - dev: true - - /@aws-sdk/util-stream-browser/3.204.0: - resolution: {integrity: sha512-LH+Th/Oww6icUvqVbL5Y+R4mUGUuwLRWpiOJnK8/Ufyw7JMEvHZOGXPIAtXmEB1t+0gTVVDCP0Z0y6ItINlGtA==} - dependencies: - '@aws-sdk/fetch-http-handler': 3.204.0 - '@aws-sdk/types': 3.201.0 - '@aws-sdk/util-base64': 3.202.0 - '@aws-sdk/util-hex-encoding': 3.201.0 - '@aws-sdk/util-utf8-browser': 3.188.0 - tslib: 2.4.1 - dev: false /@aws-sdk/util-stream-browser/3.208.0: resolution: {integrity: sha512-zKAwaMn7tLLTA1uZFL0Ynomxu/EVeUa2VKxB+y87g3hHZmC11QQ5rOiNTnvYzy6w3BsssWNYzazom3jNhpWvtQ==} @@ -2143,17 +1534,6 @@ packages: '@aws-sdk/util-hex-encoding': 3.201.0 '@aws-sdk/util-utf8-browser': 3.188.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/util-stream-node/3.201.0: - resolution: {integrity: sha512-RWU+ZJHKL4lYZBeNIpHo5EuNaYRDkJeytP8cbBQn+wuzDz19mGF2uikK+JaQdNd5HG9lovDP66SJ8gJ0WBnwNw==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/node-http-handler': 3.201.0 - '@aws-sdk/types': 3.201.0 - '@aws-sdk/util-buffer-from': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/util-stream-node/3.208.0: resolution: {integrity: sha512-2/gB8QchikmrxOBNVytviX8j1H6GZg/TKdUiUlLg5/x7I2EMlaKZK3FI7In80gqwoG6C7h8NwEIvpfmbhl7gAw==} @@ -2163,7 +1543,6 @@ packages: '@aws-sdk/types': 3.208.0 '@aws-sdk/util-buffer-from': 3.208.0 tslib: 2.4.1 - dev: true /@aws-sdk/util-uri-escape/3.201.0: resolution: {integrity: sha512-TeTWbGx4LU2c5rx0obHeDFeO9HvwYwQtMh1yniBz00pQb6Qt6YVOETVQikRZ+XRQwEyCg/dA375UplIpiy54mA==} @@ -2171,24 +1550,15 @@ packages: dependencies: tslib: 2.4.1 - /@aws-sdk/util-user-agent-browser/3.201.0: - resolution: {integrity: sha512-iL2gyz7GuUVtZcMZpqvfxdFrl9hc28qpagymmJ/w2yhN86YNPHdK8Sx1Yo6VxNGVDCCWGb7tHXf7VP+U4Yv/Lg==} - dependencies: - '@aws-sdk/types': 3.201.0 - bowser: 2.11.0 - tslib: 2.4.1 - dev: false - /@aws-sdk/util-user-agent-browser/3.208.0: resolution: {integrity: sha512-Z5n9Kg2pBstzzQgRymQRgb4pM0bNPLGQejB3ZmCAphaxvuTBfu2E6KO55h5WwkFHUuh0i5u2wn1BI9R66S8CgQ==} dependencies: '@aws-sdk/types': 3.208.0 bowser: 2.11.0 tslib: 2.4.1 - dev: true - /@aws-sdk/util-user-agent-node/3.201.0: - resolution: {integrity: sha512-6lhhvwB3AZSISnYQpDGdlyTrzfYK2P9QYjy7vZEBRd9TSOaggiFICXe03ZvZfVOSeg0EInlMKn1fIHzPUHRuHQ==} + /@aws-sdk/util-user-agent-node/3.208.0: + resolution: {integrity: sha512-T7V3TTc+NdcHgITo8yMUDs/qR0wfPjURUrCixHPtqYkqvhoF6YrHUAoCbOcz7SG/Tsm2GgSKAHB4ip9D2QLg4g==} engines: {node: '>=14.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -2196,13 +1566,12 @@ packages: aws-crt: optional: true dependencies: - '@aws-sdk/node-config-provider': 3.201.0 - '@aws-sdk/types': 3.201.0 + '@aws-sdk/node-config-provider': 3.208.0 + '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: false - /@aws-sdk/util-user-agent-node/3.208.0: - resolution: {integrity: sha512-T7V3TTc+NdcHgITo8yMUDs/qR0wfPjURUrCixHPtqYkqvhoF6YrHUAoCbOcz7SG/Tsm2GgSKAHB4ip9D2QLg4g==} + /@aws-sdk/util-user-agent-node/3.209.0: + resolution: {integrity: sha512-lWfvnSX8rckMGaalrKZmBlPW7F0QOviG7XbLffwToN4HnYUyXcZXIE4EzOQzuOvDsOUlos/xLkUj6krdIAApcA==} engines: {node: '>=14.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -2210,40 +1579,22 @@ packages: aws-crt: optional: true dependencies: - '@aws-sdk/node-config-provider': 3.208.0 + '@aws-sdk/node-config-provider': 3.209.0 '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true + dev: false /@aws-sdk/util-utf8-browser/3.188.0: resolution: {integrity: sha512-jt627x0+jE+Ydr9NwkFstg3cUvgWh56qdaqAMDsqgRlKD21md/6G226z/Qxl7lb1VEW2LlmCx43ai/37Qwcj2Q==} dependencies: tslib: 2.4.1 - /@aws-sdk/util-utf8-node/3.201.0: - resolution: {integrity: sha512-A+bJFR/1rHYOJg137E69L1sX0I+LH+xf9ZjMXG9BVO0hSo7yDPoJVpHrzTJyOc3tuRITjIGBv9Qi4TKcoOSi1A==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/util-buffer-from': 3.201.0 - tslib: 2.4.1 - dev: false - /@aws-sdk/util-utf8-node/3.208.0: resolution: {integrity: sha512-jKY87Acv0yWBdFxx6bveagy5FYjz+dtV8IPT7ay1E2WPWH1czoIdMAkc8tSInK31T6CRnHWkLZ1qYwCbgRfERQ==} engines: {node: '>=14.0.0'} dependencies: '@aws-sdk/util-buffer-from': 3.208.0 tslib: 2.4.1 - dev: true - - /@aws-sdk/util-waiter/3.201.0: - resolution: {integrity: sha512-NE8+BkPDXq86oyVr9EKN1s+iN8GID8mhj6DbtEZKZES3fJ36xH7MldRylgCewgv1Qpd1W00M4c/mVvUx3zp7sg==} - engines: {node: '>=14.0.0'} - dependencies: - '@aws-sdk/abort-controller': 3.201.0 - '@aws-sdk/types': 3.201.0 - tslib: 2.4.1 - dev: false /@aws-sdk/util-waiter/3.208.0: resolution: {integrity: sha512-DEMVnoZXLUXeakBDMe9IhZ8VQCVf/5cMlNtE+4EpSVvH8CEE0Qfc0nDjrTYEkLpAIZWRL3tpHx61MMKvgCirXA==} @@ -2252,7 +1603,6 @@ packages: '@aws-sdk/abort-controller': 3.208.0 '@aws-sdk/types': 3.208.0 tslib: 2.4.1 - dev: true /@aws-sdk/xml-builder/3.201.0: resolution: {integrity: sha512-brRdB1wwMgjWEnOQsv7zSUhIQuh7DEicrfslAqHop4S4FtSI3GQAShpQqgOpMTNFYcpaWKmE/Y1MJmNY7xLCnw==} @@ -4244,6 +3594,28 @@ packages: resolution: {integrity: sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==} dev: true + /@types/prop-types/15.7.5: + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + dev: true + + /@types/react-dom/18.0.9: + resolution: {integrity: sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==} + dependencies: + '@types/react': 18.0.25 + dev: true + + /@types/react/18.0.25: + resolution: {integrity: sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g==} + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.2 + csstype: 3.1.1 + dev: true + + /@types/scheduler/0.16.2: + resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} + dev: true + /@types/stack-utils/2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true @@ -4252,6 +3624,12 @@ packages: resolution: {integrity: sha512-t1yxFAR2n0+VO6hd/FJ9F2uezAZVWHLmpmlJzm1eX03+H7+HsuTAp7L8QJs+2pQCfWkP1+EXsGK9Z9v7o/qPVQ==} dev: false + /@types/websocket/1.0.5: + resolution: {integrity: sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==} + dependencies: + '@types/node': 18.11.9 + dev: true + /@types/yargs-parser/21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} dev: true @@ -4717,6 +4095,14 @@ packages: ieee754: 1.2.1 dev: true + /bufferutil/4.0.7: + resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==} + engines: {node: '>=6.14.2'} + requiresBuild: true + dependencies: + node-gyp-build: 4.5.0 + dev: false + /builtins/1.0.3: resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} dev: true @@ -5167,6 +4553,17 @@ packages: which: 2.0.2 dev: true + /csstype/3.1.1: + resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} + dev: true + + /d/1.0.1: + resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} + dependencies: + es5-ext: 0.10.62 + type: 1.2.0 + dev: false + /dargs/7.0.0: resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} engines: {node: '>=8'} @@ -5176,6 +4573,17 @@ packages: resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} dev: true + /debug/2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: false + /debug/4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -5376,6 +4784,31 @@ packages: is-arrayish: 0.2.1 dev: true + /es5-ext/0.10.62: + resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} + engines: {node: '>=0.10'} + requiresBuild: true + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.3 + next-tick: 1.1.0 + dev: false + + /es6-iterator/2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + es6-symbol: 3.1.3 + dev: false + + /es6-symbol/3.1.3: + resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} + dependencies: + d: 1.0.1 + ext: 1.7.0 + dev: false + /esbuild-android-64/0.15.13: resolution: {integrity: sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==} engines: {node: '>=12'} @@ -5662,6 +5095,12 @@ packages: jest-util: 29.3.1 dev: true + /ext/1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + dependencies: + type: 2.7.2 + dev: false + /external-editor/3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} @@ -6404,7 +5843,6 @@ packages: /is-typedarray/1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - dev: true /is-unicode-supported/0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} @@ -7069,7 +6507,6 @@ packages: /js-tokens/4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true /js-yaml/3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} @@ -7349,6 +6786,13 @@ packages: wrap-ansi: 6.2.0 dev: true + /loose-envify/1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + dev: false + /lru-cache/6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -7598,6 +7042,10 @@ packages: engines: {node: '>=0.10.0'} dev: true + /ms/2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: false + /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true @@ -7634,6 +7082,10 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true + /next-tick/1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + dev: false + /node-addon-api/3.2.1: resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} dev: true @@ -7653,7 +7105,6 @@ packages: /node-gyp-build/4.5.0: resolution: {integrity: sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==} hasBin: true - dev: true /node-gyp/9.3.0: resolution: {integrity: sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q==} @@ -8317,10 +7768,37 @@ packages: engines: {node: '>=8'} dev: true + /react-dom/18.2.0_react@18.2.0: + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + dev: false + /react-is/18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true + /react-use-websocket/4.2.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-ZovaTlc/tWX6a590fi3kMWImhyoWj46BWJWvO5oucZJzRnVVhYtes2D9g+5MKXjSdR7Es3456hB89v4/1pcBKg==} + peerDependencies: + react: '>= 18.0.0' + react-dom: '>= 18.0.0' + dependencies: + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + + /react/18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + dev: false + /read-cmd-shim/3.0.1: resolution: {integrity: sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -8531,6 +8009,12 @@ packages: resolution: {integrity: sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==} dev: false + /scheduler/0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + dependencies: + loose-envify: 1.4.0 + dev: false + /semver/5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true @@ -8974,7 +8458,7 @@ packages: '@babel/core': 7.20.2 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.3.1_dnlfjp7n5lpfgnj4digwzn5fhe + jest: 29.3.1 jest-util: 29.3.1 json5: 2.2.1 lodash.memoize: 4.1.2 @@ -9094,10 +8578,6 @@ packages: /tslib/1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - /tslib/2.4.0: - resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} - dev: false - /tslib/2.4.1: resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} @@ -9192,11 +8672,18 @@ packages: engines: {node: '>=8'} dev: true + /type/1.2.0: + resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} + dev: false + + /type/2.7.2: + resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} + dev: false + /typedarray-to-buffer/3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: is-typedarray: 1.0.0 - dev: true /typedarray/0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} @@ -9266,6 +8753,14 @@ packages: querystring: 0.2.0 dev: false + /utf-8-validate/5.0.10: + resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} + engines: {node: '>=6.14.2'} + requiresBuild: true + dependencies: + node-gyp-build: 4.5.0 + dev: false + /util-deprecate/1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true @@ -9359,6 +8854,20 @@ packages: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: true + /websocket/1.0.34: + resolution: {integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==} + engines: {node: '>=4.0.0'} + dependencies: + bufferutil: 4.0.7 + debug: 2.6.9 + es5-ext: 0.10.62 + typedarray-to-buffer: 3.1.5 + utf-8-validate: 5.0.10 + yaeti: 0.0.6 + transitivePeerDependencies: + - supports-color + dev: false + /whatwg-url/5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: @@ -9498,6 +9007,11 @@ packages: engines: {node: '>=10'} dev: true + /yaeti/0.0.6: + resolution: {integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==} + engines: {node: '>=0.10.32'} + dev: false + /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} From 1fc543d49b9af2b4ad2866e7ae3b7c83e5fc63f7 Mon Sep 17 00:00:00 2001 From: Sam Sussman Date: Wed, 16 Nov 2022 22:56:40 -0600 Subject: [PATCH 3/4] more tester, UI, and websocket API --- .../src/tester/init-function.ts | 49 ++++++++ apps/test-app-runtime/src/tester/messages.ts | 26 ++++ .../src/tester/website/data.ts | 1 - .../src/tester/website/index.tsx | 44 ++++++- .../src/tester/websocket-handler.ts | 28 ++++- apps/test-app-runtime/src/tester/workflow.ts | 118 +++++++++++------- apps/test-app/src/tester.ts | 30 ++++- pnpm-lock.yaml | 43 ++++++- 8 files changed, 281 insertions(+), 58 deletions(-) create mode 100644 apps/test-app-runtime/src/tester/init-function.ts create mode 100644 apps/test-app-runtime/src/tester/messages.ts delete mode 100644 apps/test-app-runtime/src/tester/website/data.ts diff --git a/apps/test-app-runtime/src/tester/init-function.ts b/apps/test-app-runtime/src/tester/init-function.ts new file mode 100644 index 000000000..818af1d86 --- /dev/null +++ b/apps/test-app-runtime/src/tester/init-function.ts @@ -0,0 +1,49 @@ +import { Handler } from "aws-lambda"; +import { DynamoDBClient, QueryCommand } from "@aws-sdk/client-dynamodb"; +import { + ApiGatewayManagementApiClient, + PostToConnectionCommand, +} from "@aws-sdk/client-apigatewaymanagementapi"; +import { InitMessage, ProgressState } from "./messages.js"; + +const tableName = process.env.TABLE_NAME ?? ""; +const dynamo = new DynamoDBClient({}); + +export interface InitRequest { + connectionId: string; + url: string; +} + +export const handler: Handler = async (event) => { + const inProgressesResults = await dynamo.send( + new QueryCommand({ + TableName: tableName, + KeyConditionExpression: "pk=:pk and begins_with(sk,:sk)", + FilterExpression: "done=:false", + ExpressionAttributeValues: { + ":false": { BOOL: false }, + ":sk": { S: `P#` }, + ":pk": { S: "Progress" }, + }, + }) + ); + + const apig = new ApiGatewayManagementApiClient({ + endpoint: event.url, + }); + + const message: InitMessage = { + action: "init", + progresses: + inProgressesResults.Items?.map( + (p) => JSON.parse(p.state?.S ?? "{}") as ProgressState + ) ?? [], + }; + + await apig.send( + new PostToConnectionCommand({ + ConnectionId: event.connectionId, + Data: Buffer.from(JSON.stringify(message)), + }) + ); +}; diff --git a/apps/test-app-runtime/src/tester/messages.ts b/apps/test-app-runtime/src/tester/messages.ts new file mode 100644 index 000000000..20e9cbb33 --- /dev/null +++ b/apps/test-app-runtime/src/tester/messages.ts @@ -0,0 +1,26 @@ +export interface ReportProgressMessage { + action: "progressUpdate"; + progress: ProgressState; +} + +export function isReportProgressMessage( + message: any +): message is ReportProgressMessage { + return "action" in message && message.action === "progressUpdate"; +} + +export interface ProgressState { + value: number; + goal: number; + id: string; + done: boolean; +} + +export interface InitMessage { + action: "init"; + progresses: ProgressState[]; +} + +export function isInitMessage(message: any): message is InitMessage { + return "action" in message && message.action === "init"; +} diff --git a/apps/test-app-runtime/src/tester/website/data.ts b/apps/test-app-runtime/src/tester/website/data.ts deleted file mode 100644 index 782fe51fc..000000000 --- a/apps/test-app-runtime/src/tester/website/data.ts +++ /dev/null @@ -1 +0,0 @@ -export default { websocketUrl: "" } as { websocketUrl: string }; diff --git a/apps/test-app-runtime/src/tester/website/index.tsx b/apps/test-app-runtime/src/tester/website/index.tsx index f80d47b3d..0f7104a40 100644 --- a/apps/test-app-runtime/src/tester/website/index.tsx +++ b/apps/test-app-runtime/src/tester/website/index.tsx @@ -1,21 +1,42 @@ -import { useCallback, useEffect } from "react"; +import { useCallback, useEffect, useState } from "react"; import ReactDOM from "react-dom/client"; import useWebSocket from "react-use-websocket"; +import { + isInitMessage, + isReportProgressMessage, + ProgressState, +} from "../messages.js"; +// [WEBSOCKETURL] will be replaced at deployment time. const websocketUrl = "[WEBSOCKETURL]"; const App = () => { // TODO, make dynamic - const { sendMessage, lastMessage, readyState } = + const { lastJsonMessage, readyState, sendJsonMessage } = useWebSocket.default(websocketUrl); - const startWorkflow = useCallback(() => sendMessage(JSON.stringify({})), []); + const startWorkflow = useCallback(() => sendJsonMessage({}), []); + const [progresses, setProgresses] = useState< + Record | undefined + >(); useEffect(() => { - if (lastMessage !== null) { - console.log(lastMessage); + if (lastJsonMessage !== null) { + setProgresses((s) => { + if (isInitMessage(lastJsonMessage)) { + return Object.fromEntries( + lastJsonMessage.progresses.map((p) => [p.id, p]) + ); + } else if (isReportProgressMessage(lastJsonMessage)) { + return { + ...s, + [lastJsonMessage.progress.id]: lastJsonMessage.progress, + }; + } + return s; + }); } - }, [lastMessage]); + }, [lastJsonMessage]); useEffect(() => { console.log(readyState); @@ -24,6 +45,17 @@ const App = () => { return (
+ {progresses ? ( +
+ {Object.values(progresses) + .reverse() + .map((s) => ( +
+ {s.id}:{s.value}/{s.goal} +
+ ))} +
+ ) : null}
); }; diff --git a/apps/test-app-runtime/src/tester/websocket-handler.ts b/apps/test-app-runtime/src/tester/websocket-handler.ts index 345201f1f..9bdbbfb92 100644 --- a/apps/test-app-runtime/src/tester/websocket-handler.ts +++ b/apps/test-app-runtime/src/tester/websocket-handler.ts @@ -6,12 +6,20 @@ import { } from "@aws-sdk/client-dynamodb"; import { ExecutionHistoryClient, WorkflowClient } from "@eventual/aws-runtime"; import { SQSClient } from "@aws-sdk/client-sqs"; +import { + InvocationType, + InvokeCommand, + LambdaClient, +} from "@aws-sdk/client-lambda"; +import { InitRequest } from "./init-function.js"; const tableName = process.env.TABLE_NAME ?? ""; const workflowTable = process.env.WORKFLOW_TABLE ?? ""; const dynamo = new DynamoDBClient({}); const sqs = new SQSClient({}); const workflowQueueUrl = process.env.WORKFLOW_QUEUE_URL ?? ""; +const lambda = new LambdaClient({}); +const initFunctionName = process.env.INIT_FUNCTION_NAME; const workflowClient = new WorkflowClient({ dynamo, @@ -42,7 +50,23 @@ export const handler: APIGatewayProxyWebsocketHandlerV2 = async (event) => { TableName: tableName, }) ); - return { statusCode: 200 }; + + const initRequest: InitRequest = { + connectionId, + url: `https://${event.requestContext.domainName}/${event.requestContext.stage}`, + }; + + await lambda.send( + new InvokeCommand({ + FunctionName: initFunctionName, + InvocationType: InvocationType.Event, + Payload: Buffer.from(JSON.stringify(initRequest)), + }) + ); + + return { + statusCode: 200, + }; } else if (routeKey === "$disconnect") { await dynamo.send( new DeleteItemCommand({ @@ -71,7 +95,7 @@ export const handler: APIGatewayProxyWebsocketHandlerV2 = async (event) => { const started = await workflowClient.startWorkflow(request); return { - body: JSON.stringify({ executionId: started }), + body: JSON.stringify({ id: started }), statusCode: 200, }; } diff --git a/apps/test-app-runtime/src/tester/workflow.ts b/apps/test-app-runtime/src/tester/workflow.ts index dfa076019..8cacb669c 100644 --- a/apps/test-app-runtime/src/tester/workflow.ts +++ b/apps/test-app-runtime/src/tester/workflow.ts @@ -3,11 +3,17 @@ import { ApiGatewayManagementApiClient, PostToConnectionCommand, } from "@aws-sdk/client-apigatewaymanagementapi"; -import { DynamoDBClient, QueryCommand } from "@aws-sdk/client-dynamodb"; +import { + DynamoDBClient, + PutItemCommand, + QueryCommand, +} from "@aws-sdk/client-dynamodb"; +import { ulid } from "ulid"; +import { ProgressState } from "./messages.js"; const dynamo = new DynamoDBClient({}); const apig = new ApiGatewayManagementApiClient({ - endpoint: "https://nklz9hg986.execute-api.us-east-1.amazonaws.com/dev", + endpoint: process.env.WEBSOCKET_URL, }); const tableName = process.env.TABLE_NAME; @@ -46,14 +52,17 @@ interface Props { export type Request = Partial; +const defaults: Props = { + delaySeconds: 1, + goal: 100, + reportInterval: 1, + start: 0, + step: 1, +}; + export default eventual(async (request: Request) => { - const defaults: Props = { - delaySeconds: 1, - goal: 100, - reportInterval: 1, - start: 0, - step: 1, - }; + // TODO create random value or reference execution id + const id = await getId(); const props: Props = { ...defaults, @@ -63,10 +72,15 @@ export default eventual(async (request: Request) => { let value = props.start; let nextReportValue = value + props.reportInterval; + persist({ done: false, goal: props.goal, id, value }); + while (value < props.goal) { if (value >= nextReportValue) { nextReportValue = value + props.reportInterval; - report(value / (props.goal * 1.0), value, false); + // TODO: get the execution id; + const progressState = { done: false, goal: props.goal, value, id }; + persist(progressState); + report(progressState); } await delay(props.delaySeconds); @@ -74,45 +88,63 @@ export default eventual(async (request: Request) => { value = value + props.step; } - await report(1, value, true); + const progressState = { done: false, goal: props.goal, value, id }; + await Promise.all([persist(progressState), report(progressState)]); return "DONE"; }); -const report = activity( - "report", - async (progress: number, value: number, done: boolean) => { - const connectionsResults = await dynamo.send( - new QueryCommand({ - KeyConditionExpression: "pk=:pk and begins_with(sk,:sk)", - ExpressionAttributeValues: { - ":pk": { S: "Connection" }, - ":sk": { S: "C#" }, - }, - TableName: tableName, - }) - ); - - const connections = - connectionsResults.Items?.map((s) => s.connectionId?.S).filter( - (s): s is string => !!s - ) ?? []; - - console.log("Reporting to " + connections.join(",")); - - await Promise.allSettled( - connections.map((c) => - apig.send( - new PostToConnectionCommand({ - ConnectionId: c, - Data: Buffer.from(JSON.stringify({ progress, value, done })), - }) - ) +const report = activity("report", async (progress: ProgressState) => { + const connectionsResults = await dynamo.send( + new QueryCommand({ + KeyConditionExpression: "pk=:pk and begins_with(sk,:sk)", + ExpressionAttributeValues: { + ":pk": { S: "Connection" }, + ":sk": { S: "C#" }, + }, + TableName: tableName, + }) + ); + + const connections = + connectionsResults.Items?.map((s) => s.connectionId?.S).filter( + (s): s is string => !!s + ) ?? []; + + console.log("Reporting to " + connections.join(",")); + + await Promise.allSettled( + connections.map((c) => + apig.send( + new PostToConnectionCommand({ + ConnectionId: c, + Data: Buffer.from( + JSON.stringify({ action: "progressUpdate", progress }) + ), + }) ) - ); - } -); + ) + ); +}); + +const persist = activity("persist", async (progress: ProgressState) => { + await dynamo.send( + new PutItemCommand({ + Item: { + pk: { S: "Progress" }, + sk: { S: `P#${progress.id}` }, + state: { S: JSON.stringify(progress) }, + done: { BOOL: progress.done }, + }, + TableName: tableName, + }) + ); +}); const delay = activity("delay", async (seconds: number) => { return new Promise((resolve) => setTimeout(resolve, seconds * 1000)); }); + +const getId = activity("getId", () => { + return ulid(); +}); diff --git a/apps/test-app/src/tester.ts b/apps/test-app/src/tester.ts index 449867b63..aece1670e 100644 --- a/apps/test-app/src/tester.ts +++ b/apps/test-app/src/tester.ts @@ -30,24 +30,28 @@ export class Tester extends Construct { removalPolicy: RemovalPolicy.DESTROY, }); - const workflow = new Workflow(this, "testWorkflow", { - entry: require.resolve("test-app-runtime/lib/tester/workflow.js"), + // sends a message to the connected client on connect which contains the current in progress workflows. + const wsInit = new NodejsFunction(this, "InitFunction", { + entry: require.resolve("test-app-runtime/lib/tester/init-function.js"), environment: { TABLE_NAME: table.tableName, }, }); + table.grantReadData(wsInit); + const wsHandler = new NodejsFunction(this, "node", { entry: require.resolve( "test-app-runtime/lib/tester/websocket-handler.js" ), environment: { TABLE_NAME: table.tableName, - WORKFLOW_TABLE: workflow.table.tableName, - WORKFLOW_QUEUE_URL: workflow.workflowQueue.queueUrl, + INIT_FUNCTION_NAME: wsInit.functionName, }, }); + wsInit.grantInvoke(wsHandler); + const handlerIntegration = new WebSocketLambdaIntegration( "handler", wsHandler @@ -59,6 +63,8 @@ export class Tester extends Construct { defaultRouteOptions: { integration: handlerIntegration }, }); + api.grantManageConnections(wsInit); + // @ts-ignore - integration isn't exposed, but integrationId is needed to create a response. const integration = handlerIntegration.integration as WebSocketIntegration; @@ -117,11 +123,25 @@ export class Tester extends Construct { destinationBucket: webBucket, }); + const workflow = new Workflow(this, "testWorkflow", { + entry: require.resolve("test-app-runtime/lib/tester/workflow.js"), + environment: { + TABLE_NAME: table.tableName, + WEBSOCKET_URL: apiStage.callbackUrl, + }, + }); + + wsHandler.addEnvironment("WORKFLOW_TABLE", workflow.table.tableName); + wsHandler.addEnvironment( + "WORKFLOW_QUEUE_URL", + workflow.workflowQueue.queueUrl + ); + // Grant the worker the ability to send messages to connections. api.grantManageConnections(workflow.grantPrincipal); // Grant the worker the ability to read from dynamo - table.grantReadData(workflow.activityWorker); + table.grantReadWriteData(workflow.activityWorker); table.grantReadWriteData(wsHandler); // TODO: Support method on Workflow to grant all start workflow permissions diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 89176a556..799fa1729 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -75,6 +75,7 @@ importers: '@types/react-dom': ^18.0.9 '@types/websocket': 1.0.5 jest: ^29 + node-fetch: ^3.3.0 react: ^18.2.0 react-dom: ^18.2.0 react-use-websocket: ^4.2.0 @@ -92,6 +93,7 @@ importers: '@aws-sdk/lib-dynamodb': 3.210.0_j7tkjcrxueywswdl3cfvvhj2ym '@eventual/aws-runtime': link:../../packages/@eventual/aws-runtime '@eventual/core': link:../../packages/@eventual/core + node-fetch: 3.3.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-use-websocket: 4.2.0_biqbaboplfbrettd7655fr4n2y @@ -4569,6 +4571,11 @@ packages: engines: {node: '>=8'} dev: true + /data-uri-to-buffer/4.0.0: + resolution: {integrity: sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==} + engines: {node: '>= 12'} + dev: false + /dateformat/3.0.3: resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} dev: true @@ -5154,6 +5161,14 @@ packages: bser: 2.1.1 dev: true + /fetch-blob/3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.2.1 + dev: false + /figures/3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} @@ -5227,6 +5242,13 @@ packages: mime-types: 2.1.35 dev: true + /formdata-polyfill/4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + dev: false + /fs-constants/1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} dev: true @@ -7090,6 +7112,11 @@ packages: resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} dev: true + /node-domexception/1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + dev: false + /node-fetch/2.6.7: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} engines: {node: 4.x || >=6.0.0} @@ -7102,6 +7129,15 @@ packages: whatwg-url: 5.0.0 dev: true + /node-fetch/3.3.0: + resolution: {integrity: sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + data-uri-to-buffer: 4.0.0 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + dev: false + /node-gyp-build/4.5.0: resolution: {integrity: sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==} hasBin: true @@ -8458,7 +8494,7 @@ packages: '@babel/core': 7.20.2 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.3.1 + jest: 29.3.1_dnlfjp7n5lpfgnj4digwzn5fhe jest-util: 29.3.1 json5: 2.2.1 lodash.memoize: 4.1.2 @@ -8850,6 +8886,11 @@ packages: defaults: 1.0.4 dev: true + /web-streams-polyfill/3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + engines: {node: '>= 8'} + dev: false + /webidl-conversions/3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: true From 50239d44113582bc8a5a7b7f116b3bbb436c8741 Mon Sep 17 00:00:00 2001 From: Sam Sussman Date: Thu, 17 Nov 2022 02:48:42 -0600 Subject: [PATCH 4/4] more workflow things --- apps/test-app-runtime/package.json | 4 +- .../src/tester/website/index.tsx | 10 +- apps/test-app-runtime/src/tester/workflow.ts | 2 +- .../test-app-runtime/static/tester/index.html | 8 + pnpm-lock.yaml | 227 ++++++++++++++---- 5 files changed, 203 insertions(+), 48 deletions(-) diff --git a/apps/test-app-runtime/package.json b/apps/test-app-runtime/package.json index 4b19726b3..030c8f16d 100644 --- a/apps/test-app-runtime/package.json +++ b/apps/test-app-runtime/package.json @@ -23,7 +23,8 @@ "websocket": "^1.0.34", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-use-websocket": "^4.2.0" + "react-use-websocket": "^4.2.0", + "react-bootstrap": "^2.6.0" }, "devDependencies": { "@eventual/compiler": "workspace:^", @@ -33,6 +34,7 @@ "@types/websocket": "1.0.5", "@types/react": "18.0.25", "@types/react-dom": "^18.0.9", + "@types/react-bootstrap": "^0.32.32", "jest": "^29", "ts-jest": "^29", "ts-node": "^10.9.1", diff --git a/apps/test-app-runtime/src/tester/website/index.tsx b/apps/test-app-runtime/src/tester/website/index.tsx index 0f7104a40..7158e6195 100644 --- a/apps/test-app-runtime/src/tester/website/index.tsx +++ b/apps/test-app-runtime/src/tester/website/index.tsx @@ -6,6 +6,7 @@ import { isReportProgressMessage, ProgressState, } from "../messages.js"; +import { ProgressBar } from "react-bootstrap"; // [WEBSOCKETURL] will be replaced at deployment time. const websocketUrl = "[WEBSOCKETURL]"; @@ -50,8 +51,13 @@ const App = () => { {Object.values(progresses) .reverse() .map((s) => ( -
- {s.id}:{s.value}/{s.goal} +
+ {s.id}: +
))}
diff --git a/apps/test-app-runtime/src/tester/workflow.ts b/apps/test-app-runtime/src/tester/workflow.ts index 8cacb669c..0009b8caf 100644 --- a/apps/test-app-runtime/src/tester/workflow.ts +++ b/apps/test-app-runtime/src/tester/workflow.ts @@ -88,7 +88,7 @@ export default eventual(async (request: Request) => { value = value + props.step; } - const progressState = { done: false, goal: props.goal, value, id }; + const progressState = { done: true, goal: props.goal, value, id }; await Promise.all([persist(progressState), report(progressState)]); return "DONE"; diff --git a/apps/test-app-runtime/static/tester/index.html b/apps/test-app-runtime/static/tester/index.html index fafc3517e..3f47b534f 100644 --- a/apps/test-app-runtime/static/tester/index.html +++ b/apps/test-app-runtime/static/tester/index.html @@ -1,4 +1,12 @@ + + +
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 799fa1729..75f25a24b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -72,11 +72,12 @@ importers: '@types/jest': ^29 '@types/node': ^16 '@types/react': 18.0.25 + '@types/react-bootstrap': ^0.32.32 '@types/react-dom': ^18.0.9 '@types/websocket': 1.0.5 jest: ^29 - node-fetch: ^3.3.0 react: ^18.2.0 + react-bootstrap: ^2.6.0 react-dom: ^18.2.0 react-use-websocket: ^4.2.0 ts-jest: ^29 @@ -93,8 +94,8 @@ importers: '@aws-sdk/lib-dynamodb': 3.210.0_j7tkjcrxueywswdl3cfvvhj2ym '@eventual/aws-runtime': link:../../packages/@eventual/aws-runtime '@eventual/core': link:../../packages/@eventual/core - node-fetch: 3.3.0 react: 18.2.0 + react-bootstrap: 2.6.0_2zx2umvpluuhvlq44va5bta2da react-dom: 18.2.0_react@18.2.0 react-use-websocket: 4.2.0_biqbaboplfbrettd7655fr4n2y ulid: 2.3.0 @@ -105,6 +106,7 @@ importers: '@types/jest': 29.2.2 '@types/node': 16.18.3 '@types/react': 18.0.25 + '@types/react-bootstrap': 0.32.32 '@types/react-dom': 18.0.9 '@types/websocket': 1.0.5 jest: 29.3.1_dnlfjp7n5lpfgnj4digwzn5fhe @@ -1903,6 +1905,13 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true + /@babel/runtime/7.20.1: + resolution: {integrity: sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.10 + dev: false + /@babel/template/7.18.10: resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} engines: {node: '>=6.9.0'} @@ -3364,6 +3373,47 @@ packages: typescript: 4.8.4 dev: true + /@popperjs/core/2.11.6: + resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} + dev: false + + /@react-aria/ssr/3.4.0_react@18.2.0: + resolution: {integrity: sha512-qzuGk14/fUyUAoW/EBwgFcuMkVNXJVGlezTgZ1HovpCZ+p9844E7MUFHE7CuzFzPEIkVeqhBNIoIu+VJJ8YCOA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@babel/runtime': 7.20.1 + react: 18.2.0 + dev: false + + /@restart/hooks/0.4.7_react@18.2.0: + resolution: {integrity: sha512-ZbjlEHcG+FQtpDPHd7i4FzNNvJf2enAwZfJbpM8CW7BhmOAbsHpZe3tsHwfQUrBuyrxWqPYp2x5UMnilWcY22A==} + peerDependencies: + react: '>=16.8.0' + dependencies: + dequal: 2.0.3 + react: 18.2.0 + dev: false + + /@restart/ui/1.4.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-J7wFOx2DcmkBqCqiZgDsggLO7faiNh4Nv1/v80FmbRgP+MYpwaVDKKXLC69DA4+ejgNIsBP5ORtC74EZqO1j8A==} + peerDependencies: + react: '>=16.14.0' + react-dom: '>=16.14.0' + dependencies: + '@babel/runtime': 7.20.1 + '@popperjs/core': 2.11.6 + '@react-aria/ssr': 3.4.0_react@18.2.0 + '@restart/hooks': 0.4.7_react@18.2.0 + '@types/warning': 3.0.0 + dequal: 2.0.3 + dom-helpers: 5.2.1 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + uncontrollable: 7.2.1_react@18.2.0 + warning: 4.0.3 + dev: false + /@sinclair/typebox/0.24.51: resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} dev: true @@ -3598,6 +3648,11 @@ packages: /@types/prop-types/15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + + /@types/react-bootstrap/0.32.32: + resolution: {integrity: sha512-GM9UtV7v+C2F0rbqgIpMWdCKBMdX3PQURoJQobPO4vDAeFadcExNtKffi13/MjaAks+riJKVGyiMe+6OmDYT2w==} + dependencies: + '@types/react': 18.0.25 dev: true /@types/react-dom/18.0.9: @@ -3606,17 +3661,21 @@ packages: '@types/react': 18.0.25 dev: true + /@types/react-transition-group/4.4.5: + resolution: {integrity: sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==} + dependencies: + '@types/react': 18.0.25 + dev: false + /@types/react/18.0.25: resolution: {integrity: sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 csstype: 3.1.1 - dev: true /@types/scheduler/0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} - dev: true /@types/stack-utils/2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} @@ -3626,6 +3685,10 @@ packages: resolution: {integrity: sha512-t1yxFAR2n0+VO6hd/FJ9F2uezAZVWHLmpmlJzm1eX03+H7+HsuTAp7L8QJs+2pQCfWkP1+EXsGK9Z9v7o/qPVQ==} dev: false + /@types/warning/3.0.0: + resolution: {integrity: sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==} + dev: false + /@types/websocket/1.0.5: resolution: {integrity: sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==} dependencies: @@ -4251,6 +4314,10 @@ packages: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} dev: true + /classnames/2.3.2: + resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} + dev: false + /clean-stack/2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} @@ -4557,7 +4624,6 @@ packages: /csstype/3.1.1: resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} - dev: true /d/1.0.1: resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} @@ -4571,11 +4637,6 @@ packages: engines: {node: '>=8'} dev: true - /data-uri-to-buffer/4.0.0: - resolution: {integrity: sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==} - engines: {node: '>= 12'} - dev: false - /dateformat/3.0.3: resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} dev: true @@ -4658,6 +4719,11 @@ packages: resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} dev: true + /dequal/2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: false + /detect-indent/5.0.0: resolution: {integrity: sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==} engines: {node: '>=4'} @@ -4697,6 +4763,13 @@ packages: path-type: 4.0.0 dev: true + /dom-helpers/5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + dependencies: + '@babel/runtime': 7.20.1 + csstype: 3.1.1 + dev: false + /dot-prop/5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -5161,14 +5234,6 @@ packages: bser: 2.1.1 dev: true - /fetch-blob/3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.2.1 - dev: false - /figures/3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} @@ -5242,13 +5307,6 @@ packages: mime-types: 2.1.35 dev: true - /formdata-polyfill/4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} - dependencies: - fetch-blob: 3.2.0 - dev: false - /fs-constants/1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} dev: true @@ -5707,6 +5765,12 @@ packages: wrap-ansi: 7.0.0 dev: true + /invariant/2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + dependencies: + loose-envify: 1.4.0 + dev: false + /ip/2.0.0: resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} dev: true @@ -7112,11 +7176,6 @@ packages: resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} dev: true - /node-domexception/1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - dev: false - /node-fetch/2.6.7: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} engines: {node: 4.x || >=6.0.0} @@ -7129,15 +7188,6 @@ packages: whatwg-url: 5.0.0 dev: true - /node-fetch/3.3.0: - resolution: {integrity: sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - data-uri-to-buffer: 4.0.0 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 - dev: false - /node-gyp-build/4.5.0: resolution: {integrity: sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==} hasBin: true @@ -7381,6 +7431,11 @@ packages: - debug dev: true + /object-assign/4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: false + /object-inspect/1.12.2: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} dev: true @@ -7764,6 +7819,24 @@ packages: read: 1.0.7 dev: true + /prop-types-extra/1.1.1_react@18.2.0: + resolution: {integrity: sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==} + peerDependencies: + react: '>=0.14.0' + dependencies: + react: 18.2.0 + react-is: 16.13.1 + warning: 4.0.3 + dev: false + + /prop-types/15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + dev: false + /proto-list/1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} dev: true @@ -7804,6 +7877,33 @@ packages: engines: {node: '>=8'} dev: true + /react-bootstrap/2.6.0_2zx2umvpluuhvlq44va5bta2da: + resolution: {integrity: sha512-WnDgN6PR8WZKo2Og5J8EafFi4BsABjc96lNuMNfksrgiPDCw18/woWQCNhAeHFZQWTQ/PijkOrQ9ncTWwO//AA==} + peerDependencies: + '@types/react': '>=16.14.8' + react: '>=16.14.0' + react-dom: '>=16.14.0' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.20.1 + '@restart/hooks': 0.4.7_react@18.2.0 + '@restart/ui': 1.4.1_biqbaboplfbrettd7655fr4n2y + '@types/react': 18.0.25 + '@types/react-transition-group': 4.4.5 + classnames: 2.3.2 + dom-helpers: 5.2.1 + invariant: 2.2.4 + prop-types: 15.8.1 + prop-types-extra: 1.1.1_react@18.2.0 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-transition-group: 4.4.5_biqbaboplfbrettd7655fr4n2y + uncontrollable: 7.2.1_react@18.2.0 + warning: 4.0.3 + dev: false + /react-dom/18.2.0_react@18.2.0: resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: @@ -7814,10 +7914,32 @@ packages: scheduler: 0.23.0 dev: false + /react-is/16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + dev: false + /react-is/18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true + /react-lifecycles-compat/3.0.4: + resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} + dev: false + + /react-transition-group/4.4.5_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + dependencies: + '@babel/runtime': 7.20.1 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + /react-use-websocket/4.2.0_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-ZovaTlc/tWX6a590fi3kMWImhyoWj46BWJWvO5oucZJzRnVVhYtes2D9g+5MKXjSdR7Es3456hB89v4/1pcBKg==} peerDependencies: @@ -7947,6 +8069,10 @@ packages: strip-indent: 3.0.0 dev: true + /regenerator-runtime/0.13.10: + resolution: {integrity: sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==} + dev: false + /require-directory/2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -8744,6 +8870,18 @@ packages: hasBin: true dev: false + /uncontrollable/7.2.1_react@18.2.0: + resolution: {integrity: sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==} + peerDependencies: + react: '>=15.0.0' + dependencies: + '@babel/runtime': 7.20.1 + '@types/react': 18.0.25 + invariant: 2.2.4 + react: 18.2.0 + react-lifecycles-compat: 3.0.4 + dev: false + /unique-filename/2.0.1: resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -8872,6 +9010,12 @@ packages: makeerror: 1.0.12 dev: true + /warning/4.0.3: + resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} + dependencies: + loose-envify: 1.4.0 + dev: false + /watchpack/2.4.0: resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} engines: {node: '>=10.13.0'} @@ -8886,11 +9030,6 @@ packages: defaults: 1.0.4 dev: true - /web-streams-polyfill/3.2.1: - resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} - engines: {node: '>= 8'} - dev: false - /webidl-conversions/3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: true