From 7cfe152d4beebc0399e186f063d9a5d2d328ac12 Mon Sep 17 00:00:00 2001 From: Jade Zheng Date: Wed, 29 May 2024 12:07:33 +0800 Subject: [PATCH] feat(cli): add `logs` command (#236) Add the logs command to the CLI No longer refreshing the stack before retrieving the resource instances within the Pulumi stack. Include a debug condition to output the Pluto log during runtime. --- .changeset/three-rings-serve.md | 7 + apps/cli/package.json | 1 + apps/cli/src/commands/index.ts | 1 + apps/cli/src/commands/log.ts | 162 +++++ apps/cli/src/log.ts | 10 +- apps/cli/src/main.ts | 11 + components/adapters/pulumi/src/pulumi.ts | 2 +- .../pluto-infra/src/aws/apigateway_adapter.py | 3 +- .../pluto-infra/src/aws/common_top_adapter.py | 9 +- .../pluto-infra/src/aws/lambda_adapter.py | 3 +- .../src/aws/sns_subscriber_adapter.py | 3 +- pnpm-lock.yaml | 561 +++++++++++++++++- 12 files changed, 738 insertions(+), 35 deletions(-) create mode 100644 .changeset/three-rings-serve.md create mode 100644 apps/cli/src/commands/log.ts diff --git a/.changeset/three-rings-serve.md b/.changeset/three-rings-serve.md new file mode 100644 index 00000000..082002df --- /dev/null +++ b/.changeset/three-rings-serve.md @@ -0,0 +1,7 @@ +--- +"@plutolang/pulumi-adapter": patch +"@plutolang/pluto-infra": patch +"@plutolang/cli": patch +--- + +feat(cli): add `logs` command diff --git a/apps/cli/package.json b/apps/cli/package.json index 5c13c62e..d90811a2 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -31,6 +31,7 @@ "lint": "eslint ." }, "dependencies": { + "@aws-sdk/client-cloudwatch-logs": "^3.583.0", "@aws-sdk/client-lambda": "^3.462.0", "@inquirer/prompts": "^3.2.0", "@plutolang/base": "workspace:^", diff --git a/apps/cli/src/commands/index.ts b/apps/cli/src/commands/index.ts index 8383ceba..eb5e4d2a 100644 --- a/apps/cli/src/commands/index.ts +++ b/apps/cli/src/commands/index.ts @@ -5,3 +5,4 @@ export { deploy } from "./deploy"; export { destroy } from "./destory"; export { test } from "./test"; export { newStack } from "./stack_new"; +export { log } from "./log"; diff --git a/apps/cli/src/commands/log.ts b/apps/cli/src/commands/log.ts new file mode 100644 index 00000000..229d85d0 --- /dev/null +++ b/apps/cli/src/commands/log.ts @@ -0,0 +1,162 @@ +import chalk from "chalk"; +import { + CloudWatchLogsClient, + FilterLogEventsCommand, + FilterLogEventsCommandInput, + ResourceNotFoundException, +} from "@aws-sdk/client-cloudwatch-logs"; +import { PlatformType, ProvisionType, core } from "@plutolang/base"; +import logger from "../log"; +import { getStackBasicDirs } from "../utils"; +import { + buildAdapterByProvisionType, + loadArchRef, + loadProjectAndStack, + loadProjectRoot, +} from "./utils"; + +const CHALK_COLOR_FNS = [ + chalk.red, + chalk.green, + chalk.yellow, + chalk.blue, + chalk.magenta, + chalk.cyan, + chalk.white, + chalk.gray, + chalk.redBright, + chalk.greenBright, + chalk.yellowBright, + chalk.blueBright, + chalk.magentaBright, + chalk.cyanBright, + chalk.whiteBright, +]; + +export interface LogOptions { + stack?: string; + follow?: boolean; + all?: boolean; + showPlatform?: boolean; +} + +export async function log(opts: LogOptions) { + try { + const projectRoot = loadProjectRoot(); + const { project, stack } = loadProjectAndStack(projectRoot, opts.stack); + + if (stack.provisionType !== ProvisionType.Pulumi || stack.platformType !== PlatformType.AWS) { + logger.error("Currently, only pulumi stacks on AWS are supported."); + return; + } + + if (!stack.archRefFile || !stack.provisionFile) { + throw new Error( + "The stack is missing an architecture reference file and a provision file. Please execute the `pluto deploy` command again before proceeding with the log command." + ); + } + + // Get the deployed resources from Pulumi adapter + const { stateDir } = getStackBasicDirs(projectRoot, stack.name); + const adapter = await buildAdapterByProvisionType(stack.provisionType, { + project: project.name, + rootpath: project.rootpath, + language: project.language, + stack: stack, + archRef: loadArchRef(stack.archRefFile), + entrypoint: stack.provisionFile, + stateDir: stateDir, + }); + const result = await adapter.state(); + await viewLogForAWS(result.instances, opts); + } catch (e) { + if (e instanceof Error) { + logger.error("Failed to view the log: ", e.message); + } else { + logger.error("Failed to view the log: ", e); + } + logger.debug(e); + process.exit(1); + } +} + +/** + * View the logs for the AWS stack + * @param resources The deployed resources in the stack + * @param options The options for the log command + */ +async function viewLogForAWS(resources: core.ResourceInstance[], options?: LogOptions) { + // Get the names of the Lambda functions, and then print their logs + const AWS_LAMBDA_TYPE_IN_PULUMI = "aws:lambda/function:Function"; + const promises = resources + .filter((ins) => ins.type === AWS_LAMBDA_TYPE_IN_PULUMI) + .map((lambda, idx) => { + const name = lambda.name; + return viewLogOfLambda(name, idx); + }); + if (promises.length === 0) { + logger.warn("No functions found in the stack"); + } + await Promise.all(promises); + + async function viewLogOfLambda(lambdaName: string, idx: number) { + logger.info("View the logs for Lambda function: ", lambdaName); + + const client = new CloudWatchLogsClient(); + const logGroupName = `/aws/lambda/${lambdaName}`; + const colorFn = CHALK_COLOR_FNS[idx % CHALK_COLOR_FNS.length]; + + // Get logs within the last 5 minutes if not all logs are requested + const startTime = options?.all ? 0 : new Date().getTime() - 5 * 60 * 1000; + let nextToken: string | undefined; + // eslint-disable-next-line no-constant-condition + while (true) { + try { + const params: FilterLogEventsCommandInput = { + logGroupName, + startTime, + nextToken, + }; + const command = new FilterLogEventsCommand(params); + const response = await client.send(command); + + response.events?.forEach((event) => { + if (!options?.showPlatform && isPlatformLog(event.message ?? "")) { + // If the log message is a platform log, and the user does not want to show them, skip + // it + return; + } + + const formattedTime = new Date(event.timestamp!).toISOString(); + console.log(`${colorFn(lambdaName)} | ${formattedTime} | ${event.message?.trim()}`); + }); + + // Update the token for the next iteration + nextToken = response.nextToken ?? nextToken; + } catch (e) { + if (e instanceof ResourceNotFoundException) { + logger.debug(`No logs found for Lambda function: ${lambdaName}`); + } else { + throw e; + } + } + + if (!options?.follow) { + // If not following, exit the loop + break; + } else { + // Wait for 500 milliseconds before fetching the next batch of logs + await new Promise((resolve) => setTimeout(resolve, 500)); + } + } + } + + function isPlatformLog(logMessage: string) { + if ( + /^INIT_START|^START RequestId|^END RequestId|^INIT_REPORT|^REPORT RequestId/g.test(logMessage) + ) { + return true; + } + return false; + } +} diff --git a/apps/cli/src/log.ts b/apps/cli/src/log.ts index d204cce7..50e115d0 100644 --- a/apps/cli/src/log.ts +++ b/apps/cli/src/log.ts @@ -2,16 +2,20 @@ import chalk from "chalk"; class Logger { public static error(...msg: any[]) { - console.error(chalk.bold.red("Error:"), ...msg); + console.error(chalk.bold.red("ERRO:"), ...msg); + } + + public static warn(...msg: any[]) { + console.warn(chalk.yellow("WARN:"), ...msg); } public static info(...msg: any[]) { - console.info(chalk.blue("Info: "), ...msg); + console.info(chalk.blue("INFO: "), ...msg); } public static debug(...msg: any[]) { if (process.env.DEBUG) { - console.debug(chalk.gray("Debug:"), ...msg); + console.debug(chalk.gray("DEBU:"), ...msg); } } } diff --git a/apps/cli/src/main.ts b/apps/cli/src/main.ts index 7adbcd57..7f3c4593 100644 --- a/apps/cli/src/main.ts +++ b/apps/cli/src/main.ts @@ -115,6 +115,17 @@ async function main() { ) .action(cmd.destroy); + program + .command("logs") + .description( + "View the logs of the application. Please be aware that the logs that are displayed may not be in sequence. " + ) + .option("-s, --stack ", "Specified stack") + .option("-f, --follow", "Follow the log, like `tail -f`", false) + .option("-a, --all", "Show all logs from the beginning", false) + .option("--show-platform", "Show the logs of the platform", false) + .action(cmd.log); + program.command("stack", "Manage stacks"); if (process.env["DEBUG"]) { diff --git a/components/adapters/pulumi/src/pulumi.ts b/components/adapters/pulumi/src/pulumi.ts index 16e9b574..3adab525 100644 --- a/components/adapters/pulumi/src/pulumi.ts +++ b/components/adapters/pulumi/src/pulumi.ts @@ -89,7 +89,7 @@ export class PulumiAdapter extends core.Adapter { throw new Error("Cannot find the target pulumi stack. Have you already deployed it?"); } - await pulumiStack.refresh({ onOutput: debugStream }); + // await pulumiStack.refresh({ onOutput: debugStream }); const result = await pulumiStack.exportStack(); const instances: core.ResourceInstance[] = []; diff --git a/packages/pluto-infra/src/aws/apigateway_adapter.py b/packages/pluto-infra/src/aws/apigateway_adapter.py index 91c5ac26..16541eb7 100644 --- a/packages/pluto-infra/src/aws/apigateway_adapter.py +++ b/packages/pluto-infra/src/aws/apigateway_adapter.py @@ -21,7 +21,8 @@ def handler(event, context): query=event.get("queryStringParameters", {}) or {}, body=payload, ) - print("Pluto: Handling HTTP request: ", request) + if os.environ.get("DEBUG"): + print("Pluto: Handling HTTP request: ", request) try: user_handler: Callable[[HttpRequest], HttpResponse] = globals()["__handler_"] diff --git a/packages/pluto-infra/src/aws/common_top_adapter.py b/packages/pluto-infra/src/aws/common_top_adapter.py index e79ee393..674cd59e 100644 --- a/packages/pluto-infra/src/aws/common_top_adapter.py +++ b/packages/pluto-infra/src/aws/common_top_adapter.py @@ -7,18 +7,21 @@ depth = 0 child_directory = os.path.join(current_directory, f"child_{depth}") while os.path.exists(child_directory): - print(f"Adding {child_directory} to the system path.") + if os.environ.get("DEBUG"): + print(f"Adding {child_directory} to the system path.") sys.path.insert(0, child_directory) site_pkgs_dir = os.path.join(child_directory, "site-packages") if os.path.exists(site_pkgs_dir): - print(f"Adding {site_pkgs_dir} to the system path.") + if os.environ.get("DEBUG"): + print(f"Adding {site_pkgs_dir} to the system path.") sys.path.insert(0, site_pkgs_dir) depth += 1 child_directory = os.path.join(child_directory, f"child_{depth}") -print("The system path is:", sys.path) +if os.environ.get("DEBUG"): + print("The system path is:", sys.path) def handler(*args, **kwargs): diff --git a/packages/pluto-infra/src/aws/lambda_adapter.py b/packages/pluto-infra/src/aws/lambda_adapter.py index dd118c32..9621899a 100644 --- a/packages/pluto-infra/src/aws/lambda_adapter.py +++ b/packages/pluto-infra/src/aws/lambda_adapter.py @@ -18,7 +18,8 @@ def handler(payload, context): account_id = context.invoked_function_arn.split(":")[4] os.environ["AWS_ACCOUNT_ID"] = account_id try: - print("Payload:", payload) + if os.environ.get("DEBUG"): + print("Payload:", payload) if is_http_payload(payload): if payload["isBase64Encoded"]: body = base64.b64decode(payload["body"]).decode("utf-8") diff --git a/packages/pluto-infra/src/aws/sns_subscriber_adapter.py b/packages/pluto-infra/src/aws/sns_subscriber_adapter.py index 79b36ce5..4c383c6d 100644 --- a/packages/pluto-infra/src/aws/sns_subscriber_adapter.py +++ b/packages/pluto-infra/src/aws/sns_subscriber_adapter.py @@ -15,7 +15,8 @@ def handler(event, context): payload = record["Sns"]["Message"] data = json.loads(payload) cloud_event = CloudEvent(timestamp=data["timestamp"], data=data["data"]) - print("Pluto: Handling event: ", cloud_event) + if os.environ.get("DEBUG"): + print("Pluto: Handling event: ", cloud_event) try: user_handler: Callable[[CloudEvent], None] = globals()["__handler_"] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d34f9695..1a400051 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,6 +38,9 @@ importers: apps/cli: dependencies: + '@aws-sdk/client-cloudwatch-logs': + specifier: ^3.583.0 + version: 3.583.0 '@aws-sdk/client-lambda': specifier: ^3.462.0 version: 3.462.0 @@ -920,7 +923,7 @@ packages: resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.535.0 + '@aws-sdk/types': 3.577.0 tslib: 1.14.1 dev: false @@ -928,7 +931,7 @@ packages: resolution: {integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.575.0 + '@aws-sdk/types': 3.577.0 tslib: 1.14.1 dev: false @@ -957,7 +960,7 @@ packages: '@aws-crypto/sha256-js': 3.0.0 '@aws-crypto/supports-web-crypto': 3.0.0 '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.575.0 + '@aws-sdk/types': 3.577.0 '@aws-sdk/util-locate-window': 3.568.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 @@ -967,7 +970,7 @@ packages: resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.575.0 + '@aws-sdk/types': 3.577.0 tslib: 1.14.1 dev: false @@ -980,11 +983,64 @@ packages: /@aws-crypto/util@3.0.0: resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} dependencies: - '@aws-sdk/types': 3.535.0 + '@aws-sdk/types': 3.577.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 dev: false + /@aws-sdk/client-cloudwatch-logs@3.583.0: + resolution: {integrity: sha512-H9fQuy3M8WqNdnQOUAz9fMp+IsGqStoGJYPpRquSOKQt00wmnbNqTd0Nmz/xMlfJOCawNZb1yu1A+O1z/ugXag==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sso-oidc': 3.583.0(@aws-sdk/client-sts@3.583.0) + '@aws-sdk/client-sts': 3.583.0 + '@aws-sdk/core': 3.582.0 + '@aws-sdk/credential-provider-node': 3.583.0(@aws-sdk/client-sso-oidc@3.583.0)(@aws-sdk/client-sts@3.583.0) + '@aws-sdk/middleware-host-header': 3.577.0 + '@aws-sdk/middleware-logger': 3.577.0 + '@aws-sdk/middleware-recursion-detection': 3.577.0 + '@aws-sdk/middleware-user-agent': 3.583.0 + '@aws-sdk/region-config-resolver': 3.577.0 + '@aws-sdk/types': 3.577.0 + '@aws-sdk/util-endpoints': 3.583.0 + '@aws-sdk/util-user-agent-browser': 3.577.0 + '@aws-sdk/util-user-agent-node': 3.577.0 + '@smithy/config-resolver': 3.0.0 + '@smithy/core': 2.0.1 + '@smithy/eventstream-serde-browser': 3.0.0 + '@smithy/eventstream-serde-config-resolver': 3.0.0 + '@smithy/eventstream-serde-node': 3.0.0 + '@smithy/fetch-http-handler': 3.0.1 + '@smithy/hash-node': 3.0.0 + '@smithy/invalid-dependency': 3.0.0 + '@smithy/middleware-content-length': 3.0.0 + '@smithy/middleware-endpoint': 3.0.0 + '@smithy/middleware-retry': 3.0.1 + '@smithy/middleware-serde': 3.0.0 + '@smithy/middleware-stack': 3.0.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/node-http-handler': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/smithy-client': 3.0.1 + '@smithy/types': 3.0.0 + '@smithy/url-parser': 3.0.0 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.1 + '@smithy/util-defaults-mode-node': 3.0.1 + '@smithy/util-endpoints': 2.0.0 + '@smithy/util-middleware': 3.0.0 + '@smithy/util-retry': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + uuid: 9.0.1 + transitivePeerDependencies: + - aws-crt + dev: false + /@aws-sdk/client-cognito-identity@3.445.0: resolution: {integrity: sha512-9+RX5yaSZH1IvzExpI4rmaWxm/BHKoNERmzZDGor7tasi3XH5iz3OPSd9OC+SFcBmxGa6C/hqoJK/xqhr5V16A==} engines: {node: '>=14.0.0'} @@ -1457,6 +1513,55 @@ packages: - aws-crt dev: false + /@aws-sdk/client-sso-oidc@3.583.0(@aws-sdk/client-sts@3.583.0): + resolution: {integrity: sha512-LO3wmrFXPi2kNE46lD1XATfRrvdNxXd4DlTFouoWmr7lvqoUkcbmtkV2r/XChZA2z0HiDauphC1e8b8laJVeSg==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.583.0 + '@aws-sdk/core': 3.582.0 + '@aws-sdk/credential-provider-node': 3.583.0(@aws-sdk/client-sso-oidc@3.583.0)(@aws-sdk/client-sts@3.583.0) + '@aws-sdk/middleware-host-header': 3.577.0 + '@aws-sdk/middleware-logger': 3.577.0 + '@aws-sdk/middleware-recursion-detection': 3.577.0 + '@aws-sdk/middleware-user-agent': 3.583.0 + '@aws-sdk/region-config-resolver': 3.577.0 + '@aws-sdk/types': 3.577.0 + '@aws-sdk/util-endpoints': 3.583.0 + '@aws-sdk/util-user-agent-browser': 3.577.0 + '@aws-sdk/util-user-agent-node': 3.577.0 + '@smithy/config-resolver': 3.0.0 + '@smithy/core': 2.0.1 + '@smithy/fetch-http-handler': 3.0.1 + '@smithy/hash-node': 3.0.0 + '@smithy/invalid-dependency': 3.0.0 + '@smithy/middleware-content-length': 3.0.0 + '@smithy/middleware-endpoint': 3.0.0 + '@smithy/middleware-retry': 3.0.1 + '@smithy/middleware-serde': 3.0.0 + '@smithy/middleware-stack': 3.0.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/node-http-handler': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/smithy-client': 3.0.1 + '@smithy/types': 3.0.0 + '@smithy/url-parser': 3.0.0 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.1 + '@smithy/util-defaults-mode-node': 3.0.1 + '@smithy/util-endpoints': 2.0.0 + '@smithy/util-middleware': 3.0.0 + '@smithy/util-retry': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/client-sts' + - aws-crt + dev: false + /@aws-sdk/client-sso@3.445.0: resolution: {integrity: sha512-me4LvqNnu6kxi+sW7t0AgMv1Yi64ikas0x2+5jv23o6Csg32w0S0xOjCTKQYahOA5CMFunWvlkFIfxbqs+Uo7w==} engines: {node: '>=14.0.0'} @@ -1562,26 +1667,72 @@ packages: '@aws-sdk/util-user-agent-browser': 3.575.0 '@aws-sdk/util-user-agent-node': 3.575.0 '@smithy/config-resolver': 3.0.0 - '@smithy/core': 2.0.0 - '@smithy/fetch-http-handler': 3.0.0 + '@smithy/core': 2.0.1 + '@smithy/fetch-http-handler': 3.0.1 '@smithy/hash-node': 3.0.0 '@smithy/invalid-dependency': 3.0.0 '@smithy/middleware-content-length': 3.0.0 '@smithy/middleware-endpoint': 3.0.0 - '@smithy/middleware-retry': 3.0.0 + '@smithy/middleware-retry': 3.0.1 '@smithy/middleware-serde': 3.0.0 '@smithy/middleware-stack': 3.0.0 '@smithy/node-config-provider': 3.0.0 '@smithy/node-http-handler': 3.0.0 '@smithy/protocol-http': 4.0.0 - '@smithy/smithy-client': 3.0.0 + '@smithy/smithy-client': 3.0.1 '@smithy/types': 3.0.0 '@smithy/url-parser': 3.0.0 '@smithy/util-base64': 3.0.0 '@smithy/util-body-length-browser': 3.0.0 '@smithy/util-body-length-node': 3.0.0 - '@smithy/util-defaults-mode-browser': 3.0.0 - '@smithy/util-defaults-mode-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.1 + '@smithy/util-defaults-mode-node': 3.0.1 + '@smithy/util-endpoints': 2.0.0 + '@smithy/util-middleware': 3.0.0 + '@smithy/util-retry': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/client-sso@3.583.0: + resolution: {integrity: sha512-FNJ2MmiBtZZwgkj4+GLVrzqwmD6D8FBptrFZk7PnGkSf7v1Q8txYNI6gY938RRhYJ4lBW4cNbhPvWoDxAl90Hw==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/core': 3.582.0 + '@aws-sdk/middleware-host-header': 3.577.0 + '@aws-sdk/middleware-logger': 3.577.0 + '@aws-sdk/middleware-recursion-detection': 3.577.0 + '@aws-sdk/middleware-user-agent': 3.583.0 + '@aws-sdk/region-config-resolver': 3.577.0 + '@aws-sdk/types': 3.577.0 + '@aws-sdk/util-endpoints': 3.583.0 + '@aws-sdk/util-user-agent-browser': 3.577.0 + '@aws-sdk/util-user-agent-node': 3.577.0 + '@smithy/config-resolver': 3.0.0 + '@smithy/core': 2.0.1 + '@smithy/fetch-http-handler': 3.0.1 + '@smithy/hash-node': 3.0.0 + '@smithy/invalid-dependency': 3.0.0 + '@smithy/middleware-content-length': 3.0.0 + '@smithy/middleware-endpoint': 3.0.0 + '@smithy/middleware-retry': 3.0.1 + '@smithy/middleware-serde': 3.0.0 + '@smithy/middleware-stack': 3.0.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/node-http-handler': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/smithy-client': 3.0.1 + '@smithy/types': 3.0.0 + '@smithy/url-parser': 3.0.0 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.1 + '@smithy/util-defaults-mode-node': 3.0.1 '@smithy/util-endpoints': 2.0.0 '@smithy/util-middleware': 3.0.0 '@smithy/util-retry': 3.0.0 @@ -1735,6 +1886,54 @@ packages: - aws-crt dev: false + /@aws-sdk/client-sts@3.583.0: + resolution: {integrity: sha512-xDMxiemPDWr9dY2Q4AyixkRnk/hvS6fs6OWxuVCz1WO47YhaAfOsEGAgQMgDLLaOfj/oLU5D14uTNBEPGh4rBA==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sso-oidc': 3.583.0(@aws-sdk/client-sts@3.583.0) + '@aws-sdk/core': 3.582.0 + '@aws-sdk/credential-provider-node': 3.583.0(@aws-sdk/client-sso-oidc@3.583.0)(@aws-sdk/client-sts@3.583.0) + '@aws-sdk/middleware-host-header': 3.577.0 + '@aws-sdk/middleware-logger': 3.577.0 + '@aws-sdk/middleware-recursion-detection': 3.577.0 + '@aws-sdk/middleware-user-agent': 3.583.0 + '@aws-sdk/region-config-resolver': 3.577.0 + '@aws-sdk/types': 3.577.0 + '@aws-sdk/util-endpoints': 3.583.0 + '@aws-sdk/util-user-agent-browser': 3.577.0 + '@aws-sdk/util-user-agent-node': 3.577.0 + '@smithy/config-resolver': 3.0.0 + '@smithy/core': 2.0.1 + '@smithy/fetch-http-handler': 3.0.1 + '@smithy/hash-node': 3.0.0 + '@smithy/invalid-dependency': 3.0.0 + '@smithy/middleware-content-length': 3.0.0 + '@smithy/middleware-endpoint': 3.0.0 + '@smithy/middleware-retry': 3.0.1 + '@smithy/middleware-serde': 3.0.0 + '@smithy/middleware-stack': 3.0.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/node-http-handler': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/smithy-client': 3.0.1 + '@smithy/types': 3.0.0 + '@smithy/url-parser': 3.0.0 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.1 + '@smithy/util-defaults-mode-node': 3.0.1 + '@smithy/util-endpoints': 2.0.0 + '@smithy/util-middleware': 3.0.0 + '@smithy/util-retry': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + /@aws-sdk/core@3.431.0: resolution: {integrity: sha512-PjvypPLathGopvBfXdWwQ1t/2HxVjebscGCc0roNzdt5nv+DGHE4M1UOTLsZnUeDn78ItUJTjJmDRqHB4exUVQ==} engines: {node: '>=14.0.0'} @@ -1771,6 +1970,19 @@ packages: tslib: 2.6.2 dev: false + /@aws-sdk/core@3.582.0: + resolution: {integrity: sha512-ofmD96IQc9g1dbyqlCyxu5fCG7kIl9p1NoN5+vGBUyLdbmPCV3Pdg99nRHYEJuv2MgGx5AUFGDPMHcqbJpnZIw==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/core': 2.0.1 + '@smithy/protocol-http': 4.0.0 + '@smithy/signature-v4': 3.0.0 + '@smithy/smithy-client': 3.0.1 + '@smithy/types': 3.0.0 + fast-xml-parser: 4.2.5 + tslib: 2.6.2 + dev: false + /@aws-sdk/credential-provider-cognito-identity@3.445.0: resolution: {integrity: sha512-IREle9ULafOYK5sjzA+pbxKqn/0G+bnf7mVwRhFPtmz/7/cTLCdbHyw2c1A8DXBwZw1CW30JOA+YUZbZXYJJ/g==} engines: {node: '>=14.0.0'} @@ -1814,6 +2026,16 @@ packages: tslib: 2.6.2 dev: false + /@aws-sdk/credential-provider-env@3.577.0: + resolution: {integrity: sha512-Jxu255j0gToMGEiqufP8ZtKI8HW90lOLjwJ3LrdlD/NLsAY0tOQf1fWc53u28hWmmNGMxmCrL2p66IOgMDhDUw==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.577.0 + '@smithy/property-provider': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + dev: false + /@aws-sdk/credential-provider-http@3.435.0: resolution: {integrity: sha512-i07YSy3+IrXwAzp3goCMo2OYzAwqRGIWPNMUX5ziFgA1eMlRWNC2slnbqJzax6xHrU8HdpNESAfflnQvUVBqYQ==} engines: {node: '>=14.0.0'} @@ -1834,16 +2056,31 @@ packages: engines: {node: '>=16.0.0'} dependencies: '@aws-sdk/types': 3.575.0 - '@smithy/fetch-http-handler': 3.0.0 + '@smithy/fetch-http-handler': 3.0.1 '@smithy/node-http-handler': 3.0.0 '@smithy/property-provider': 3.0.0 '@smithy/protocol-http': 4.0.0 - '@smithy/smithy-client': 3.0.0 + '@smithy/smithy-client': 3.0.1 '@smithy/types': 3.0.0 '@smithy/util-stream': 3.0.0 tslib: 2.6.2 dev: false + /@aws-sdk/credential-provider-http@3.582.0: + resolution: {integrity: sha512-kGOUKw5ryPkDIYB69PjK3SicVLTbWB06ouFN2W1EvqUJpkQGPAUGzYcomKtt3mJaCTf/1kfoaHwARAl6KKSP8Q==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.577.0 + '@smithy/fetch-http-handler': 3.0.1 + '@smithy/node-http-handler': 3.0.0 + '@smithy/property-provider': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/smithy-client': 3.0.1 + '@smithy/types': 3.0.0 + '@smithy/util-stream': 3.0.1 + tslib: 2.6.2 + dev: false + /@aws-sdk/credential-provider-ini@3.445.0: resolution: {integrity: sha512-R7IYSGjNZ5KKJwQJ2HNPemjpAMWvdce91i8w+/aHfqeGfTXrmYJu99PeGRyyBTKEumBaojyjTRvmO8HzS+/l7g==} engines: {node: '>=14.0.0'} @@ -1902,6 +2139,28 @@ packages: - aws-crt dev: false + /@aws-sdk/credential-provider-ini@3.583.0(@aws-sdk/client-sso-oidc@3.583.0)(@aws-sdk/client-sts@3.583.0): + resolution: {integrity: sha512-8I0oWNg/yps6ctjhEeL/qJ9BIa/+xXP7RPDQqFKZ2zBkWbmLLOoMWXRvl8uKUBD6qCe+DGmcu9skfVXeXSesEQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.583.0 + dependencies: + '@aws-sdk/client-sts': 3.583.0 + '@aws-sdk/credential-provider-env': 3.577.0 + '@aws-sdk/credential-provider-process': 3.577.0 + '@aws-sdk/credential-provider-sso': 3.583.0(@aws-sdk/client-sso-oidc@3.583.0) + '@aws-sdk/credential-provider-web-identity': 3.577.0(@aws-sdk/client-sts@3.583.0) + '@aws-sdk/types': 3.577.0 + '@smithy/credential-provider-imds': 3.0.0 + '@smithy/property-provider': 3.0.0 + '@smithy/shared-ini-file-loader': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + dev: false + /@aws-sdk/credential-provider-node@3.445.0: resolution: {integrity: sha512-zI4k4foSjQRKNEsouculRcz7IbLfuqdFxypDLYwn+qPNMqJwWJ7VxOOeBSPUpHFcd7CLSfbHN2JAhQ7M02gPTA==} engines: {node: '>=14.0.0'} @@ -1962,6 +2221,28 @@ packages: - aws-crt dev: false + /@aws-sdk/credential-provider-node@3.583.0(@aws-sdk/client-sso-oidc@3.583.0)(@aws-sdk/client-sts@3.583.0): + resolution: {integrity: sha512-yBNypBXny7zJH85SzxDj8s1mbLXv9c/Vbq0qR3R3POj2idZ6ywB/qlIRC1XwBuv49Wvg8kA1wKXk3K3jrpcVIw==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/credential-provider-env': 3.577.0 + '@aws-sdk/credential-provider-http': 3.582.0 + '@aws-sdk/credential-provider-ini': 3.583.0(@aws-sdk/client-sso-oidc@3.583.0)(@aws-sdk/client-sts@3.583.0) + '@aws-sdk/credential-provider-process': 3.577.0 + '@aws-sdk/credential-provider-sso': 3.583.0(@aws-sdk/client-sso-oidc@3.583.0) + '@aws-sdk/credential-provider-web-identity': 3.577.0(@aws-sdk/client-sts@3.583.0) + '@aws-sdk/types': 3.577.0 + '@smithy/credential-provider-imds': 3.0.0 + '@smithy/property-provider': 3.0.0 + '@smithy/shared-ini-file-loader': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - '@aws-sdk/client-sts' + - aws-crt + dev: false + /@aws-sdk/credential-provider-process@3.433.0: resolution: {integrity: sha512-W7FcGlQjio9Y/PepcZGRyl5Bpwb0uWU7qIUCh+u4+q2mW4D5ZngXg8V/opL9/I/p4tUH9VXZLyLGwyBSkdhL+A==} engines: {node: '>=14.0.0'} @@ -1995,6 +2276,17 @@ packages: tslib: 2.6.2 dev: false + /@aws-sdk/credential-provider-process@3.577.0: + resolution: {integrity: sha512-Gin6BWtOiXxIgITrJ3Nwc+Y2P1uVT6huYR4EcbA/DJUPWyO0n9y5UFLewPvVbLkRn15JeEqErBLUrHclkiOKtw==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.577.0 + '@smithy/property-provider': 3.0.0 + '@smithy/shared-ini-file-loader': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + dev: false + /@aws-sdk/credential-provider-sso@3.445.0: resolution: {integrity: sha512-gJz7kAiDecdhtApgXnxfZsXKsww8BnifDF9MAx9Dr4X6no47qYsCCS3XPuEyRiF9VebXvHOH0H260Zp3bVyniQ==} engines: {node: '>=14.0.0'} @@ -2041,6 +2333,22 @@ packages: - aws-crt dev: false + /@aws-sdk/credential-provider-sso@3.583.0(@aws-sdk/client-sso-oidc@3.583.0): + resolution: {integrity: sha512-G/1EvL9tBezSiU+06tG4K/kOvFfPjnheT4JSXqjPM7+vjKzgp2jxp1J9MMd69zs4jVWon932zMeGgjrCplzMEg==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/client-sso': 3.583.0 + '@aws-sdk/token-providers': 3.577.0(@aws-sdk/client-sso-oidc@3.583.0) + '@aws-sdk/types': 3.577.0 + '@smithy/property-provider': 3.0.0 + '@smithy/shared-ini-file-loader': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - aws-crt + dev: false + /@aws-sdk/credential-provider-web-identity@3.433.0: resolution: {integrity: sha512-RlwjP1I5wO+aPpwyCp23Mk8nmRbRL33hqRASy73c4JA2z2YiRua+ryt6MalIxehhwQU6xvXUKulJnPG9VaMFZg==} engines: {node: '>=14.0.0'} @@ -2074,6 +2382,19 @@ packages: tslib: 2.6.2 dev: false + /@aws-sdk/credential-provider-web-identity@3.577.0(@aws-sdk/client-sts@3.583.0): + resolution: {integrity: sha512-ZGHGNRaCtJJmszb9UTnC7izNCtRUttdPlLdMkh41KPS32vfdrBDHs1JrpbZijItRj1xKuOXsiYSXLAaHGcLh8Q==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.577.0 + dependencies: + '@aws-sdk/client-sts': 3.583.0 + '@aws-sdk/types': 3.577.0 + '@smithy/property-provider': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + dev: false + /@aws-sdk/credential-providers@3.445.0: resolution: {integrity: sha512-EyIlOSfBiDDhXrWfVUcUZjU1kFDRL1ccOiSYnP9aOg/vxtzOhsSGyfU6JVMMLFGhv/tdiqJXjCHiyZj2qddYiA==} engines: {node: '>=14.0.0'} @@ -2198,6 +2519,16 @@ packages: tslib: 2.6.2 dev: false + /@aws-sdk/middleware-host-header@3.577.0: + resolution: {integrity: sha512-9ca5MJz455CODIVXs0/sWmJm7t3QO4EUa1zf8pE8grLpzf0J94bz/skDWm37Pli13T3WaAQBHCTiH2gUVfCsWg==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.577.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + dev: false + /@aws-sdk/middleware-location-constraint@3.575.0: resolution: {integrity: sha512-MtQsLsEjSSSfm0OlQqg9PEzS1nxJDdApGoeCYLTbCzIp6hChdLZCCsDXwGg9S++24rjQsUglMhXh4WGXQ9FDnw==} engines: {node: '>=16.0.0'} @@ -2234,6 +2565,15 @@ packages: tslib: 2.6.2 dev: false + /@aws-sdk/middleware-logger@3.577.0: + resolution: {integrity: sha512-aPFGpGjTZcJYk+24bg7jT4XdIp42mFXSuPt49lw5KygefLyJM/sB0bKKqPYYivW0rcuZ9brQ58eZUNthrzYAvg==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.577.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + dev: false + /@aws-sdk/middleware-recursion-detection@3.433.0: resolution: {integrity: sha512-HEvYC9PQlWY/ccUYtLvAlwwf1iCif2TSAmLNr3YTBRVa98x6jKL0hlCrHWYklFeqOGSKy6XhE+NGJMUII0/HaQ==} engines: {node: '>=14.0.0'} @@ -2264,6 +2604,16 @@ packages: tslib: 2.6.2 dev: false + /@aws-sdk/middleware-recursion-detection@3.577.0: + resolution: {integrity: sha512-pn3ZVEd2iobKJlR3H+bDilHjgRnNrQ6HMmK9ZzZw89Ckn3Dcbv48xOv4RJvu0aU8SDLl/SNCxppKjeLDTPGBNA==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.577.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + dev: false + /@aws-sdk/middleware-sdk-s3@3.575.0: resolution: {integrity: sha512-8cBG8/tap4F6+UigTpKu8D2bvsLgqRTmn1K86qo3LqRX0Wc5X8TVjdKA2PmG0onOOr7rqTLcP9Q02LCh3usU6Q==} engines: {node: '>=16.0.0'} @@ -2380,6 +2730,17 @@ packages: tslib: 2.6.2 dev: false + /@aws-sdk/middleware-user-agent@3.583.0: + resolution: {integrity: sha512-xVNXXXDWvBVI/AeVtSdA9SVumqxiZaESk/JpUn9GMkmtTKfter0Cweap+1iQ9j8bRAO0vNhmIkbcvdB1S4WVUw==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.577.0 + '@aws-sdk/util-endpoints': 3.583.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + dev: false + /@aws-sdk/region-config-resolver@3.433.0: resolution: {integrity: sha512-xpjRjCZW+CDFdcMmmhIYg81ST5UAnJh61IHziQEk0FXONrg4kjyYPZAOjEdzXQ+HxJQuGQLKPhRdzxmQnbX7pg==} engines: {node: '>=14.0.0'} @@ -2414,6 +2775,18 @@ packages: tslib: 2.6.2 dev: false + /@aws-sdk/region-config-resolver@3.577.0: + resolution: {integrity: sha512-4ChCFACNwzqx/xjg3zgFcW8Ali6R9C95cFECKWT/7CUM1D0MGvkclSH2cLarmHCmJgU6onKkJroFtWp0kHhgyg==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.577.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.0 + tslib: 2.6.2 + dev: false + /@aws-sdk/signature-v4-multi-region@3.575.0: resolution: {integrity: sha512-QMwuLuNwnEQ51RCZX8H/lXnOJgBcJJOCgClB9usW/XujNJVq8GnpZ5E7TsQLN88G6fifmcjQWonLKummuh/zVA==} engines: {node: '>=16.0.0'} @@ -2530,6 +2903,20 @@ packages: tslib: 2.6.2 dev: false + /@aws-sdk/token-providers@3.577.0(@aws-sdk/client-sso-oidc@3.583.0): + resolution: {integrity: sha512-0CkIZpcC3DNQJQ1hDjm2bdSy/Xjs7Ny5YvSsacasGOkNfk+FdkiQy6N67bZX3Zbc9KIx+Nz4bu3iDeNSNplnnQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sso-oidc': ^3.577.0 + dependencies: + '@aws-sdk/client-sso-oidc': 3.583.0(@aws-sdk/client-sts@3.583.0) + '@aws-sdk/types': 3.577.0 + '@smithy/property-provider': 3.0.0 + '@smithy/shared-ini-file-loader': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + dev: false + /@aws-sdk/types@3.433.0: resolution: {integrity: sha512-0jEE2mSrNDd8VGFjTc1otYrwYPIkzZJEIK90ZxisKvQ/EURGBhNzWn7ejWB9XCMFT6XumYLBR0V9qq5UPisWtA==} engines: {node: '>=14.0.0'} @@ -2546,16 +2933,16 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/types@3.535.0: - resolution: {integrity: sha512-aY4MYfduNj+sRR37U7XxYR8wemfbKP6lx00ze2M2uubn7mZotuVrWYAafbMSXrdEMSToE5JDhr28vArSOoLcSg==} - engines: {node: '>=14.0.0'} + /@aws-sdk/types@3.575.0: + resolution: {integrity: sha512-XrnolQGs0wXxdgNudirR14OgNOarH7WUif38+2Pd4onZH+L7XoILem0EgA1tRpgFpw2pFHlZCNaAHDNSBEal7g==} + engines: {node: '>=16.0.0'} dependencies: - '@smithy/types': 2.12.0 + '@smithy/types': 3.0.0 tslib: 2.6.2 dev: false - /@aws-sdk/types@3.575.0: - resolution: {integrity: sha512-XrnolQGs0wXxdgNudirR14OgNOarH7WUif38+2Pd4onZH+L7XoILem0EgA1tRpgFpw2pFHlZCNaAHDNSBEal7g==} + /@aws-sdk/types@3.577.0: + resolution: {integrity: sha512-FT2JZES3wBKN/alfmhlo+3ZOq/XJ0C7QOZcDNrpKjB0kqYoKjhVKZ/Hx6ArR0czkKfHzBBEs6y40ebIHx2nSmA==} engines: {node: '>=16.0.0'} dependencies: '@smithy/types': 3.0.0 @@ -2607,6 +2994,16 @@ packages: tslib: 2.6.2 dev: false + /@aws-sdk/util-endpoints@3.583.0: + resolution: {integrity: sha512-ZC9mb2jq6BFXPYsUsD2tmYcnlmd+9PGNwnFNn8jk4abna5Jjk2wDknN81ybktmBR5ttN9W8ugmktuKtvAMIDCQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-sdk/types': 3.577.0 + '@smithy/types': 3.0.0 + '@smithy/util-endpoints': 2.0.0 + tslib: 2.6.2 + dev: false + /@aws-sdk/util-locate-window@3.568.0: resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} engines: {node: '>=16.0.0'} @@ -2641,6 +3038,15 @@ packages: tslib: 2.6.2 dev: false + /@aws-sdk/util-user-agent-browser@3.577.0: + resolution: {integrity: sha512-zEAzHgR6HWpZOH7xFgeJLc6/CzMcx4nxeQolZxVZoB5pPaJd3CjyRhZN0xXeZB0XIRCWmb4yJBgyiugXLNMkLA==} + dependencies: + '@aws-sdk/types': 3.577.0 + '@smithy/types': 3.0.0 + bowser: 2.11.0 + tslib: 2.6.2 + dev: false + /@aws-sdk/util-user-agent-node@3.437.0: resolution: {integrity: sha512-JVEcvWaniamtYVPem4UthtCNoTBCfFTwYj7Y3CrWZ2Qic4TqrwLkAfaBGtI2TGrhIClVr77uzLI6exqMTN7orA==} engines: {node: '>=14.0.0'} @@ -2686,6 +3092,21 @@ packages: tslib: 2.6.2 dev: false + /@aws-sdk/util-user-agent-node@3.577.0: + resolution: {integrity: sha512-XqvtFjbSMtycZTWVwDe8DRWovuoMbA54nhUoZwVU6rW9OSD6NZWGR512BUGHFaWzW0Wg8++Dj10FrKTG2XtqfA==} + engines: {node: '>=16.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + dependencies: + '@aws-sdk/types': 3.577.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + dev: false + /@aws-sdk/util-utf8-browser@3.259.0: resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} dependencies: @@ -5102,6 +5523,20 @@ packages: tslib: 2.6.2 dev: false + /@smithy/core@2.0.1: + resolution: {integrity: sha512-rcMkjvwxH/bER+oZUPR0yTA0ELD6m3A+d92+CFkdF6HJFCBB1bXo7P5pm21L66XwTN01B6bUhSCQ7cymWRD8zg==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/middleware-endpoint': 3.0.0 + '@smithy/middleware-retry': 3.0.1 + '@smithy/middleware-serde': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/smithy-client': 3.0.1 + '@smithy/types': 3.0.0 + '@smithy/util-middleware': 3.0.0 + tslib: 2.6.2 + dev: false + /@smithy/credential-provider-imds@2.1.5: resolution: {integrity: sha512-VfvE6Wg1MUWwpTZFBnUD7zxvPhLY8jlHCzu6bCjlIYoWgXCDzZAML76IlZUEf45nib3rjehnFgg0s1rgsuN/bg==} engines: {node: '>=14.0.0'} @@ -5252,6 +5687,16 @@ packages: tslib: 2.6.2 dev: false + /@smithy/fetch-http-handler@3.0.1: + resolution: {integrity: sha512-uaH74i5BDj+rBwoQaXioKpI0SHBJFtOVwzrCpxZxphOW0ki5jhj7dXvDMYM2IJem8TpdFvS2iC08sjOblfFGFg==} + dependencies: + '@smithy/protocol-http': 4.0.0 + '@smithy/querystring-builder': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/util-base64': 3.0.0 + tslib: 2.6.2 + dev: false + /@smithy/hash-blob-browser@3.0.0: resolution: {integrity: sha512-/Wbpdg+bwJvW7lxR/zpWAc1/x/YkcqguuF2bAzkJrvXriZu1vm8r+PUdE4syiVwQg7PPR2dXpi3CLBb9qRDaVQ==} dependencies: @@ -5459,6 +5904,21 @@ packages: uuid: 9.0.1 dev: false + /@smithy/middleware-retry@3.0.1: + resolution: {integrity: sha512-hBhSEuL841FhJBK/19WpaGk5YWSzFk/P2UaVjANGKRv3eYNO8Y1lANWgqnuPWjOyCEWMPr58vELFDWpxvRKANw==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/node-config-provider': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/service-error-classification': 3.0.0 + '@smithy/smithy-client': 3.0.1 + '@smithy/types': 3.0.0 + '@smithy/util-middleware': 3.0.0 + '@smithy/util-retry': 3.0.0 + tslib: 2.6.2 + uuid: 9.0.1 + dev: false + /@smithy/middleware-serde@2.0.16: resolution: {integrity: sha512-5EAd4t30pcc4M8TSSGq7q/x5IKrxfXR5+SrU4bgxNy7RPHQo2PSWBUco9C+D9Tfqp/JZvprRpK42dnupZafk2g==} engines: {node: '>=14.0.0'} @@ -5767,6 +6227,18 @@ packages: tslib: 2.6.2 dev: false + /@smithy/smithy-client@3.0.1: + resolution: {integrity: sha512-KAiFY4Y4jdHxR+4zerH/VBhaFKM8pbaVmJZ/CWJRwtM/CmwzTfXfvYwf6GoUwiHepdv+lwiOXCuOl6UBDUEINw==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/middleware-endpoint': 3.0.0 + '@smithy/middleware-stack': 3.0.0 + '@smithy/protocol-http': 4.0.0 + '@smithy/types': 3.0.0 + '@smithy/util-stream': 3.0.1 + tslib: 2.6.2 + dev: false + /@smithy/types@2.12.0: resolution: {integrity: sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==} engines: {node: '>=14.0.0'} @@ -5951,6 +6423,17 @@ packages: tslib: 2.6.2 dev: false + /@smithy/util-defaults-mode-browser@3.0.1: + resolution: {integrity: sha512-nW5kEzdJn1Bn5TF+gOPHh2rcPli8JU9vSSXLbfg7uPnfR1TMRQqs9zlYRhIb87NeSxIbpdXOI94tvXSy+fvDYg==} + engines: {node: '>= 10.0.0'} + dependencies: + '@smithy/property-provider': 3.0.0 + '@smithy/smithy-client': 3.0.1 + '@smithy/types': 3.0.0 + bowser: 2.11.0 + tslib: 2.6.2 + dev: false + /@smithy/util-defaults-mode-node@2.0.32: resolution: {integrity: sha512-d0S33dXA2cq1NyorVMroMrEtqKMr3MlyLITcfTBf9pXiigYiPMOtbSI7czHIfDbuVuM89Cg0urAgpt73QV9mPQ==} engines: {node: '>= 10.0.0'} @@ -5990,6 +6473,19 @@ packages: tslib: 2.6.2 dev: false + /@smithy/util-defaults-mode-node@3.0.1: + resolution: {integrity: sha512-TFk+Qb+elLc/MOhtSp+50fstyfZ6avQbgH2d96xUBpeScu+Al9elxv+UFAjaTHe0HQe5n+wem8ZLpXvU8lwV6Q==} + engines: {node: '>= 10.0.0'} + dependencies: + '@smithy/config-resolver': 3.0.0 + '@smithy/credential-provider-imds': 3.0.0 + '@smithy/node-config-provider': 3.0.0 + '@smithy/property-provider': 3.0.0 + '@smithy/smithy-client': 3.0.1 + '@smithy/types': 3.0.0 + tslib: 2.6.2 + dev: false + /@smithy/util-endpoints@1.0.8: resolution: {integrity: sha512-l8zVuyZZ61IzZBYp5NWvsAhbaAjYkt0xg9R4xUASkg5SEeTT2meHOJwJHctKMFUXe4QZbn9fR2MaBYjP2119+w==} engines: {node: '>= 14.0.0'} @@ -6128,6 +6624,20 @@ packages: tslib: 2.6.2 dev: false + /@smithy/util-stream@3.0.1: + resolution: {integrity: sha512-7F7VNNhAsfMRA8I986YdOY5fE0/T1/ZjFF6OLsqkvQVNP3vZ/szYDfGCyphb7ioA09r32K/0qbSFfNFU68aSzA==} + engines: {node: '>=16.0.0'} + dependencies: + '@smithy/fetch-http-handler': 3.0.1 + '@smithy/node-http-handler': 3.0.0 + '@smithy/types': 3.0.0 + '@smithy/util-base64': 3.0.0 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-hex-encoding': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + dev: false + /@smithy/util-uri-escape@2.0.0: resolution: {integrity: sha512-ebkxsqinSdEooQduuk9CbKcI+wheijxEb3utGXkCoYQkJnwTnLbH1JXGimJtUkQwNQbsbuYwG2+aFVyZf5TLaw==} engines: {node: '>=14.0.0'} @@ -8811,7 +9321,7 @@ packages: dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 - minimatch: 9.0.3 + minimatch: 9.0.4 minipass: 7.0.4 path-scurry: 1.10.1 dev: false @@ -10389,8 +10899,8 @@ packages: engines: {node: '>=8'} dev: false - /lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + /lru-cache@10.2.2: + resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} engines: {node: 14 || >=16.14} dev: false @@ -10554,8 +11064,8 @@ packages: dependencies: brace-expansion: 1.1.11 - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + /minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 @@ -11023,7 +11533,7 @@ packages: resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} engines: {node: '>=16 || 14 >=14.17'} dependencies: - lru-cache: 10.2.0 + lru-cache: 10.2.2 minipass: 7.0.4 dev: false @@ -11513,6 +12023,7 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + requiresBuild: true /sax@1.3.0: resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==}