From 35634507d0564cb33d2273cd31b2d25ddbb0bff4 Mon Sep 17 00:00:00 2001 From: Eric Schaefer Date: Wed, 24 Apr 2024 15:02:13 +0100 Subject: [PATCH 01/41] add install case for ash --- install | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/install b/install index 24b4adf68..9085bef61 100755 --- a/install +++ b/install @@ -120,6 +120,9 @@ case $current_shell in bash) config_files="$HOME/.bashrc $HOME/.bash_profile $XDG_CONFIG_HOME/bash/.bashrc $XDG_CONFIG_HOME/bash/.bash_profile" ;; + ash) + config_files="$HOME/.profile" + ;; *) # Default case if none of the above matches config_files="$HOME/.bashrc $HOME/.bash_profile $XDG_CONFIG_HOME/bash/.bashrc $XDG_CONFIG_HOME/bash/.bash_profile" @@ -150,6 +153,8 @@ if [[ ":$PATH:" != *":$INSTALL_DIR:"* ]]; then bash) add_to_path "$config_file" "export PATH=$INSTALL_DIR:\$PATH" ;; + ash) + add_to_path "$config_file" "export PATH=$INSTALL_DIR:\$PATH" *) print_message warning "Manually add the directory to $config_file (or similar):" print_message info " export PATH=$INSTALL_DIR:\$PATH" From d047af3f0bdfbf763c4c5a4a37f0b5c68f5603a2 Mon Sep 17 00:00:00 2001 From: Eric Schaefer Date: Wed, 24 Apr 2024 15:22:12 +0100 Subject: [PATCH 02/41] test --- install | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/install b/install index 9085bef61..d95f06f70 100755 --- a/install +++ b/install @@ -121,7 +121,7 @@ case $current_shell in config_files="$HOME/.bashrc $HOME/.bash_profile $XDG_CONFIG_HOME/bash/.bashrc $XDG_CONFIG_HOME/bash/.bash_profile" ;; ash) - config_files="$HOME/.profile" + config_files="" ;; *) # Default case if none of the above matches @@ -137,8 +137,8 @@ for file in $config_files; do fi done -if [[ -z $config_file ]]; then - print_message error "No config file found for $current_shell. Checked files: ${config_files[@]}" +if [[ -z $config_file && $current_shell != "ash" ]]; then + print_message warning "No config file found for $current_shell. Checked files: ${config_files[@]}" exit 1 fi @@ -152,9 +152,6 @@ if [[ ":$PATH:" != *":$INSTALL_DIR:"* ]]; then ;; bash) add_to_path "$config_file" "export PATH=$INSTALL_DIR:\$PATH" - ;; - ash) - add_to_path "$config_file" "export PATH=$INSTALL_DIR:\$PATH" *) print_message warning "Manually add the directory to $config_file (or similar):" print_message info " export PATH=$INSTALL_DIR:\$PATH" From 2bff9a2892ff2be10e71b41145cfe08fb34ed71b Mon Sep 17 00:00:00 2001 From: Eric Schaefer Date: Wed, 24 Apr 2024 15:26:01 +0100 Subject: [PATCH 03/41] syntax --- install | 1 + 1 file changed, 1 insertion(+) diff --git a/install b/install index d95f06f70..6cbc5ac63 100755 --- a/install +++ b/install @@ -152,6 +152,7 @@ if [[ ":$PATH:" != *":$INSTALL_DIR:"* ]]; then ;; bash) add_to_path "$config_file" "export PATH=$INSTALL_DIR:\$PATH" + ;; *) print_message warning "Manually add the directory to $config_file (or similar):" print_message info " export PATH=$INSTALL_DIR:\$PATH" From 808654c7033cee7f994bb8377ddefc7eadc37e6a Mon Sep 17 00:00:00 2001 From: Eric Schaefer Date: Wed, 24 Apr 2024 15:31:07 +0100 Subject: [PATCH 04/41] message --- install | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/install b/install index 6cbc5ac63..408e8c361 100755 --- a/install +++ b/install @@ -96,7 +96,7 @@ download_and_install add_to_path() { local config_file=$1 local command=$2 - + if [[ -w $config_file ]]; then echo -e "\n# sst" >> "$config_file" echo "$command" >> "$config_file" @@ -121,7 +121,8 @@ case $current_shell in config_files="$HOME/.bashrc $HOME/.bash_profile $XDG_CONFIG_HOME/bash/.bashrc $XDG_CONFIG_HOME/bash/.bash_profile" ;; ash) - config_files="" + # just print a notice for now + print_message warning "ash does not use a config file to set PATH." ;; *) # Default case if none of the above matches From af60707c636c189679226ed32c0ad798608afbb4 Mon Sep 17 00:00:00 2001 From: Eric Schaefer Date: Wed, 24 Apr 2024 15:34:25 +0100 Subject: [PATCH 05/41] fix error --- install | 1 + 1 file changed, 1 insertion(+) diff --git a/install b/install index 408e8c361..f3dc82a90 100755 --- a/install +++ b/install @@ -123,6 +123,7 @@ case $current_shell in ash) # just print a notice for now print_message warning "ash does not use a config file to set PATH." + config_files="" ;; *) # Default case if none of the above matches From 1d581e2af51090b71ee3071b7d4f7317d5367882 Mon Sep 17 00:00:00 2001 From: Eric Schaefer Date: Wed, 24 Apr 2024 15:38:33 +0100 Subject: [PATCH 06/41] reverse --- install | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/install b/install index f3dc82a90..09da1eb2f 100755 --- a/install +++ b/install @@ -121,9 +121,8 @@ case $current_shell in config_files="$HOME/.bashrc $HOME/.bash_profile $XDG_CONFIG_HOME/bash/.bashrc $XDG_CONFIG_HOME/bash/.bash_profile" ;; ash) - # just print a notice for now - print_message warning "ash does not use a config file to set PATH." config_files="" + print_message warning "ash does not use a config file to set PATH." ;; *) # Default case if none of the above matches From 4513a972e031e08df63438d05034189bd0378aa2 Mon Sep 17 00:00:00 2001 From: Eric Schaefer Date: Wed, 24 Apr 2024 16:10:07 +0100 Subject: [PATCH 07/41] Another try --- install | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/install b/install index 09da1eb2f..bd7a86225 100755 --- a/install +++ b/install @@ -121,8 +121,7 @@ case $current_shell in config_files="$HOME/.bashrc $HOME/.bash_profile $XDG_CONFIG_HOME/bash/.bashrc $XDG_CONFIG_HOME/bash/.bash_profile" ;; ash) - config_files="" - print_message warning "ash does not use a config file to set PATH." + config_files="$HOME/.profile /etc/profile" ;; *) # Default case if none of the above matches From c7e27b7ec9892f60a0ea07ea72ac2f62b1716f31 Mon Sep 17 00:00:00 2001 From: Eric Schaefer Date: Wed, 24 Apr 2024 16:19:54 +0100 Subject: [PATCH 08/41] another test --- install | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/install b/install index bd7a86225..f7ec8c3fb 100755 --- a/install +++ b/install @@ -121,7 +121,7 @@ case $current_shell in config_files="$HOME/.bashrc $HOME/.bash_profile $XDG_CONFIG_HOME/bash/.bashrc $XDG_CONFIG_HOME/bash/.bash_profile" ;; ash) - config_files="$HOME/.profile /etc/profile" + config_files="$HOME/.ashrc $HOME/.profile /etc/profile" ;; *) # Default case if none of the above matches @@ -137,7 +137,7 @@ for file in $config_files; do fi done -if [[ -z $config_file && $current_shell != "ash" ]]; then +if [[ -z $config_file ]]; then print_message warning "No config file found for $current_shell. Checked files: ${config_files[@]}" exit 1 fi @@ -153,6 +153,9 @@ if [[ ":$PATH:" != *":$INSTALL_DIR:"* ]]; then bash) add_to_path "$config_file" "export PATH=$INSTALL_DIR:\$PATH" ;; + ash) + add_to_path "$config_file" "export PATH=$INSTALL_DIR:\$PATH" + ;; *) print_message warning "Manually add the directory to $config_file (or similar):" print_message info " export PATH=$INSTALL_DIR:\$PATH" From 1663dceb816ca8d4d76d6d2e01098e7d7f795b89 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Thu, 2 May 2024 12:54:56 -0400 Subject: [PATCH 09/41] disable linting on codegenerated files --- pkg/project/stack.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/project/stack.go b/pkg/project/stack.go index 3c8432e82..d63a27e75 100644 --- a/pkg/project/stack.go +++ b/pkg/project/stack.go @@ -468,6 +468,8 @@ func (s *stack) Run(ctx context.Context, input *StackInput) error { continue } defer typesFile.Close() + typesFile.WriteString(`/* tslint:disable */`) + typesFile.WriteString(`/* eslint-disable */`) typesFile.WriteString(`import "sst"` + "\n") typesFile.WriteString(`declare module "sst" {` + "\n") typesFile.WriteString(" export interface Resource " + inferTypes(links, " ") + "\n") From c2df54bbacee4aa4741cb1a08bd65b86e69c30eb Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Thu, 2 May 2024 12:55:19 -0400 Subject: [PATCH 10/41] example updates --- .../aws-planetscale-drizzle/sst.config.ts | 19 +++++++++++-------- examples/cloudflare-trpc/sst-env.d.ts | 1 - 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/examples/aws-planetscale-drizzle/sst.config.ts b/examples/aws-planetscale-drizzle/sst.config.ts index 2d0e0f83f..4748d40ff 100644 --- a/examples/aws-planetscale-drizzle/sst.config.ts +++ b/examples/aws-planetscale-drizzle/sst.config.ts @@ -5,7 +5,9 @@ export default $config({ name: "aws-planetscale-drizzle", removal: input?.stage === "production" ? "retain" : "remove", home: "aws", - providers: { "@sst-provider/planetscale": {} }, + providers: { + "@sst-provider/planetscale": {}, + }, }; }, async run() { @@ -21,17 +23,18 @@ export default $config({ const db = new planetscale.Database("Database", { name: $interpolate`${$app.name}-${$app.stage}-Database`, organization: "sst", + clusterSize: "PS_10", }); - const dbCreds = new planetscale.Password("DatabasePassword", { - organization: "sst", - database: db.defaultBranch, - role: "admin", - branch: db.defaultBranch, - }); + // const dbCreds = new planetscale.Password("DatabasePassword", { + // organization: "sst", + // database: db.defaultBranch, + // role: "admin", + // branch: db.defaultBranch, + // }); const api = new sst.aws.Function("Api", { url: true, handler: "./src/api.handler", - link: [dbCreds], + // link: [dbCreds], }); return { url: api.url, diff --git a/examples/cloudflare-trpc/sst-env.d.ts b/examples/cloudflare-trpc/sst-env.d.ts index e729a1b8e..017cc8296 100644 --- a/examples/cloudflare-trpc/sst-env.d.ts +++ b/examples/cloudflare-trpc/sst-env.d.ts @@ -1,5 +1,4 @@ import "sst" -import * as cloudflare from "@cloudflare/workers-types" declare module "sst" { export interface Resource { Trpc: import("@cloudflare/workers-types").Service From 81678438755fbf71affa2ada4d6fa7bffb62f254 Mon Sep 17 00:00:00 2001 From: Frank Date: Thu, 2 May 2024 14:00:18 -0400 Subject: [PATCH 11/41] AppSync --- examples/aws-app-sync/lambda.ts | 10 + examples/aws-app-sync/schema.graphql | 5 + examples/aws-app-sync/sst.config.ts | 47 + .../components/aws/app-sync-data-source.ts | 252 +++++ .../src/components/aws/app-sync-function.ts | 77 ++ .../src/components/aws/app-sync-resolver.ts | 109 +++ pkg/platform/src/components/aws/app-sync.ts | 826 ++++++++++++++++ .../src/components/aws/helpers/arn.ts | 43 + pkg/platform/src/components/aws/index.ts | 1 + pkg/platform/src/components/component.ts | 12 +- www/astro.config.mjs | 15 +- www/generate.ts | 7 + .../component/aws/app-sync-data-source.mdx | 304 ++++++ .../docs/component/aws/app-sync-function.mdx | 182 ++++ .../docs/component/aws/app-sync-resolver.mdx | 223 +++++ .../docs/docs/component/aws/app-sync.mdx | 904 ++++++++++++++++++ .../content/docs/docs/component/aws/email.mdx | 20 + 17 files changed, 3034 insertions(+), 3 deletions(-) create mode 100644 examples/aws-app-sync/lambda.ts create mode 100644 examples/aws-app-sync/schema.graphql create mode 100644 examples/aws-app-sync/sst.config.ts create mode 100644 pkg/platform/src/components/aws/app-sync-data-source.ts create mode 100644 pkg/platform/src/components/aws/app-sync-function.ts create mode 100644 pkg/platform/src/components/aws/app-sync-resolver.ts create mode 100644 pkg/platform/src/components/aws/app-sync.ts create mode 100644 www/src/content/docs/docs/component/aws/app-sync-data-source.mdx create mode 100644 www/src/content/docs/docs/component/aws/app-sync-function.mdx create mode 100644 www/src/content/docs/docs/component/aws/app-sync-resolver.mdx create mode 100644 www/src/content/docs/docs/component/aws/app-sync.mdx diff --git a/examples/aws-app-sync/lambda.ts b/examples/aws-app-sync/lambda.ts new file mode 100644 index 000000000..08136570e --- /dev/null +++ b/examples/aws-app-sync/lambda.ts @@ -0,0 +1,10 @@ +type AppSyncEvent = { + info: { + fieldName: string; + }; +}; + +export async function main(event: AppSyncEvent) { + console.log(event); + return { status: "ok" }; +} diff --git a/examples/aws-app-sync/schema.graphql b/examples/aws-app-sync/schema.graphql new file mode 100644 index 000000000..b2c0cef54 --- /dev/null +++ b/examples/aws-app-sync/schema.graphql @@ -0,0 +1,5 @@ +type Query { + license: String + user: String + pipeline: String +} diff --git a/examples/aws-app-sync/sst.config.ts b/examples/aws-app-sync/sst.config.ts new file mode 100644 index 000000000..53412e24a --- /dev/null +++ b/examples/aws-app-sync/sst.config.ts @@ -0,0 +1,47 @@ +/// + +export default $config({ + app(input) { + return { + name: "aws-app-sync", + removal: input?.stage === "production" ? "retain" : "remove", + home: "aws", + }; + }, + async run() { + const table = new sst.aws.Dynamo("MyTable", { + fields: { + userId: "string", + }, + primaryIndex: { hashKey: "userId" }, + }); + + const api = new sst.aws.AppSync("MyApi", { + schema: "schema.graphql", + domain: "appsync.ion.sst.sh", + }); + const lambdaDS = api.addDataSource({ + name: "lambda", + lambda: "lambda.main", + }); + const dynamoDS = api.addDataSource({ name: "dyanmo", dynamodb: table.arn }); + api.addResolver("Query license", { dataSource: lambdaDS.name }); + api.addResolver("Query user", { + dataSource: dynamoDS.name, + requestTemplate: `{ + "version": "2017-02-28", + "operation": "Scan", + }`, + responseTemplate: `{ + "users": $utils.toJson($context.result.items) + }`, + }); + + const apiKey = new aws.appsync.ApiKey("MyApiKey", { + apiId: api.id, + }); + return { + API_KEY: apiKey.key, + }; + }, +}); diff --git a/pkg/platform/src/components/aws/app-sync-data-source.ts b/pkg/platform/src/components/aws/app-sync-data-source.ts new file mode 100644 index 000000000..a73b24598 --- /dev/null +++ b/pkg/platform/src/components/aws/app-sync-data-source.ts @@ -0,0 +1,252 @@ +import { + ComponentResourceOptions, + Input, + Output, + output, +} from "@pulumi/pulumi"; +import * as aws from "@pulumi/aws"; +import { Component, transform } from "../component"; +import { Function } from "./function"; +import { VisibleError } from "../error"; +import { AppSyncDataSourceArgs } from "./app-sync"; +import { parseDynamoArn } from "./helpers/arn"; + +export interface DataSourceArgs extends AppSyncDataSourceArgs { + /** + * The AppSync GraphQL API ID. + */ + apiId: Input; + /** + * The AppSync component name. + */ + apiComponentName: string; +} + +/** + * The `AppSyncDataSource` component is internally used by the `AppSync` component to add + * data sources to [AWS AppSync](https://docs.aws.amazon.com/appsync/latest/devguide/what-is-appsync.html). + * + * :::caution + * This component is not intended for public use. + * ::: + * + * You'll find this component returned by the `addDataSource` method of the `AppSync` component. + */ +export class AppSyncDataSource extends Component { + private readonly dataSource: aws.appsync.DataSource; + private readonly lambda?: Output; + private readonly serviceRole?: aws.iam.Role; + + constructor( + name: string, + args: DataSourceArgs, + opts?: ComponentResourceOptions, + ) { + super(__pulumiType, name, args, opts); + + const self = this; + + const apiId = output(args.apiId); + + validateSingleDataSource(); + const type = getType(); + + const lambda = createFunction(); + const serviceRole = createServiceRole(); + const dataSource = createDataSource(); + + this.dataSource = dataSource; + this.lambda = lambda; + this.serviceRole = serviceRole; + + function validateSingleDataSource() { + const sources = [ + args.lambda, + args.dynamodb, + args.elasticSearch, + args.eventBridge, + args.http, + args.openSearch, + args.rds, + ].filter((source) => source); + + if (sources.length > 1) { + throw new Error( + `Expected only one data source, but found ${sources.length}.`, + ); + } + } + + function getType() { + if (args.lambda) return "AWS_LAMBDA"; + if (args.dynamodb) return "AMAZON_DYNAMODB"; + if (args.elasticSearch) return "AMAZON_ELASTICSEARCH"; + if (args.eventBridge) return "AMAZON_EVENTBRIDGE"; + if (args.http) return "HTTP"; + if (args.openSearch) return "AMAZON_OPENSEARCH_SERVICE"; + if (args.rds) return "RELATIONAL_DATABASE"; + return "NONE"; + } + + function createFunction() { + if (!args.lambda) return; + + return Function.fromDefinition(`${name}Function`, args.lambda, { + description: `${args.apiComponentName} data source`, + }); + } + + function createServiceRole() { + if ( + !lambda && + !args.dynamodb && + !args.elasticSearch && + !args.eventBridge && + !args.openSearch + ) + return; + + return new aws.iam.Role( + `${name}ServiceRole`, + transform(args.transform?.serviceRole, { + assumeRolePolicy: aws.iam.getPolicyDocumentOutput({ + statements: [ + { + actions: ["sts:AssumeRole"], + principals: [ + { + type: "Service", + identifiers: ["appsync.amazonaws.com"], + }, + ], + }, + ], + }).json, + inlinePolicies: [ + { + name: "inline", + policy: aws.iam.getPolicyDocumentOutput({ + statements: [ + ...(lambda + ? [{ actions: ["lambda:*"], resources: [lambda.arn] }] + : []), + ...(args.dynamodb + ? [{ actions: ["dynamodb:*"], resources: [args.dynamodb] }] + : []), + ...(args.elasticSearch + ? [ + { + actions: ["es:*"], + resources: [args.elasticSearch], + }, + ] + : []), + ...(args.eventBridge + ? [ + { + actions: ["events:*"], + resources: [args.eventBridge], + }, + ] + : []), + ...(args.openSearch + ? [ + { + actions: ["opensearch:*"], + resources: [args.openSearch], + }, + ] + : []), + ], + }).json, + }, + ], + }), + { parent: self }, + ); + } + + function createDataSource() { + return new aws.appsync.DataSource( + `${name}DataSource`, + transform(args.transform?.dataSource, { + apiId, + type, + name: args.name, + serviceRoleArn: serviceRole?.arn, + lambdaConfig: lambda ? { functionArn: lambda.arn } : undefined, + dynamodbConfig: args.dynamodb + ? { + tableName: output(args.dynamodb).apply( + (arn) => parseDynamoArn(arn).tableName, + ), + } + : undefined, + elasticsearchConfig: args.elasticSearch + ? { endpoint: args.elasticSearch } + : undefined, + eventBridgeConfig: args.eventBridge + ? { eventBusArn: args.eventBridge } + : undefined, + httpConfig: args.http ? { endpoint: args.http } : undefined, + opensearchserviceConfig: args.openSearch + ? { endpoint: args.openSearch } + : undefined, + relationalDatabaseConfig: args.rds + ? { + httpEndpointConfig: { + dbClusterIdentifier: output(args.rds).cluster, + awsSecretStoreArn: output(args.rds).credentials, + }, + } + : undefined, + }), + { parent: self }, + ); + } + } + + /** + * The name of the data source. + */ + public get name() { + return this.dataSource.name; + } + + /** + * The underlying [resources](/docs/components/#nodes) this component creates. + */ + public get nodes() { + const self = this; + return { + /** + * The Amazon AppSync DataSource. + */ + dataSource: this.dataSource, + /** + * The Lambda function used by the data source. + */ + get function() { + if (!self.lambda) + throw new VisibleError( + "Cannot access `nodes.function` because the data source does not use a Lambda function.", + ); + return self.lambda; + }, + /** + * The DataSource service IAM role. + */ + get serviceRole() { + if (!self.serviceRole) + throw new VisibleError( + "Cannot access `nodes.serviceRole` because the data source does not have a service role.", + ); + return self.serviceRole; + }, + }; + } +} + +const __pulumiType = "sst:aws:AppSyncDataSource"; +// @ts-expect-error +AppSyncDataSource.__pulumiType = __pulumiType; diff --git a/pkg/platform/src/components/aws/app-sync-function.ts b/pkg/platform/src/components/aws/app-sync-function.ts new file mode 100644 index 000000000..3aba3ed22 --- /dev/null +++ b/pkg/platform/src/components/aws/app-sync-function.ts @@ -0,0 +1,77 @@ +import { ComponentResourceOptions, Input } from "@pulumi/pulumi"; +import * as aws from "@pulumi/aws"; +import { Component, transform } from "../component"; +import { AppSyncFunctionArgs } from "./app-sync"; + +export interface FunctionArgs extends AppSyncFunctionArgs { + /** + * The AppSync GraphQL API ID. + */ + apiId: Input; +} + +/** + * The `AppSyncFunction` component is internally used by the `AppSync` component to add + * functions to [AWS AppSync](https://docs.aws.amazon.com/appsync/latest/devguide/what-is-appsync.html). + * + * :::caution + * This component is not intended for public use. + * ::: + * + * You'll find this component returned by the `addFunction` method of the `AppSync` component. + */ +export class AppSyncFunction extends Component { + private readonly fn: aws.appsync.Function; + + constructor( + name: string, + args: FunctionArgs, + opts?: ComponentResourceOptions, + ) { + super(__pulumiType, name, args, opts); + + const self = this; + + const fn = createFunction(); + + this.fn = fn; + + function createFunction() { + return new aws.appsync.Function( + `${name}Function`, + transform(args.transform?.function, { + apiId: args.apiId, + name: args.name, + dataSource: args.dataSource, + requestMappingTemplate: args.requestMappingTemplate, + responseMappingTemplate: args.responseMappingTemplate, + code: args.code, + runtime: args.code + ? { + name: "APPSYNC_JS", + runtimeVersion: "1.0.0", + } + : undefined, + }), + { parent: self }, + ); + } + } + + /** + * The underlying [resources](/docs/components/#nodes) this component creates. + */ + public get nodes() { + const self = this; + return { + /** + * The Amazon AppSync Function. + */ + function: this.fn, + }; + } +} + +const __pulumiType = "sst:aws:AppSyncFunction"; +// @ts-expect-error +AppSyncFunction.__pulumiType = __pulumiType; diff --git a/pkg/platform/src/components/aws/app-sync-resolver.ts b/pkg/platform/src/components/aws/app-sync-resolver.ts new file mode 100644 index 000000000..4b550fab7 --- /dev/null +++ b/pkg/platform/src/components/aws/app-sync-resolver.ts @@ -0,0 +1,109 @@ +import { ComponentResourceOptions, Input, output } from "@pulumi/pulumi"; +import * as aws from "@pulumi/aws"; +import { Component, transform } from "../component"; +import { AppSyncResolverArgs } from "./app-sync"; +import { normalize } from "path"; +import { VisibleError } from "../error"; + +export interface ResolverArgs extends AppSyncResolverArgs { + /** + * The AppSync GraphQL API ID. + */ + apiId: Input; + /** + * The type name from the schema defined. + */ + type: Input; + /** + * The field name from the schema defined. + */ + field: Input; +} + +/** + * The `AppSyncResolver` component is internally used by the `AppSync` component to add + * resolvers to [AWS AppSync](https://docs.aws.amazon.com/appsync/latest/devguide/what-is-appsync.html). + * + * :::caution + * This component is not intended for public use. + * ::: + * + * You'll find this component returned by the `addResolver` method of the `AppSync` component. + */ +export class AppSyncResolver extends Component { + private readonly resolver: aws.appsync.Resolver; + + constructor( + name: string, + args: ResolverArgs, + opts?: ComponentResourceOptions, + ) { + super(__pulumiType, name, args, opts); + + const self = this; + + const kind = normalizeKind(); + const resolver = createResolver(); + + this.resolver = resolver; + + function normalizeKind() { + return output(args.kind ?? "unit").apply((kind) => { + if (kind === "unit" && args.functions) + throw new VisibleError( + "The `functions` property is not supported for `unit` resolvers.", + ); + + if (kind === "pipeline" && args.dataSource) + throw new VisibleError( + "The `dataSource` property is not supported for `pipeline` resolvers.", + ); + + return kind; + }); + } + + function createResolver() { + return new aws.appsync.Resolver( + `${name}Resolver`, + transform(args.transform?.resolver, { + apiId: args.apiId, + kind: kind.apply((kind) => kind.toUpperCase()), + type: args.type, + field: args.field, + dataSource: args.dataSource, + requestTemplate: args.requestTemplate, + responseTemplate: args.responseTemplate, + code: args.code, + runtime: args.code + ? { + name: "APPSYNC_JS", + runtimeVersion: "1.0.0", + } + : undefined, + pipelineConfig: args.functions + ? { functions: args.functions } + : undefined, + }), + { parent: self }, + ); + } + } + + /** + * The underlying [resources](/docs/components/#nodes) this component creates. + */ + public get nodes() { + const self = this; + return { + /** + * The Amazon AppSync Resolver. + */ + resolver: this.resolver, + }; + } +} + +const __pulumiType = "sst:aws:AppSyncResolver"; +// @ts-expect-error +AppSyncResolver.__pulumiType = __pulumiType; diff --git a/pkg/platform/src/components/aws/app-sync.ts b/pkg/platform/src/components/aws/app-sync.ts new file mode 100644 index 000000000..f37d35ed8 --- /dev/null +++ b/pkg/platform/src/components/aws/app-sync.ts @@ -0,0 +1,826 @@ +import fs from "fs/promises"; +import { ComponentResourceOptions, interpolate, output } from "@pulumi/pulumi"; +import * as aws from "@pulumi/aws"; +import { Component, Transform, transform } from "../component"; +import { Link } from "../link"; +import type { Input } from "../input"; +import { FunctionArgs } from "./function"; +import { sanitizeToPascalCase } from "../naming"; +import { VisibleError } from "../error"; +import { AppSyncDataSource } from "./app-sync-data-source"; +import { AppSyncResolver } from "./app-sync-resolver"; +import { AppSyncFunction } from "./app-sync-function"; +import { dns as awsDns } from "./dns.js"; +import { Dns } from "../dns"; +import { DnsValidatedCertificate } from "./dns-validated-certificate"; +import { useProvider } from "./helpers/provider"; + +export interface AppSyncArgs { + /** + * Path to the GraphQL schema file. This path is relative to your `sst.config.ts`. + * @example + * ```js + * { + * schema: "schema.graphql", + * } + * ``` + */ + schema: Input; + /** + * Set a custom domain for your AppSync GraphQL API. + * + * Automatically manages domains hosted on AWS Route 53, Cloudflare, and Vercel. For other + * providers, you'll need to pass in a `cert` that validates domain ownership and add the + * DNS records. + * + * :::tip + * Built-in support for AWS Route 53, Cloudflare, and Vercel. And manual setup for other + * providers. + * ::: + * + * @example + * + * By default this assumes the domain is hosted on Route 53. + * + * ```js + * { + * domain: "example.com" + * } + * ``` + * + * For domains hosted on Cloudflare. + * + * ```js + * { + * domain: { + * name: "example.com", + * dns: sst.cloudflare.dns() + * } + * } + * ``` + */ + domain?: Input< + | string + | { + /** + * The custom domain you want to use. + * + * @example + * ```js + * { + * domain: { + * name: "example.com" + * } + * } + * ``` + * + * Can also include subdomains based on the current stage. + * + * ```js + * { + * domain: { + * name: `${$app.stage}.example.com` + * } + * } + * ``` + */ + name: Input; + /** + * The ARN of an ACM (AWS Certificate Manager) certificate that proves ownership of the + * domain. By default, a certificate is created and validated automatically. + * + * The certificate will be created in the `us-east-1` region as required by AWS AppSync. + * If you are creating your own certificate, you must also create it in `us-east-1`. + * + * :::tip + * You need to pass in a `cert` for domains that are not hosted on supported `dns` providers. + * ::: + * + * To manually set up a domain on an unsupported provider, you'll need to: + * + * 1. [Validate that you own the domain](https://docs.aws.amazon.com/acm/latest/userguide/domain-ownership-validation.html) by creating an ACM certificate. You can either validate it by setting a DNS record or by verifying an email sent to the domain owner. + * 2. Once validated, set the certificate ARN as the `cert` and set `dns` to `false`. + * 3. Add the DNS records in your provider to point to the API Gateway URL. + * + * @example + * ```js + * { + * domain: { + * name: "example.com", + * dns: false, + * cert: "arn:aws:acm:us-east-1:112233445566:certificate/3a958790-8878-4cdc-a396-06d95064cf63" + * } + * } + * ``` + */ + cert?: Input; + /** + * The DNS provider to use for the domain. Defaults to the AWS. + * + * Takes an adapter that can create the DNS records on the provider. This can automate + * validating the domain and setting up the DNS routing. + * + * Supports Route 53, Cloudflare, and Vercel adapters. For other providers, you'll need + * to set `dns` to `false` and pass in a certificate validating ownership via `cert`. + * + * @default `sst.aws.dns` + * + * @example + * + * Specify the hosted zone ID for the Route 53 domain. + * + * ```js + * { + * domain: { + * name: "example.com", + * dns: sst.aws.dns({ + * zone: "Z2FDTNDATAQYW2" + * }) + * } + * } + * ``` + * + * Use a domain hosted on Cloudflare, needs the Cloudflare provider. + * + * ```js + * { + * domain: { + * name: "example.com", + * dns: sst.cloudflare.dns() + * } + * } + * ``` + * + * Use a domain hosted on Vercel, needs the Vercel provider. + * + * ```js + * { + * domain: { + * name: "example.com", + * dns: sst.vercel.dns() + * } + * } + * ``` + */ + dns?: Input; + } + >; + /** + * [Transform](/docs/components#transform) how this component creates its underlying + * resources. + */ + transform?: { + /** + * Transform the AppSync GraphQL API resource. + */ + api?: Transform; + /** + * Transform the AppSync domain name resource. + */ + domainName?: Transform; + }; +} + +export interface AppSyncDataSourceArgs { + /** + * The name of the data source. + * @example + * ```js + * { + * name: "lambdaDS", + * lambda: "arn:aws:lambda:us-east-1:123456789012:function:my-function" + * } + * ``` + */ + name: string; + /** + * The ARN for the Lambda function. + * @example + * ```js + * { + * name: "lambdaDS", + * lambda: "arn:aws:lambda:us-east-1:123456789012:function:my-function" + * } + * ``` + */ + lambda?: Input; + /** + * The ARN for the DynamoDB table. + * @example + * ```js + * { + * name: "dynamoDS", + * dynamodb: "arn:aws:dynamodb:us-east-1:123456789012:table/my-table" + * } + * ``` + */ + dynamodb?: Input; + /** + * The ARN for the Elasticsearch domain. + * @example + * ```js + * { + * name: "elasticSearchDS", + * elasticSearch: "arn:aws:es:us-east-1:123456789012:domain/my-domain" + * } + * ``` + */ + elasticSearch?: Input; + /** + * The ARN for the EventBridge event bus. + * @example + * ```js + * { + * name: "eventBridgeDS", + * eventBridge: "arn:aws:events:us-east-1:123456789012:event-bus/my-event-bus" + * } + * ``` + */ + eventBridge?: Input; + /** + * The URL for the HTTP endpoint. + * @example + * ```js + * { + * name: "httpDS", + * http: "https://api.example.com" + * } + * ``` + */ + http?: Input; + /** + * The ARN for the OpenSearch domain. + * @example + * ```js + * { + * name: "openSearchDS", + * openSearch: "arn:aws:opensearch:us-east-1:123456789012:domain/my-domain" + * } + * ``` + */ + openSearch?: Input; + /** + * Configuring RDS data source. + * @example + * ```js + * { + * name: "rdsDS", + * rds: { + * cluster: "arn:aws:rds:us-east-1:123456789012:cluster:my-cluster", + * credentials: "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-secret" + * } + * } + * ``` + */ + rds?: Input<{ + /** + * The ARN for the RDS cluster. + */ + cluster: Input; + /** + * The ARN for the credentials secret store. + */ + credentials: Input; + }>; + /** + * [Transform](/docs/components#transform) how this component creates its underlying + * resources. + */ + transform?: { + /** + * Transform the AppSync DataSource resource. + */ + dataSource?: Transform; + /** + * Transform the AppSync DataSource service role resource. + */ + serviceRole?: Transform; + }; +} + +export interface AppSyncResolverArgs { + /** + * The type of the resolver. + * @default `"unit"` + * @example + * ```js + * { + * kind: "pipeline" + * } + * ``` + */ + kind?: Input<"unit" | "pipeline">; + /** + * The data source this resolver is using. This only applies for "unit" resolvers. + * @example + * ```js + * { + * dataSource: "lambdaDS" + * } + * ``` + */ + dataSource?: Input; + /** + * The functions this resolver is using. This only applies for "pipeline" resolvers. + * @example + * ```js + * { + * functions: ["myFunction1", "myFunction2"] + * } + * ``` + */ + functions?: Input; + /** + * The function code that contains the request and response functions. + * @example + * ```js + * { + * code: fs.readFileSync("functions.js") + * } + * ``` + */ + code?: Input; + /** + * For "unit" resolvers, this is the request mapping template. And for "pipeline" + * resolvers, this is the before mapping template. + * @example + * ```js + * { + * dataSource: "dynamoDS", + * requestTemplate: `{ + * "version": "2017-02-28", + * "operation": "Scan", + * }`, + * } + * ``` + */ + requestTemplate?: Input; + /** + * For "unit" resolvers, this is the response mapping template. And for "pipeline" + * resolvers, this is the after mapping template. + * @example + * ```js + * { + * dataSource: "dynamoDS", + * responseTemplate: `{ + * "users": $utils.toJson($context.result.items) + * }`, + * } + * ``` + */ + responseTemplate?: Input; + /** + * [Transform](/docs/components#transform) how this component creates its underlying + * resources. + */ + transform?: { + /** + * Transform the AppSync Resolver resource. + */ + resolver?: Transform; + }; +} + +export interface AppSyncFunctionArgs { + /** + * The name of the AppSync function. + * @example + * ```js + * { + * name: "myFunction", + * } + * ``` + */ + name: string; + /** + * The data source this resolver is using. This only applies for "unit" resolvers. + * @example + * ```js + * { + * dataSource: "lambdaDS" + * } + * ``` + */ + dataSource: Input; + /** + * The function code that contains the request and response functions. + * @example + * ```js + * { + * code: fs.readFileSync("functions.js") + * } + * ``` + */ + code?: Input; + /** + * The function request mapping template. + * @example + * ```js + * { + * dataSource: "dynamoDS", + * requestTemplate: `{ + * "version": "2018-05-29", + * "operation": "Scan", + * }`, + * } + * ``` + */ + requestMappingTemplate?: Input; + /** + * The function response mapping template. + * @example + * ```js + * { + * dataSource: "dynamoDS", + * responseTemplate: `{ + * "users": $utils.toJson($context.result.items) + * }`, + * } + * ``` + */ + responseMappingTemplate?: Input; + /** + * [Transform](/docs/components#transform) how this component creates its underlying + * resources. + */ + transform?: { + /** + * Transform the AppSync Function resource. + */ + function?: Transform; + }; +} + +/** + * The `AppSync` component lets you add an [Amazon AppSync GraphQL API](https://docs.aws.amazon.com/appsync/latest/devguide/what-is-appsync.html) to your app. + * + * @example + * + * #### Create a GraphQL API + * + * ```ts + * const api = new sst.aws.AppSync("MyApi", { + * schema: "schema.graphql", + * }); + * ``` + * + * #### Add a data source + * + * ```ts + * const lambdaDS = api.addDataSource({ + * name: "lambdaDS", + * lambda: "src/lambda.handler", + * }); + * ``` + * + * #### Add a resolver + * + * ```ts + * api.addResolver("Query user", { + * dataSource: lambdaDS.name, + * }); + * ``` + */ +export class AppSync extends Component implements Link.Linkable { + private constructorName: string; + private api: aws.appsync.GraphQLApi; + private domainName?: aws.appsync.DomainName; + + constructor( + name: string, + args: AppSyncArgs, + opts: ComponentResourceOptions = {}, + ) { + super(__pulumiType, name, args, opts); + + const parent = this; + + const domain = normalizeDomain(); + + const schema = loadSchema(); + const api = createGraphQLApi(); + const certificateArn = createSsl(); + const domainName = createDomainName(); + createDnsRecords(); + + this.constructorName = name; + this.api = api; + this.domainName = domainName; + + this.registerOutputs({ _hint: this.url }); + + function normalizeDomain() { + if (!args.domain) return; + + // validate + output(args.domain).apply((domain) => { + if (typeof domain === "string") return; + + if (!domain.name) throw new Error(`Missing "name" for domain.`); + if (domain.dns === false && !domain.cert) + throw new Error( + `Need to provide a validated certificate via "cert" when DNS is disabled`, + ); + }); + + // normalize + return output(args.domain).apply((domain) => { + const norm = typeof domain === "string" ? { name: domain } : domain; + + return { + name: norm.name, + dns: norm.dns === false ? undefined : norm.dns ?? awsDns(), + cert: norm.cert, + }; + }); + } + + function loadSchema() { + return output(args.schema).apply(async (schema) => + fs.readFile(schema, { encoding: "utf-8" }), + ); + } + + function createGraphQLApi() { + return new aws.appsync.GraphQLApi( + `${name}Api`, + transform(args.transform?.api, { + schema, + authenticationType: "API_KEY", + }), + { parent }, + ); + } + + function createSsl() { + if (!domain) return; + + return domain.apply((domain) => { + if (domain.cert) return output(domain.cert); + + // Certificates used for AppSync are required to be created in the us-east-1 region + return new DnsValidatedCertificate( + `${name}Ssl`, + { + domainName: domain.name, + dns: domain.dns!, + }, + { parent, provider: useProvider("us-east-1") }, + ).arn; + }); + } + + function createDomainName() { + if (!domain || !certificateArn) return; + + const domainName = new aws.appsync.DomainName( + `${name}DomainName`, + transform(args.transform?.domainName, { + domainName: domain?.name, + certificateArn, + }), + { parent }, + ); + + new aws.appsync.DomainNameApiAssociation(`${name}DomainAssociation`, { + apiId: api.id, + domainName: domainName.domainName, + }); + + return domainName; + } + + function createDnsRecords() { + if (!domain || !domainName) return; + + domain.apply((domain) => { + if (!domain.dns) return; + + if (domain.dns.provider === "aws") { + domain.dns.createAliasRecords( + name, + { + name: domain.name, + aliasName: domainName.appsyncDomainName, + aliasZone: domainName.hostedZoneId, + }, + { parent }, + ); + } else { + domain.dns.createRecord( + name, + { + type: "CNAME", + name: domain.name, + value: domainName.appsyncDomainName, + }, + { parent }, + ); + } + }); + } + } + + /** + * The GraphQL API id. + */ + public get id() { + return this.api.id; + } + + /** + * The URL of the GraphQL API. + */ + public get url() { + return this.domainName + ? interpolate`https://${this.domainName.domainName}/graphql` + : this.api.uris["GRAPHQL"]; + } + + /** + * The underlying [resources](/docs/components/#nodes) this component creates. + */ + public get nodes() { + return { + /** + * The Amazon AppSync GraphQL API. + */ + api: this.api, + }; + } + + /** + * Add a data source to this AppSync API. + * + * @param args Configure the data source. + * + * @example + * + * Add a Lambda function as a data source. + * + * ```js + * api.addDataSource({ + * name: "lambdaDS", + * lambda: "src/lambda.handler" + * }); + * ``` + * + * Customize the Lambda function. + * + * ```js + * api.addDataSource({ + * name: "lambdaDS", + * lambda: { + * handler: "src/lambda.handler", + * timeout: "60 seconds" + * } + * }); + * ``` + * + * Add a DynamoDB table as a data source. + * + * ```js + * api.addDataSource({ + * name: "dynamoDS", + * dynamodb: "arn:aws:dynamodb:us-east-1:123456789012:table/my-table" + * }) + * ``` + */ + public addDataSource(args: AppSyncDataSourceArgs) { + const self = this; + const selfName = this.constructorName; + const nameSuffix = sanitizeToPascalCase(args.name); + + return new AppSyncDataSource(`${selfName}DataSource${nameSuffix}`, { + apiId: self.api.id, + apiComponentName: selfName, + ...args, + }); + } + + /** + * Add a function to this AppSync API. + * + * @param args Configure the function. + * + * @example + * + * Add a function using a Lambda data source. + * + * ```js + * api.addFunction({ + * name: "myFunction", + * dataSource: "lambdaDS", + * }); + * ``` + * + * Add a function using a DynamoDB data source. + * + * ```js + * api.addResolver("Query user", { + * name: "myFunction", + * dataSource: "dynamoDS", + * requestTemplate: `{ + * "version": "2017-02-28", + * "operation": "Scan", + * }`, + * responseTemplate: `{ + * "users": $utils.toJson($context.result.items) + * }`, + * }); + * ``` + */ + public addFunction(args: AppSyncFunctionArgs) { + const self = this; + const selfName = this.constructorName; + const nameSuffix = sanitizeToPascalCase(args.name); + + return new AppSyncFunction(`${selfName}Function${nameSuffix}`, { + apiId: self.api.id, + ...args, + }); + } + + /** + * Add a resolver to this AppSync API. + * + * @param operation The type and name of the operation. + * @param args Configure the resolver. + * + * @example + * + * Add a resolver using a Lambda data source. + * + * ```js + * api.addResolver("Query user", { + * dataSource: "lambdaDS", + * }); + * ``` + * + * Add a resolver using a DynamoDB data source. + * + * ```js + * api.addResolver("Query user", { + * dataSource: "dynamoDS", + * requestTemplate: `{ + * "version": "2017-02-28", + * "operation": "Scan", + * }`, + * responseTemplate: `{ + * "users": $utils.toJson($context.result.items) + * }`, + * }); + * ``` + * + * Add a pipeline resolver. + * + * ```js + * api.addResolver("Query user", { + * functions: [ + * "MyFunction1", + * "MyFunction2" + * ] + * code: ` + * export function request(ctx) { + * return {}; + * } + * export function response(ctx) { + * return ctx.result; + * } + * `, + * }); + * ``` + */ + public addResolver(operation: string, args: AppSyncResolverArgs) { + const self = this; + const selfName = this.constructorName; + + // Parse field and type + const parts = operation.trim().split(/\s+/); + if (parts.length !== 2) + throw new VisibleError(`Invalid resolver ${operation}`); + const [type, field] = parts; + + const nameSuffix = + `${sanitizeToPascalCase(type)}` + `${sanitizeToPascalCase(field)}`; + return new AppSyncResolver(`${selfName}Resolver${nameSuffix}`, { + apiId: self.api.id, + type, + field, + ...args, + }); + } + + /** @internal */ + public getSSTLink() { + return { + properties: { + url: this.url, + }, + }; + } +} + +const __pulumiType = "sst:aws:AppSync"; +// @ts-expect-error +AppSync.__pulumiType = __pulumiType; diff --git a/pkg/platform/src/components/aws/helpers/arn.ts b/pkg/platform/src/components/aws/helpers/arn.ts index 4b88d887d..53b1b3f62 100644 --- a/pkg/platform/src/components/aws/helpers/arn.ts +++ b/pkg/platform/src/components/aws/helpers/arn.ts @@ -1,6 +1,8 @@ +import { aws } from "../.."; import { VisibleError } from "../../error"; export function parseTopicArn(arn: string) { + // arn:aws:sns:region:account-id:topic-name const topicName = arn.split(":")[5]; if (!arn.startsWith("arn:") || !topicName) throw new VisibleError( @@ -10,6 +12,7 @@ export function parseTopicArn(arn: string) { } export function parseQueueArn(arn: string) { + // arn:aws:sqs:region:account-id:queue-name const [arnStr, , , region, accountId, queueName] = arn.split(":"); if (arnStr !== "arn" || !queueName) throw new VisibleError( @@ -20,3 +23,43 @@ export function parseQueueArn(arn: string) { queueUrl: `https://sqs.${region}.amazonaws.com/${accountId}/${queueName}`, }; } + +export function parseDynamoArn(arn: string) { + // arn:aws:dynamodb:region:account-id:table/table-name + const tableName = arn.split("/")[1]; + if (!arn.startsWith("arn:") || !tableName) + throw new VisibleError( + `The provided ARN "${arn}" is not a DynamoDB table ARN.`, + ); + return { tableName }; +} + +export function parseEventBus(arn: string) { + // arn:aws:events:region:account-id:event-bus/bus-name + const tableName = arn.split("/")[1]; + if (!arn.startsWith("arn:") || !tableName) + throw new VisibleError( + `The provided ARN "${arn}" is not a EventBridge event bus ARN.`, + ); + return { tableName }; +} + +export function parseElasticSearch(arn: string) { + // arn:aws:es:region:account-id:domain/domain-name + const tableName = arn.split("/")[1]; + if (!arn.startsWith("arn:") || !tableName) + throw new VisibleError( + `The provided ARN "${arn}" is not a ElasticSearch domain ARN.`, + ); + return { tableName }; +} + +export function parseOpenSearch(arn: string) { + // arn:aws:opensearch:region:account-id:domain/domain-name + const tableName = arn.split("/")[1]; + if (!arn.startsWith("arn:") || !tableName) + throw new VisibleError( + `The provided ARN "${arn}" is not a OpenSearch domain ARN.`, + ); + return { tableName }; +} diff --git a/pkg/platform/src/components/aws/index.ts b/pkg/platform/src/components/aws/index.ts index 44fb58551..85d54bd02 100644 --- a/pkg/platform/src/components/aws/index.ts +++ b/pkg/platform/src/components/aws/index.ts @@ -1,4 +1,5 @@ export * from "./apigatewayv2.js"; +export * from "./app-sync.js"; export * from "./astro.js"; export * from "./auth.js"; export * from "./bucket.js"; diff --git a/pkg/platform/src/components/component.ts b/pkg/platform/src/components/component.ts index 7e36a31d2..646b9aa4d 100644 --- a/pkg/platform/src/components/component.ts +++ b/pkg/platform/src/components/component.ts @@ -136,6 +136,9 @@ export class Component extends ComponentResource { ), }; break; + case "aws:appsync/graphQLApi:GraphQLApi": + overrides = { name: prefixName(65536, args.name) }; + break; case "cloudflare:index/d1Database:D1Database": case "cloudflare:index/r2Bucket:R2Bucket": case "cloudflare:index/workerScript:WorkerScript": @@ -149,6 +152,9 @@ export class Component extends ComponentResource { }; break; // resources manually named + case "aws:appsync/dataSource:DataSource": + case "aws:appsync/function:Function": + case "aws:appsync/resolver:Resolver": case "aws:cognito/identityPool:IdentityPool": case "aws:ecs/service:Service": case "aws:ecs/taskDefinition:TaskDefinition": @@ -156,14 +162,16 @@ export class Component extends ComponentResource { case "aws:s3/bucketV2:BucketV2": break; // resources not prefixed + case "aws:acm/certificate:Certificate": + case "aws:acm/certificateValidation:CertificateValidation": case "aws:apigatewayv2/apiMapping:ApiMapping": case "aws:apigatewayv2/domainName:DomainName": case "aws:apigatewayv2/integration:Integration": case "aws:apigatewayv2/route:Route": case "aws:apigatewayv2/stage:Stage": case "aws:appautoscaling/target:Target": - case "aws:acm/certificate:Certificate": - case "aws:acm/certificateValidation:CertificateValidation": + case "aws:appsync/domainName:DomainName": + case "aws:appsync/domainNameApiAssociation:DomainNameApiAssociation": case "aws:ec2/routeTableAssociation:RouteTableAssociation": case "aws:iam/accessKey:AccessKey": case "aws:iam/policy:Policy": diff --git a/www/astro.config.mjs b/www/astro.config.mjs index 103611bd4..fdb70b45a 100644 --- a/www/astro.config.mjs +++ b/www/astro.config.mjs @@ -57,6 +57,7 @@ const sidebar = [ { label: "Dynamo", link: "/docs/component/aws/dynamo/" }, { label: "SnsTopic", link: "/docs/component/aws/sns-topic/" }, { label: "Function", link: "/docs/component/aws/function/" }, + { label: "AppSync", link: "/docs/component/aws/app-sync/" }, { label: "Postgres", link: "/docs/component/aws/postgres/" }, { label: "SvelteKit", link: "/docs/component/aws/svelte-kit/" }, { label: "StaticSite", link: "/docs/component/aws/static-site/" }, @@ -122,6 +123,18 @@ const sidebar = [ ], }, { label: "Service", link: "/docs/component/aws/service/" }, + { + label: "AppSyncFunction", + link: "/docs/component/aws/app-sync-function/", + }, + { + label: "AppSyncResolver", + link: "/docs/component/aws/app-sync-resolver/", + }, + { + label: "AppSyncDataSource", + link: "/docs/component/aws/app-sync-data-source/", + }, { label: "CognitoUserPoolClient", link: "/docs/component/aws/cognito-user-pool-client/", @@ -150,7 +163,7 @@ export default defineConfig({ }, devToolbar: { enabled: false, - }, + }, redirects: { "/install": "https://raw.githubusercontent.com/sst/ion/dev/install", }, diff --git a/www/generate.ts b/www/generate.ts index dd6973008..77ce6073b 100644 --- a/www/generate.ts +++ b/www/generate.ts @@ -1093,6 +1093,9 @@ async function generateComponentsDoc() { } // types in different doc const externalModule = { + AppSyncDataSource: "app-sync-data-source", + AppSyncFunction: "app-sync-function", + AppSyncResolver: "app-sync-resolver", Bucket: "bucket", BucketArgs: "bucket", Cdn: "cdn", @@ -1410,6 +1413,10 @@ async function buildComponents() { "../pkg/platform/src/global-config.d.ts", "../pkg/platform/src/components/secret.ts", "../pkg/platform/src/components/aws/apigatewayv2.ts", + "../pkg/platform/src/components/aws/app-sync.ts", + "../pkg/platform/src/components/aws/app-sync-data-source.ts", + "../pkg/platform/src/components/aws/app-sync-function.ts", + "../pkg/platform/src/components/aws/app-sync-resolver.ts", "../pkg/platform/src/components/aws/bucket.ts", "../pkg/platform/src/components/aws/cluster.ts", "../pkg/platform/src/components/aws/cognito-identity-pool.ts", diff --git a/www/src/content/docs/docs/component/aws/app-sync-data-source.mdx b/www/src/content/docs/docs/component/aws/app-sync-data-source.mdx new file mode 100644 index 000000000..2adad16e8 --- /dev/null +++ b/www/src/content/docs/docs/component/aws/app-sync-data-source.mdx @@ -0,0 +1,304 @@ +--- +title: AppSyncDataSource +description: Reference doc for the `sst.aws.AppSyncDataSource` component. +--- + +{/* DO NOT EDIT. AUTO-GENERATED FROM "pkg/platform/src/components/aws/app-sync-data-source.ts" */} + +import Segment from '../../../../../../src/components/tsdoc/Segment.astro'; +import Section from '../../../../../../src/components/tsdoc/Section.astro'; +import NestedTitle from '../../../../../../src/components/tsdoc/NestedTitle.astro'; +import InlineSection from '../../../../../../src/components/tsdoc/InlineSection.astro'; + +
+ +
+The `AppSyncDataSource` component is internally used by the `AppSync` component to add +data sources to [AWS AppSync](https://docs.aws.amazon.com/appsync/latest/devguide/what-is-appsync.html). + +:::caution +This component is not intended for public use. +::: + +You'll find this component returned by the `addDataSource` method of the `AppSync` component. +
+ +--- + +## Constructor + + +
+```ts +new AppSyncDataSource(name, args, opts?) +``` +
+ +
+#### Parameters +-

name string

+-

args [DataSourceArgs](#datasourceargs)

+-

opts? [ComponentResourceOptions](https://www.pulumi.com/docs/concepts/options/)

+
+
+ +## Properties + +### name + +
+ +**Type** Output<string> + +
+The name of the data source. +
+ +### nodes + +
+ +**Type** Object + +-

[dataSource](#nodes-datasource)

+-

[function](#nodes-function)

+-

[serviceRole](#nodes-servicerole)

+
+The underlying [resources](/docs/components/#nodes) this component creates. +
+dataSource + +
+ +**Type** [DataSource](https://www.pulumi.com/registry/packages/aws/api-docs/appsync/datasource/) + +
+The Amazon AppSync DataSource. +
+function + +
+ +**Type** Output<[Function](/docs/component/aws/function/)> + +
+The Lambda function used by the data source. +
+serviceRole + +
+ +**Type** [Role](https://www.pulumi.com/registry/packages/aws/api-docs/iam/role/) + +
+The DataSource service IAM role. +
+ +## DataSourceArgs +### apiComponentName + +
+ +**Type** string + +
+The AppSync component name. + +
+### apiId + +
+ +**Type** Input<string> + +
+The AppSync GraphQL API ID. + +
+### dynamodb? + +
+ +**Type** Input<string> + +
+The ARN for the DynamoDB table. + +```js +{ + name: "dynamoDS", + dynamodb: "arn:aws:dynamodb:us-east-1:123456789012:table/my-table" +} +``` +
+### elasticSearch? + +
+ +**Type** Input<string> + +
+The ARN for the Elasticsearch domain. + +```js +{ + name: "elasticSearchDS", + elasticSearch: "arn:aws:es:us-east-1:123456789012:domain/my-domain" +} +``` +
+### eventBridge? + +
+ +**Type** Input<string> + +
+The ARN for the EventBridge event bus. + +```js +{ + name: "eventBridgeDS", + eventBridge: "arn:aws:events:us-east-1:123456789012:event-bus/my-event-bus" +} +``` +
+### http? + +
+ +**Type** Input<string> + +
+The URL for the HTTP endpoint. + +```js +{ + name: "httpDS", + http: "https://api.example.com" +} +``` +
+### lambda? + +
+ +**Type** Input<string | [FunctionArgs](/docs/component/aws/function/#functionargs)> + +
+The ARN for the Lambda function. + +```js +{ + name: "lambdaDS", + lambda: "arn:aws:lambda:us-east-1:123456789012:function:my-function" +} +``` +
+### name + +
+ +**Type** string + +
+The name of the data source. + +```js +{ + name: "lambdaDS", + lambda: "arn:aws:lambda:us-east-1:123456789012:function:my-function" +} +``` +
+### openSearch? + +
+ +**Type** Input<string> + +
+The ARN for the OpenSearch domain. + +```js +{ + name: "openSearchDS", + openSearch: "arn:aws:opensearch:us-east-1:123456789012:domain/my-domain" +} +``` +
+### rds? + +
+ +**Type** Input<Object> + +-

[cluster](#rds-cluster)

+-

[credentials](#rds-credentials)

+
+Configuring RDS data source. + +```js +{ + name: "rdsDS", + rds: { + cluster: "arn:aws:rds:us-east-1:123456789012:cluster:my-cluster", + credentials: "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-secret" + } +} +``` +
+cluster + +
+ +**Type** Input<string> + +
+The ARN for the RDS cluster. + +
+credentials + +
+ +**Type** Input<string> + +
+The ARN for the credentials secret store. + +
+### transform? + +
+ +**Type** Object + +-

[dataSource?](#transform-datasource)

+-

[serviceRole?](#transform-servicerole)

+
+[Transform](/docs/components#transform) how this component creates its underlying +resources. + +
+dataSource? + +
+ +**Type** [DataSourceArgs](https://www.pulumi.com/registry/packages/aws/api-docs/appsync/datasource/#inputs) | (args: [DataSourceArgs](https://www.pulumi.com/registry/packages/aws/api-docs/appsync/datasource/#inputs) => void) + +
+Transform the AppSync DataSource resource. + +
+serviceRole? + +
+ +**Type** [RoleArgs](https://www.pulumi.com/registry/packages/aws/api-docs/iam/role/#inputs) | (args: [RoleArgs](https://www.pulumi.com/registry/packages/aws/api-docs/iam/role/#inputs) => void) + +
+Transform the AppSync DataSource service role resource. + +
+
\ No newline at end of file diff --git a/www/src/content/docs/docs/component/aws/app-sync-function.mdx b/www/src/content/docs/docs/component/aws/app-sync-function.mdx new file mode 100644 index 000000000..f7fc2db35 --- /dev/null +++ b/www/src/content/docs/docs/component/aws/app-sync-function.mdx @@ -0,0 +1,182 @@ +--- +title: AppSyncFunction +description: Reference doc for the `sst.aws.AppSyncFunction` component. +--- + +{/* DO NOT EDIT. AUTO-GENERATED FROM "pkg/platform/src/components/aws/app-sync-function.ts" */} + +import Segment from '../../../../../../src/components/tsdoc/Segment.astro'; +import Section from '../../../../../../src/components/tsdoc/Section.astro'; +import NestedTitle from '../../../../../../src/components/tsdoc/NestedTitle.astro'; +import InlineSection from '../../../../../../src/components/tsdoc/InlineSection.astro'; + +
+ +
+The `AppSyncFunction` component is internally used by the `AppSync` component to add +functions to [AWS AppSync](https://docs.aws.amazon.com/appsync/latest/devguide/what-is-appsync.html). + +:::caution +This component is not intended for public use. +::: + +You'll find this component returned by the `addFunction` method of the `AppSync` component. +
+ +--- + +## Constructor + + +
+```ts +new AppSyncFunction(name, args, opts?) +``` +
+ +
+#### Parameters +-

name string

+-

args [FunctionArgs](#functionargs)

+-

opts? [ComponentResourceOptions](https://www.pulumi.com/docs/concepts/options/)

+
+
+ +## Properties + +### nodes + +
+ +**Type** Object + +-

[function](#nodes-function)

+
+The underlying [resources](/docs/components/#nodes) this component creates. +
+function + +
+ +**Type** [Function](https://www.pulumi.com/registry/packages/aws/api-docs/appsync/function/) + +
+The Amazon AppSync Function. +
+ +## FunctionArgs +### apiId + +
+ +**Type** Input<string> + +
+The AppSync GraphQL API ID. + +
+### code? + +
+ +**Type** Input<string> + +
+The function code that contains the request and response functions. + +```js +{ + code: fs.readFileSync("functions.js") +} +``` +
+### dataSource + +
+ +**Type** Input<string> + +
+The data source this resolver is using. This only applies for "unit" resolvers. + +```js +{ + dataSource: "lambdaDS" +} +``` +
+### name + +
+ +**Type** string + +
+The name of the AppSync function. + +```js +{ + name: "myFunction", +} +``` +
+### requestMappingTemplate? + +
+ +**Type** Input<string> + +
+The function request mapping template. + +```js +{ + dataSource: "dynamoDS", + requestTemplate: `{ + "version": "2018-05-29", + "operation": "Scan", + }`, +} +``` +
+### responseMappingTemplate? + +
+ +**Type** Input<string> + +
+The function response mapping template. + +```js +{ + dataSource: "dynamoDS", + responseTemplate: `{ + "users": $utils.toJson($context.result.items) + }`, +} +``` +
+### transform? + +
+ +**Type** Object + +-

[function?](#transform-function)

+
+[Transform](/docs/components#transform) how this component creates its underlying +resources. + +
+function? + +
+ +**Type** [FunctionArgs](https://www.pulumi.com/registry/packages/aws/api-docs/appsync/function/#inputs) | (args: [FunctionArgs](https://www.pulumi.com/registry/packages/aws/api-docs/appsync/function/#inputs) => void) + +
+Transform the AppSync Function resource. + +
+
\ No newline at end of file diff --git a/www/src/content/docs/docs/component/aws/app-sync-resolver.mdx b/www/src/content/docs/docs/component/aws/app-sync-resolver.mdx new file mode 100644 index 000000000..582450855 --- /dev/null +++ b/www/src/content/docs/docs/component/aws/app-sync-resolver.mdx @@ -0,0 +1,223 @@ +--- +title: AppSyncResolver +description: Reference doc for the `sst.aws.AppSyncResolver` component. +--- + +{/* DO NOT EDIT. AUTO-GENERATED FROM "pkg/platform/src/components/aws/app-sync-resolver.ts" */} + +import Segment from '../../../../../../src/components/tsdoc/Segment.astro'; +import Section from '../../../../../../src/components/tsdoc/Section.astro'; +import NestedTitle from '../../../../../../src/components/tsdoc/NestedTitle.astro'; +import InlineSection from '../../../../../../src/components/tsdoc/InlineSection.astro'; + +
+ +
+The `AppSyncResolver` component is internally used by the `AppSync` component to add +resolvers to [AWS AppSync](https://docs.aws.amazon.com/appsync/latest/devguide/what-is-appsync.html). + +:::caution +This component is not intended for public use. +::: + +You'll find this component returned by the `addResolver` method of the `AppSync` component. +
+ +--- + +## Constructor + + +
+```ts +new AppSyncResolver(name, args, opts?) +``` +
+ +
+#### Parameters +-

name string

+-

args [ResolverArgs](#resolverargs)

+-

opts? [ComponentResourceOptions](https://www.pulumi.com/docs/concepts/options/)

+
+
+ +## Properties + +### nodes + +
+ +**Type** Object + +-

[resolver](#nodes-resolver)

+
+The underlying [resources](/docs/components/#nodes) this component creates. +
+resolver + +
+ +**Type** [Resolver](https://www.pulumi.com/registry/packages/aws/api-docs/appsync/resolver/) + +
+The Amazon AppSync Resolver. +
+ +## ResolverArgs +### apiId + +
+ +**Type** Input<string> + +
+The AppSync GraphQL API ID. + +
+### code? + +
+ +**Type** Input<string> + +
+The function code that contains the request and response functions. + +```js +{ + code: fs.readFileSync("functions.js") +} +``` +
+### dataSource? + +
+ +**Type** Input<string> + +
+The data source this resolver is using. This only applies for "unit" resolvers. + +```js +{ + dataSource: "lambdaDS" +} +``` +
+### field + +
+ +**Type** Input<string> + +
+The field name from the schema defined. + +
+### functions? + +
+ +**Type** Input<string[]> + +
+The functions this resolver is using. This only applies for "pipeline" resolvers. + +```js +{ + functions: ["myFunction1", "myFunction2"] +} +``` +
+### kind? + +
+ +**Type** Input<unit | pipeline> + +
+ + +**Default** "unit" + +The type of the resolver. + +```js +{ + kind: "pipeline" +} +``` +
+### requestTemplate? + +
+ +**Type** Input<string> + +
+For "unit" resolvers, this is the request mapping template. And for "pipeline" +resolvers, this is the before mapping template. + +```js +{ + dataSource: "dynamoDS", + requestTemplate: `{ + "version": "2017-02-28", + "operation": "Scan", + }`, +} +``` +
+### responseTemplate? + +
+ +**Type** Input<string> + +
+For "unit" resolvers, this is the response mapping template. And for "pipeline" +resolvers, this is the after mapping template. + +```js +{ + dataSource: "dynamoDS", + responseTemplate: `{ + "users": $utils.toJson($context.result.items) + }`, +} +``` +
+### transform? + +
+ +**Type** Object + +-

[resolver?](#transform-resolver)

+
+[Transform](/docs/components#transform) how this component creates its underlying +resources. + +
+resolver? + +
+ +**Type** [ResolverArgs](https://www.pulumi.com/registry/packages/aws/api-docs/appsync/resolver/#inputs) | (args: [ResolverArgs](https://www.pulumi.com/registry/packages/aws/api-docs/appsync/resolver/#inputs) => void) + +
+Transform the AppSync Resolver resource. + +
+### type + +
+ +**Type** Input<string> + +
+The type name from the schema defined. + +
+
\ No newline at end of file diff --git a/www/src/content/docs/docs/component/aws/app-sync.mdx b/www/src/content/docs/docs/component/aws/app-sync.mdx new file mode 100644 index 000000000..1b39b9705 --- /dev/null +++ b/www/src/content/docs/docs/component/aws/app-sync.mdx @@ -0,0 +1,904 @@ +--- +title: AppSync +description: Reference doc for the `sst.aws.AppSync` component. +--- + +{/* DO NOT EDIT. AUTO-GENERATED FROM "pkg/platform/src/components/aws/app-sync.ts" */} + +import Segment from '../../../../../../src/components/tsdoc/Segment.astro'; +import Section from '../../../../../../src/components/tsdoc/Section.astro'; +import NestedTitle from '../../../../../../src/components/tsdoc/NestedTitle.astro'; +import InlineSection from '../../../../../../src/components/tsdoc/InlineSection.astro'; + +
+ +
+The `AppSync` component lets you add an [Amazon AppSync GraphQL API](https://docs.aws.amazon.com/appsync/latest/devguide/what-is-appsync.html) to your app. + +#### Create a GraphQL API + +```ts +const api = new sst.aws.AppSync("MyApi", { + schema: "schema.graphql", +}); +``` + +#### Add a data source + +```ts +const lambdaDS = api.addDataSource({ + name: "lambdaDS", + lambda: "src/lambda.handler", +}); +``` + +#### Add a resolver + +```ts +api.addResolver("Query user", { + dataSource: lambdaDS.name, +}); +``` +
+ +--- + +## Constructor + + +
+```ts +new AppSync(name, args, opts?) +``` +
+ +
+#### Parameters +-

name string

+-

args [AppSyncArgs](#appsyncargs)

+-

opts? [ComponentResourceOptions](https://www.pulumi.com/docs/concepts/options/)

+
+
+ +## Methods + +### addDataSource + +
+```ts +addDataSource(args) +``` +
+ +
+#### Parameters +-

args [AppSyncDataSourceArgs](#appsyncdatasourceargs)

+Configure the data source. +
+ + +**Returns** [AppSyncDataSource](/docs/component/aws/app-sync-data-source/) + +Add a data source to this AppSync API. + +Add a Lambda function as a data source. + +```js +api.addDataSource({ + name: "lambdaDS", + lambda: "src/lambda.handler" +}); +``` + +Customize the Lambda function. + +```js +api.addDataSource({ + name: "lambdaDS", + lambda: { + handler: "src/lambda.handler", + timeout: "60 seconds" + } +}); +``` + +Add a DynamoDB table as a data source. + +```js +api.addDataSource({ + name: "dynamoDS", + dynamodb: "arn:aws:dynamodb:us-east-1:123456789012:table/my-table" +}) +``` +
+ +### addFunction + +
+```ts +addFunction(args) +``` +
+ +
+#### Parameters +-

args [AppSyncFunctionArgs](#appsyncfunctionargs)

+Configure the function. +
+ + +**Returns** [AppSyncFunction](/docs/component/aws/app-sync-function/) + +Add a function to this AppSync API. + +Add a function using a Lambda data source. + +```js +api.addFunction({ + name: "myFunction", + dataSource: "lambdaDS", +}); +``` + +Add a function using a DynamoDB data source. + +```js +api.addResolver("Query user", { + name: "myFunction", + dataSource: "dynamoDS", + requestTemplate: `{ + "version": "2017-02-28", + "operation": "Scan", + }`, + responseTemplate: `{ + "users": $utils.toJson($context.result.items) + }`, +}); +``` +
+ +### addResolver + +
+```ts +addResolver(operation, args) +``` +
+ +
+#### Parameters +-

operation string

+The type and name of the operation. +-

args [AppSyncResolverArgs](#appsyncresolverargs)

+Configure the resolver. +
+ + +**Returns** [AppSyncResolver](/docs/component/aws/app-sync-resolver/) + +Add a resolver to this AppSync API. + +Add a resolver using a Lambda data source. + +```js +api.addResolver("Query user", { + dataSource: "lambdaDS", +}); +``` + +Add a resolver using a DynamoDB data source. + +```js +api.addResolver("Query user", { + dataSource: "dynamoDS", + requestTemplate: `{ + "version": "2017-02-28", + "operation": "Scan", + }`, + responseTemplate: `{ + "users": $utils.toJson($context.result.items) + }`, +}); +``` + +Add a pipeline resolver. + +```js +api.addResolver("Query user", { + functions: [ + "MyFunction1", + "MyFunction2" + ] + code: ` + export function request(ctx) { + return {}; + } + export function response(ctx) { + return ctx.result; + } + `, +}); +``` +
+ +## Properties + +### id + +
+ +**Type** Output<string> + +
+The GraphQL API id. +
+ +### nodes + +
+ +**Type** Object + +-

[api](#nodes-api)

+
+The underlying [resources](/docs/components/#nodes) this component creates. +
+api + +
+ +**Type** [GraphQLApi](https://www.pulumi.com/registry/packages/aws/api-docs/appsync/graphqlapi/) + +
+The Amazon AppSync GraphQL API. +
+ +### url + +
+ +**Type** Output<string> + +
+The URL of the GraphQL API. +
+ +## Links + +The following are accessible through the [SDK](/docs/reference/sdk/) at runtime. + +### url + +
+ +**Type** string + +
+The URL of the GraphQL API. +
+ +## AppSyncArgs +### domain? + +
+ +**Type** Input<string | Object> + +-

[cert?](#domain-cert)

+-

[dns?](#domain-dns)

+-

[name](#domain-name)

+
+Set a custom domain for your AppSync GraphQL API. + +Automatically manages domains hosted on AWS Route 53, Cloudflare, and Vercel. For other +providers, you'll need to pass in a `cert` that validates domain ownership and add the +DNS records. + +:::tip +Built-in support for AWS Route 53, Cloudflare, and Vercel. And manual setup for other +providers. +::: + +By default this assumes the domain is hosted on Route 53. + +```js +{ + domain: "example.com" +} +``` + +For domains hosted on Cloudflare. + +```js +{ + domain: { + name: "example.com", + dns: sst.cloudflare.dns() + } +} +``` +
+cert? + +
+ +**Type** Input<string> + +
+The ARN of an ACM (AWS Certificate Manager) certificate that proves ownership of the +domain. By default, a certificate is created and validated automatically. + +The certificate will be created in the `us-east-1` region as required by AWS AppSync. +If you are creating your own certificate, you must also create it in `us-east-1`. + +:::tip +You need to pass in a `cert` for domains that are not hosted on supported `dns` providers. +::: + +To manually set up a domain on an unsupported provider, you'll need to: + +1. [Validate that you own the domain](https://docs.aws.amazon.com/acm/latest/userguide/domain-ownership-validation.html) by creating an ACM certificate. You can either validate it by setting a DNS record or by verifying an email sent to the domain owner. +2. Once validated, set the certificate ARN as the `cert` and set `dns` to `false`. +3. Add the DNS records in your provider to point to the API Gateway URL. + +```js +{ + domain: { + name: "example.com", + dns: false, + cert: "arn:aws:acm:us-east-1:112233445566:certificate/3a958790-8878-4cdc-a396-06d95064cf63" + } +} +``` +
+dns? + +
+ +**Type** Input<false | [sst.aws.dns](/docs/component/aws/dns/) | [sst.cloudflare.dns](/docs/component/cloudflare/dns/) | [sst.vercel.dns](/docs/component/vercel/dns/)> + +
+ + +**Default** sst.aws.dns + +The DNS provider to use for the domain. Defaults to the AWS. + +Takes an adapter that can create the DNS records on the provider. This can automate +validating the domain and setting up the DNS routing. + +Supports Route 53, Cloudflare, and Vercel adapters. For other providers, you'll need +to set `dns` to `false` and pass in a certificate validating ownership via `cert`. + +Specify the hosted zone ID for the Route 53 domain. + +```js +{ + domain: { + name: "example.com", + dns: sst.aws.dns({ + zone: "Z2FDTNDATAQYW2" + }) + } +} +``` + +Use a domain hosted on Cloudflare, needs the Cloudflare provider. + +```js +{ + domain: { + name: "example.com", + dns: sst.cloudflare.dns() + } +} +``` + +Use a domain hosted on Vercel, needs the Vercel provider. + +```js +{ + domain: { + name: "example.com", + dns: sst.vercel.dns() + } +} +``` +
+name + +
+ +**Type** Input<string> + +
+The custom domain you want to use. + +```js +{ + domain: { + name: "example.com" + } +} +``` + +Can also include subdomains based on the current stage. + +```js +{ + domain: { + name: `${$app.stage}.example.com` + } +} +``` +
+### schema + +
+ +**Type** Input<string> + +
+Path to the GraphQL schema file. This path is relative to your `sst.config.ts`. + +```js +{ + schema: "schema.graphql", +} +``` +
+### transform? + +
+ +**Type** Object + +-

[api?](#transform-api)

+-

[domainName?](#transform-domainname)

+
+[Transform](/docs/components#transform) how this component creates its underlying +resources. + +
+api? + +
+ +**Type** [GraphQLApiArgs](https://www.pulumi.com/registry/packages/aws/api-docs/appsync/graphqlapi/#inputs) | (args: [GraphQLApiArgs](https://www.pulumi.com/registry/packages/aws/api-docs/appsync/graphqlapi/#inputs) => void) + +
+Transform the AppSync GraphQL API resource. + +
+domainName? + +
+ +**Type** [DomainNameArgs](https://www.pulumi.com/registry/packages/aws/api-docs/appsync/domainname/#inputs) | (args: [DomainNameArgs](https://www.pulumi.com/registry/packages/aws/api-docs/appsync/domainname/#inputs) => void) + +
+Transform the AppSync domain name resource. + +
+ +## AppSyncDataSourceArgs +### dynamodb? + +
+ +**Type** Input<string> + +
+The ARN for the DynamoDB table. + +```js +{ + name: "dynamoDS", + dynamodb: "arn:aws:dynamodb:us-east-1:123456789012:table/my-table" +} +``` +
+### elasticSearch? + +
+ +**Type** Input<string> + +
+The ARN for the Elasticsearch domain. + +```js +{ + name: "elasticSearchDS", + elasticSearch: "arn:aws:es:us-east-1:123456789012:domain/my-domain" +} +``` +
+### eventBridge? + +
+ +**Type** Input<string> + +
+The ARN for the EventBridge event bus. + +```js +{ + name: "eventBridgeDS", + eventBridge: "arn:aws:events:us-east-1:123456789012:event-bus/my-event-bus" +} +``` +
+### http? + +
+ +**Type** Input<string> + +
+The URL for the HTTP endpoint. + +```js +{ + name: "httpDS", + http: "https://api.example.com" +} +``` +
+### lambda? + +
+ +**Type** Input<string | [FunctionArgs](/docs/component/aws/function/#functionargs)> + +
+The ARN for the Lambda function. + +```js +{ + name: "lambdaDS", + lambda: "arn:aws:lambda:us-east-1:123456789012:function:my-function" +} +``` +
+### name + +
+ +**Type** string + +
+The name of the data source. + +```js +{ + name: "lambdaDS", + lambda: "arn:aws:lambda:us-east-1:123456789012:function:my-function" +} +``` +
+### openSearch? + +
+ +**Type** Input<string> + +
+The ARN for the OpenSearch domain. + +```js +{ + name: "openSearchDS", + openSearch: "arn:aws:opensearch:us-east-1:123456789012:domain/my-domain" +} +``` +
+### rds? + +
+ +**Type** Input<Object> + +-

[cluster](#rds-cluster)

+-

[credentials](#rds-credentials)

+
+Configuring RDS data source. + +```js +{ + name: "rdsDS", + rds: { + cluster: "arn:aws:rds:us-east-1:123456789012:cluster:my-cluster", + credentials: "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-secret" + } +} +``` +
+cluster + +
+ +**Type** Input<string> + +
+The ARN for the RDS cluster. + +
+credentials + +
+ +**Type** Input<string> + +
+The ARN for the credentials secret store. + +
+### transform? + +
+ +**Type** Object + +-

[dataSource?](#transform-datasource)

+-

[serviceRole?](#transform-servicerole)

+
+[Transform](/docs/components#transform) how this component creates its underlying +resources. + +
+dataSource? + +
+ +**Type** [DataSourceArgs](https://www.pulumi.com/registry/packages/aws/api-docs/appsync/datasource/#inputs) | (args: [DataSourceArgs](https://www.pulumi.com/registry/packages/aws/api-docs/appsync/datasource/#inputs) => void) + +
+Transform the AppSync DataSource resource. + +
+serviceRole? + +
+ +**Type** [RoleArgs](https://www.pulumi.com/registry/packages/aws/api-docs/iam/role/#inputs) | (args: [RoleArgs](https://www.pulumi.com/registry/packages/aws/api-docs/iam/role/#inputs) => void) + +
+Transform the AppSync DataSource service role resource. + +
+ +## AppSyncFunctionArgs +### code? + +
+ +**Type** Input<string> + +
+The function code that contains the request and response functions. + +```js +{ + code: fs.readFileSync("functions.js") +} +``` +
+### dataSource + +
+ +**Type** Input<string> + +
+The data source this resolver is using. This only applies for "unit" resolvers. + +```js +{ + dataSource: "lambdaDS" +} +``` +
+### name + +
+ +**Type** string + +
+The name of the AppSync function. + +```js +{ + name: "myFunction", +} +``` +
+### requestMappingTemplate? + +
+ +**Type** Input<string> + +
+The function request mapping template. + +```js +{ + dataSource: "dynamoDS", + requestTemplate: `{ + "version": "2018-05-29", + "operation": "Scan", + }`, +} +``` +
+### responseMappingTemplate? + +
+ +**Type** Input<string> + +
+The function response mapping template. + +```js +{ + dataSource: "dynamoDS", + responseTemplate: `{ + "users": $utils.toJson($context.result.items) + }`, +} +``` +
+### transform? + +
+ +**Type** Object + +-

[function?](#transform-function)

+
+[Transform](/docs/components#transform) how this component creates its underlying +resources. + +
+function? + +
+ +**Type** [FunctionArgs](https://www.pulumi.com/registry/packages/aws/api-docs/appsync/function/#inputs) | (args: [FunctionArgs](https://www.pulumi.com/registry/packages/aws/api-docs/appsync/function/#inputs) => void) + +
+Transform the AppSync Function resource. + +
+ +## AppSyncResolverArgs +### code? + +
+ +**Type** Input<string> + +
+The function code that contains the request and response functions. + +```js +{ + code: fs.readFileSync("functions.js") +} +``` +
+### dataSource? + +
+ +**Type** Input<string> + +
+The data source this resolver is using. This only applies for "unit" resolvers. + +```js +{ + dataSource: "lambdaDS" +} +``` +
+### functions? + +
+ +**Type** Input<string[]> + +
+The functions this resolver is using. This only applies for "pipeline" resolvers. + +```js +{ + functions: ["myFunction1", "myFunction2"] +} +``` +
+### kind? + +
+ +**Type** Input<unit | pipeline> + +
+ + +**Default** "unit" + +The type of the resolver. + +```js +{ + kind: "pipeline" +} +``` +
+### requestTemplate? + +
+ +**Type** Input<string> + +
+For "unit" resolvers, this is the request mapping template. And for "pipeline" +resolvers, this is the before mapping template. + +```js +{ + dataSource: "dynamoDS", + requestTemplate: `{ + "version": "2017-02-28", + "operation": "Scan", + }`, +} +``` +
+### responseTemplate? + +
+ +**Type** Input<string> + +
+For "unit" resolvers, this is the response mapping template. And for "pipeline" +resolvers, this is the after mapping template. + +```js +{ + dataSource: "dynamoDS", + responseTemplate: `{ + "users": $utils.toJson($context.result.items) + }`, +} +``` +
+### transform? + +
+ +**Type** Object + +-

[resolver?](#transform-resolver)

+
+[Transform](/docs/components#transform) how this component creates its underlying +resources. + +
+resolver? + +
+ +**Type** [ResolverArgs](https://www.pulumi.com/registry/packages/aws/api-docs/appsync/resolver/#inputs) | (args: [ResolverArgs](https://www.pulumi.com/registry/packages/aws/api-docs/appsync/resolver/#inputs) => void) + +
+Transform the AppSync Resolver resource. + +
+
\ No newline at end of file diff --git a/www/src/content/docs/docs/component/aws/email.mdx b/www/src/content/docs/docs/component/aws/email.mdx index edd0be071..941fe584c 100644 --- a/www/src/content/docs/docs/component/aws/email.mdx +++ b/www/src/content/docs/docs/component/aws/email.mdx @@ -121,6 +121,26 @@ The sender email address or domain. ## EmailArgs +### dmarc? + +
+ +**Type** Input<string> + +
+ + +**Default** "v=DMARC1; p=none;" + +The DMARC policy for the domain. SST will create a DNS record with the DMARC policy. +You will get an error if you specify this for email address senders. + +```js +{ + dmarc: "v=DMARC1; p=quarantine; adkim=s; aspf=s;" +} +``` +
### dns?
From 8104023aff05decbda68e389dad18ad67e73e94b Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Thu, 2 May 2024 13:09:57 -0400 Subject: [PATCH 12/41] handle bad cloudflare token --- cmd/sst/errors.go | 17 +++++++++-------- pkg/project/provider/cloudflare.go | 6 ++++++ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/cmd/sst/errors.go b/cmd/sst/errors.go index 595deef3a..bc29b7264 100644 --- a/cmd/sst/errors.go +++ b/cmd/sst/errors.go @@ -11,14 +11,15 @@ import ( func TransformError(err error) error { mapping := map[error]string{ - project.ErrInvalidStageName: "The stage name is invalid. It can only contain alphanumeric characters and hyphens.", - project.ErrV2Config: "You are using sst ion and this looks like an sst v2 config", - project.ErrStageNotFound: "Stage not found", - project.ErrPassphraseInvalid: "The passphrase for this app / stage is missing or invalid", - aws.ErrIoTDelay: "This aws account has not had iot initialized in it before which sst depends on. It may take a few minutes before it is ready.", - project.ErrStackRunFailed: "", - provider.ErrLockExists: "", - project.ErrVersionInvalid: "The version range defined in the config is invalid", + project.ErrInvalidStageName: "The stage name is invalid. It can only contain alphanumeric characters and hyphens.", + project.ErrV2Config: "You are using sst ion and this looks like an sst v2 config", + project.ErrStageNotFound: "Stage not found", + project.ErrPassphraseInvalid: "The passphrase for this app / stage is missing or invalid", + aws.ErrIoTDelay: "This aws account has not had iot initialized in it before which sst depends on. It may take a few minutes before it is ready.", + project.ErrStackRunFailed: "", + provider.ErrLockExists: "", + project.ErrVersionInvalid: "The version range defined in the config is invalid", + provider.ErrCloudflareMissingAccount: "This cloudflare token does not have access to any accounts. Please make sure the token has the right permissions. You can also set the CLOUDFLARE_DEFAULT_ACCOUNT_ID environment variable to the account id you want to use.", } readable := []error{ diff --git a/pkg/project/provider/cloudflare.go b/pkg/project/provider/cloudflare.go index e236594c0..3601fcfbc 100644 --- a/pkg/project/provider/cloudflare.go +++ b/pkg/project/provider/cloudflare.go @@ -3,6 +3,7 @@ package provider import ( "bytes" "context" + "fmt" "io" "log/slog" "net/http" @@ -29,6 +30,8 @@ func (c CloudflareProvider) Api() *cloudflare.API { return c.api } +var ErrCloudflareMissingAccount = fmt.Errorf("missing account") + func (c *CloudflareProvider) Init(app, stage string, args map[string]interface{}) error { apiToken := os.Getenv("CLOUDFLARE_API_TOKEN") apiKey := os.Getenv("CLOUDFLARE_API_KEY") @@ -58,6 +61,9 @@ func (c *CloudflareProvider) Init(app, stage string, args map[string]interface{} accounts, _, err := c.api.Accounts(context.Background(), cloudflare.AccountsListParams{}) if err != nil { return err + } + if len(accounts) == 0 { + } accountID = accounts[0].ID } From 3798a1d237fd2e1187259610c5b5e7642acf65dc Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Thu, 2 May 2024 13:38:52 -0400 Subject: [PATCH 13/41] longer role credentials for sst dev --- pkg/server/server.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/server/server.go b/pkg/server/server.go index 4abeac91d..86fc60950 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -13,6 +13,7 @@ import ( "syscall" "time" + awssdk "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/sts" "github.com/sst/ion/pkg/project" "github.com/sst/ion/pkg/project/provider" @@ -215,6 +216,7 @@ func (s *Server) Start(parentContext context.Context) error { result, err := stsClient.AssumeRole(r.Context(), &sts.AssumeRoleInput{ RoleArn: &receiver.AwsRole, RoleSessionName: &sessionName, + DurationSeconds: awssdk.Int32(43200), }) if err != nil { slog.Info("error assuming role", "err", err.Error()) From a2971ba1e9c0a675e1cefd38d9b856cb91a57e7f Mon Sep 17 00:00:00 2001 From: Jay V Date: Thu, 2 May 2024 14:35:20 -0400 Subject: [PATCH 14/41] Docs Svelte quick start --- .../.gitignore | 0 .../{aws-sveltekit => aws-svelte-kit}/.npmrc | 0 .../README.md | 0 .../package.json | 17 +- .../src/app.d.ts | 0 .../src/app.html | 0 .../src/lib/index.ts} | 0 .../aws-svelte-kit/src/routes/+page.server.ts | 15 ++ .../aws-svelte-kit/src/routes/+page.svelte | 38 ++++ .../sst-env.d.ts | 0 .../sst.config.ts | 7 +- .../static/favicon.png | Bin .../svelte.config.js | 0 .../tsconfig.json} | 0 .../vite.config.ts} | 0 examples/aws-sveltekit/.eslintignore | 13 -- examples/aws-sveltekit/.eslintrc.cjs | 15 -- examples/aws-sveltekit/.prettierignore | 4 - examples/aws-sveltekit/.prettierrc | 8 - .../aws-sveltekit/src/routes/+page.svelte | 2 - www/astro.config.mjs | 1 + .../assets/docs/start/start-svelte-kit.png | Bin 0 -> 555157 bytes .../content/docs/docs/start/aws/svelte.mdx | 173 +++++++----------- 23 files changed, 128 insertions(+), 165 deletions(-) rename examples/{aws-sveltekit => aws-svelte-kit}/.gitignore (100%) rename examples/{aws-sveltekit => aws-svelte-kit}/.npmrc (100%) rename examples/{aws-sveltekit => aws-svelte-kit}/README.md (100%) rename examples/{aws-sveltekit => aws-svelte-kit}/package.json (52%) rename examples/{aws-sveltekit => aws-svelte-kit}/src/app.d.ts (100%) rename examples/{aws-sveltekit => aws-svelte-kit}/src/app.html (100%) rename examples/{aws-sveltekit/src/lib/index.js => aws-svelte-kit/src/lib/index.ts} (100%) create mode 100644 examples/aws-svelte-kit/src/routes/+page.server.ts create mode 100644 examples/aws-svelte-kit/src/routes/+page.svelte rename examples/{aws-sveltekit => aws-svelte-kit}/sst-env.d.ts (100%) rename examples/{aws-sveltekit => aws-svelte-kit}/sst.config.ts (64%) rename examples/{aws-sveltekit => aws-svelte-kit}/static/favicon.png (100%) rename examples/{aws-sveltekit => aws-svelte-kit}/svelte.config.js (100%) rename examples/{aws-sveltekit/jsconfig.json => aws-svelte-kit/tsconfig.json} (100%) rename examples/{aws-sveltekit/vite.config.js => aws-svelte-kit/vite.config.ts} (100%) delete mode 100644 examples/aws-sveltekit/.eslintignore delete mode 100644 examples/aws-sveltekit/.eslintrc.cjs delete mode 100644 examples/aws-sveltekit/.prettierignore delete mode 100644 examples/aws-sveltekit/.prettierrc delete mode 100644 examples/aws-sveltekit/src/routes/+page.svelte create mode 100644 www/src/assets/docs/start/start-svelte-kit.png diff --git a/examples/aws-sveltekit/.gitignore b/examples/aws-svelte-kit/.gitignore similarity index 100% rename from examples/aws-sveltekit/.gitignore rename to examples/aws-svelte-kit/.gitignore diff --git a/examples/aws-sveltekit/.npmrc b/examples/aws-svelte-kit/.npmrc similarity index 100% rename from examples/aws-sveltekit/.npmrc rename to examples/aws-svelte-kit/.npmrc diff --git a/examples/aws-sveltekit/README.md b/examples/aws-svelte-kit/README.md similarity index 100% rename from examples/aws-sveltekit/README.md rename to examples/aws-svelte-kit/README.md diff --git a/examples/aws-sveltekit/package.json b/examples/aws-svelte-kit/package.json similarity index 52% rename from examples/aws-sveltekit/package.json rename to examples/aws-svelte-kit/package.json index feac9242d..a8952ab5e 100644 --- a/examples/aws-sveltekit/package.json +++ b/examples/aws-svelte-kit/package.json @@ -4,31 +4,26 @@ "private": true, "scripts": { "build": "vite build", - "check": "svelte-kit sync \u0026\u0026 svelte-check --tsconfig ./jsconfig.json", - "check:watch": "svelte-kit sync \u0026\u0026 svelte-check --tsconfig ./jsconfig.json --watch", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "dev": "sst dev vite dev", - "format": "prettier --write .", - "lint": "prettier --check . \u0026\u0026 eslint .", "preview": "vite preview" }, "devDependencies": { "@sveltejs/adapter-auto": "^3.0.0", "@sveltejs/kit": "^2.0.0", "@sveltejs/vite-plugin-svelte": "^3.0.0", - "@types/eslint": "^8.56.0", - "eslint": "^8.56.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-svelte": "^2.35.1", - "prettier": "^3.1.1", - "prettier-plugin-svelte": "^3.1.2", "svelte": "^4.2.7", "svelte-check": "^3.6.0", + "tslib": "^2.4.1", "typescript": "^5.0.0", "vite": "^5.0.3" }, "type": "module", "dependencies": { + "@aws-sdk/client-s3": "^3.567.0", + "@aws-sdk/s3-request-presigner": "^3.567.0", "sst": "ion", "svelte-kit-sst": "2.41.5" } -} \ No newline at end of file +} diff --git a/examples/aws-sveltekit/src/app.d.ts b/examples/aws-svelte-kit/src/app.d.ts similarity index 100% rename from examples/aws-sveltekit/src/app.d.ts rename to examples/aws-svelte-kit/src/app.d.ts diff --git a/examples/aws-sveltekit/src/app.html b/examples/aws-svelte-kit/src/app.html similarity index 100% rename from examples/aws-sveltekit/src/app.html rename to examples/aws-svelte-kit/src/app.html diff --git a/examples/aws-sveltekit/src/lib/index.js b/examples/aws-svelte-kit/src/lib/index.ts similarity index 100% rename from examples/aws-sveltekit/src/lib/index.js rename to examples/aws-svelte-kit/src/lib/index.ts diff --git a/examples/aws-svelte-kit/src/routes/+page.server.ts b/examples/aws-svelte-kit/src/routes/+page.server.ts new file mode 100644 index 000000000..cecd69064 --- /dev/null +++ b/examples/aws-svelte-kit/src/routes/+page.server.ts @@ -0,0 +1,15 @@ +import { Resource } from "sst"; +import { getSignedUrl } from "@aws-sdk/s3-request-presigner"; +import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3"; + +/** @type {import('./$types').PageServerLoad} */ +export async function load() { + const command = new PutObjectCommand({ + Key: crypto.randomUUID(), + Bucket: Resource.MyBucket.name, + }); + const url = await getSignedUrl(new S3Client({}), command); + + return { url }; +} + diff --git a/examples/aws-svelte-kit/src/routes/+page.svelte b/examples/aws-svelte-kit/src/routes/+page.svelte new file mode 100644 index 000000000..cbc3260f8 --- /dev/null +++ b/examples/aws-svelte-kit/src/routes/+page.svelte @@ -0,0 +1,38 @@ + + + + +
+
+ + +
+
diff --git a/examples/aws-sveltekit/sst-env.d.ts b/examples/aws-svelte-kit/sst-env.d.ts similarity index 100% rename from examples/aws-sveltekit/sst-env.d.ts rename to examples/aws-svelte-kit/sst-env.d.ts diff --git a/examples/aws-sveltekit/sst.config.ts b/examples/aws-svelte-kit/sst.config.ts similarity index 64% rename from examples/aws-sveltekit/sst.config.ts rename to examples/aws-svelte-kit/sst.config.ts index 9ac9a441c..8ca8f4c67 100644 --- a/examples/aws-sveltekit/sst.config.ts +++ b/examples/aws-svelte-kit/sst.config.ts @@ -9,6 +9,11 @@ export default $config({ }; }, async run() { - new sst.aws.SvelteKit("MyWeb"); + const bucket = new sst.aws.Bucket("MyBucket", { + public: true + }); + new sst.aws.SvelteKit("MyWeb", { + link: [bucket], + }); }, }); diff --git a/examples/aws-sveltekit/static/favicon.png b/examples/aws-svelte-kit/static/favicon.png similarity index 100% rename from examples/aws-sveltekit/static/favicon.png rename to examples/aws-svelte-kit/static/favicon.png diff --git a/examples/aws-sveltekit/svelte.config.js b/examples/aws-svelte-kit/svelte.config.js similarity index 100% rename from examples/aws-sveltekit/svelte.config.js rename to examples/aws-svelte-kit/svelte.config.js diff --git a/examples/aws-sveltekit/jsconfig.json b/examples/aws-svelte-kit/tsconfig.json similarity index 100% rename from examples/aws-sveltekit/jsconfig.json rename to examples/aws-svelte-kit/tsconfig.json diff --git a/examples/aws-sveltekit/vite.config.js b/examples/aws-svelte-kit/vite.config.ts similarity index 100% rename from examples/aws-sveltekit/vite.config.js rename to examples/aws-svelte-kit/vite.config.ts diff --git a/examples/aws-sveltekit/.eslintignore b/examples/aws-sveltekit/.eslintignore deleted file mode 100644 index 38972655f..000000000 --- a/examples/aws-sveltekit/.eslintignore +++ /dev/null @@ -1,13 +0,0 @@ -.DS_Store -node_modules -/build -/.svelte-kit -/package -.env -.env.* -!.env.example - -# Ignore files for PNPM, NPM and YARN -pnpm-lock.yaml -package-lock.json -yarn.lock diff --git a/examples/aws-sveltekit/.eslintrc.cjs b/examples/aws-sveltekit/.eslintrc.cjs deleted file mode 100644 index 50b97a546..000000000 --- a/examples/aws-sveltekit/.eslintrc.cjs +++ /dev/null @@ -1,15 +0,0 @@ -/** @type { import("eslint").Linter.Config } */ -module.exports = { - root: true, - extends: ['eslint:recommended', 'plugin:svelte/recommended', 'prettier'], - parserOptions: { - sourceType: 'module', - ecmaVersion: 2020, - extraFileExtensions: ['.svelte'] - }, - env: { - browser: true, - es2017: true, - node: true - } -}; diff --git a/examples/aws-sveltekit/.prettierignore b/examples/aws-sveltekit/.prettierignore deleted file mode 100644 index cc41cea9b..000000000 --- a/examples/aws-sveltekit/.prettierignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore files for PNPM, NPM and YARN -pnpm-lock.yaml -package-lock.json -yarn.lock diff --git a/examples/aws-sveltekit/.prettierrc b/examples/aws-sveltekit/.prettierrc deleted file mode 100644 index 95730232b..000000000 --- a/examples/aws-sveltekit/.prettierrc +++ /dev/null @@ -1,8 +0,0 @@ -{ - "useTabs": true, - "singleQuote": true, - "trailingComma": "none", - "printWidth": 100, - "plugins": ["prettier-plugin-svelte"], - "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] -} diff --git a/examples/aws-sveltekit/src/routes/+page.svelte b/examples/aws-sveltekit/src/routes/+page.svelte deleted file mode 100644 index 5982b0ae3..000000000 --- a/examples/aws-sveltekit/src/routes/+page.svelte +++ /dev/null @@ -1,2 +0,0 @@ -

Welcome to SvelteKit

-

Visit kit.svelte.dev to read the documentation

diff --git a/www/astro.config.mjs b/www/astro.config.mjs index fdb70b45a..59b224f94 100644 --- a/www/astro.config.mjs +++ b/www/astro.config.mjs @@ -18,6 +18,7 @@ const sidebar = [ { label: "Astro", link: "/docs/start/aws/astro/" }, { label: "Email", link: "/docs/start/aws/email/" }, { label: "Remix", link: "/docs/start/aws/remix/" }, + { label: "Svelte", link: "/docs/start/aws/svelte/" }, { label: "Next.js", link: "/docs/start/aws/nextjs/" }, { label: "Container", link: "/docs/start/aws/container/" }, { diff --git a/www/src/assets/docs/start/start-svelte-kit.png b/www/src/assets/docs/start/start-svelte-kit.png new file mode 100644 index 0000000000000000000000000000000000000000..c23e550dfb09e3de38788f8cd7f23f362f8d072b GIT binary patch literal 555157 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 z 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 Yj1UjMhqBUn;A`JM4!hs%I&tg&0K}?$fdBvi literal 0 HcmV?d00001 diff --git a/www/src/content/docs/docs/start/aws/svelte.mdx b/www/src/content/docs/docs/start/aws/svelte.mdx index 9361c69b4..5a8767dd2 100644 --- a/www/src/content/docs/docs/start/aws/svelte.mdx +++ b/www/src/content/docs/docs/start/aws/svelte.mdx @@ -1,23 +1,12 @@ --- -title: Next.js on AWS with SST -description: Create and deploy a Next.js app to AWS with SST and OpenNext. -draft: true +title: SvelteKit on AWS with SST +description: Create and deploy a SvelteKit app to AWS with SST. --- -``` -# Pick sekelton app with TypeScript -npm create svelte@latest my-svelte-app -cd my-svelte-app -npm install - -sst init -npm run dev -``` - -We are going to create a Next.js app, add an S3 Bucket for file uploads, and deploy it to AWS using SST. +We are going to create a SvelteKit app, add an S3 Bucket for file uploads, and deploy it to AWS using SST. :::tip[View source] -You can [view the source](https://github.com/sst/ion/tree/dev/examples/aws-nextjs) of this example in our repo. +You can [view the source](https://github.com/sst/ion/tree/dev/examples/aws-svelte-kit) of this example in our repo. ::: Before you get started: @@ -32,10 +21,12 @@ Before you get started: Let's start by creating our app. ```bash -npx create-next-app@latest -cd start-nextjs +npm create svelte@latest my-svelte-app +cd my-svelte-app ``` +We are picking the **_Skeleton project_** and **_Yes, using TypeScript syntax_** options. + #### Init SST Now let's initialize SST in our app. Make sure you have the [CLI installed](/docs/reference/cli/). @@ -44,18 +35,18 @@ Now let's initialize SST in our app. Make sure you have the [CLI installed](/doc sst init ``` -This'll detect that you are in a Next.js project and create a `sst.config.ts` file in the root. +This'll detect that you are in a SvelteKit project and create a `sst.config.ts` file in the root. #### Start dev mode -Start the dev mode for your Next.js app and link it to SST. +Start the dev mode for your SvelteKit app and link it to SST. ```bash npm run dev ``` :::note -You are starting `next dev` wrapped in `sst dev next dev`. +You are starting `vite dev` wrapped in `sst dev vite dev`. ::: --- @@ -72,10 +63,10 @@ const bucket = new sst.aws.Bucket("MyBucket", { #### Link the bucket -Now, link the bucket to our Next.js app. +Now, link the bucket to our SvelteKit app. ```js title="sst.config.ts" {2} -new sst.aws.Nextjs("MyWeb", { +new sst.aws.SvelteKit"MyWeb", { link: [bucket] }); ``` @@ -84,98 +75,69 @@ new sst.aws.Nextjs("MyWeb", { ## 3. Create an upload form -Add a form client component in `components/form.tsx`. - -```tsx title="components/form.tsx" -"use client"; - -import styles from "./form.module.css"; - -export default function Form({ url }: { url: string }) { - return ( -
{ - e.preventDefault(); - - const file = (e.target as HTMLFormElement).file.files?.[0]!; - - const image = await fetch(url, { - body: file, - method: "PUT", - headers: { - "Content-Type": file.type, - "Content-Disposition": `attachment; filename="${file.name}"`, - }, - }); - - window.location.href = image.url.split("?")[0]; - }} - > - - -
- ); -} +Let's add a file upload form. Replace your `src/routes/+page.svelte`. This will upload a file to a given pre-signed upload URL. + +```svelte title="src/routes/+page.svelte" + + +
+
+ + +
+
``` Add some styles. -```css title="components/form.module.css" -.form { - padding: 1rem; - border-radius: var(--border-radius); - background-color: rgba(var(--callout-rgb), 0.5); - border: 1px solid rgba(var(--callout-border-rgb), 0.3); -} - -.form input { - margin-right: 1rem; - font-family: var(--font-mono); -} - -.form button { - appearance: none; - padding: 0.5rem 0.75rem; - font-weight: 500; - font-size: 0.875rem; - border-radius: calc(1rem - var(--border-radius)); - background: linear-gradient( - to bottom right, - rgba(var(--tile-start-rgb), 1), - rgba(var(--tile-end-rgb), 1) - ); - border: 1px solid rgba(var(--callout-border-rgb), 1); -} - -.form button:active:enabled { - background: linear-gradient( - to top left, - rgba(var(--tile-start-rgb), 1), - rgba(var(--tile-end-rgb), 1) - ); -} +```css title="src/routes/+page.svelte" + ``` --- ## 4. Generate a pre-signed URL -When our app loads, we'll generate a pre-signed URL for the file upload and render the form with it. Replace your `Home` component in `app/page.tsx`. +When our route loads, we'll generate a pre-signed URL for S3 and our form will upload to it. Create a new `+page.server.ts` and add the following. -```ts title="app/page.tsx" {4} -export default async function Home() { +```ts title="src/routes/+page.server.ts" {5} +/** @type {import('./$types').PageServerLoad} */ +export async function load() { const command = new PutObjectCommand({ Key: crypto.randomUUID(), Bucket: Resource.MyBucket.name, }); const url = await getSignedUrl(new S3Client({}), command); - return ( -
-
-
- ); + return { url }; } ``` @@ -187,9 +149,9 @@ Add the relevant imports. ```ts title="app/page.tsx" import { Resource } from "sst"; -import Form from "@/components/form"; import { getSignedUrl } from "@aws-sdk/s3-request-presigner"; import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3"; + ``` And install the npm packages. @@ -198,7 +160,7 @@ And install the npm packages. npm install @aws-sdk/client-s3 @aws-sdk/s3-request-presigner ``` -Head over to the local Next.js app in your browser, `http://localhost:3000` and try **uploading an image**. You should see it upload and then download the image. +Head over to the local SvelteKit app in your browser, `http://localhost:5173` and try **uploading an image**. You should see it upload and then download the image. --- @@ -212,15 +174,4 @@ sst deploy Congrats! Your app should now be live! -![SST Next.js app](../../../../../assets/docs/start/start-nextjs.png) - ---- - -## Connect the console - -As a next step, you can manage your app and view issues in the [SST Console](/docs/console/). - -![Issues in Next.js app in SST Console](../../../../../assets/docs/start/issues-in-nextjs-app-in-the-sst-console.png) - -You can [create a free account](https://console.sst.dev) and connect it to your AWS account. - +![SST SvelteKit app](../../../../../assets/docs/start/start-svelte-kit.png) From 80dc0e4d968364a2c955c67d55eb11aec0ffdc2f Mon Sep 17 00:00:00 2001 From: Jay V Date: Thu, 2 May 2024 15:43:12 -0400 Subject: [PATCH 15/41] Docs typo --- www/src/content/docs/docs/start/aws/svelte.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www/src/content/docs/docs/start/aws/svelte.mdx b/www/src/content/docs/docs/start/aws/svelte.mdx index 5a8767dd2..09e1abcc9 100644 --- a/www/src/content/docs/docs/start/aws/svelte.mdx +++ b/www/src/content/docs/docs/start/aws/svelte.mdx @@ -147,7 +147,7 @@ We are directly accessing our S3 bucket with `Resource.MyBucket.name`. Add the relevant imports. -```ts title="app/page.tsx" +```ts title="src/routes/+page.server.ts" import { Resource } from "sst"; import { getSignedUrl } from "@aws-sdk/s3-request-presigner"; import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3"; From e0f0665c56c71984a0a97b30e564ddc51c8a5744 Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 3 May 2024 13:30:18 -0400 Subject: [PATCH 16/41] ApiGatewayWebSocket --- examples/aws-apig-websocket/.gitignore | 3 + examples/aws-apig-websocket/index.ts | 47 ++ examples/aws-apig-websocket/lambda.ts | 37 ++ examples/aws-apig-websocket/package.json | 16 + examples/aws-apig-websocket/sst-env.d.ts | 11 + examples/aws-apig-websocket/sst.config.ts | 20 + examples/aws-apig-websocket/tsconfig.json | 1 + .../aws/apigateway-websocket-route.ts | 146 +++++ .../components/aws/apigateway-websocket.ts | 571 +++++++++++++++++ .../src/components/aws/apigatewayv2.ts | 130 +--- .../aws/helpers/apigatewayv2-domain.ts | 128 ++++ pkg/platform/src/components/aws/index.ts | 2 +- www/astro.config.mjs | 8 + www/generate.ts | 3 + .../aws/apigateway-websocket-route.mdx | 233 +++++++ .../component/aws/apigateway-websocket.mdx | 598 ++++++++++++++++++ .../docs/docs/component/aws/cluster.mdx | 4 +- .../docs/docs/component/aws/service.mdx | 4 +- 18 files changed, 1829 insertions(+), 133 deletions(-) create mode 100644 examples/aws-apig-websocket/.gitignore create mode 100644 examples/aws-apig-websocket/index.ts create mode 100644 examples/aws-apig-websocket/lambda.ts create mode 100644 examples/aws-apig-websocket/package.json create mode 100644 examples/aws-apig-websocket/sst-env.d.ts create mode 100644 examples/aws-apig-websocket/sst.config.ts create mode 100644 examples/aws-apig-websocket/tsconfig.json create mode 100644 pkg/platform/src/components/aws/apigateway-websocket-route.ts create mode 100644 pkg/platform/src/components/aws/apigateway-websocket.ts create mode 100644 pkg/platform/src/components/aws/helpers/apigatewayv2-domain.ts create mode 100644 www/src/content/docs/docs/component/aws/apigateway-websocket-route.mdx create mode 100644 www/src/content/docs/docs/component/aws/apigateway-websocket.mdx diff --git a/examples/aws-apig-websocket/.gitignore b/examples/aws-apig-websocket/.gitignore new file mode 100644 index 000000000..cc54d25a1 --- /dev/null +++ b/examples/aws-apig-websocket/.gitignore @@ -0,0 +1,3 @@ + +# sst +.sst diff --git a/examples/aws-apig-websocket/index.ts b/examples/aws-apig-websocket/index.ts new file mode 100644 index 000000000..4c760bfc1 --- /dev/null +++ b/examples/aws-apig-websocket/index.ts @@ -0,0 +1,47 @@ +import { Resource } from "sst"; +import { getSignedUrl } from "@aws-sdk/s3-request-presigner"; +import { + S3Client, + GetObjectCommand, + PutObjectCommand, + ListObjectsV2Command, +} from "@aws-sdk/client-s3"; + +const s3 = new S3Client({}); + +export async function upload() { + const command = new PutObjectCommand({ + Key: crypto.randomUUID(), + Bucket: Resource.MyBucket.name, + }); + + return { + statusCode: 200, + body: await getSignedUrl(s3, command), + }; +} + +export async function latest() { + const objects = await s3.send( + new ListObjectsV2Command({ + Bucket: Resource.MyBucket.name, + }) + ); + + const latestFile = objects.Contents!.sort( + (a, b) => + (b.LastModified?.getTime() ?? 0) - (a.LastModified?.getTime() ?? 0) + )[0]; + + const command = new GetObjectCommand({ + Key: latestFile.Key, + Bucket: Resource.MyBucket.name, + }); + + return { + statusCode: 302, + headers: { + Location: await getSignedUrl(s3, command), + }, + }; +} diff --git a/examples/aws-apig-websocket/lambda.ts b/examples/aws-apig-websocket/lambda.ts new file mode 100644 index 000000000..578ec8bce --- /dev/null +++ b/examples/aws-apig-websocket/lambda.ts @@ -0,0 +1,37 @@ +import { Resource } from "sst"; +import { + ApiGatewayManagementApiClient, + PostToConnectionCommand, +} from "@aws-sdk/client-apigatewaymanagementapi"; +const client = new ApiGatewayManagementApiClient({ + endpoint: Resource.MyApi.managementEndpoint, +}); + +export async function connect(event) { + console.log("!!! connect"); + return { statusCode: 200 }; +} + +export async function disconnect(event) { + console.log("!!! disconnect"); + return { statusCode: 200 }; +} + +export async function sendMessage(event) { + console.log("!!! sendMessage"); + return { statusCode: 200 }; +} + +export async function catchAll(event) { + console.log("!!! default"); + + // Send a message back to the + await client.send( + new PostToConnectionCommand({ + ConnectionId: event.requestContext.connectionId, + Data: "Hey! What is this?", + }) + ); + + return { statusCode: 200 }; +} diff --git a/examples/aws-apig-websocket/package.json b/examples/aws-apig-websocket/package.json new file mode 100644 index 000000000..fb524cb5e --- /dev/null +++ b/examples/aws-apig-websocket/package.json @@ -0,0 +1,16 @@ +{ + "name": "aws-apig-websocket", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@aws-sdk/client-apigatewaymanagementapi": "^3.568.0", + "sst": "^3.0.2" + } +} diff --git a/examples/aws-apig-websocket/sst-env.d.ts b/examples/aws-apig-websocket/sst-env.d.ts new file mode 100644 index 000000000..a665a2008 --- /dev/null +++ b/examples/aws-apig-websocket/sst-env.d.ts @@ -0,0 +1,11 @@ +/* tslint:disable *//* eslint-disable */import "sst" +declare module "sst" { + export interface Resource { + MyApi: { + managementEndpoint: string + type: "sst.aws.ApiGatewayWebSocket" + url: string + } + } +} +export {} \ No newline at end of file diff --git a/examples/aws-apig-websocket/sst.config.ts b/examples/aws-apig-websocket/sst.config.ts new file mode 100644 index 000000000..40de6b1cc --- /dev/null +++ b/examples/aws-apig-websocket/sst.config.ts @@ -0,0 +1,20 @@ +/// + +export default $config({ + app(input) { + return { + name: "aws-apig-websocket", + removal: input?.stage === "production" ? "retain" : "remove", + home: "aws", + }; + }, + async run() { + const api = new sst.aws.ApiGatewayWebSocket("MyApi", {}); + api.route("$connect", "lambda.connect"); + api.route("$disconnect", "lambda.disconnect"); + api.route("$default", { handler: "lambda.catchAll", link: [api] }); + api.route("sendmessage", "lambda.sendMessage"); + + return { managementEndpoint: api.managementEndpoint }; + }, +}); diff --git a/examples/aws-apig-websocket/tsconfig.json b/examples/aws-apig-websocket/tsconfig.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/examples/aws-apig-websocket/tsconfig.json @@ -0,0 +1 @@ +{} diff --git a/pkg/platform/src/components/aws/apigateway-websocket-route.ts b/pkg/platform/src/components/aws/apigateway-websocket-route.ts new file mode 100644 index 000000000..c33047c2c --- /dev/null +++ b/pkg/platform/src/components/aws/apigateway-websocket-route.ts @@ -0,0 +1,146 @@ +import { + ComponentResourceOptions, + Input, + Output, + all, + interpolate, + output, +} from "@pulumi/pulumi"; +import * as aws from "@pulumi/aws"; +import { Component, Transform, transform } from "../component"; +import { Function, FunctionArgs } from "./function"; +import { ApiGatewayWebSocketRouteArgs } from "./apigateway-websocket"; + +export interface Args extends ApiGatewayWebSocketRouteArgs { + /** + * The cluster to use for the service. + */ + api: Input<{ + /** + * The name of the cluster. + */ + name: Input; + /** + * The ID of the cluster. + */ + id: Input; + /** + * The execution ARN of the cluster. + */ + executionArn: Input; + }>; + route: Input; + handler: Input; + handlerTransform?: Transform; +} + +/** + * The `ApiGatewayWebSocketRoute` component is internally used by the `ApiGatewayWebSocket` + * component to add routes to [AWS API Gateway WebSocket API](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api.html). + * + * :::caution + * This component is not intended for public use. + * ::: + * + * You'll find this component returned by the `route` method of the `ApiGatewayWebSocket` component. + */ +export class ApiGatewayWebSocketRoute extends Component { + private readonly fn: Output; + private readonly permission: aws.lambda.Permission; + private readonly apiRoute: aws.apigatewayv2.Route; + private readonly integration: aws.apigatewayv2.Integration; + + constructor(name: string, args: Args, opts?: ComponentResourceOptions) { + super(__pulumiType, name, args, opts); + + const self = this; + const api = output(args.api); + const route = output(args.route); + + const fn = createFunction(); + const permission = createPermission(); + const integration = createIntegration(); + const apiRoute = createApiRoute(); + + this.fn = fn; + this.permission = permission; + this.apiRoute = apiRoute; + this.integration = integration; + + function createFunction() { + return Function.fromDefinition( + `${name}Handler`, + args.handler, + { + description: interpolate`${api.name} route ${route}`, + }, + args.handlerTransform, + ); + } + + function createPermission() { + return new aws.lambda.Permission(`${name}Permissions`, { + action: "lambda:InvokeFunction", + function: fn.arn, + principal: "apigateway.amazonaws.com", + sourceArn: interpolate`${api.executionArn}/*`, + }); + } + + function createIntegration() { + return new aws.apigatewayv2.Integration( + `${name}Integration`, + transform(args.transform?.integration, { + apiId: api.id, + integrationType: "AWS_PROXY", + integrationUri: fn.arn, + }), + { dependsOn: [permission] }, + ); + } + + function createApiRoute() { + return new aws.apigatewayv2.Route( + `${name}Route`, + transform(args.transform?.route, { + apiId: api.id, + routeKey: route, + target: interpolate`integrations/${integration.id}`, + authorizationType: all([args.route, args.auth]).apply( + ([route, auth]) => + route === "$connect" && auth?.iam ? "AWS_IAM" : "NONE", + ), + }), + ); + } + } + + /** + * The underlying [resources](/docs/components/#nodes) this component creates. + */ + public get nodes() { + const self = this; + return { + /** + * The Lambda function. + */ + function: this.fn, + /** + * The Lambda permission. + */ + permission: this.permission, + /** + * The API Gateway HTTP API route. + */ + route: this.apiRoute, + /** + * The API Gateway HTTP API integration. + */ + integration: this.integration, + }; + } +} + +const __pulumiType = "sst:aws:ApiGatewayWebSocketRoute"; +// @ts-expect-error +ApiGatewayWebSocketRoute.__pulumiType = __pulumiType; diff --git a/pkg/platform/src/components/aws/apigateway-websocket.ts b/pkg/platform/src/components/aws/apigateway-websocket.ts new file mode 100644 index 000000000..13fe3c5d5 --- /dev/null +++ b/pkg/platform/src/components/aws/apigateway-websocket.ts @@ -0,0 +1,571 @@ +import { + ComponentResourceOptions, + Output, + all, + interpolate, + output, +} from "@pulumi/pulumi"; +import * as aws from "@pulumi/aws"; +import { Component, Prettify, Transform, transform } from "../component"; +import { Link } from "../link"; +import type { Input } from "../input"; +import { FunctionArgs } from "./function"; +import { + hashStringToPrettyString, + prefixName, + sanitizeToPascalCase, +} from "../naming"; +import { DnsValidatedCertificate } from "./dns-validated-certificate"; +import { RETENTION } from "./logging"; +import { dns as awsDns } from "./dns.js"; +import { ApiGatewayV2DomainArgs } from "./helpers/apigatewayv2-domain"; +import { ApiGatewayWebSocketRoute } from "./apigateway-websocket-route"; + +export interface ApiGatewayWebSocketArgs { + /** + * Set a custom domain for your WebSocket API. + * + * Automatically manages domains hosted on AWS Route 53, Cloudflare, and Vercel. For other + * providers, you'll need to pass in a `cert` that validates domain ownership and add the + * DNS records. + * + * :::tip + * Built-in support for AWS Route 53, Cloudflare, and Vercel. And manual setup for other + * providers. + * ::: + * + * @example + * + * By default this assumes the domain is hosted on Route 53. + * + * ```js + * { + * domain: "example.com" + * } + * ``` + * + * For domains hosted on Cloudflare. + * + * ```js + * { + * domain: { + * name: "example.com", + * dns: sst.cloudflare.dns() + * } + * } + * ``` + */ + domain?: Input>; + /** + * Configure the [API Gateway logs](https://docs.aws.amazon.com/apigateway/latest/developerguide/view-cloudwatch-log-events-in-cloudwatch-console.html) in CloudWatch. By default, access logs are enabled and kept forever. + * @default `{retention: "forever"}` + * @example + * ```js + * { + * accessLog: { + * retention: "1 week" + * } + * } + * ``` + */ + accessLog?: Input<{ + /** + * The duration the API Gateway logs are kept in CloudWatch. + * @default `forever` + */ + retention?: Input; + }>; + /** + * [Transform](/docs/components#transform) how this component creates its underlying + * resources. + */ + transform?: { + /** + * Transform the API Gateway WebSocket API resource. + */ + api?: Transform; + /** + * Transform the API Gateway WebSocket API stage resource. + */ + stage?: Transform; + /** + * Transform the API Gateway WebSocket API domain name resource. + */ + domainName?: Transform; + /** + * Transform the CloudWatch LogGroup resource used for access logs. + */ + accessLog?: Transform; + /** + * Transform the routes. This can be used to customize the handler function and + * the arguments for each route. + * + * @example + * ```js + * { + * transform: { + * route: { + * handler: { + * link: [bucket, stripeKey] + * }, + * args: { + * auth: { iam: true } + * } + * } + * } + * } + * ``` + */ + route?: { + /** + * Transform the handler function for the route. + */ + handler?: Transform; + /** + * Transform the arguments for the route. + */ + args?: Transform; + }; + }; +} + +export interface ApiGatewayWebSocketRouteArgs { + /** + * Enable auth for your WebSocket API. + * + * :::note + * Currently only IAM auth is supported. + * ::: + * + * @example + * ```js + * { + * auth: { + * iam: true + * } + * } + * ``` + */ + auth?: Input<{ + /** + * Enable IAM authorization for a given API route. When IAM auth is enabled, clients need to use Signature Version 4 to sign their requests with their AWS credentials. + */ + iam?: Input; + }>; + /** + * [Transform](/docs/components#transform) how this component creates its underlying + * resources. + */ + transform?: { + /** + * Transform the API Gateway WebSocket API integration resource. + */ + integration?: Transform; + /** + * Transform the API Gateway WebSocket API route resource. + */ + route?: Transform; + }; +} + +/** + * The `ApiGatewayWebSocket` component lets you add an [Amazon API Gateway WebSocket API](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api.html) to your app. + * + * @example + * + * #### Create the API + * + * ```ts + * const api = new sst.aws.ApiGatewayWebSocket("MyApi"); + * ``` + * + * #### Add a custom domain + * + * ```js {2} + * new sst.aws.ApiGatewayWebSocket("MyApi", { + * domain: "api.example.com" + * }); + * ``` + * + * #### Add routes + * + * ```ts + * api.route("$connect", "src/connect.handler"); + * api.route("$disconnect", "src/disconnect.handler"); + * api.route("$default", "src/default.handler"); + * api.route("sendMessage", "src/sendMessage.handler"); + * ``` + */ +export class ApiGatewayWebSocket + extends Component + implements Link.Linkable, Link.AWS.Linkable +{ + private constructorName: string; + private constructorArgs: ApiGatewayWebSocketArgs; + private api: aws.apigatewayv2.Api; + private stage: aws.apigatewayv2.Stage; + private apigDomain?: aws.apigatewayv2.DomainName; + private apiMapping?: Output; + private logGroup: aws.cloudwatch.LogGroup; + + constructor( + name: string, + args: ApiGatewayWebSocketArgs = {}, + opts: ComponentResourceOptions = {}, + ) { + super(__pulumiType, name, args, opts); + + const parent = this; + + const accessLog = normalizeAccessLog(); + const domain = normalizeDomain(); + + const api = createApi(); + const logGroup = createLogGroup(); + const stage = createStage(); + + const certificateArn = createSsl(); + const apigDomain = createDomainName(); + createDnsRecords(); + const apiMapping = createDomainMapping(); + + this.constructorName = name; + this.constructorArgs = args; + this.api = api; + this.stage = stage; + this.apigDomain = apigDomain; + this.apiMapping = apiMapping; + this.logGroup = logGroup; + + this.registerOutputs({ + _hint: this.url, + }); + + function normalizeAccessLog() { + return output(args.accessLog).apply((accessLog) => ({ + ...accessLog, + retention: accessLog?.retention ?? "forever", + })); + } + + function normalizeDomain() { + if (!args.domain) return; + + // validate + output(args.domain).apply((domain) => { + if (typeof domain === "string") return; + + if (!domain.name) throw new Error(`Missing "name" for domain.`); + if (domain.dns === false && !domain.cert) + throw new Error(`No "cert" provided for domain with disabled DNS.`); + }); + + // normalize + return output(args.domain).apply((domain) => { + const norm = typeof domain === "string" ? { name: domain } : domain; + + return { + name: norm.name, + path: norm.path, + dns: norm.dns === false ? undefined : norm.dns ?? awsDns(), + cert: norm.cert, + }; + }); + } + + function createApi() { + return new aws.apigatewayv2.Api( + `${name}Api`, + transform(args.transform?.api, { + protocolType: "WEBSOCKET", + routeSelectionExpression: "$request.body.action", + }), + { parent }, + ); + } + + function createLogGroup() { + return new aws.cloudwatch.LogGroup( + `${name}AccessLog`, + transform(args.transform?.accessLog, { + name: `/aws/vendedlogs/apis/${prefixName(64, name)}`, + retentionInDays: accessLog.apply( + (accessLog) => RETENTION[accessLog.retention], + ), + }), + { parent }, + ); + } + + function createStage() { + return new aws.apigatewayv2.Stage( + `${name}Stage`, + transform(args.transform?.stage, { + apiId: api.id, + autoDeploy: true, + name: "$default", + accessLogSettings: { + destinationArn: logGroup.arn, + format: JSON.stringify({ + // request info + requestTime: `"$context.requestTime"`, + requestId: `"$context.requestId"`, + eventType: `"$context.eventType"`, + routeKey: `"$context.routeKey"`, + status: `$context.status`, // integer value, do not wrap in quotes + // integration info + integrationRequestId: `"$context.awsEndpointRequestId"`, + integrationStatus: `"$context.integrationStatus"`, + integrationLatency: `"$context.integrationLatency"`, + integrationServiceStatus: `"$context.integration.integrationStatus"`, + // caller info + ip: `"$context.identity.sourceIp"`, + userAgent: `"$context.identity.userAgent"`, + //cognitoIdentityId:`"$context.identity.cognitoIdentityId"`, // not supported in us-west-2 region + connectedAt: `"$context.connectedAt"`, + connectionId: `"$context.connectionId"`, + }), + }, + }), + { parent }, + ); + } + + function createSsl() { + if (!domain) return; + + return domain.apply((domain) => { + if (domain.cert) return output(domain.cert); + + return new DnsValidatedCertificate( + `${name}Ssl`, + { + domainName: domain.name, + dns: domain.dns!, + }, + { parent }, + ).arn; + }); + } + + function createDomainName() { + if (!domain || !certificateArn) return; + + return new aws.apigatewayv2.DomainName( + `${name}DomainName`, + transform(args.transform?.domainName, { + domainName: domain?.name, + domainNameConfiguration: { + certificateArn, + endpointType: "REGIONAL", + securityPolicy: "TLS_1_2", + }, + }), + { parent }, + ); + } + + function createDnsRecords(): void { + if (!domain || !apigDomain) { + return; + } + + domain.dns.apply((dns) => { + if (!dns) return; + + if (dns.provider === "aws") { + dns.createAliasRecords( + name, + { + name: domain.name, + aliasName: apigDomain.domainNameConfiguration.targetDomainName, + aliasZone: apigDomain.domainNameConfiguration.hostedZoneId, + }, + { parent }, + ); + } else { + dns.createRecord( + name, + { + type: "CNAME", + name: domain.name, + value: apigDomain.domainNameConfiguration.targetDomainName, + }, + { parent }, + ); + } + }); + } + + function createDomainMapping() { + if (!domain || !apigDomain) return; + + return domain.path?.apply( + (path) => + new aws.apigatewayv2.ApiMapping( + `${name}DomainMapping`, + { + apiId: api.id, + domainName: apigDomain.id, + stage: "$default", + apiMappingKey: path, + }, + { parent }, + ), + ); + } + } + + /** + * The URL of the API. + * + * If the `domain` is set, this is the URL with the custom domain. + * Otherwise, it's the autogenerated API Gateway URL. + */ + public get url() { + // Note: If mapping key is set, the URL needs a trailing slash. Without the + // trailing slash, the API fails with the error {"message":"Not Found"} + return this.apigDomain && this.apiMapping + ? all([this.apigDomain.domainName, this.apiMapping.apiMappingKey]).apply( + ([domain, key]) => + key ? `wss://${domain}/${key}/` : `wss://${domain}`, + ) + : this.api.apiEndpoint; + } + + /** + * The management endpoint for the API used by the API Gateway Management API client. + * This is useful for sending messages to connected clients. + * + * @example + * ```js + * import { Resource } from "sst"; + * import { ApiGatewayManagementApiClient } from "@aws-sdk/client-apigatewaymanagementapi"; + * + * const client = new ApiGatewayManagementApiClient({ + * endpoint: Resource.MyApi.managementEndpoint, + * }); + * ``` + */ + public get managementEndpoint() { + // ie. https://v1lmfez2nj.execute-api.us-east-1.amazonaws.com/$default + return this.api.apiEndpoint.apply( + (endpoint) => + interpolate`${endpoint.replace("wss", "https")}/${this.stage.name}`, + ); + } + + /** + * The underlying [resources](/docs/components/#nodes) this component creates. + */ + public get nodes() { + return { + /** + * The Amazon API Gateway HTTP API + */ + api: this.api, + /** + * The CloudWatch LogGroup for the access logs. + */ + logGroup: this.logGroup, + }; + } + + /** + * Add a route to the API Gateway WebSocket API. + * + * There are three predefined routes: + * - $connect: when the client connects to the API + * - $disconnect: when the client or the server disconnects from the API + * - $default: the default or catch-all route + * + * In addition, you can create custom routes. When a request comes in, the API Gateway + * will look the specific route defined by the user. If no route matches, the `$default` + * route will be invoked. + * + * @param route The path for the route. + * @param handler The function that'll be invoked. + * @param args Configure the route. + * + * @example + * Here's how you add a simple route. + * + * ```js + * api.route("sendMessage", "src/sendMessage.handler"); + * ``` + * + * Add a default route. + * + * ```js + * api.route("$default", "src/default.handler"); + * ``` + * + * Enable auth for a route. + * + * ```js + * api.route("sendMessage", "src/sendMessage.handler", { + * auth: { + * iam: true + * } + * }); + * ``` + * + * Customize the route handler. + * + * ```js + * api.route("sendMessage", { + * handler: "src/sendMessage.handler", + * memory: "2048 MB" + * }); + * ``` + */ + public route( + route: string, + handler: string | FunctionArgs, + args: ApiGatewayWebSocketRouteArgs = {}, + ) { + const self = this; + const selfName = this.constructorName; + const suffix = sanitizeToPascalCase( + ["$connect", "$disconnect", "$default"].includes(route) + ? route + : hashStringToPrettyString(`${this.api.id}${route}`, 6), + ); + + return new ApiGatewayWebSocketRoute(`${selfName}Route${suffix}`, { + api: { + name: selfName, + id: self.api.id, + executionArn: self.api.executionArn, + }, + route, + handler, + handlerTransform: this.constructorArgs.transform?.route?.handler, + ...transform(this.constructorArgs.transform?.route?.args, args), + }); + } + + /** @internal */ + public getSSTLink() { + return { + properties: { + url: this.url, + managementEndpoint: this.managementEndpoint, + }, + }; + } + + /** @internal */ + public getSSTAWSPermissions() { + return [ + { + actions: ["execute-api:MangeConnections"], + resources: [interpolate`${this.api.executionArn}/*/*/@connections/*`], + }, + ]; + } +} + +const __pulumiType = "sst:aws:ApiGatewayWebSocket"; +// @ts-expect-error +ApiGatewayWebSocket.__pulumiType = __pulumiType; diff --git a/pkg/platform/src/components/aws/apigatewayv2.ts b/pkg/platform/src/components/aws/apigatewayv2.ts index b29eb1609..163ce3074 100644 --- a/pkg/platform/src/components/aws/apigatewayv2.ts +++ b/pkg/platform/src/components/aws/apigatewayv2.ts @@ -19,133 +19,7 @@ import { VisibleError } from "../error"; import { DnsValidatedCertificate } from "./dns-validated-certificate"; import { RETENTION } from "./logging"; import { dns as awsDns } from "./dns.js"; -import { Dns } from "../dns"; - -interface DomainArgs { - /** - * The custom domain you want to use. - * - * @example - * ```js - * { - * domain: { - * name: "example.com" - * } - * } - * ``` - * - * Can also include subdomains based on the current stage. - * - * ```js - * { - * domain: { - * name: `${$app.stage}.example.com` - * } - * } - * ``` - */ - name: Input; - /** - * The base mapping for the custom domain. This adds a suffix to the URL of the API. - * - * @example - * - * Given the following base path and domain name. - * - * ```js - * { - * domain: { - * name: "api.example.com", - * path: "v1" - * } - * } - * ``` - * - * The full URL of the API will be `https://api.example.com/v1/`. - * - * :::note - * There's an extra trailing slash when a base path is set. - * ::: - * - * Be default there is no base path, so if the `name` is `api.example.com`, the full URL will be `https://api.example.com`. - */ - path?: Input; - /** - * The ARN of an ACM (AWS Certificate Manager) certificate that proves ownership of the - * domain. By default, a certificate is created and validated automatically. - * - * :::tip - * You need to pass in a `cert` for domains that are not hosted on supported `dns` providers. - * ::: - * - * To manually set up a domain on an unsupported provider, you'll need to: - * - * 1. [Validate that you own the domain](https://docs.aws.amazon.com/acm/latest/userguide/domain-ownership-validation.html) by creating an ACM certificate. You can either validate it by setting a DNS record or by verifying an email sent to the domain owner. - * 2. Once validated, set the certificate ARN as the `cert` and set `dns` to `false`. - * 3. Add the DNS records in your provider to point to the API Gateway URL. - * - * @example - * ```js - * { - * domain: { - * name: "example.com", - * dns: false, - * cert: "arn:aws:acm:us-east-1:112233445566:certificate/3a958790-8878-4cdc-a396-06d95064cf63" - * } - * } - * ``` - */ - cert?: Input; - /** - * The DNS provider to use for the domain. Defaults to the AWS. - * - * Takes an adapter that can create the DNS records on the provider. This can automate - * validating the domain and setting up the DNS routing. - * - * Supports Route 53, Cloudflare, and Vercel adapters. For other providers, you'll need - * to set `dns` to `false` and pass in a certificate validating ownership via `cert`. - * - * @default `sst.aws.dns` - * - * @example - * - * Specify the hosted zone ID for the Route 53 domain. - * - * ```js - * { - * domain: { - * name: "example.com", - * dns: sst.aws.dns({ - * zone: "Z2FDTNDATAQYW2" - * }) - * } - * } - * ``` - * - * Use a domain hosted on Cloudflare, needs the Cloudflare provider. - * - * ```js - * { - * domain: { - * name: "example.com", - * dns: sst.cloudflare.dns() - * } - * } - * ``` - * - * Use a domain hosted on Vercel, needs the Vercel provider. - * - * ```js - * { - * domain: { - * name: "example.com", - * dns: sst.vercel.dns() - * } - * } - * ``` - */ - dns?: Input; -} +import { ApiGatewayV2DomainArgs } from "./helpers/apigatewayv2-domain"; export interface ApiGatewayV2Args { /** @@ -181,7 +55,7 @@ export interface ApiGatewayV2Args { * } * ``` */ - domain?: Input>; + domain?: Input>; /** * Configure the [API Gateway logs](https://docs.aws.amazon.com/apigateway/latest/developerguide/view-cloudwatch-log-events-in-cloudwatch-console.html) in CloudWatch. By default, access logs are enabled and kept forever. * @default `{retention: "forever"}` diff --git a/pkg/platform/src/components/aws/helpers/apigatewayv2-domain.ts b/pkg/platform/src/components/aws/helpers/apigatewayv2-domain.ts new file mode 100644 index 000000000..cd577a54c --- /dev/null +++ b/pkg/platform/src/components/aws/helpers/apigatewayv2-domain.ts @@ -0,0 +1,128 @@ +import { Input } from "../../input"; +import { Dns } from "../../dns"; + +export interface ApiGatewayV2DomainArgs { + /** + * The custom domain you want to use. + * + * @example + * ```js + * { + * domain: { + * name: "example.com" + * } + * } + * ``` + * + * Can also include subdomains based on the current stage. + * + * ```js + * { + * domain: { + * name: `${$app.stage}.example.com` + * } + * } + * ``` + */ + name: Input; + /** + * The base mapping for the custom domain. This adds a suffix to the URL of the API. + * + * @example + * + * Given the following base path and domain name. + * + * ```js + * { + * domain: { + * name: "api.example.com", + * path: "v1" + * } + * } + * ``` + * + * The full URL of the API will be `https://api.example.com/v1/`. + * + * :::note + * There's an extra trailing slash when a base path is set. + * ::: + * + * Be default there is no base path, so if the `name` is `api.example.com`, the full URL will be `https://api.example.com`. + */ + path?: Input; + /** + * The ARN of an ACM (AWS Certificate Manager) certificate that proves ownership of the + * domain. By default, a certificate is created and validated automatically. + * + * :::tip + * You need to pass in a `cert` for domains that are not hosted on supported `dns` providers. + * ::: + * + * To manually set up a domain on an unsupported provider, you'll need to: + * + * 1. [Validate that you own the domain](https://docs.aws.amazon.com/acm/latest/userguide/domain-ownership-validation.html) by creating an ACM certificate. You can either validate it by setting a DNS record or by verifying an email sent to the domain owner. + * 2. Once validated, set the certificate ARN as the `cert` and set `dns` to `false`. + * 3. Add the DNS records in your provider to point to the API Gateway URL. + * + * @example + * ```js + * { + * domain: { + * name: "example.com", + * dns: false, + * cert: "arn:aws:acm:us-east-1:112233445566:certificate/3a958790-8878-4cdc-a396-06d95064cf63" + * } + * } + * ``` + */ + cert?: Input; + /** + * The DNS provider to use for the domain. Defaults to the AWS. + * + * Takes an adapter that can create the DNS records on the provider. This can automate + * validating the domain and setting up the DNS routing. + * + * Supports Route 53, Cloudflare, and Vercel adapters. For other providers, you'll need + * to set `dns` to `false` and pass in a certificate validating ownership via `cert`. + * + * @default `sst.aws.dns` + * + * @example + * + * Specify the hosted zone ID for the Route 53 domain. + * + * ```js + * { + * domain: { + * name: "example.com", + * dns: sst.aws.dns({ + * zone: "Z2FDTNDATAQYW2" + * }) + * } + * } + * ``` + * + * Use a domain hosted on Cloudflare, needs the Cloudflare provider. + * + * ```js + * { + * domain: { + * name: "example.com", + * dns: sst.cloudflare.dns() + * } + * } + * ``` + * + * Use a domain hosted on Vercel, needs the Vercel provider. + * + * ```js + * { + * domain: { + * name: "example.com", + * dns: sst.vercel.dns() + * } + * } + * ``` + */ + dns?: Input; +} diff --git a/pkg/platform/src/components/aws/index.ts b/pkg/platform/src/components/aws/index.ts index 85d54bd02..3b899cde4 100644 --- a/pkg/platform/src/components/aws/index.ts +++ b/pkg/platform/src/components/aws/index.ts @@ -1,4 +1,5 @@ export * from "./apigatewayv2.js"; +export * from "./apigateway-websocket.js"; export * from "./app-sync.js"; export * from "./astro.js"; export * from "./auth.js"; @@ -6,7 +7,6 @@ export * from "./bucket.js"; export * from "./cluster.js"; export * from "./cognito-identity-pool.js"; export * from "./cognito-user-pool.js"; -export * from "./cognito-user-pool-client.js"; export * from "./cron.js"; export * from "./dns.js"; export * from "./dynamo.js"; diff --git a/www/astro.config.mjs b/www/astro.config.mjs index 59b224f94..ed5e32335 100644 --- a/www/astro.config.mjs +++ b/www/astro.config.mjs @@ -75,6 +75,10 @@ const sidebar = [ label: "CognitoIdentityPool", link: "/docs/component/aws/cognito-identity-pool/", }, + { + label: "ApiGatewayWebSocket", + link: "/docs/component/aws/apigateway-websocket/", + }, ], }, { @@ -140,6 +144,10 @@ const sidebar = [ label: "CognitoUserPoolClient", link: "/docs/component/aws/cognito-user-pool-client/", }, + { + label: "ApiGatewayWebSocketRoute", + link: "/docs/component/aws/apigateway-websocket-route/", + }, ], }, { label: "Examples", link: "/docs/examples/" }, diff --git a/www/generate.ts b/www/generate.ts index 77ce6073b..7d4ba4b07 100644 --- a/www/generate.ts +++ b/www/generate.ts @@ -1093,6 +1093,7 @@ async function generateComponentsDoc() { } // types in different doc const externalModule = { + ApiGatewayWebSocketRoute: "apigateway-websocket-route", AppSyncDataSource: "app-sync-data-source", AppSyncFunction: "app-sync-function", AppSyncResolver: "app-sync-resolver", @@ -1412,6 +1413,8 @@ async function buildComponents() { "../pkg/platform/src/config.ts", "../pkg/platform/src/global-config.d.ts", "../pkg/platform/src/components/secret.ts", + "../pkg/platform/src/components/aws/apigateway-websocket.ts", + "../pkg/platform/src/components/aws/apigateway-websocket-route.ts", "../pkg/platform/src/components/aws/apigatewayv2.ts", "../pkg/platform/src/components/aws/app-sync.ts", "../pkg/platform/src/components/aws/app-sync-data-source.ts", diff --git a/www/src/content/docs/docs/component/aws/apigateway-websocket-route.mdx b/www/src/content/docs/docs/component/aws/apigateway-websocket-route.mdx new file mode 100644 index 000000000..054b63a1a --- /dev/null +++ b/www/src/content/docs/docs/component/aws/apigateway-websocket-route.mdx @@ -0,0 +1,233 @@ +--- +title: ApiGatewayWebSocketRoute +description: Reference doc for the `sst.aws.ApiGatewayWebSocketRoute` component. +--- + +{/* DO NOT EDIT. AUTO-GENERATED FROM "pkg/platform/src/components/aws/apigateway-websocket-route.ts" */} + +import Segment from '../../../../../../src/components/tsdoc/Segment.astro'; +import Section from '../../../../../../src/components/tsdoc/Section.astro'; +import NestedTitle from '../../../../../../src/components/tsdoc/NestedTitle.astro'; +import InlineSection from '../../../../../../src/components/tsdoc/InlineSection.astro'; + +
+ +
+The `ApiGatewayWebSocketRoute` component is internally used by the `ApiGatewayWebSocket` +component to add routes to [AWS API Gateway WebSocket API](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api.html). + +:::caution +This component is not intended for public use. +::: + +You'll find this component returned by the `route` method of the `ApiGatewayWebSocket` component. +
+ +--- + +## Constructor + + +
+```ts +new ApiGatewayWebSocketRoute(name, args, opts?) +``` +
+ +
+#### Parameters +-

name string

+-

args [Args](#args)

+-

opts? [ComponentResourceOptions](https://www.pulumi.com/docs/concepts/options/)

+
+
+ +## Properties + +### nodes + +
+ +**Type** Object + +-

[function](#nodes-function)

+-

[integration](#nodes-integration)

+-

[permission](#nodes-permission)

+-

[route](#nodes-route)

+
+The underlying [resources](/docs/components/#nodes) this component creates. +
+function + +
+ +**Type** Output<[Function](/docs/component/aws/function/)> + +
+The Lambda function. +
+integration + +
+ +**Type** [Integration](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/integration/) + +
+The API Gateway HTTP API integration. +
+permission + +
+ +**Type** [Permission](https://www.pulumi.com/registry/packages/aws/api-docs/lambda/permission/) + +
+The Lambda permission. +
+route + +
+ +**Type** [Route](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/route/) + +
+The API Gateway HTTP API route. +
+ +## Args +### api + +
+ +**Type** Input<Object> + +-

[executionArn](#api-executionarn)

+-

[id](#api-id)

+-

[name](#api-name)

+
+The cluster to use for the service. + +
+executionArn + +
+ +**Type** Input<string> + +
+The execution ARN of the cluster. + +
+id + +
+ +**Type** Input<string> + +
+The ID of the cluster. + +
+name + +
+ +**Type** Input<string> + +
+The name of the cluster. + +
+### auth? + +
+ +**Type** Input<Object> + +-

[iam?](#auth-iam)

+
+Enable auth for your WebSocket API. + +:::note +Currently only IAM auth is supported. +::: + +```js +{ + auth: { + iam: true + } +} +``` +
+iam? + +
+ +**Type** Input<true> + +
+Enable IAM authorization for a given API route. When IAM auth is enabled, clients need to use Signature Version 4 to sign their requests with their AWS credentials. + +
+### handler + +
+ +**Type** Input<string | [FunctionArgs](/docs/component/aws/function/#functionargs)> + +
+ +
+### handlerTransform? + +
+ +**Type** [FunctionArgs](/docs/component/aws/function/#functionargs) | (args: [FunctionArgs](/docs/component/aws/function/#functionargs) => void) + +
+ +
+### route + +
+ +**Type** Input<string> + +
+ +
+### transform? + +
+ +**Type** Object + +-

[integration?](#transform-integration)

+-

[route?](#transform-route)

+
+[Transform](/docs/components#transform) how this component creates its underlying +resources. + +
+integration? + +
+ +**Type** [IntegrationArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/integration/#inputs) | (args: [IntegrationArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/integration/#inputs) => void) + +
+Transform the API Gateway WebSocket API integration resource. + +
+route? + +
+ +**Type** [RouteArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/route/#inputs) | (args: [RouteArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/route/#inputs) => void) + +
+Transform the API Gateway WebSocket API route resource. + +
+
\ No newline at end of file diff --git a/www/src/content/docs/docs/component/aws/apigateway-websocket.mdx b/www/src/content/docs/docs/component/aws/apigateway-websocket.mdx new file mode 100644 index 000000000..2df24ca44 --- /dev/null +++ b/www/src/content/docs/docs/component/aws/apigateway-websocket.mdx @@ -0,0 +1,598 @@ +--- +title: ApiGatewayWebSocket +description: Reference doc for the `sst.aws.ApiGatewayWebSocket` component. +--- + +{/* DO NOT EDIT. AUTO-GENERATED FROM "pkg/platform/src/components/aws/apigateway-websocket.ts" */} + +import Segment from '../../../../../../src/components/tsdoc/Segment.astro'; +import Section from '../../../../../../src/components/tsdoc/Section.astro'; +import NestedTitle from '../../../../../../src/components/tsdoc/NestedTitle.astro'; +import InlineSection from '../../../../../../src/components/tsdoc/InlineSection.astro'; + +
+ +
+The `ApiGatewayWebSocket` component lets you add an [Amazon API Gateway WebSocket API](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api.html) to your app. + +#### Create the API + +```ts +const api = new sst.aws.ApiGatewayWebSocket("MyApi"); +``` + +#### Add a custom domain + +```js {2} +new sst.aws.ApiGatewayWebSocket("MyApi", { + domain: "api.example.com" +}); +``` + +#### Add routes + +```ts +api.route("$connect", "src/connect.handler"); +api.route("$disconnect", "src/disconnect.handler"); +api.route("$default", "src/default.handler"); +api.route("sendMessage", "src/sendMessage.handler"); +``` +
+ +--- + +## Constructor + + +
+```ts +new ApiGatewayWebSocket(name, args?, opts?) +``` +
+ +
+#### Parameters +-

name string

+-

args? [ApiGatewayWebSocketArgs](#apigatewaywebsocketargs)

+-

opts? [ComponentResourceOptions](https://www.pulumi.com/docs/concepts/options/)

+
+
+ +## Methods + +### route + +
+```ts +route(route, handler, args?) +``` +
+ +
+#### Parameters +-

route string

+The path for the route. +-

handler string | [FunctionArgs](/docs/component/aws/function/#functionargs)

+The function that'll be invoked. +-

args? [ApiGatewayWebSocketRouteArgs](#apigatewaywebsocketrouteargs)

+Configure the route. +
+ + +**Returns** [ApiGatewayWebSocketRoute](/docs/component/aws/apigateway-websocket-route/) + +Add a route to the API Gateway WebSocket API. + +There are three predefined routes: +- $connect: when the client connects to the API +- $disconnect: when the client or the server disconnects from the API +- $default: the default or catch-all route + +In addition, you can create custom routes. When a request comes in, the API Gateway +will look the specific route defined by the user. If no route matches, the `$default` +route will be invoked. + +Here's how you add a simple route. + +```js +api.route("sendMessage", "src/sendMessage.handler"); +``` + +Add a default route. + +```js +api.route("$default", "src/default.handler"); +``` + +Enable auth for a route. + +```js +api.route("sendMessage", "src/sendMessage.handler", { + auth: { + iam: true + } +}); +``` + +Customize the route handler. + +```js +api.route("sendMessage", { + handler: "src/sendMessage.handler", + memory: "2048 MB" +}); +``` +
+ +## Properties + +### managementEndpoint + +
+ +**Type** Output<string> + +
+The management endpoint for the API used by the API Gateway Management API client. +This is useful for sending messages to connected clients. +
+ +### nodes + +
+ +**Type** Object + +-

[api](#nodes-api)

+-

[logGroup](#nodes-loggroup)

+
+The underlying [resources](/docs/components/#nodes) this component creates. +
+api + +
+ +**Type** [Api](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/api/) + +
+The Amazon API Gateway HTTP API +
+logGroup + +
+ +**Type** [LogGroup](https://www.pulumi.com/registry/packages/aws/api-docs/cloudwatch/loggroup/) + +
+The CloudWatch LogGroup for the access logs. +
+ +### url + +
+ +**Type** Output<string> + +
+The URL of the API. + +If the `domain` is set, this is the URL with the custom domain. +Otherwise, it's the autogenerated API Gateway URL. +
+ +## Links + +The following are accessible through the [SDK](/docs/reference/sdk/) at runtime. + +### managementEndpoint + +
+ +**Type** string + +
+The management endpoint for the API used by the API Gateway Management API client. +This is useful for sending messages to connected clients. +
+ +### url + +
+ +**Type** string + +
+The URL of the API. + +If the `domain` is set, this is the URL with the custom domain. +Otherwise, it's the autogenerated API Gateway URL. +
+ +## ApiGatewayWebSocketArgs +### accessLog? + +
+ +**Type** Input<Object> + +-

[retention?](#accesslog-retention)

+
+ + +**Default** {retention: "forever"} + +Configure the [API Gateway logs](https://docs.aws.amazon.com/apigateway/latest/developerguide/view-cloudwatch-log-events-in-cloudwatch-console.html) in CloudWatch. By default, access logs are enabled and kept forever. + +```js +{ + accessLog: { + retention: "1 week" + } +} +``` +
+retention? + +
+ +**Type** Input<1 day | 3 days | 5 days | 1 week | 2 weeks | 1 month | 2 months | 3 months | 4 months | 5 months | 6 months | 1 year | 13 months | 18 months | 2 years | 3 years | 5 years | 6 years | 7 years | 8 years | 9 years | 10 years | forever> + +
+ + +**Default** forever + +The duration the API Gateway logs are kept in CloudWatch. + +
+### domain? + +
+ +**Type** Input<string | Object> + +-

[cert?](#domain-cert)

+-

[dns?](#domain-dns)

+-

[name](#domain-name)

+-

[path?](#domain-path)

+
+Set a custom domain for your WebSocket API. + +Automatically manages domains hosted on AWS Route 53, Cloudflare, and Vercel. For other +providers, you'll need to pass in a `cert` that validates domain ownership and add the +DNS records. + +:::tip +Built-in support for AWS Route 53, Cloudflare, and Vercel. And manual setup for other +providers. +::: + +By default this assumes the domain is hosted on Route 53. + +```js +{ + domain: "example.com" +} +``` + +For domains hosted on Cloudflare. + +```js +{ + domain: { + name: "example.com", + dns: sst.cloudflare.dns() + } +} +``` +
+cert? + +
+ +**Type** Input<string> + +
+The ARN of an ACM (AWS Certificate Manager) certificate that proves ownership of the +domain. By default, a certificate is created and validated automatically. + +:::tip +You need to pass in a `cert` for domains that are not hosted on supported `dns` providers. +::: + +To manually set up a domain on an unsupported provider, you'll need to: + +1. [Validate that you own the domain](https://docs.aws.amazon.com/acm/latest/userguide/domain-ownership-validation.html) by creating an ACM certificate. You can either validate it by setting a DNS record or by verifying an email sent to the domain owner. +2. Once validated, set the certificate ARN as the `cert` and set `dns` to `false`. +3. Add the DNS records in your provider to point to the API Gateway URL. + +```js +{ + domain: { + name: "example.com", + dns: false, + cert: "arn:aws:acm:us-east-1:112233445566:certificate/3a958790-8878-4cdc-a396-06d95064cf63" + } +} +``` +
+dns? + +
+ +**Type** Input<false | [sst.aws.dns](/docs/component/aws/dns/) | [sst.cloudflare.dns](/docs/component/cloudflare/dns/) | [sst.vercel.dns](/docs/component/vercel/dns/)> + +
+ + +**Default** sst.aws.dns + +The DNS provider to use for the domain. Defaults to the AWS. + +Takes an adapter that can create the DNS records on the provider. This can automate +validating the domain and setting up the DNS routing. + +Supports Route 53, Cloudflare, and Vercel adapters. For other providers, you'll need +to set `dns` to `false` and pass in a certificate validating ownership via `cert`. + +Specify the hosted zone ID for the Route 53 domain. + +```js +{ + domain: { + name: "example.com", + dns: sst.aws.dns({ + zone: "Z2FDTNDATAQYW2" + }) + } +} +``` + +Use a domain hosted on Cloudflare, needs the Cloudflare provider. + +```js +{ + domain: { + name: "example.com", + dns: sst.cloudflare.dns() + } +} +``` + +Use a domain hosted on Vercel, needs the Vercel provider. + +```js +{ + domain: { + name: "example.com", + dns: sst.vercel.dns() + } +} +``` +
+name + +
+ +**Type** Input<string> + +
+The custom domain you want to use. + +```js +{ + domain: { + name: "example.com" + } +} +``` + +Can also include subdomains based on the current stage. + +```js +{ + domain: { + name: `${$app.stage}.example.com` + } +} +``` +
+path? + +
+ +**Type** Input<string> + +
+The base mapping for the custom domain. This adds a suffix to the URL of the API. + +Given the following base path and domain name. + +```js +{ + domain: { + name: "api.example.com", + path: "v1" + } +} +``` + +The full URL of the API will be `https://api.example.com/v1/`. + +:::note +There's an extra trailing slash when a base path is set. +::: + +Be default there is no base path, so if the `name` is `api.example.com`, the full URL will be `https://api.example.com`. +
+### transform? + +
+ +**Type** Object + +-

[accessLog?](#transform-accesslog)

+-

[api?](#transform-api)

+-

[domainName?](#transform-domainname)

+-

[route?](#transform-route) Object

+ -

[args?](#transform-route-args)

+ -

[handler?](#transform-route-handler)

+-

[stage?](#transform-stage)

+
+[Transform](/docs/components#transform) how this component creates its underlying +resources. + +
+accessLog? + +
+ +**Type** [LogGroupArgs](https://www.pulumi.com/registry/packages/aws/api-docs/cloudwatch/loggroup/#inputs) | (args: [LogGroupArgs](https://www.pulumi.com/registry/packages/aws/api-docs/cloudwatch/loggroup/#inputs) => void) + +
+Transform the CloudWatch LogGroup resource used for access logs. + +
+api? + +
+ +**Type** [ApiArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/api/#inputs) | (args: [ApiArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/api/#inputs) => void) + +
+Transform the API Gateway WebSocket API resource. + +
+domainName? + +
+ +**Type** [DomainNameArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/domainname/#inputs) | (args: [DomainNameArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/domainname/#inputs) => void) + +
+Transform the API Gateway WebSocket API domain name resource. + +
+route? + +
+ +**Type** Object + +
+Transform the routes. This can be used to customize the handler function and +the arguments for each route. + +```js +{ + transform: { + route: { + handler: { + link: [bucket, stripeKey] + }, + args: { + auth: { iam: true } + } + } + } +} +``` +
+args? + +
+ +**Type** [ApiGatewayWebSocketRouteArgs](#apigatewaywebsocketrouteargs) | (args: [ApiGatewayWebSocketRouteArgs](#apigatewaywebsocketrouteargs) => void) + +
+Transform the arguments for the route. + +
+handler? + +
+ +**Type** [FunctionArgs](/docs/component/aws/function/#functionargs) | (args: [FunctionArgs](/docs/component/aws/function/#functionargs) => void) + +
+Transform the handler function for the route. + +
+stage? + +
+ +**Type** [StageArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/stage/#inputs) | (args: [StageArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/stage/#inputs) => void) + +
+Transform the API Gateway WebSocket API stage resource. + +
+ +## ApiGatewayWebSocketRouteArgs +### auth? + +
+ +**Type** Input<Object> + +-

[iam?](#auth-iam)

+
+Enable auth for your WebSocket API. + +:::note +Currently only IAM auth is supported. +::: + +```js +{ + auth: { + iam: true + } +} +``` +
+iam? + +
+ +**Type** Input<true> + +
+Enable IAM authorization for a given API route. When IAM auth is enabled, clients need to use Signature Version 4 to sign their requests with their AWS credentials. + +
+### transform? + +
+ +**Type** Object + +-

[integration?](#transform-integration)

+-

[route?](#transform-route-1)

+
+[Transform](/docs/components#transform) how this component creates its underlying +resources. + +
+integration? + +
+ +**Type** [IntegrationArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/integration/#inputs) | (args: [IntegrationArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/integration/#inputs) => void) + +
+Transform the API Gateway WebSocket API integration resource. + +
+route? + +
+ +**Type** [RouteArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/route/#inputs) | (args: [RouteArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/route/#inputs) => void) + +
+Transform the API Gateway WebSocket API route resource. + +
+
\ No newline at end of file diff --git a/www/src/content/docs/docs/component/aws/cluster.mdx b/www/src/content/docs/docs/component/aws/cluster.mdx index 3afb6d5bb..bdfda135a 100644 --- a/www/src/content/docs/docs/component/aws/cluster.mdx +++ b/www/src/content/docs/docs/component/aws/cluster.mdx @@ -780,7 +780,7 @@ you can omit the `forward` field.
-**Type** Input<$\{number\}/http | $\{number\}/https | $\{number\}/tcp | $\{number\}/udp | $\{number\}/tcp_udp | $\{number\}/tls> +**Type** Input<$\{number\}/https | $\{number\}/http | $\{number\}/tcp | $\{number\}/udp | $\{number\}/tcp_udp | $\{number\}/tls>
@@ -794,7 +794,7 @@ The port and protocol of the container the service forwards the traffic to.
-**Type** Input<$\{number\}/http | $\{number\}/https | $\{number\}/tcp | $\{number\}/udp | $\{number\}/tcp_udp | $\{number\}/tls> +**Type** Input<$\{number\}/https | $\{number\}/http | $\{number\}/tcp | $\{number\}/udp | $\{number\}/tcp_udp | $\{number\}/tls>
The port and protocol the service listens on. diff --git a/www/src/content/docs/docs/component/aws/service.mdx b/www/src/content/docs/docs/component/aws/service.mdx index 70d044d24..58b429fa4 100644 --- a/www/src/content/docs/docs/component/aws/service.mdx +++ b/www/src/content/docs/docs/component/aws/service.mdx @@ -705,7 +705,7 @@ you can omit the `forward` field.
-**Type** Input<$\{number\}/http | $\{number\}/https | $\{number\}/tcp | $\{number\}/udp | $\{number\}/tcp_udp | $\{number\}/tls> +**Type** Input<$\{number\}/https | $\{number\}/http | $\{number\}/tcp | $\{number\}/udp | $\{number\}/tcp_udp | $\{number\}/tls>
@@ -719,7 +719,7 @@ The port and protocol of the container the service forwards the traffic to.
-**Type** Input<$\{number\}/http | $\{number\}/https | $\{number\}/tcp | $\{number\}/udp | $\{number\}/tcp_udp | $\{number\}/tls> +**Type** Input<$\{number\}/https | $\{number\}/http | $\{number\}/tcp | $\{number\}/udp | $\{number\}/tcp_udp | $\{number\}/tls>
The port and protocol the service listens on. From 607be950890854ac7cab24945e327b5be405535e Mon Sep 17 00:00:00 2001 From: Zohaib Akber Date: Sat, 4 May 2024 02:02:19 +0500 Subject: [PATCH 17/41] fix typo in docs->linking (#335) Co-authored-by: zohaibakber --- www/src/content/docs/docs/linking.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www/src/content/docs/docs/linking.mdx b/www/src/content/docs/docs/linking.mdx index 28312a6ec..e80351b91 100644 --- a/www/src/content/docs/docs/linking.mdx +++ b/www/src/content/docs/docs/linking.mdx @@ -152,7 +152,7 @@ This is why when you are running your frontend locally, it needs to be wrapped i When you run `sst dev` or `sst deploy`, SST generates the types to access the linked resources. These are generated in a `.sst/types.generated.ts` file. :::tip -If your types are not automatically getting picked up, make sure there is a `sst.env.d.ts` file in your project root. +If your types are not automatically getting picked up, make sure there is a `sst-env.d.ts` file in your project root. ::: This file is referenced using a `sst-env.d.ts` in your project root. The `sst-env.d.ts` should be added when you initialize your app with `sst init`. From 40ed8f9ae05dee0736537e443d797b41afc203d3 Mon Sep 17 00:00:00 2001 From: Chase Adams Date: Fri, 3 May 2024 14:04:03 -0700 Subject: [PATCH 18/41] fix: typos (#356) --- pkg/platform/src/config.ts | 6 +++--- pkg/platform/src/global.d.ts | 2 +- www/src/content/docs/docs/components.mdx | 2 +- www/src/content/docs/docs/reference/config.mdx | 6 +++--- www/src/content/docs/docs/reference/global.mdx | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/pkg/platform/src/config.ts b/pkg/platform/src/config.ts index 72512c8ab..582de5d84 100644 --- a/pkg/platform/src/config.ts +++ b/pkg/platform/src/config.ts @@ -155,7 +155,7 @@ export interface App { * } * ``` * - * By default, we use the latest verion of a provider. But you can optionally specify a version. + * By default, we use the latest version of a provider. But you can optionally specify a version. * * ```ts * { @@ -257,7 +257,7 @@ export interface Config { * * @example * - * For exmaple, here we return the name of the bucket we created. + * For example, here we return the name of the bucket we created. * * ```ts * async run() { @@ -272,7 +272,7 @@ export interface Config { * This will display the following in the CLI. * * ```bash frame=\"none\" - * buckeet: bucket-jOaikGu4rla + * bucket: bucket-jOaikGu4rla * ``` */ run(): Promise | void>; diff --git a/pkg/platform/src/global.d.ts b/pkg/platform/src/global.d.ts index 56c77eb9c..10e686aff 100644 --- a/pkg/platform/src/global.d.ts +++ b/pkg/platform/src/global.d.ts @@ -210,7 +210,7 @@ declare global { * * @example * - * For example, to set a default runtime for all function compoennts. + * For example, to set a default runtime for all function components. * * ```ts * $transform(sst.aws.Function, (args, opts) => { diff --git a/www/src/content/docs/docs/components.mdx b/www/src/content/docs/docs/components.mdx index 2a85e5e23..d8752fc4a 100644 --- a/www/src/content/docs/docs/components.mdx +++ b/www/src/content/docs/docs/components.mdx @@ -148,7 +148,7 @@ Similar to the component transform, we have the global `$transform`. This allows Set global defaults for your components with `$transform`. ::: -For example, to set a default runtime for all function compoennts. +For example, to set a default runtime for all function components. ```ts $transform(sst.aws.Function, (args, opts) => { diff --git a/www/src/content/docs/docs/reference/config.mdx b/www/src/content/docs/docs/reference/config.mdx index c5eb5bc03..e830ceeaa 100644 --- a/www/src/content/docs/docs/reference/config.mdx +++ b/www/src/content/docs/docs/reference/config.mdx @@ -183,7 +183,7 @@ You also add multiple providers. } ``` -By default, we use the latest verion of a provider. But you can optionally specify a version. +By default, we use the latest version of a provider. But you can optionally specify a version. ```ts { @@ -317,7 +317,7 @@ You can use SST and Pulumi components only in the `run` function. You can optionally return an object that'll be displayed as the output in the CLI. -For exmaple, here we return the name of the bucket we created. +For example, here we return the name of the bucket we created. ```ts async run() { @@ -332,7 +332,7 @@ async run() { This will display the following in the CLI. ```bash frame=\"none\" -buckeet: bucket-jOaikGu4rla +bucket: bucket-jOaikGu4rla ```
\ No newline at end of file diff --git a/www/src/content/docs/docs/reference/global.mdx b/www/src/content/docs/docs/reference/global.mdx index d51cc83bd..ae0f5d903 100644 --- a/www/src/content/docs/docs/reference/global.mdx +++ b/www/src/content/docs/docs/reference/global.mdx @@ -332,7 +332,7 @@ This function is only called for components that are created **after** the funct The function takes the arguments and options that are being passed to the component, and can modify them. -For example, to set a default runtime for all function compoennts. +For example, to set a default runtime for all function components. ```ts $transform(sst.aws.Function, (args, opts) => { From 18fa0145f4f1659603ea43ba5d457608227d5f85 Mon Sep 17 00:00:00 2001 From: Jay V Date: Fri, 3 May 2024 21:43:21 -0400 Subject: [PATCH 19/41] Docs drizzle --- examples/aws-drizzle/drizzle.config.ts | 9 +++++---- examples/aws-drizzle/src/api.ts | 5 +++-- examples/aws-drizzle/src/drizzle.ts | 8 ++++---- examples/aws-drizzle/src/todo.sql.ts | 2 +- examples/aws-drizzle/sst.config.ts | 4 ++-- 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/examples/aws-drizzle/drizzle.config.ts b/examples/aws-drizzle/drizzle.config.ts index 791f05760..e050d4c3d 100644 --- a/examples/aws-drizzle/drizzle.config.ts +++ b/examples/aws-drizzle/drizzle.config.ts @@ -1,12 +1,13 @@ -import { defineConfig } from "drizzle-kit"; import { Resource } from "sst"; +import { defineConfig } from "drizzle-kit"; + export default defineConfig({ driver: "aws-data-api", dialect: "postgresql", dbCredentials: { - database: Resource.Postgres.database, - secretArn: Resource.Postgres.secretArn, - resourceArn: Resource.Postgres.clusterArn, + database: Resource.MyPostgres.database, + secretArn: Resource.MyPostgres.secretArn, + resourceArn: Resource.MyPostgres.clusterArn, }, schema: ["./src/**/*.sql.ts"], out: "./migrations", diff --git a/examples/aws-drizzle/src/api.ts b/examples/aws-drizzle/src/api.ts index b4abb9a66..96382c8a2 100644 --- a/examples/aws-drizzle/src/api.ts +++ b/examples/aws-drizzle/src/api.ts @@ -1,7 +1,7 @@ import { db } from "./drizzle"; import { todo } from "./todo.sql"; +// import { randomUUID } from "node:crypto"; import { APIGatewayProxyHandlerV2 } from "aws-lambda"; -import { randomUUID } from "node:crypto"; export const handler: APIGatewayProxyHandlerV2 = async (evt) => { if (evt.requestContext.http.method === "GET") { @@ -15,9 +15,10 @@ export const handler: APIGatewayProxyHandlerV2 = async (evt) => { if (evt.requestContext.http.method === "POST") { const result = await db .insert(todo) - .values({ title: "new todo " + randomUUID() }) + .values({ title: "new todo " + crypto.randomUUID() }) .returning() .execute(); + return { statusCode: 200, body: JSON.stringify(result), diff --git a/examples/aws-drizzle/src/drizzle.ts b/examples/aws-drizzle/src/drizzle.ts index 427beb572..bab5c1cc1 100644 --- a/examples/aws-drizzle/src/drizzle.ts +++ b/examples/aws-drizzle/src/drizzle.ts @@ -1,11 +1,11 @@ +import { Resource } from "sst"; import { drizzle } from "drizzle-orm/aws-data-api/pg"; import { RDSDataClient } from "@aws-sdk/client-rds-data"; -import { Resource } from "sst"; const client = new RDSDataClient({}); export const db = drizzle(client, { - secretArn: Resource.Postgres.secretArn, - database: Resource.Postgres.database, - resourceArn: Resource.Postgres.clusterArn, + database: Resource.MyPostgres.database, + secretArn: Resource.MyPostgres.secretArn, + resourceArn: Resource.MyPostgres.clusterArn, }); diff --git a/examples/aws-drizzle/src/todo.sql.ts b/examples/aws-drizzle/src/todo.sql.ts index 1de457f10..593829b61 100644 --- a/examples/aws-drizzle/src/todo.sql.ts +++ b/examples/aws-drizzle/src/todo.sql.ts @@ -1,4 +1,4 @@ -import { pgTable, text, serial } from "drizzle-orm/pg-core"; +import { text, serial, pgTable } from "drizzle-orm/pg-core"; export const todo = pgTable("todo", { id: serial("id").primaryKey(), diff --git a/examples/aws-drizzle/sst.config.ts b/examples/aws-drizzle/sst.config.ts index 104bdb4a0..ba77a8d7f 100644 --- a/examples/aws-drizzle/sst.config.ts +++ b/examples/aws-drizzle/sst.config.ts @@ -9,8 +9,8 @@ export default $config({ }; }, async run() { - const rds = new sst.aws.Postgres("Postgres"); - const api = new sst.aws.Function("Api", { + const rds = new sst.aws.Postgres("MyPostgres"); + const api = new sst.aws.Function("MyApi", { url: true, link: [rds], handler: "./src/api.handler", From 40fdea4761ac1fa45b82620d9b49555f965ff09d Mon Sep 17 00:00:00 2001 From: Frank Date: Sat, 4 May 2024 02:16:38 -0400 Subject: [PATCH 20/41] Adopt internal component design --- examples/aws-api/sst-env.d.ts | 10 + examples/aws-apig-websocket/lambda.ts | 8 +- examples/aws-apig-websocket/sst.config.ts | 4 +- examples/aws-dynamo/publisher.ts | 2 +- examples/sst-env.d.ts | 10 + package-lock.json | 22880 ++++++++-------- ...s => apigateway-websocket-lambda-route.ts} | 28 +- .../components/aws/apigateway-websocket.ts | 17 +- .../aws/apigatewayv2-lambda-route.ts | 205 + .../src/components/aws/apigatewayv2.ts | 143 +- .../aws/bucket-lambda-subscriber.ts | 155 + pkg/platform/src/components/aws/bucket.ts | 168 +- pkg/platform/src/components/aws/cluster.ts | 210 +- .../aws/dynamo-lambda-subscriber.ts | 115 + pkg/platform/src/components/aws/dynamo.ts | 110 +- .../src/components/aws/helpers/arn.ts | 20 + .../components/aws/queue-lambda-subscriber.ts | 116 + pkg/platform/src/components/aws/queue.ts | 75 +- pkg/platform/src/components/aws/service.ts | 20 +- .../aws/sns-topic-lambda-subscriber.ts | 119 + .../aws/sns-topic-queue-subscriber.ts | 109 + pkg/platform/src/components/aws/sns-topic.ts | 186 +- www/astro.config.mjs | 28 +- www/generate.ts | 16 +- .../aws/apigateway-websocket-lambda-route.mdx | 233 + .../component/aws/apigateway-websocket.mdx | 2 +- .../aws/apigatewayv2-lambda-route.mdx | 338 + .../docs/docs/component/aws/apigatewayv2.mdx | 44 +- .../content/docs/docs/component/aws/astro.mdx | 2 +- .../aws/bucket-lambda-subscriber.mdx | 213 + .../docs/docs/component/aws/bucket.mdx | 42 +- .../aws/dynamo-lambda-subscriber.mdx | 198 + .../docs/docs/component/aws/dynamo.mdx | 32 +- .../docs/docs/component/aws/function.mdx | 4 +- .../docs/docs/component/aws/nextjs.mdx | 4 +- .../component/aws/queue-lambda-subscriber.mdx | 183 + .../content/docs/docs/component/aws/queue.mdx | 32 +- .../content/docs/docs/component/aws/remix.mdx | 2 +- .../aws/sns-topic-lambda-subscriber.mdx | 188 + .../aws/sns-topic-queue-subscriber.mdx | 178 + .../docs/docs/component/aws/sns-topic.mdx | 72 +- .../docs/docs/component/aws/solid-start.mdx | 2 +- .../docs/docs/component/aws/static-site.mdx | 2 +- .../docs/docs/component/aws/svelte-kit.mdx | 2 +- 44 files changed, 13917 insertions(+), 12610 deletions(-) create mode 100644 examples/aws-api/sst-env.d.ts create mode 100644 examples/sst-env.d.ts rename pkg/platform/src/components/aws/{apigateway-websocket-route.ts => apigateway-websocket-lambda-route.ts} (83%) create mode 100644 pkg/platform/src/components/aws/apigatewayv2-lambda-route.ts create mode 100644 pkg/platform/src/components/aws/bucket-lambda-subscriber.ts create mode 100644 pkg/platform/src/components/aws/dynamo-lambda-subscriber.ts create mode 100644 pkg/platform/src/components/aws/queue-lambda-subscriber.ts create mode 100644 pkg/platform/src/components/aws/sns-topic-lambda-subscriber.ts create mode 100644 pkg/platform/src/components/aws/sns-topic-queue-subscriber.ts create mode 100644 www/src/content/docs/docs/component/aws/apigateway-websocket-lambda-route.mdx create mode 100644 www/src/content/docs/docs/component/aws/apigatewayv2-lambda-route.mdx create mode 100644 www/src/content/docs/docs/component/aws/bucket-lambda-subscriber.mdx create mode 100644 www/src/content/docs/docs/component/aws/dynamo-lambda-subscriber.mdx create mode 100644 www/src/content/docs/docs/component/aws/queue-lambda-subscriber.mdx create mode 100644 www/src/content/docs/docs/component/aws/sns-topic-lambda-subscriber.mdx create mode 100644 www/src/content/docs/docs/component/aws/sns-topic-queue-subscriber.mdx diff --git a/examples/aws-api/sst-env.d.ts b/examples/aws-api/sst-env.d.ts new file mode 100644 index 000000000..4d130387e --- /dev/null +++ b/examples/aws-api/sst-env.d.ts @@ -0,0 +1,10 @@ +/* tslint:disable *//* eslint-disable */import "sst" +declare module "sst" { + export interface Resource { + MyBucket: { + name: string + type: "sst.aws.Bucket" + } + } +} +export {} \ No newline at end of file diff --git a/examples/aws-apig-websocket/lambda.ts b/examples/aws-apig-websocket/lambda.ts index 578ec8bce..f9458395d 100644 --- a/examples/aws-apig-websocket/lambda.ts +++ b/examples/aws-apig-websocket/lambda.ts @@ -3,9 +3,6 @@ import { ApiGatewayManagementApiClient, PostToConnectionCommand, } from "@aws-sdk/client-apigatewaymanagementapi"; -const client = new ApiGatewayManagementApiClient({ - endpoint: Resource.MyApi.managementEndpoint, -}); export async function connect(event) { console.log("!!! connect"); @@ -25,7 +22,10 @@ export async function sendMessage(event) { export async function catchAll(event) { console.log("!!! default"); - // Send a message back to the + // Send a message back to the client + const client = new ApiGatewayManagementApiClient({ + endpoint: Resource.MyApi.managementEndpoint, + }); await client.send( new PostToConnectionCommand({ ConnectionId: event.requestContext.connectionId, diff --git a/examples/aws-apig-websocket/sst.config.ts b/examples/aws-apig-websocket/sst.config.ts index 40de6b1cc..ebc05181b 100644 --- a/examples/aws-apig-websocket/sst.config.ts +++ b/examples/aws-apig-websocket/sst.config.ts @@ -15,6 +15,8 @@ export default $config({ api.route("$default", { handler: "lambda.catchAll", link: [api] }); api.route("sendmessage", "lambda.sendMessage"); - return { managementEndpoint: api.managementEndpoint }; + return { + managementEndpoint: api.managementEndpoint, + }; }, }); diff --git a/examples/aws-dynamo/publisher.ts b/examples/aws-dynamo/publisher.ts index 8fe3a3e84..f90ac0288 100644 --- a/examples/aws-dynamo/publisher.ts +++ b/examples/aws-dynamo/publisher.ts @@ -7,7 +7,7 @@ export const handler = async (event) => { new PutItemCommand({ TableName: Resource.MyTable.name, Item: { - id: { S: "3" }, + id: { S: Date.now().toString() }, message: { S: "Hello" }, }, }) diff --git a/examples/sst-env.d.ts b/examples/sst-env.d.ts new file mode 100644 index 000000000..026c3a13b --- /dev/null +++ b/examples/sst-env.d.ts @@ -0,0 +1,10 @@ +/* tslint:disable *//* eslint-disable */import "sst" +declare module "sst" { + export interface Resource { + MyTable: { + name: string + type: "sst.aws.Dynamo" + } + } +} +export {} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index a1c647d40..869be1730 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,6 @@ "node_modules/@ampproject/remapping": { "version": "2.3.0", "license": "Apache-2.0", - "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -50,11 +49,6 @@ "version": "2.7.1", "license": "MIT" }, - "node_modules/@astrojs/internal-helpers": { - "version": "0.2.1", - "license": "MIT", - "peer": true - }, "node_modules/@astrojs/language-server": { "version": "2.8.4", "license": "MIT", @@ -92,123 +86,27 @@ } } }, - "node_modules/@astrojs/markdown-remark": { - "version": "3.5.0", - "license": "MIT", - "dependencies": { - "@astrojs/prism": "^3.0.0", - "github-slugger": "^2.0.0", - "import-meta-resolve": "^3.0.0", - "mdast-util-definitions": "^6.0.0", - "rehype-raw": "^6.1.1", - "rehype-stringify": "^9.0.4", - "remark-gfm": "^3.0.1", - "remark-parse": "^10.0.2", - "remark-rehype": "^10.1.0", - "remark-smartypants": "^2.0.0", - "shikiji": "^0.6.8", - "unified": "^10.1.2", - "unist-util-visit": "^4.1.2", - "vfile": "^5.3.7" - }, - "peerDependencies": { - "astro": "^3.0.0" - } - }, - "node_modules/@astrojs/mdx": { - "version": "1.1.5", - "license": "MIT", - "dependencies": { - "@astrojs/markdown-remark": "3.5.0", - "@mdx-js/mdx": "^2.3.0", - "acorn": "^8.10.0", - "es-module-lexer": "^1.3.0", - "estree-util-visit": "^1.2.1", - "github-slugger": "^2.0.0", - "gray-matter": "^4.0.3", - "hast-util-to-html": "^8.0.4", - "kleur": "^4.1.4", - "rehype-raw": "^6.1.1", - "remark-gfm": "^3.0.1", - "remark-smartypants": "^2.0.0", - "source-map": "^0.7.4", - "unist-util-visit": "^4.1.2", - "vfile": "^5.3.7" - }, - "engines": { - "node": ">=18.14.1" - }, - "peerDependencies": { - "astro": "^3.0.0" - } - }, - "node_modules/@astrojs/mdx/node_modules/source-map": { - "version": "0.7.4", - "license": "BSD-3-Clause", - "engines": { - "node": ">= 8" - } - }, "node_modules/@astrojs/prism": { - "version": "3.0.0", - "license": "MIT", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.1.0.tgz", + "integrity": "sha512-Z9IYjuXSArkAUx3N6xj6+Bnvx8OdUSHA8YoOgyepp3+zJmtVYJIl/I18GozdJVW1p5u/CNpl3Km7/gwTJK85cw==", "dependencies": { "prismjs": "^1.29.0" }, "engines": { - "node": ">=18.14.1" + "node": "^18.17.1 || ^20.3.0 || >=21.0.0" } }, "node_modules/@astrojs/sitemap": { - "version": "3.1.2", - "license": "MIT", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.1.4.tgz", + "integrity": "sha512-po8CqDCK14O6phU1mB5C8SyVLyQEa+7pJM8oXxs1mVh8DgvxxaA5E7lak1vzOmBcyyyHBW32jakGqNYc66sBRw==", "dependencies": { "sitemap": "^7.1.1", + "stream-replace-string": "^2.0.0", "zod": "^3.22.4" } }, - "node_modules/@astrojs/starlight": { - "version": "0.14.0", - "license": "MIT", - "dependencies": { - "@astrojs/mdx": "^1.1.0", - "@astrojs/sitemap": "^3.0.3", - "@pagefind/default-ui": "^1.0.3", - "@types/mdast": "^3.0.11", - "astro-expressive-code": "^0.29.0", - "bcp-47": "^2.1.0", - "execa": "^8.0.1", - "hast-util-select": "^5.0.5", - "hastscript": "^7.2.0", - "pagefind": "^1.0.3", - "rehype": "^12.0.1", - "remark-directive": "^2.0.1", - "unified": "^10.1.2", - "unist-util-remove": "^3.1.1", - "unist-util-visit": "^4.1.2", - "vfile": "^5.3.7" - }, - "peerDependencies": { - "astro": "^3.2.0" - } - }, - "node_modules/@astrojs/telemetry": { - "version": "3.0.4", - "license": "MIT", - "peer": true, - "dependencies": { - "ci-info": "^3.8.0", - "debug": "^4.3.4", - "dlv": "^1.1.3", - "dset": "^3.1.2", - "is-docker": "^3.0.0", - "is-wsl": "^3.0.0", - "which-pm-runs": "^1.1.0" - }, - "engines": { - "node": ">=18.14.1" - } - }, "node_modules/@astrojs/webapi": { "version": "3.0.0", "license": "MIT", @@ -393,19 +291,10 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.478.0", + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/types": { + "version": "3.468.0", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-ini": "3.478.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.478.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", - "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -413,31 +302,82 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.468.0", + "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/smithy-client": { + "version": "2.4.3", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.7.0", + "@smithy/middleware-endpoint": "^2.4.5", + "@smithy/middleware-stack": "^2.1.4", + "@smithy/protocol-http": "^3.2.2", + "@smithy/types": "^2.11.0", + "@smithy/util-stream": "^2.1.4", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-ini": { + "node_modules/@aws-sdk/client-cloudfront": { "version": "3.478.0", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.478.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.478.0", + "@aws-sdk/core": "3.477.0", + "@aws-sdk/credential-provider-node": "3.478.0", + "@aws-sdk/middleware-host-header": "3.468.0", + "@aws-sdk/middleware-logger": "3.468.0", + "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-signing": "3.468.0", + "@aws-sdk/middleware-user-agent": "3.478.0", + "@aws-sdk/region-config-resolver": "3.470.0", "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", + "@aws-sdk/util-endpoints": "3.478.0", + "@aws-sdk/util-user-agent-browser": "3.468.0", + "@aws-sdk/util-user-agent-node": "3.470.0", + "@aws-sdk/xml-builder": "3.472.0", + "@smithy/config-resolver": "^2.0.21", + "@smithy/core": "^1.2.0", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/hash-node": "^2.0.17", + "@smithy/invalid-dependency": "^2.0.15", + "@smithy/middleware-content-length": "^2.0.17", + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.24", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/node-http-handler": "^2.2.1", + "@smithy/protocol-http": "^3.0.11", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-base64": "^2.0.1", + "@smithy/util-body-length-browser": "^2.0.1", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.22", + "@smithy/util-defaults-mode-node": "^2.0.29", + "@smithy/util-endpoints": "^1.0.7", + "@smithy/util-retry": "^2.0.8", + "@smithy/util-stream": "^2.0.23", + "@smithy/util-utf8": "^2.0.2", + "@smithy/util-waiter": "^2.0.15", + "fast-xml-parser": "4.2.5", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/core": { + "version": "3.477.0", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^1.2.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/signature-v4": "^2.0.0", + "@smithy/smithy-client": "^2.1.18", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -445,13 +385,10 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-process": { + "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/types": { "version": "3.468.0", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -459,32 +396,34 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.478.0", + "node_modules/@aws-sdk/client-cloudfront/node_modules/@smithy/smithy-client": { + "version": "2.4.3", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.478.0", - "@aws-sdk/token-providers": "3.478.0", - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", + "@smithy/middleware-endpoint": "^2.4.5", + "@smithy/middleware-stack": "^2.1.4", + "@smithy/protocol-http": "^3.2.2", + "@smithy/types": "^2.11.0", + "@smithy/util-stream": "^2.1.4", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/client-sso": { + "node_modules/@aws-sdk/client-cloudwatch-logs": { "version": "3.478.0", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.478.0", "@aws-sdk/core": "3.477.0", + "@aws-sdk/credential-provider-node": "3.478.0", "@aws-sdk/middleware-host-header": "3.468.0", "@aws-sdk/middleware-logger": "3.468.0", "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-signing": "3.468.0", "@aws-sdk/middleware-user-agent": "3.478.0", "@aws-sdk/region-config-resolver": "3.470.0", "@aws-sdk/types": "3.468.0", @@ -493,6 +432,9 @@ "@aws-sdk/util-user-agent-node": "3.470.0", "@smithy/config-resolver": "^2.0.21", "@smithy/core": "^1.2.0", + "@smithy/eventstream-serde-browser": "^2.0.15", + "@smithy/eventstream-serde-config-resolver": "^2.0.15", + "@smithy/eventstream-serde-node": "^2.0.15", "@smithy/fetch-http-handler": "^2.3.1", "@smithy/hash-node": "^2.0.17", "@smithy/invalid-dependency": "^2.0.15", @@ -515,21 +457,68 @@ "@smithy/util-endpoints": "^1.0.7", "@smithy/util-retry": "^2.0.8", "@smithy/util-utf8": "^2.0.2", + "tslib": "^2.5.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/core": { + "version": "3.477.0", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^1.2.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/signature-v4": "^2.0.0", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers": { - "version": "3.478.0", + "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/types": { + "version": "3.468.0", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.7.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@smithy/smithy-client": { + "version": "2.4.3", "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-endpoint": "^2.4.5", + "@smithy/middleware-stack": "^2.1.4", + "@smithy/protocol-http": "^3.2.2", + "@smithy/types": "^2.11.0", + "@smithy/util-stream": "^2.1.4", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-ecr": { + "version": "3.478.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ecr/-/client-ecr-3.478.0.tgz", + "integrity": "sha512-FJEFzws30xL+McHx0s4fXIJ1XZsvDncYWNWU1LfLoHdhrTAQX3OXt1BLQ4l2vR5xllUhfS7SUISmuQUgRO7nbw==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.478.0", + "@aws-sdk/core": "3.477.0", + "@aws-sdk/credential-provider-node": "3.478.0", "@aws-sdk/middleware-host-header": "3.468.0", "@aws-sdk/middleware-logger": "3.468.0", "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-signing": "3.468.0", "@aws-sdk/middleware-user-agent": "3.478.0", "@aws-sdk/region-config-resolver": "3.470.0", "@aws-sdk/types": "3.468.0", @@ -537,6 +526,7 @@ "@aws-sdk/util-user-agent-browser": "3.468.0", "@aws-sdk/util-user-agent-node": "3.470.0", "@smithy/config-resolver": "^2.0.21", + "@smithy/core": "^1.2.0", "@smithy/fetch-http-handler": "^2.3.1", "@smithy/hash-node": "^2.0.17", "@smithy/invalid-dependency": "^2.0.15", @@ -547,9 +537,7 @@ "@smithy/middleware-stack": "^2.0.9", "@smithy/node-config-provider": "^2.1.8", "@smithy/node-http-handler": "^2.2.1", - "@smithy/property-provider": "^2.0.0", "@smithy/protocol-http": "^3.0.11", - "@smithy/shared-ini-file-loader": "^2.0.6", "@smithy/smithy-client": "^2.1.18", "@smithy/types": "^2.7.0", "@smithy/url-parser": "^2.0.15", @@ -561,31 +549,22 @@ "@smithy/util-endpoints": "^1.0.7", "@smithy/util-retry": "^2.0.8", "@smithy/util-utf8": "^2.0.2", + "@smithy/util-waiter": "^2.0.15", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@aws-sdk/client-ecr/node_modules/@aws-sdk/core": { + "version": "3.477.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.477.0.tgz", + "integrity": "sha512-o0434EH+d1BxHZvgG7z8vph2SYefciQ5RnJw2MgvETGnthgqsnI4nnNJLSw0FVeqCeS18n6vRtzqlGYR2YPCNg==", "dependencies": { - "@aws-sdk/types": "3.468.0", + "@smithy/core": "^1.2.0", "@smithy/protocol-http": "^3.0.11", + "@smithy/signature-v4": "^2.0.0", + "@smithy/smithy-client": "^2.1.18", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -593,11 +572,11 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/middleware-logger": { + "node_modules/@aws-sdk/client-ecr/node_modules/@aws-sdk/types": { "version": "3.468.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", "dependencies": { - "@aws-sdk/types": "3.468.0", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -605,64 +584,76 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/middleware-signing": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/types": "^2.7.0", - "@smithy/util-middleware": "^2.0.8", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.478.0", + "node_modules/@aws-sdk/client-lambda": { + "version": "3.478.0", "license": "Apache-2.0", "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.478.0", + "@aws-sdk/core": "3.477.0", + "@aws-sdk/credential-provider-node": "3.478.0", + "@aws-sdk/middleware-host-header": "3.468.0", + "@aws-sdk/middleware-logger": "3.468.0", + "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-signing": "3.468.0", + "@aws-sdk/middleware-user-agent": "3.478.0", + "@aws-sdk/region-config-resolver": "3.470.0", "@aws-sdk/types": "3.468.0", "@aws-sdk/util-endpoints": "3.478.0", + "@aws-sdk/util-user-agent-browser": "3.468.0", + "@aws-sdk/util-user-agent-node": "3.470.0", + "@smithy/config-resolver": "^2.0.21", + "@smithy/core": "^1.2.0", + "@smithy/eventstream-serde-browser": "^2.0.15", + "@smithy/eventstream-serde-config-resolver": "^2.0.15", + "@smithy/eventstream-serde-node": "^2.0.15", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/hash-node": "^2.0.17", + "@smithy/invalid-dependency": "^2.0.15", + "@smithy/middleware-content-length": "^2.0.17", + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.24", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/node-http-handler": "^2.2.1", "@smithy/protocol-http": "^3.0.11", + "@smithy/smithy-client": "^2.1.18", "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-base64": "^2.0.1", + "@smithy/util-body-length-browser": "^2.0.1", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.22", + "@smithy/util-defaults-mode-node": "^2.0.29", + "@smithy/util-endpoints": "^1.0.7", + "@smithy/util-retry": "^2.0.8", + "@smithy/util-stream": "^2.0.23", + "@smithy/util-utf8": "^2.0.2", + "@smithy/util-waiter": "^2.0.15", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.470.0", + "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/core": { + "version": "3.477.0", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^2.1.8", + "@smithy/core": "^1.2.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/signature-v4": "^2.0.0", + "@smithy/smithy-client": "^2.1.18", "@smithy/types": "^2.7.0", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.8", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/types": { + "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/types": { "version": "3.468.0", "license": "Apache-2.0", "dependencies": { @@ -673,50 +664,82 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/util-endpoints": { + "node_modules/@aws-sdk/client-rds-data": { "version": "3.478.0", "license": "Apache-2.0", "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.478.0", + "@aws-sdk/core": "3.477.0", + "@aws-sdk/credential-provider-node": "3.478.0", + "@aws-sdk/middleware-host-header": "3.468.0", + "@aws-sdk/middleware-logger": "3.468.0", + "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-signing": "3.468.0", + "@aws-sdk/middleware-user-agent": "3.478.0", + "@aws-sdk/region-config-resolver": "3.470.0", "@aws-sdk/types": "3.468.0", + "@aws-sdk/util-endpoints": "3.478.0", + "@aws-sdk/util-user-agent-browser": "3.468.0", + "@aws-sdk/util-user-agent-node": "3.470.0", + "@smithy/config-resolver": "^2.0.21", + "@smithy/core": "^1.2.0", + "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/hash-node": "^2.0.17", + "@smithy/invalid-dependency": "^2.0.15", + "@smithy/middleware-content-length": "^2.0.17", + "@smithy/middleware-endpoint": "^2.2.3", + "@smithy/middleware-retry": "^2.0.24", + "@smithy/middleware-serde": "^2.0.15", + "@smithy/middleware-stack": "^2.0.9", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/node-http-handler": "^2.2.1", + "@smithy/protocol-http": "^3.0.11", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", + "@smithy/url-parser": "^2.0.15", + "@smithy/util-base64": "^2.0.1", + "@smithy/util-body-length-browser": "^2.0.1", + "@smithy/util-body-length-node": "^2.1.0", + "@smithy/util-defaults-mode-browser": "^2.0.22", + "@smithy/util-defaults-mode-node": "^2.0.29", "@smithy/util-endpoints": "^1.0.7", + "@smithy/util-retry": "^2.0.8", + "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.468.0", + "node_modules/@aws-sdk/client-rds-data/node_modules/@aws-sdk/core": { + "version": "3.477.0", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.468.0", + "@smithy/core": "^1.2.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/signature-v4": "^2.0.0", + "@smithy/smithy-client": "^2.1.18", "@smithy/types": "^2.7.0", - "bowser": "^2.11.0", "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.470.0", + "node_modules/@aws-sdk/client-rds-data/node_modules/@aws-sdk/types": { + "version": "3.468.0", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/node-config-provider": "^2.1.8", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/smithy-client": { + "node_modules/@aws-sdk/client-rds-data/node_modules/@smithy/smithy-client": { "version": "2.4.3", "license": "Apache-2.0", "dependencies": { @@ -731,7 +754,7 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudfront": { + "node_modules/@aws-sdk/client-route-53": { "version": "3.478.0", "license": "Apache-2.0", "dependencies": { @@ -743,6 +766,7 @@ "@aws-sdk/middleware-host-header": "3.468.0", "@aws-sdk/middleware-logger": "3.468.0", "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-sdk-route53": "3.468.0", "@aws-sdk/middleware-signing": "3.468.0", "@aws-sdk/middleware-user-agent": "3.478.0", "@aws-sdk/region-config-resolver": "3.470.0", @@ -774,7 +798,6 @@ "@smithy/util-defaults-mode-node": "^2.0.29", "@smithy/util-endpoints": "^1.0.7", "@smithy/util-retry": "^2.0.8", - "@smithy/util-stream": "^2.0.23", "@smithy/util-utf8": "^2.0.2", "@smithy/util-waiter": "^2.0.15", "fast-xml-parser": "4.2.5", @@ -784,7 +807,7 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/core": { + "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/core": { "version": "3.477.0", "license": "Apache-2.0", "dependencies": { @@ -799,65 +822,10 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.478.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-ini": "3.478.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.478.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", - "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.478.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.478.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", - "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-process": { + "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/types": { "version": "3.468.0", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -865,43 +833,60 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.478.0", + "node_modules/@aws-sdk/client-route-53/node_modules/@smithy/smithy-client": { + "version": "2.4.3", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.478.0", - "@aws-sdk/token-providers": "3.478.0", - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", + "@smithy/middleware-endpoint": "^2.4.5", + "@smithy/middleware-stack": "^2.1.4", + "@smithy/protocol-http": "^3.2.2", + "@smithy/types": "^2.11.0", + "@smithy/util-stream": "^2.1.4", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/client-sso": { + "node_modules/@aws-sdk/client-s3": { "version": "3.478.0", "license": "Apache-2.0", "dependencies": { + "@aws-crypto/sha1-browser": "3.0.0", "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.478.0", "@aws-sdk/core": "3.477.0", + "@aws-sdk/credential-provider-node": "3.478.0", + "@aws-sdk/middleware-bucket-endpoint": "3.470.0", + "@aws-sdk/middleware-expect-continue": "3.468.0", + "@aws-sdk/middleware-flexible-checksums": "3.468.0", "@aws-sdk/middleware-host-header": "3.468.0", + "@aws-sdk/middleware-location-constraint": "3.468.0", "@aws-sdk/middleware-logger": "3.468.0", "@aws-sdk/middleware-recursion-detection": "3.468.0", + "@aws-sdk/middleware-sdk-s3": "3.474.0", + "@aws-sdk/middleware-signing": "3.468.0", + "@aws-sdk/middleware-ssec": "3.468.0", "@aws-sdk/middleware-user-agent": "3.478.0", "@aws-sdk/region-config-resolver": "3.470.0", + "@aws-sdk/signature-v4-multi-region": "3.474.0", "@aws-sdk/types": "3.468.0", "@aws-sdk/util-endpoints": "3.478.0", "@aws-sdk/util-user-agent-browser": "3.468.0", "@aws-sdk/util-user-agent-node": "3.470.0", + "@aws-sdk/xml-builder": "3.472.0", "@smithy/config-resolver": "^2.0.21", "@smithy/core": "^1.2.0", + "@smithy/eventstream-serde-browser": "^2.0.15", + "@smithy/eventstream-serde-config-resolver": "^2.0.15", + "@smithy/eventstream-serde-node": "^2.0.15", "@smithy/fetch-http-handler": "^2.3.1", + "@smithy/hash-blob-browser": "^2.0.16", "@smithy/hash-node": "^2.0.17", + "@smithy/hash-stream-node": "^2.0.17", "@smithy/invalid-dependency": "^2.0.15", + "@smithy/md5-js": "^2.0.17", "@smithy/middleware-content-length": "^2.0.17", "@smithy/middleware-endpoint": "^2.2.3", "@smithy/middleware-retry": "^2.0.24", @@ -920,209 +905,43 @@ "@smithy/util-defaults-mode-node": "^2.0.29", "@smithy/util-endpoints": "^1.0.7", "@smithy/util-retry": "^2.0.8", + "@smithy/util-stream": "^2.0.23", "@smithy/util-utf8": "^2.0.2", + "@smithy/util-waiter": "^2.0.15", + "fast-xml-parser": "4.2.5", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers": { - "version": "3.478.0", + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/core": { + "version": "3.477.0", "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/middleware-logger": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/middleware-signing": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", + "@smithy/core": "^1.2.0", "@smithy/protocol-http": "^3.0.11", "@smithy/signature-v4": "^2.0.0", + "@smithy/smithy-client": "^2.1.18", "@smithy/types": "^2.7.0", - "@smithy/util-middleware": "^2.0.8", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.478.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.470.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^2.1.8", - "@smithy/types": "^2.7.0", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.8", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/types": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/util-endpoints": { - "version": "3.478.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/util-endpoints": "^1.0.7", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/util-user-agent-browser": { + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/types": { "version": "3.468.0", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", - "bowser": "^2.11.0", - "tslib": "^2.5.0" - } - }, - "node_modules/@aws-sdk/client-cloudfront/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.470.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/node-config-provider": "^2.1.8", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } } }, - "node_modules/@aws-sdk/client-cloudfront/node_modules/@smithy/smithy-client": { + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/smithy-client": { "version": "2.4.3", "license": "Apache-2.0", "dependencies": { @@ -1137,7 +956,7 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudwatch-logs": { + "node_modules/@aws-sdk/client-ssm": { "version": "3.478.0", "license": "Apache-2.0", "dependencies": { @@ -1158,9 +977,6 @@ "@aws-sdk/util-user-agent-node": "3.470.0", "@smithy/config-resolver": "^2.0.21", "@smithy/core": "^1.2.0", - "@smithy/eventstream-serde-browser": "^2.0.15", - "@smithy/eventstream-serde-config-resolver": "^2.0.15", - "@smithy/eventstream-serde-node": "^2.0.15", "@smithy/fetch-http-handler": "^2.3.1", "@smithy/hash-node": "^2.0.17", "@smithy/invalid-dependency": "^2.0.15", @@ -1183,6 +999,7 @@ "@smithy/util-endpoints": "^1.0.7", "@smithy/util-retry": "^2.0.8", "@smithy/util-utf8": "^2.0.2", + "@smithy/util-waiter": "^2.0.15", "tslib": "^2.5.0", "uuid": "^8.3.2" }, @@ -1190,7 +1007,7 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/core": { + "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/core": { "version": "3.477.0", "license": "Apache-2.0", "dependencies": { @@ -1205,65 +1022,10 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.478.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-ini": "3.478.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.478.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", - "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.478.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.478.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", - "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-process": { + "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/types": { "version": "3.468.0", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -1271,25 +1033,25 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.478.0", + "node_modules/@aws-sdk/client-ssm/node_modules/@smithy/smithy-client": { + "version": "2.4.3", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.478.0", - "@aws-sdk/token-providers": "3.478.0", - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", + "@smithy/middleware-endpoint": "^2.4.5", + "@smithy/middleware-stack": "^2.1.4", + "@smithy/protocol-http": "^3.2.2", + "@smithy/types": "^2.11.0", + "@smithy/util-stream": "^2.1.4", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/client-sso": { + "node_modules/@aws-sdk/client-sso": { "version": "3.478.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.478.0.tgz", + "integrity": "sha512-Jxy9cE1JMkPR0PklCpq3cORHnZq/Z4klhSTNGgZNeBWovMa+plor52kyh8iUNHKl3XEJvTbHM7V+dvrr/x0P1g==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -1333,12 +1095,42 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers": { + "node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/core": { + "version": "3.477.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.477.0.tgz", + "integrity": "sha512-o0434EH+d1BxHZvgG7z8vph2SYefciQ5RnJw2MgvETGnthgqsnI4nnNJLSw0FVeqCeS18n6vRtzqlGYR2YPCNg==", + "dependencies": { + "@smithy/core": "^1.2.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/signature-v4": "^2.0.0", + "@smithy/smithy-client": "^2.1.18", + "@smithy/types": "^2.7.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/types": { + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", + "dependencies": { + "@smithy/types": "^2.7.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sts": { "version": "3.478.0", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.477.0", + "@aws-sdk/credential-provider-node": "3.478.0", "@aws-sdk/middleware-host-header": "3.468.0", "@aws-sdk/middleware-logger": "3.468.0", "@aws-sdk/middleware-recursion-detection": "3.468.0", @@ -1349,6 +1141,7 @@ "@aws-sdk/util-user-agent-browser": "3.468.0", "@aws-sdk/util-user-agent-node": "3.470.0", "@smithy/config-resolver": "^2.0.21", + "@smithy/core": "^1.2.0", "@smithy/fetch-http-handler": "^2.3.1", "@smithy/hash-node": "^2.0.17", "@smithy/invalid-dependency": "^2.0.15", @@ -1359,9 +1152,7 @@ "@smithy/middleware-stack": "^2.0.9", "@smithy/node-config-provider": "^2.1.8", "@smithy/node-http-handler": "^2.2.1", - "@smithy/property-provider": "^2.0.0", "@smithy/protocol-http": "^3.0.11", - "@smithy/shared-ini-file-loader": "^2.0.6", "@smithy/smithy-client": "^2.1.18", "@smithy/types": "^2.7.0", "@smithy/url-parser": "^2.0.15", @@ -1371,20 +1162,24 @@ "@smithy/util-defaults-mode-browser": "^2.0.22", "@smithy/util-defaults-mode-node": "^2.0.29", "@smithy/util-endpoints": "^1.0.7", + "@smithy/util-middleware": "^2.0.8", "@smithy/util-retry": "^2.0.8", "@smithy/util-utf8": "^2.0.2", + "fast-xml-parser": "4.2.5", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.468.0", + "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/core": { + "version": "3.477.0", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", + "@smithy/core": "^1.2.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/signature-v4": "^2.0.0", + "@smithy/smithy-client": "^2.1.18", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -1392,12 +1187,10 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/middleware-host-header": { + "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/types": { "version": "3.468.0", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -1405,54 +1198,57 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/middleware-logger": { - "version": "3.468.0", + "node_modules/@aws-sdk/core": { + "version": "3.496.0", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", + "@smithy/core": "^1.3.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/signature-v4": "^2.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.468.0", + "node_modules/@aws-sdk/core/node_modules/@smithy/smithy-client": { + "version": "2.4.3", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", + "@smithy/middleware-endpoint": "^2.4.5", + "@smithy/middleware-stack": "^2.1.4", + "@smithy/protocol-http": "^3.2.2", + "@smithy/types": "^2.11.0", + "@smithy/util-stream": "^2.1.4", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/middleware-signing": { + "node_modules/@aws-sdk/credential-provider-env": { "version": "3.468.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.468.0.tgz", + "integrity": "sha512-k/1WHd3KZn0EQYjadooj53FC0z24/e4dUZhbSKTULgmxyO62pwh9v3Brvw4WRa/8o2wTffU/jo54tf4vGuP/ZA==", "dependencies": { "@aws-sdk/types": "3.468.0", "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", "@smithy/types": "^2.7.0", - "@smithy/util-middleware": "^2.0.8", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@aws-sdk/credential-provider-env/node_modules/@aws-sdk/types": { + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@smithy/protocol-http": "^3.0.11", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -1460,23 +1256,30 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.470.0", - "license": "Apache-2.0", + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.478.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.478.0.tgz", + "integrity": "sha512-SsrYEYUvTG9ZoPC+zB19AnVoOKID+QIEHJDIi1GCZXW5kTVyr1saTVm4orG2TjYvbHQMddsWtHOvGYXZWAYMbw==", "dependencies": { - "@smithy/node-config-provider": "^2.1.8", + "@aws-sdk/credential-provider-env": "3.468.0", + "@aws-sdk/credential-provider-process": "3.468.0", + "@aws-sdk/credential-provider-sso": "3.478.0", + "@aws-sdk/credential-provider-web-identity": "3.468.0", + "@aws-sdk/types": "3.468.0", + "@smithy/credential-provider-imds": "^2.0.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/shared-ini-file-loader": "^2.0.6", "@smithy/types": "^2.7.0", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.8", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/types": { + "node_modules/@aws-sdk/credential-provider-ini/node_modules/@aws-sdk/types": { "version": "3.468.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", "dependencies": { "@smithy/types": "^2.7.0", "tslib": "^2.5.0" @@ -1485,126 +1288,88 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/util-endpoints": { + "node_modules/@aws-sdk/credential-provider-node": { "version": "3.478.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.478.0.tgz", + "integrity": "sha512-nwDutJYeHiIZCQDgKIUrsgwAWTil0mNe+cbd+j8fi+wwxkWUzip+F0+z02molJ8WrUUKNRhqB1V5aVx7IranuA==", "dependencies": { + "@aws-sdk/credential-provider-env": "3.468.0", + "@aws-sdk/credential-provider-ini": "3.478.0", + "@aws-sdk/credential-provider-process": "3.468.0", + "@aws-sdk/credential-provider-sso": "3.478.0", + "@aws-sdk/credential-provider-web-identity": "3.468.0", "@aws-sdk/types": "3.468.0", - "@smithy/util-endpoints": "^1.0.7", + "@smithy/credential-provider-imds": "^2.0.0", + "@smithy/property-provider": "^2.0.0", + "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/util-user-agent-browser": { + "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/types": { "version": "3.468.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", "dependencies": { - "@aws-sdk/types": "3.468.0", "@smithy/types": "^2.7.0", - "bowser": "^2.11.0", "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.470.0", - "license": "Apache-2.0", + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.468.0.tgz", + "integrity": "sha512-OYSn1A/UsyPJ7Z8Q2cNhTf55O36shPmSsvOfND04nSfu1nPaR+VUvvsP7v+brhGpwC/GAKTIdGAo4blH31BS6A==", "dependencies": { "@aws-sdk/types": "3.468.0", - "@smithy/node-config-provider": "^2.1.8", + "@smithy/property-provider": "^2.0.0", + "@smithy/shared-ini-file-loader": "^2.0.6", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } } }, - "node_modules/@aws-sdk/client-cloudwatch-logs/node_modules/@smithy/smithy-client": { - "version": "2.4.3", - "license": "Apache-2.0", + "node_modules/@aws-sdk/credential-provider-process/node_modules/@aws-sdk/types": { + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", "dependencies": { - "@smithy/middleware-endpoint": "^2.4.5", - "@smithy/middleware-stack": "^2.1.4", - "@smithy/protocol-http": "^3.2.2", - "@smithy/types": "^2.11.0", - "@smithy/util-stream": "^2.1.4", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda": { + "node_modules/@aws-sdk/credential-provider-sso": { "version": "3.478.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.478.0.tgz", + "integrity": "sha512-LsDShG51X/q+s5ZFN7kHVqrd8ZHdyEyHqdhoocmRvvw2Dif50M0AqQfvCrW1ndj5CNzXO4x/eH8EK5ZOVlS6Sg==", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.478.0", - "@aws-sdk/core": "3.477.0", - "@aws-sdk/credential-provider-node": "3.478.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-signing": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", + "@aws-sdk/client-sso": "3.478.0", + "@aws-sdk/token-providers": "3.478.0", "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/core": "^1.2.0", - "@smithy/eventstream-serde-browser": "^2.0.15", - "@smithy/eventstream-serde-config-resolver": "^2.0.15", - "@smithy/eventstream-serde-node": "^2.0.15", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.1.18", + "@smithy/property-provider": "^2.0.0", + "@smithy/shared-ini-file-loader": "^2.0.6", "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-stream": "^2.0.23", - "@smithy/util-utf8": "^2.0.2", - "@smithy/util-waiter": "^2.0.15", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/core": { - "version": "3.477.0", - "license": "Apache-2.0", + "node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/types": { + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", "dependencies": { - "@smithy/core": "^1.2.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/smithy-client": "^2.1.18", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -1612,19 +1377,13 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.468.0.tgz", + "integrity": "sha512-rexymPmXjtkwCPfhnUq3EjO1rSkf39R4Jz9CqiM7OsqK2qlT5Y/V3gnMKn0ZMXsYaQOMfM3cT5xly5R+OKDHlw==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-ini": "3.478.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.478.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -1632,31 +1391,38 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-env": { + "node_modules/@aws-sdk/credential-provider-web-identity/node_modules/@aws-sdk/types": { "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", + "dependencies": { + "@smithy/types": "^2.7.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.470.0", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", + "@aws-sdk/util-arn-parser": "3.465.0", + "@smithy/node-config-provider": "^2.1.8", + "@smithy/protocol-http": "^3.0.11", "@smithy/types": "^2.7.0", + "@smithy/util-config-provider": "^2.0.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.478.0", + "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@aws-sdk/types": { + "version": "3.468.0", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.478.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", - "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -1664,13 +1430,12 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-process": { + "node_modules/@aws-sdk/middleware-expect-continue": { "version": "3.468.0", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", + "@smithy/protocol-http": "^3.0.11", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -1678,15 +1443,10 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.478.0", + "node_modules/@aws-sdk/middleware-expect-continue/node_modules/@aws-sdk/types": { + "version": "3.468.0", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.478.0", - "@aws-sdk/token-providers": "3.478.0", - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -1694,45 +1454,16 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/client-sso": { - "version": "3.478.0", + "node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.468.0", "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.477.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", + "@aws-crypto/crc32": "3.0.0", + "@aws-crypto/crc32c": "3.0.0", "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/core": "^1.2.0", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", + "@smithy/is-array-buffer": "^2.0.0", "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.1.18", "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" }, @@ -1740,58 +1471,24 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers": { - "version": "3.478.0", + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@aws-sdk/types": { + "version": "3.468.0", "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/smithy-client": "^2.1.18", "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-web-identity": { + "node_modules/@aws-sdk/middleware-host-header": { "version": "3.468.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.468.0.tgz", + "integrity": "sha512-gwQ+/QhX+lhof304r6zbZ/V5l5cjhGRxLL3CjH1uJPMcOAbw9wUlMdl+ibr8UwBZ5elfKFGiB1cdW/0uMchw0w==", "dependencies": { "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", + "@smithy/protocol-http": "^3.0.11", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -1799,12 +1496,11 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/middleware-host-header": { + "node_modules/@aws-sdk/middleware-host-header/node_modules/@aws-sdk/types": { "version": "3.468.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -1812,7 +1508,7 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/middleware-logger": { + "node_modules/@aws-sdk/middleware-location-constraint": { "version": "3.468.0", "license": "Apache-2.0", "dependencies": { @@ -1824,12 +1520,10 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/middleware-recursion-detection": { + "node_modules/@aws-sdk/middleware-location-constraint/node_modules/@aws-sdk/types": { "version": "3.468.0", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -1837,28 +1531,37 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/middleware-signing": { + "node_modules/@aws-sdk/middleware-logger": { "version": "3.468.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.468.0.tgz", + "integrity": "sha512-X5XHKV7DHRXI3f29SAhJPe/OxWRFgDWDMMCALfzhmJfCi6Jfh0M14cJKoC+nl+dk9lB+36+jKjhjETZaL2bPlA==", "dependencies": { "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", "@smithy/types": "^2.7.0", - "@smithy/util-middleware": "^2.0.8", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@aws-sdk/middleware-logger/node_modules/@aws-sdk/types": { + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", + "dependencies": { + "@smithy/types": "^2.7.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.468.0.tgz", + "integrity": "sha512-vch9IQib2Ng9ucSyRW2eKNQXHUPb5jUPCLA5otTW/8nGjcOU37LxQG4WrxO7uaJ9Oe8hjHO+hViE3P0KISUhtA==", "dependencies": { "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", "@smithy/protocol-http": "^3.0.11", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" @@ -1867,131 +1570,140 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.470.0", - "license": "Apache-2.0", + "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/@aws-sdk/types": { + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", "dependencies": { - "@smithy/node-config-provider": "^2.1.8", "@smithy/types": "^2.7.0", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.8", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/types": { - "version": "3.468.0", + "node_modules/@aws-sdk/middleware-retry": { + "version": "3.374.0", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^2.7.0", + "@smithy/middleware-retry": "^1.0.3", + "tslib": "^2.5.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-retry/node_modules/@smithy/middleware-retry": { + "version": "1.1.0", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^1.2.0", + "@smithy/service-error-classification": "^1.1.0", + "@smithy/types": "^1.2.0", + "@smithy/util-middleware": "^1.1.0", + "@smithy/util-retry": "^1.1.0", + "tslib": "^2.5.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-retry/node_modules/@smithy/middleware-retry/node_modules/@smithy/protocol-http": { + "version": "1.2.0", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^1.2.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/util-endpoints": { - "version": "3.478.0", + "node_modules/@aws-sdk/middleware-retry/node_modules/@smithy/middleware-retry/node_modules/@smithy/service-error-classification": { + "version": "1.1.0", + "license": "Apache-2.0", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-retry/node_modules/@smithy/middleware-retry/node_modules/@smithy/types": { + "version": "1.2.0", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-retry/node_modules/@smithy/middleware-retry/node_modules/@smithy/util-middleware": { + "version": "1.1.0", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/util-endpoints": "^1.0.7", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/util-user-agent-browser": { + "node_modules/@aws-sdk/middleware-retry/node_modules/@smithy/middleware-retry/node_modules/@smithy/util-retry": { + "version": "1.1.0", + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^1.1.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-route53": { "version": "3.468.0", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.468.0", "@smithy/types": "^2.7.0", - "bowser": "^2.11.0", "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.470.0", + "node_modules/@aws-sdk/middleware-sdk-route53/node_modules/@aws-sdk/types": { + "version": "3.468.0", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/node-config-provider": "^2.1.8", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } } }, - "node_modules/@aws-sdk/client-rds-data": { - "version": "3.478.0", + "node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.474.0", "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.478.0", - "@aws-sdk/core": "3.477.0", - "@aws-sdk/credential-provider-node": "3.478.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-signing": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/core": "^1.2.0", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", + "@aws-sdk/util-arn-parser": "3.465.0", "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", "@smithy/protocol-http": "^3.0.11", + "@smithy/signature-v4": "^2.0.0", "@smithy/smithy-client": "^2.1.18", "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", + "@smithy/util-config-provider": "^2.0.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-rds-data/node_modules/@aws-sdk/core": { - "version": "3.477.0", + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@aws-sdk/types": { + "version": "3.468.0", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^1.2.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/smithy-client": "^2.1.18", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -1999,51 +1711,43 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-rds-data/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.478.0", + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/smithy-client": { + "version": "2.4.3", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-ini": "3.478.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.478.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", - "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", + "@smithy/middleware-endpoint": "^2.4.5", + "@smithy/middleware-stack": "^2.1.4", + "@smithy/protocol-http": "^3.2.2", + "@smithy/types": "^2.11.0", + "@smithy/util-stream": "^2.1.4", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-rds-data/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-env": { + "node_modules/@aws-sdk/middleware-signing": { "version": "3.468.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.468.0.tgz", + "integrity": "sha512-s+7fSB1gdnnTj5O0aCCarX3z5Vppop8kazbNSZADdkfHIDWCN80IH4ZNjY3OWqaAz0HmR4LNNrovdR304ojb4Q==", "dependencies": { "@aws-sdk/types": "3.468.0", "@smithy/property-provider": "^2.0.0", + "@smithy/protocol-http": "^3.0.11", + "@smithy/signature-v4": "^2.0.0", "@smithy/types": "^2.7.0", + "@smithy/util-middleware": "^2.0.8", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-rds-data/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@aws-sdk/middleware-signing/node_modules/@aws-sdk/types": { + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.478.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", - "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -2051,13 +1755,11 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-rds-data/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-process": { + "node_modules/@aws-sdk/middleware-ssec": { "version": "3.468.0", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -2065,15 +1767,10 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-rds-data/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.478.0", + "node_modules/@aws-sdk/middleware-ssec/node_modules/@aws-sdk/types": { + "version": "3.468.0", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.478.0", - "@aws-sdk/token-providers": "3.478.0", - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -2081,55 +1778,78 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-rds-data/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/client-sso": { + "node_modules/@aws-sdk/middleware-user-agent": { "version": "3.478.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.478.0.tgz", + "integrity": "sha512-Rec+nAPIzzwxgHPW+xqY6tooJGFOytpYg/xSRv8/IXl3xKGhmpMGs6gDWzmMBv/qy5nKTvLph/csNWJ98GWXCw==", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.477.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", "@aws-sdk/types": "3.468.0", "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/core": "^1.2.0", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", + "@smithy/protocol-http": "^3.0.11", + "@smithy/types": "^2.7.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent/node_modules/@aws-sdk/types": { + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", + "dependencies": { + "@smithy/types": "^2.7.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.470.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.470.0.tgz", + "integrity": "sha512-C1o1J06iIw8cyAAOvHqT4Bbqf+PgQ/RDlSyjt2gFfP2OovDpc2o2S90dE8f8iZdSGpg70N5MikT1DBhW9NbhtQ==", + "dependencies": { "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", + "@smithy/types": "^2.7.0", + "@smithy/util-config-provider": "^2.0.0", + "@smithy/util-middleware": "^2.0.8", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.474.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-sdk-s3": "3.474.0", + "@aws-sdk/types": "3.468.0", "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.1.18", + "@smithy/signature-v4": "^2.0.0", "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-rds-data/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers": { - "version": "3.478.0", + "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@aws-sdk/types": { + "version": "3.468.0", "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.7.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.478.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.478.0.tgz", + "integrity": "sha512-7b5tj1y/wGHZIZ+ckjOUKgKrMuCJMF/G1UKZKIqqdekeEsjcThbvoxAMeY0FEowu2ODVk/ggOmpBFxcu0iYd6A==", "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", @@ -2173,12 +1893,11 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-rds-data/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-web-identity": { + "node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types": { "version": "3.468.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -2186,91 +1905,77 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-rds-data/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.468.0", + "node_modules/@aws-sdk/types": { + "version": "3.496.0", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", + "@smithy/types": "^2.9.1", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-rds-data/node_modules/@aws-sdk/middleware-logger": { - "version": "3.468.0", + "node_modules/@aws-sdk/util-arn-parser": { + "version": "3.465.0", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-rds-data/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.478.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.478.0.tgz", + "integrity": "sha512-u9Mcg3euGJGs5clPt9mBuhBjHiEKiD0PnfvArhfq9i+dcY5mbCq/i1Dezp3iv1fZH9xxQt7hPXDfSpt1yUSM6g==", "dependencies": { "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", + "@smithy/util-endpoints": "^1.0.7", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-rds-data/node_modules/@aws-sdk/middleware-signing": { + "node_modules/@aws-sdk/util-endpoints/node_modules/@aws-sdk/types": { "version": "3.468.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", "@smithy/types": "^2.7.0", - "@smithy/util-middleware": "^2.0.8", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-rds-data/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.478.0", + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.495.0", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-rds-data/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.470.0", - "license": "Apache-2.0", + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.468.0.tgz", + "integrity": "sha512-OJyhWWsDEizR3L+dCgMXSUmaCywkiZ7HSbnQytbeKGwokIhD69HTiJcibF/sgcM5gk4k3Mq3puUhGnEZ46GIig==", "dependencies": { - "@smithy/node-config-provider": "^2.1.8", + "@aws-sdk/types": "3.468.0", "@smithy/types": "^2.7.0", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.8", + "bowser": "^2.11.0", "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-rds-data/node_modules/@aws-sdk/types": { + "node_modules/@aws-sdk/util-user-agent-browser/node_modules/@aws-sdk/types": { "version": "3.468.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", "dependencies": { "@smithy/types": "^2.7.0", "tslib": "^2.5.0" @@ -2279,31 +1984,10 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-rds-data/node_modules/@aws-sdk/util-endpoints": { - "version": "3.478.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/util-endpoints": "^1.0.7", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-rds-data/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", - "bowser": "^2.11.0", - "tslib": "^2.5.0" - } - }, - "node_modules/@aws-sdk/client-rds-data/node_modules/@aws-sdk/util-user-agent-node": { + "node_modules/@aws-sdk/util-user-agent-node": { "version": "3.470.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.470.0.tgz", + "integrity": "sha512-QxsZ9iVHcBB/XRdYvwfM5AMvNp58HfqkIrH88mY0cmxuvtlIGDfWjczdDrZMJk9y0vIq+cuoCHsGXHu7PyiEAQ==", "dependencies": { "@aws-sdk/types": "3.468.0", "@smithy/node-config-provider": "^2.1.8", @@ -2322,82 +2006,29 @@ } } }, - "node_modules/@aws-sdk/client-rds-data/node_modules/@smithy/smithy-client": { - "version": "2.4.3", - "license": "Apache-2.0", + "node_modules/@aws-sdk/util-user-agent-node/node_modules/@aws-sdk/types": { + "version": "3.468.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.468.0.tgz", + "integrity": "sha512-rx/9uHI4inRbp2tw3Y4Ih4PNZkVj32h7WneSg3MVgVjAoVD5Zti9KhS5hkvsBxfgmQmg0AQbE+b1sy5WGAgntA==", "dependencies": { - "@smithy/middleware-endpoint": "^2.4.5", - "@smithy/middleware-stack": "^2.1.4", - "@smithy/protocol-http": "^3.2.2", - "@smithy/types": "^2.11.0", - "@smithy/util-stream": "^2.1.4", + "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-route-53": { - "version": "3.478.0", + "node_modules/@aws-sdk/util-utf8-browser": { + "version": "3.259.0", "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.478.0", - "@aws-sdk/core": "3.477.0", - "@aws-sdk/credential-provider-node": "3.478.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-sdk-route53": "3.468.0", - "@aws-sdk/middleware-signing": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@aws-sdk/xml-builder": "3.472.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/core": "^1.2.0", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", - "@smithy/util-waiter": "^2.0.15", - "fast-xml-parser": "4.2.5", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" + "tslib": "^2.3.1" } }, - "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/core": { - "version": "3.477.0", + "node_modules/@aws-sdk/xml-builder": { + "version": "3.472.0", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^1.2.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/smithy-client": "^2.1.18", "@smithy/types": "^2.7.0", "tslib": "^2.5.0" }, @@ -2405,10589 +2036,9725 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@babel/code-frame": { + "version": "7.24.2", + "license": "MIT", "dependencies": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-ini": "3.478.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.478.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", - "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "node_modules/@babel/compat-data": { + "version": "7.24.4", + "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@babel/core": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", + "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.478.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", - "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.24.5", + "@babel/helpers": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "node": ">=6.9.0" }, - "engines": { - "node": ">=14.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", + "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", "dependencies": { - "@aws-sdk/client-sso": "3.478.0", - "@aws-sdk/token-providers": "3.478.0", - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@babel/types": "^7.24.5", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/client-sso": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "license": "MIT", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.477.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/core": "^1.2.0", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@babel/types": "^7.22.5" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "license": "MIT", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "license": "ISC", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache/node_modules/yallist": { + "version": "3.1.1", + "license": "ISC" + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/middleware-logger": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@babel/types": "^7.22.5" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@babel/helper-module-imports": { + "version": "7.24.3", + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@babel/types": "^7.24.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/middleware-signing": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", + "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/types": "^2.7.0", - "@smithy/util-middleware": "^2.0.8", - "tslib": "^2.5.0" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-simple-access": "^7.24.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.5" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.478.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.0", + "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.470.0", - "license": "Apache-2.0", + "node_modules/@babel/helper-simple-access": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", + "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", "dependencies": { - "@smithy/node-config-provider": "^2.1.8", - "@smithy/types": "^2.7.0", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.8", - "tslib": "^2.5.0" + "@babel/types": "^7.24.5" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/types": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", + "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@babel/types": "^7.24.5" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/util-endpoints": { - "version": "3.478.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/util-endpoints": "^1.0.7", - "tslib": "^2.5.0" - }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.1", + "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", - "bowser": "^2.11.0", - "tslib": "^2.5.0" + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-route-53/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.470.0", - "license": "Apache-2.0", + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", + "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-route-53/node_modules/@smithy/smithy-client": { - "version": "2.4.3", - "license": "Apache-2.0", + "node_modules/@babel/highlight": { + "version": "7.24.2", + "license": "MIT", "dependencies": { - "@smithy/middleware-endpoint": "^2.4.5", - "@smithy/middleware-stack": "^2.1.4", - "@smithy/protocol-http": "^3.2.2", - "@smithy/types": "^2.11.0", - "@smithy/util-stream": "^2.1.4", - "tslib": "^2.5.0" + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-s3": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "license": "MIT", "dependencies": { - "@aws-crypto/sha1-browser": "3.0.0", - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.478.0", - "@aws-sdk/core": "3.477.0", - "@aws-sdk/credential-provider-node": "3.478.0", - "@aws-sdk/middleware-bucket-endpoint": "3.470.0", - "@aws-sdk/middleware-expect-continue": "3.468.0", - "@aws-sdk/middleware-flexible-checksums": "3.468.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-location-constraint": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-sdk-s3": "3.474.0", - "@aws-sdk/middleware-signing": "3.468.0", - "@aws-sdk/middleware-ssec": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", - "@aws-sdk/signature-v4-multi-region": "3.474.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@aws-sdk/xml-builder": "3.472.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/core": "^1.2.0", - "@smithy/eventstream-serde-browser": "^2.0.15", - "@smithy/eventstream-serde-config-resolver": "^2.0.15", - "@smithy/eventstream-serde-node": "^2.0.15", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-blob-browser": "^2.0.16", - "@smithy/hash-node": "^2.0.17", - "@smithy/hash-stream-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/md5-js": "^2.0.17", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-stream": "^2.0.23", - "@smithy/util-utf8": "^2.0.2", - "@smithy/util-waiter": "^2.0.15", - "fast-xml-parser": "4.2.5", - "tslib": "^2.5.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=4" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/core": { - "version": "3.477.0", - "license": "Apache-2.0", + "node_modules/@babel/highlight/node_modules/chalk/node_modules/ansi-styles": { + "version": "3.2.1", + "license": "MIT", "dependencies": { - "@smithy/core": "^1.2.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=4" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@babel/highlight/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert": { + "version": "1.9.3", + "license": "MIT", "dependencies": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-ini": "3.478.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.478.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", - "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert/node_modules/color-name": { + "version": "1.1.3", + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/chalk/node_modules/escape-string-regexp": { + "version": "1.0.5", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/js-tokens": { + "version": "4.0.0", + "license": "MIT" + }, + "node_modules/@babel/parser": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.1", + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.23.4", + "license": "MIT", "dependencies": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.478.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", - "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@babel/template": { + "version": "7.24.0", + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@babel/traverse": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", + "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", "dependencies": { - "@aws-sdk/client-sso": "3.478.0", - "@aws-sdk/token-providers": "3.478.0", - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/types": "^7.24.5", + "debug": "^4.3.1", + "globals": "^11.1.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/client-sso": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@babel/types": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", + "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.477.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/core": "^1.2.0", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@babel/helper-string-parser": "^7.24.1", + "@babel/helper-validator-identifier": "^7.24.5", + "to-fast-properties": "^2.0.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@emmetio/abbreviation": { + "version": "2.3.3", + "license": "MIT", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" + "@emmetio/scanner": "^1.0.4" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@emmetio/css-abbreviation": { + "version": "2.1.8", + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "@emmetio/scanner": "^1.0.4" + } + }, + "node_modules/@emmetio/scanner": { + "version": "1.0.4", + "license": "MIT" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "node_modules/@esbuild/android-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-logger": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "node_modules/@esbuild/android-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "node_modules/@esbuild/android-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-signing": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/types": "^2.7.0", - "@smithy/util-middleware": "^2.0.8", - "tslib": "^2.5.0" - }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.478.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.470.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^2.1.8", - "@smithy/types": "^2.7.0", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.8", - "tslib": "^2.5.0" - }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/types": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-endpoints": { - "version": "3.478.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/util-endpoints": "^1.0.7", - "tslib": "^2.5.0" - }, + "node_modules/@esbuild/linux-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", - "bowser": "^2.11.0", - "tslib": "^2.5.0" + "node_modules/@esbuild/linux-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.470.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } + "node": ">=12" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@smithy/smithy-client": { - "version": "2.4.3", - "license": "Apache-2.0", - "dependencies": { - "@smithy/middleware-endpoint": "^2.4.5", - "@smithy/middleware-stack": "^2.1.4", - "@smithy/protocol-http": "^3.2.2", - "@smithy/types": "^2.11.0", - "@smithy/util-stream": "^2.1.4", - "tslib": "^2.5.0" - }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/client-ssm": { - "version": "3.478.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.478.0", - "@aws-sdk/core": "3.477.0", - "@aws-sdk/credential-provider-node": "3.478.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-signing": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/core": "^1.2.0", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", - "@smithy/util-waiter": "^2.0.15", - "tslib": "^2.5.0", - "uuid": "^8.3.2" - }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/core": { - "version": "3.477.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^1.2.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.478.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-ini": "3.478.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.478.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", - "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.478.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.478.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", - "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.10", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.478.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/client-sso": "3.478.0", - "@aws-sdk/token-providers": "3.478.0", - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/client-sso": { - "version": "3.478.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.477.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/core": "^1.2.0", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" - }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers": { - "version": "3.478.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" - }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "node_modules/@esbuild/win32-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-logger": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": ">=14" } }, - "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } + "node_modules/@fontsource-variable/roboto-mono": { + "version": "5.0.18", + "license": "Apache-2.0" }, - "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-signing": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/types": "^2.7.0", - "@smithy/util-middleware": "^2.0.8", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } + "node_modules/@fontsource-variable/rubik": { + "version": "5.0.21", + "license": "OFL-1.1" }, - "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.478.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } + "node_modules/@fontsource/ibm-plex-mono": { + "version": "5.0.12", + "license": "OFL-1.1" }, - "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.470.0", + "node_modules/@grpc/grpc-js": { + "version": "1.10.6", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^2.1.8", - "@smithy/types": "^2.7.0", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.8", - "tslib": "^2.5.0" + "@grpc/proto-loader": "^0.7.10", + "@js-sdsl/ordered-map": "^4.4.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=12.10.0" } }, - "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/types": { - "version": "3.468.0", + "node_modules/@grpc/proto-loader": { + "version": "0.7.12", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.4", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" }, "engines": { - "node": ">=14.0.0" + "node": ">=6" } }, - "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-endpoints": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@httptoolkit/websocket-stream": { + "version": "6.0.1", + "license": "BSD-2-Clause", + "optional": true, + "peer": true, "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/util-endpoints": "^1.0.7", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" + "@types/ws": "*", + "duplexify": "^3.5.1", + "inherits": "^2.0.1", + "isomorphic-ws": "^4.0.1", + "readable-stream": "^2.3.3", + "safe-buffer": "^5.1.2", + "ws": "*", + "xtend": "^4.0.0" } }, - "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@httptoolkit/websocket-stream/node_modules/readable-stream": { + "version": "2.3.8", + "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", - "bowser": "^2.11.0", - "tslib": "^2.5.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.470.0", - "license": "Apache-2.0", + "node_modules/@httptoolkit/websocket-stream/node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/@httptoolkit/websocket-stream/node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } + "safe-buffer": "~5.1.0" } }, - "node_modules/@aws-sdk/client-ssm/node_modules/@smithy/smithy-client": { - "version": "2.4.3", - "license": "Apache-2.0", - "dependencies": { - "@smithy/middleware-endpoint": "^2.4.5", - "@smithy/middleware-stack": "^2.1.4", - "@smithy/protocol-http": "^3.2.2", - "@smithy/types": "^2.11.0", - "@smithy/util-stream": "^2.1.4", - "tslib": "^2.5.0" + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.2", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.26", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.2", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14.0.0" + "musl": ">=1.2.2", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@aws-sdk/client-sts": { - "version": "3.478.0", + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.3", + "cpu": [ + "x64" + ], "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.477.0", - "@aws-sdk/credential-provider-node": "3.478.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/core": "^1.2.0", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-middleware": "^2.0.8", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", - "fast-xml-parser": "4.2.5", - "tslib": "^2.5.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14.0.0" + "glibc": ">=2.26", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.2" } }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/core": { - "version": "3.477.0", + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.3", + "cpu": [ + "x64" + ], "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^1.2.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14.0.0" + "musl": ">=1.2.2", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.2" } }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "license": "ISC", "dependencies": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-ini": "3.478.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.478.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", - "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=12" } }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@isaacs/cliui/node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "license": "MIT", "dependencies": { - "@aws-sdk/credential-provider-env": "3.468.0", - "@aws-sdk/credential-provider-process": "3.468.0", - "@aws-sdk/credential-provider-sso": "3.478.0", - "@aws-sdk/credential-provider-web-identity": "3.468.0", - "@aws-sdk/types": "3.468.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=8" } }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@isaacs/cliui/node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=8" } }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@isaacs/cliui/node_modules/string-width-cjs/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@isaacs/cliui/node_modules/string-width/node_modules/emoji-regex": { + "version": "9.2.2", + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "license": "MIT", "dependencies": { - "@aws-sdk/client-sso": "3.478.0", - "@aws-sdk/token-providers": "3.478.0", - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=8" } }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/client-sso": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@isaacs/cliui/node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "license": "MIT", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.477.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/core": "^1.2.0", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/protocol-http": "^3.0.11", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@isaacs/cliui/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.468.0", - "@aws-sdk/middleware-logger": "3.468.0", - "@aws-sdk/middleware-recursion-detection": "3.468.0", - "@aws-sdk/middleware-user-agent": "3.478.0", - "@aws-sdk/region-config-resolver": "3.470.0", - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@aws-sdk/util-user-agent-browser": "3.468.0", - "@aws-sdk/util-user-agent-node": "3.470.0", - "@smithy/config-resolver": "^2.0.21", - "@smithy/fetch-http-handler": "^2.3.1", - "@smithy/hash-node": "^2.0.17", - "@smithy/invalid-dependency": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.17", - "@smithy/middleware-endpoint": "^2.2.3", - "@smithy/middleware-retry": "^2.0.24", - "@smithy/middleware-serde": "^2.0.15", - "@smithy/middleware-stack": "^2.0.9", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/node-http-handler": "^2.2.1", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/url-parser": "^2.0.15", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.1", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.22", - "@smithy/util-defaults-mode-node": "^2.0.29", - "@smithy/util-endpoints": "^1.0.7", - "@smithy/util-retry": "^2.0.8", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@isaacs/cliui/node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=8" } }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@isaacs/cliui/node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=8" } }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/middleware-logger": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi-cjs/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": ">=8" } }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "license": "ISC" + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@sinclair/typebox": "^0.27.8" }, "engines": { - "node": ">=14.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-endpoints": "3.478.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.0.0" } }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.470.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^2.1.8", - "@smithy/types": "^2.7.0", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.8", - "tslib": "^2.5.0" - }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": ">=6.0.0" } }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/types": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": ">=6.0.0" } }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/util-endpoints": { - "version": "3.478.0", - "license": "Apache-2.0", + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/util-endpoints": "^1.0.7", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", - "bowser": "^2.11.0", - "tslib": "^2.5.0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.470.0", - "license": "Apache-2.0", + "node_modules/@js-sdsl/ordered-map": { + "version": "4.4.2", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/@logdna/tail-file": { + "version": "2.2.0", + "license": "SEE LICENSE IN LICENSE", + "engines": { + "node": ">=10.3.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } + "node": ">= 8" } }, - "node_modules/@aws-sdk/core": { - "version": "3.496.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^1.3.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/signature-v4": "^2.1.1", - "@smithy/smithy-client": "^2.3.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": ">= 8" } }, - "node_modules/@aws-sdk/core/node_modules/@smithy/smithy-client": { - "version": "2.4.3", - "dev": true, - "license": "Apache-2.0", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "license": "MIT", "dependencies": { - "@smithy/middleware-endpoint": "^2.4.5", - "@smithy/middleware-stack": "^2.1.4", - "@smithy/protocol-http": "^3.2.2", - "@smithy/types": "^2.11.0", - "@smithy/util-stream": "^2.1.4", - "tslib": "^2.5.0" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=14.0.0" + "node": ">= 8" } }, - "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.470.0", - "license": "Apache-2.0", + "node_modules/@npmcli/agent": { + "version": "2.2.2", + "license": "ISC", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-arn-parser": "3.465.0", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "@smithy/util-config-provider": "^2.0.0", - "tslib": "^2.5.0" + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" }, "engines": { - "node": ">=14.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@aws-sdk/types": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "10.2.0", + "license": "ISC", "engines": { - "node": ">=14.0.0" + "node": "14 || >=16.14" } }, - "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@npmcli/arborist": { + "version": "7.4.1", + "license": "ISC", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^3.1.0", + "@npmcli/installed-package-contents": "^2.0.2", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/metavuln-calculator": "^7.0.0", + "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/query": "^3.1.0", + "@npmcli/run-script": "^7.0.2", + "bin-links": "^4.0.1", + "cacache": "^18.0.0", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^7.0.1", + "json-parse-even-better-errors": "^3.0.0", + "json-stringify-nice": "^1.1.4", + "minimatch": "^9.0.4", + "nopt": "^7.0.0", + "npm-install-checks": "^6.2.0", + "npm-package-arg": "^11.0.1", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^16.2.0", + "npmlog": "^7.0.1", + "pacote": "^17.0.4", + "parse-conflict-json": "^3.0.0", + "proc-log": "^3.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^3.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^10.0.5", + "treeverse": "^3.0.0", + "walk-up-path": "^3.0.1" + }, + "bin": { + "arborist": "bin/index.js" }, "engines": { - "node": ">=14.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@aws-sdk/middleware-expect-continue/node_modules/@aws-sdk/types": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@npmcli/fs": { + "version": "3.1.0", + "license": "ISC", "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "semver": "^7.3.5" }, "engines": { - "node": ">=14.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@npmcli/git": { + "version": "5.0.4", + "license": "ISC", "dependencies": { - "@aws-crypto/crc32": "3.0.0", - "@aws-crypto/crc32c": "3.0.0", - "@aws-sdk/types": "3.468.0", - "@smithy/is-array-buffer": "^2.0.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/types": "^2.7.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" + "@npmcli/promise-spawn": "^7.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^4.0.0" }, "engines": { - "node": ">=14.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@aws-sdk/types": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "10.2.0", + "license": "ISC", "engines": { - "node": ">=14.0.0" + "node": "14 || >=16.14" } }, - "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@npmcli/git/node_modules/which": { + "version": "4.0.0", + "license": "ISC", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" }, "engines": { - "node": ">=14.0.0" + "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/@aws-sdk/middleware-location-constraint/node_modules/@aws-sdk/types": { - "version": "3.468.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, + "node_modules/@npmcli/git/node_modules/which/node_modules/isexe": { + "version": "3.1.1", + "license": "ISC", "engines": { - "node": ">=14.0.0" + "node": ">=16" } }, - "node_modules/@aws-sdk/middleware-retry": { - "version": "3.374.0", - "license": "Apache-2.0", + "node_modules/@npmcli/installed-package-contents": { + "version": "2.0.2", + "license": "ISC", "dependencies": { - "@smithy/middleware-retry": "^1.0.3", - "tslib": "^2.5.0", - "uuid": "^8.3.2" + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "lib/index.js" }, "engines": { - "node": ">=14.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@aws-sdk/middleware-retry/node_modules/@smithy/middleware-retry": { - "version": "1.1.0", - "license": "Apache-2.0", + "node_modules/@npmcli/map-workspaces": { + "version": "3.0.4", + "license": "ISC", "dependencies": { - "@smithy/protocol-http": "^1.2.0", - "@smithy/service-error-classification": "^1.1.0", - "@smithy/types": "^1.2.0", - "@smithy/util-middleware": "^1.1.0", - "@smithy/util-retry": "^1.1.0", - "tslib": "^2.5.0", - "uuid": "^8.3.2" + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0", + "read-package-json-fast": "^3.0.0" }, "engines": { - "node": ">=14.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@aws-sdk/middleware-retry/node_modules/@smithy/middleware-retry/node_modules/@smithy/protocol-http": { - "version": "1.2.0", - "license": "Apache-2.0", + "node_modules/@npmcli/metavuln-calculator": { + "version": "7.0.0", + "license": "ISC", "dependencies": { - "@smithy/types": "^1.2.0", - "tslib": "^2.5.0" + "cacache": "^18.0.0", + "json-parse-even-better-errors": "^3.0.0", + "pacote": "^17.0.0", + "semver": "^7.3.5" }, "engines": { - "node": ">=14.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@aws-sdk/middleware-retry/node_modules/@smithy/middleware-retry/node_modules/@smithy/service-error-classification": { - "version": "1.1.0", - "license": "Apache-2.0", + "node_modules/@npmcli/name-from-folder": { + "version": "2.0.0", + "license": "ISC", "engines": { - "node": ">=14.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@aws-sdk/middleware-retry/node_modules/@smithy/middleware-retry/node_modules/@smithy/types": { - "version": "1.2.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.5.0" - }, + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "license": "ISC", "engines": { - "node": ">=14.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@aws-sdk/middleware-retry/node_modules/@smithy/middleware-retry/node_modules/@smithy/util-middleware": { - "version": "1.1.0", - "license": "Apache-2.0", + "node_modules/@npmcli/package-json": { + "version": "5.0.0", + "license": "ISC", "dependencies": { - "tslib": "^2.5.0" + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.5.3" }, "engines": { - "node": ">=14.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@aws-sdk/middleware-retry/node_modules/@smithy/middleware-retry/node_modules/@smithy/util-retry": { - "version": "1.1.0", - "license": "Apache-2.0", + "node_modules/@npmcli/promise-spawn": { + "version": "7.0.1", + "license": "ISC", "dependencies": { - "@smithy/service-error-classification": "^1.1.0", - "tslib": "^2.5.0" + "which": "^4.0.0" }, "engines": { - "node": ">= 14.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@aws-sdk/middleware-sdk-route53": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "4.0.0", + "license": "ISC", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" }, "engines": { - "node": ">=14.0.0" + "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/@aws-sdk/middleware-sdk-route53/node_modules/@aws-sdk/types": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@npmcli/promise-spawn/node_modules/which/node_modules/isexe": { + "version": "3.1.1", + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/query": { + "version": "3.1.0", + "license": "ISC", "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "postcss-selector-parser": "^6.0.10" }, "engines": { - "node": ">=14.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.474.0", - "license": "Apache-2.0", + "node_modules/@npmcli/redact": { + "version": "1.1.0", + "license": "ISC", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "7.0.4", + "license": "ISC", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@aws-sdk/util-arn-parser": "3.465.0", - "@smithy/node-config-provider": "^2.1.8", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/smithy-client": "^2.1.18", - "@smithy/types": "^2.7.0", - "@smithy/util-config-provider": "^2.0.0", - "tslib": "^2.5.0" + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", + "which": "^4.0.0" }, "engines": { - "node": ">=14.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@aws-sdk/types": { - "version": "3.468.0", - "license": "Apache-2.0", + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "4.0.0", + "license": "ISC", "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" }, "engines": { - "node": ">=14.0.0" + "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/smithy-client": { - "version": "2.4.3", + "node_modules/@npmcli/run-script/node_modules/which/node_modules/isexe": { + "version": "3.1.1", + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.8.0", "license": "Apache-2.0", - "dependencies": { - "@smithy/middleware-endpoint": "^2.4.5", - "@smithy/middleware-stack": "^2.1.4", - "@smithy/protocol-http": "^3.2.2", - "@smithy/types": "^2.11.0", - "@smithy/util-stream": "^2.1.4", - "tslib": "^2.5.0" - }, "engines": { - "node": ">=14.0.0" + "node": ">=8.0.0" } }, - "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.468.0", + "node_modules/@opentelemetry/api-metrics": { + "version": "0.32.0", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.468.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@opentelemetry/api": "^1.0.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=14" } }, - "node_modules/@aws-sdk/middleware-ssec/node_modules/@aws-sdk/types": { - "version": "3.468.0", + "node_modules/@opentelemetry/context-async-hooks": { + "version": "1.23.0", "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" - }, "engines": { - "node": ">=14.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" } }, - "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.474.0", + "node_modules/@opentelemetry/core": { + "version": "1.23.0", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.474.0", - "@aws-sdk/types": "3.468.0", - "@smithy/protocol-http": "^3.0.11", - "@smithy/signature-v4": "^2.0.0", - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@opentelemetry/semantic-conventions": "1.23.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" } }, - "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@aws-sdk/types": { - "version": "3.468.0", + "node_modules/@opentelemetry/exporter-zipkin": { + "version": "1.23.0", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" } }, - "node_modules/@aws-sdk/types": { - "version": "3.496.0", + "node_modules/@opentelemetry/instrumentation": { + "version": "0.32.0", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@opentelemetry/api-metrics": "0.32.0", + "require-in-the-middle": "^5.0.3", + "semver": "^7.3.2", + "shimmer": "^1.2.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" } }, - "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.465.0", + "node_modules/@opentelemetry/instrumentation-grpc": { + "version": "0.32.0", "license": "Apache-2.0", "dependencies": { - "tslib": "^2.5.0" + "@opentelemetry/api-metrics": "0.32.0", + "@opentelemetry/instrumentation": "0.32.0", + "@opentelemetry/semantic-conventions": "1.6.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" } }, - "node_modules/@aws-sdk/util-locate-window": { - "version": "3.495.0", + "node_modules/@opentelemetry/instrumentation-grpc/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.6.0", "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.5.0" - }, "engines": { - "node": ">=14.0.0" + "node": ">=14" } }, - "node_modules/@aws-sdk/util-utf8-browser": { - "version": "3.259.0", + "node_modules/@opentelemetry/propagator-b3": { + "version": "1.23.0", "license": "Apache-2.0", "dependencies": { - "tslib": "^2.3.1" + "@opentelemetry/core": "1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" } }, - "node_modules/@aws-sdk/xml-builder": { - "version": "3.472.0", + "node_modules/@opentelemetry/propagator-jaeger": { + "version": "1.23.0", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^2.7.0", - "tslib": "^2.5.0" + "@opentelemetry/core": "1.23.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" } }, - "node_modules/@babel/code-frame": { - "version": "7.24.2", - "license": "MIT", - "peer": true, + "node_modules/@opentelemetry/resources": { + "version": "1.23.0", + "license": "Apache-2.0", "dependencies": { - "@babel/highlight": "^7.24.2", - "picocolors": "^1.0.0" + "@opentelemetry/core": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.24.4", - "license": "MIT", - "peer": true, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.23.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.23.0", + "@opentelemetry/resources": "1.23.0", + "@opentelemetry/semantic-conventions": "1.23.0" + }, "engines": { - "node": ">=6.9.0" + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" } }, - "node_modules/@babel/core": { - "version": "7.24.4", - "license": "MIT", - "peer": true, + "node_modules/@opentelemetry/sdk-trace-node": { + "version": "1.23.0", + "license": "Apache-2.0", "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.4", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.4", - "@babel/parser": "^7.24.4", - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" + "@opentelemetry/context-async-hooks": "1.23.0", + "@opentelemetry/core": "1.23.0", + "@opentelemetry/propagator-b3": "1.23.0", + "@opentelemetry/propagator-jaeger": "1.23.0", + "@opentelemetry/sdk-trace-base": "1.23.0", + "semver": "^7.5.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=14" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" } }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.23.0", + "license": "Apache-2.0", + "engines": { + "node": ">=14" } }, - "node_modules/@babel/generator": { - "version": "7.24.4", + "node_modules/@pagefind/default-ui": { + "version": "1.1.0", + "license": "MIT" + }, + "node_modules/@pagefind/linux-x64": { + "version": "1.1.0", + "cpu": [ + "x64" + ], "license": "MIT", - "peer": true, - "dependencies": { - "@babel/types": "^7.24.0", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" - }, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "license": "MIT", + "optional": true, "engines": { - "node": ">=6.9.0" + "node": ">=14" } }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "license": "MIT", - "peer": true, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "license": "BSD-3-Clause", "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "license": "MIT", - "peer": true, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "license": "BSD-3-Clause" + }, + "node_modules/@pulumi/aws": { + "version": "v6.28.1", + "license": "Apache-2.0", "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" + "@pulumi/pulumi": "^3.0.0", + "builtin-modules": "3.0.0", + "mime": "^2.0.0", + "resolve": "^1.7.1" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "license": "ISC", - "peer": true, + "node_modules/@pulumi/cloudflare": { + "version": "v5.24.1", + "license": "Apache-2.0", "dependencies": { - "yallist": "^3.0.2" + "@pulumi/pulumi": "^3.0.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache/node_modules/yallist": { - "version": "3.1.1", - "license": "ISC", - "peer": true + "node_modules/@pulumi/docker": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/@pulumi/docker/-/docker-4.5.3.tgz", + "integrity": "sha512-chHRNGzmpdskxJt0MvD0Mt3x4v9zYTssRoGNGCpkVCnicYSV8CUi26J1b6svp+aWK4RNrqmD1ohFHHXIVtSxjA==", + "dependencies": { + "@pulumi/pulumi": "^3.0.0", + "semver": "^5.4.0" + } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "license": "ISC", - "peer": true, + "node_modules/@pulumi/docker/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "bin": { - "semver": "bin/semver.js" + "semver": "bin/semver" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "license": "MIT", - "peer": true, + "node_modules/@pulumi/pulumi": { + "version": "3.112.0", + "license": "Apache-2.0", + "dependencies": { + "@grpc/grpc-js": "^1.10.1", + "@logdna/tail-file": "^2.0.6", + "@npmcli/arborist": "^7.3.1", + "@opentelemetry/api": "^1.2.0", + "@opentelemetry/exporter-zipkin": "^1.6.0", + "@opentelemetry/instrumentation": "^0.32.0", + "@opentelemetry/instrumentation-grpc": "^0.32.0", + "@opentelemetry/resources": "^1.6.0", + "@opentelemetry/sdk-trace-base": "^1.6.0", + "@opentelemetry/sdk-trace-node": "^1.6.0", + "@opentelemetry/semantic-conventions": "^1.6.0", + "@pulumi/query": "^0.3.0", + "@types/google-protobuf": "^3.15.5", + "@types/semver": "^7.5.6", + "@types/tmp": "^0.2.6", + "execa": "^5.1.0", + "fdir": "^6.1.1", + "google-protobuf": "^3.5.0", + "got": "^11.8.6", + "ini": "^2.0.0", + "js-yaml": "^3.14.0", + "minimist": "^1.2.6", + "normalize-package-data": "^6.0.0", + "picomatch": "^3.0.1", + "pkg-dir": "^7.0.0", + "require-from-string": "^2.0.1", + "semver": "^7.5.2", + "source-map-support": "^0.5.6", + "tmp": "^0.2.1", + "ts-node": "^7.0.1", + "typescript": "~3.8.3", + "upath": "^1.1.0" + }, "engines": { - "node": ">=6.9.0" + "node": ">=8.13.0 || >=10.10.0" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", + "node_modules/@pulumi/pulumi/node_modules/execa": { + "version": "5.1.1", "license": "MIT", - "peer": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", + "node_modules/@pulumi/pulumi/node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", "license": "MIT", - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5" + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@pulumi/pulumi/node_modules/execa/node_modules/human-signals": { + "version": "2.1.0", + "license": "Apache-2.0", "engines": { - "node": ">=6.9.0" + "node": ">=10.17.0" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.24.3", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/types": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", + "node_modules/@pulumi/pulumi/node_modules/execa/node_modules/is-stream": { + "version": "2.0.1", "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, "engines": { - "node": ">=6.9.0" + "node": ">=8" }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.9.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", + "node_modules/@pulumi/pulumi/node_modules/execa/node_modules/npm-run-path": { + "version": "4.0.1", "license": "MIT", - "peer": true, "dependencies": { - "@babel/types": "^7.22.5" + "path-key": "^3.0.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=8" } }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", + "node_modules/@pulumi/pulumi/node_modules/execa/node_modules/onetime": { + "version": "5.1.2", "license": "MIT", - "peer": true, "dependencies": { - "@babel/types": "^7.22.5" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.24.1", + "node_modules/@pulumi/pulumi/node_modules/execa/node_modules/onetime/node_modules/mimic-fn": { + "version": "2.1.0", "license": "MIT", - "peer": true, "engines": { - "node": ">=6.9.0" + "node": ">=6" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.9.0" - } + "node_modules/@pulumi/pulumi/node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "license": "ISC" }, - "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", + "node_modules/@pulumi/pulumi/node_modules/execa/node_modules/strip-final-newline": { + "version": "2.0.0", "license": "MIT", - "peer": true, "engines": { - "node": ">=6.9.0" + "node": ">=6" } }, - "node_modules/@babel/helpers": { - "version": "7.24.4", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0" + "node_modules/@pulumi/pulumi/node_modules/typescript": { + "version": "3.8.3", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, "engines": { - "node": ">=6.9.0" + "node": ">=4.2.0" } }, - "node_modules/@babel/highlight": { - "version": "7.24.2", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } + "node_modules/@pulumi/query": { + "version": "v0.3.0", + "license": "Apache-2.0" }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "license": "MIT", - "peer": true, + "node_modules/@pulumi/random": { + "version": "v4.15.0", + "license": "Apache-2.0", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" + "@pulumi/pulumi": "^3.0.0" } }, - "node_modules/@babel/highlight/node_modules/chalk/node_modules/ansi-styles": { - "version": "3.2.1", - "license": "MIT", - "peer": true, + "node_modules/@pulumi/tls": { + "version": "v5.0.1", + "license": "Apache-2.0", "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" + "@pulumi/pulumi": "^3.0.0" } }, - "node_modules/@babel/highlight/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert": { - "version": "1.9.3", - "license": "MIT", - "peer": true, + "node_modules/@pulumiverse/vercel": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@pulumiverse/vercel/-/vercel-1.3.0.tgz", + "integrity": "sha512-01MbJ5skedIhZCxL+YHlZeNtkY2ibMrO48Ilgum7x65Uk4xuOLRT9/0zszBPYASJAkE7P+NVOS/pMIROdSNgjA==", + "dev": true, "dependencies": { - "color-name": "1.1.3" + "@pulumi/pulumi": "^3.0.0" } }, - "node_modules/@babel/highlight/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert/node_modules/color-name": { - "version": "1.1.3", + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.14.0", + "cpu": [ + "x64" + ], "license": "MIT", - "peer": true + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/highlight/node_modules/chalk/node_modules/escape-string-regexp": { - "version": "1.0.5", + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.14.0", + "cpu": [ + "x64" + ], "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.8.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@babel/highlight/node_modules/js-tokens": { - "version": "4.0.0", - "license": "MIT", - "peer": true + "node_modules/@shikijs/core": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.4.0.tgz", + "integrity": "sha512-CxpKLntAi64h3j+TwWqVIQObPTED0FyXLHTTh3MKXtqiQNn2JGcMQQ362LftDbc9kYbDtrksNMNoVmVXzKFYUQ==" }, - "node_modules/@babel/parser": { - "version": "7.24.4", - "license": "MIT", - "peer": true, - "bin": { - "parser": "bin/babel-parser.js" + "node_modules/@sigstore/bundle": { + "version": "2.3.1", + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.1" }, "engines": { - "node": ">=6.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.1", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, + "node_modules/@sigstore/core": { + "version": "1.1.0", + "license": "Apache-2.0", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.23.4", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/types": "^7.23.4" - }, + "node_modules/@sigstore/protobuf-specs": { + "version": "0.3.1", + "license": "Apache-2.0", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@babel/template": { - "version": "7.24.0", - "license": "MIT", - "peer": true, + "node_modules/@sigstore/sign": { + "version": "2.3.0", + "license": "Apache-2.0", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" + "@sigstore/bundle": "^2.3.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.1", + "make-fetch-happen": "^13.0.0" }, "engines": { - "node": ">=6.9.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@babel/traverse": { - "version": "7.24.1", - "license": "MIT", - "peer": true, + "node_modules/@sigstore/tuf": { + "version": "2.3.2", + "license": "Apache-2.0", "dependencies": { - "@babel/code-frame": "^7.24.1", - "@babel/generator": "^7.24.1", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.1", - "@babel/types": "^7.24.0", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@sigstore/protobuf-specs": "^0.3.0", + "tuf-js": "^2.2.0" }, "engines": { - "node": ">=6.9.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@babel/types": { - "version": "7.24.0", - "license": "MIT", - "peer": true, + "node_modules/@sigstore/verify": { + "version": "1.2.0", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" + "@sigstore/bundle": "^2.3.1", + "@sigstore/core": "^1.1.0", + "@sigstore/protobuf-specs": "^0.3.1" }, "engines": { - "node": ">=6.9.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@ctrl/tinycolor": { - "version": "3.6.1", + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "dev": true, + "license": "MIT" + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", "license": "MIT", "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/@emmetio/abbreviation": { - "version": "2.3.3", - "license": "MIT", + "node_modules/@smithy/abort-controller": { + "version": "2.2.0", + "license": "Apache-2.0", "dependencies": { - "@emmetio/scanner": "^1.0.4" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@emmetio/css-abbreviation": { - "version": "2.1.8", - "license": "MIT", + "node_modules/@smithy/chunked-blob-reader": { + "version": "2.2.0", + "license": "Apache-2.0", "dependencies": { - "@emmetio/scanner": "^1.0.4" + "tslib": "^2.6.2" } }, - "node_modules/@emmetio/scanner": { - "version": "1.0.4", - "license": "MIT" + "node_modules/@smithy/chunked-blob-reader-native": { + "version": "2.2.0", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-base64": "^2.3.0", + "tslib": "^2.6.2" + } }, - "node_modules/@esbuild/linux-x64": { - "version": "0.19.10", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "node_modules/@smithy/config-resolver": { + "version": "2.1.5", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^2.2.5", + "@smithy/types": "^2.11.0", + "@smithy/util-config-provider": "^2.2.1", + "@smithy/util-middleware": "^2.1.4", + "tslib": "^2.5.0" + }, "engines": { - "node": ">=12" + "node": ">=14.0.0" } }, - "node_modules/@expressive-code/core": { - "version": "0.29.4", - "license": "MIT", + "node_modules/@smithy/core": { + "version": "1.3.6", + "license": "Apache-2.0", "dependencies": { - "@ctrl/tinycolor": "^3.6.0", - "hast-util-to-html": "^8.0.4", - "hastscript": "^7.2.0", - "postcss": "^8.4.21", - "postcss-nested": "^6.0.1" + "@smithy/middleware-endpoint": "^2.4.5", + "@smithy/middleware-retry": "^2.1.5", + "@smithy/middleware-serde": "^2.2.0", + "@smithy/protocol-http": "^3.2.2", + "@smithy/smithy-client": "^2.4.3", + "@smithy/types": "^2.11.0", + "@smithy/util-middleware": "^2.1.4", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@expressive-code/plugin-frames": { - "version": "0.29.4", - "license": "MIT", + "node_modules/@smithy/core/node_modules/@smithy/smithy-client": { + "version": "2.4.3", + "license": "Apache-2.0", "dependencies": { - "@expressive-code/core": "^0.29.4", - "hastscript": "^7.2.0" + "@smithy/middleware-endpoint": "^2.4.5", + "@smithy/middleware-stack": "^2.1.4", + "@smithy/protocol-http": "^3.2.2", + "@smithy/types": "^2.11.0", + "@smithy/util-stream": "^2.1.4", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@expressive-code/plugin-shiki": { - "version": "0.29.4", - "license": "MIT", + "node_modules/@smithy/credential-provider-imds": { + "version": "2.2.6", + "license": "Apache-2.0", "dependencies": { - "@expressive-code/core": "^0.29.4", - "shiki": "^0.14.1" + "@smithy/node-config-provider": "^2.2.5", + "@smithy/property-provider": "^2.1.4", + "@smithy/types": "^2.11.0", + "@smithy/url-parser": "^2.1.4", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@expressive-code/plugin-text-markers": { - "version": "0.29.4", - "license": "MIT", + "node_modules/@smithy/eventstream-codec": { + "version": "2.1.4", + "license": "Apache-2.0", "dependencies": { - "@expressive-code/core": "^0.29.4", - "hastscript": "^7.2.0", - "unist-util-visit-parents": "^5.1.3" + "@aws-crypto/crc32": "3.0.0", + "@smithy/types": "^2.11.0", + "@smithy/util-hex-encoding": "^2.1.1", + "tslib": "^2.5.0" } }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "license": "MIT", + "node_modules/@smithy/eventstream-serde-browser": { + "version": "2.1.4", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^2.1.4", + "@smithy/types": "^2.11.0", + "tslib": "^2.5.0" + }, "engines": { - "node": ">=14" + "node": ">=14.0.0" } }, - "node_modules/@fontsource-variable/roboto-mono": { - "version": "5.0.18", - "license": "Apache-2.0" - }, - "node_modules/@fontsource-variable/rubik": { - "version": "5.0.21", - "license": "OFL-1.1" - }, - "node_modules/@fontsource/ibm-plex-mono": { - "version": "5.0.12", - "license": "OFL-1.1" - }, - "node_modules/@grpc/grpc-js": { - "version": "1.10.6", + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "2.1.4", "license": "Apache-2.0", "dependencies": { - "@grpc/proto-loader": "^0.7.10", - "@js-sdsl/ordered-map": "^4.4.2" + "@smithy/types": "^2.11.0", + "tslib": "^2.5.0" }, "engines": { - "node": ">=12.10.0" + "node": ">=14.0.0" } }, - "node_modules/@grpc/proto-loader": { - "version": "0.7.12", + "node_modules/@smithy/eventstream-serde-node": { + "version": "2.1.4", "license": "Apache-2.0", "dependencies": { - "lodash.camelcase": "^4.3.0", - "long": "^5.0.0", - "protobufjs": "^7.2.4", - "yargs": "^17.7.2" + "@smithy/eventstream-serde-universal": "^2.1.4", + "@smithy/types": "^2.11.0", + "tslib": "^2.5.0" }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-universal": { + "version": "2.1.4", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-codec": "^2.1.4", + "@smithy/types": "^2.11.0", + "tslib": "^2.5.0" }, "engines": { - "node": ">=6" + "node": ">=14.0.0" } }, - "node_modules/@httptoolkit/websocket-stream": { - "version": "6.0.1", - "license": "BSD-2-Clause", - "optional": true, - "peer": true, + "node_modules/@smithy/fetch-http-handler": { + "version": "2.5.0", + "license": "Apache-2.0", "dependencies": { - "@types/ws": "*", - "duplexify": "^3.5.1", - "inherits": "^2.0.1", - "isomorphic-ws": "^4.0.1", - "readable-stream": "^2.3.3", - "safe-buffer": "^5.1.2", - "ws": "*", - "xtend": "^4.0.0" + "@smithy/protocol-http": "^3.3.0", + "@smithy/querystring-builder": "^2.2.0", + "@smithy/types": "^2.12.0", + "@smithy/util-base64": "^2.3.0", + "tslib": "^2.6.2" } }, - "node_modules/@httptoolkit/websocket-stream/node_modules/readable-stream": { - "version": "2.3.8", - "license": "MIT", - "optional": true, - "peer": true, + "node_modules/@smithy/hash-blob-browser": { + "version": "2.2.0", + "license": "Apache-2.0", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "@smithy/chunked-blob-reader": "^2.2.0", + "@smithy/chunked-blob-reader-native": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" } }, - "node_modules/@httptoolkit/websocket-stream/node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "license": "MIT", - "optional": true, - "peer": true + "node_modules/@smithy/hash-node": { + "version": "2.1.4", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.11.0", + "@smithy/util-buffer-from": "^2.1.1", + "@smithy/util-utf8": "^2.2.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" + } }, - "node_modules/@httptoolkit/websocket-stream/node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.1.1", - "license": "MIT", - "optional": true, - "peer": true, + "node_modules/@smithy/hash-stream-node": { + "version": "2.2.0", + "license": "Apache-2.0", "dependencies": { - "safe-buffer": "~5.1.0" + "@smithy/types": "^2.12.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.0.2", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.26", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@smithy/invalid-dependency": { + "version": "2.1.4", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.11.0", + "tslib": "^2.5.0" } }, - "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.0.2", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "musl": ">=1.2.2", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" }, - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.33.3", - "cpu": [ - "x64" - ], + "node_modules/@smithy/md5-js": { + "version": "2.2.0", "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.0.2" + "dependencies": { + "@smithy/types": "^2.12.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" } }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.33.3", - "cpu": [ - "x64" - ], + "node_modules/@smithy/middleware-content-length": { + "version": "2.1.4", "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "musl": ">=1.2.2", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" + "dependencies": { + "@smithy/protocol-http": "^3.2.2", + "@smithy/types": "^2.11.0", + "tslib": "^2.5.0" }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.2" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "license": "ISC", + "node_modules/@smithy/middleware-endpoint": { + "version": "2.5.1", + "license": "Apache-2.0", "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "@smithy/middleware-serde": "^2.3.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-middleware": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=12" + "node": ">=14.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "license": "MIT", + "node_modules/@smithy/middleware-retry": { + "version": "2.1.5", + "license": "Apache-2.0", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "@smithy/node-config-provider": "^2.2.5", + "@smithy/protocol-http": "^3.2.2", + "@smithy/service-error-classification": "^2.1.4", + "@smithy/smithy-client": "^2.4.3", + "@smithy/types": "^2.11.0", + "@smithy/util-middleware": "^2.1.4", + "@smithy/util-retry": "^2.1.4", + "tslib": "^2.5.0", + "uuid": "^8.3.2" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=14.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "license": "MIT", + "node_modules/@smithy/middleware-retry/node_modules/@smithy/smithy-client": { + "version": "2.4.3", + "license": "Apache-2.0", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "@smithy/middleware-endpoint": "^2.4.5", + "@smithy/middleware-stack": "^2.1.4", + "@smithy/protocol-http": "^3.2.2", + "@smithy/types": "^2.11.0", + "@smithy/util-stream": "^2.1.4", + "tslib": "^2.5.0" }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "license": "MIT", + "node_modules/@smithy/middleware-serde": { + "version": "2.3.0", + "license": "Apache-2.0", "dependencies": { - "ansi-regex": "^5.0.1" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/string-width-cjs/node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "license": "MIT", + "node_modules/@smithy/middleware-stack": { + "version": "2.2.0", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/string-width/node_modules/emoji-regex": { - "version": "9.2.2", - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "license": "MIT", + "node_modules/@smithy/node-config-provider": { + "version": "2.3.0", + "license": "Apache-2.0", "dependencies": { - "ansi-regex": "^5.0.1" + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "license": "MIT", + "node_modules/@smithy/node-http-handler": { + "version": "2.5.0", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^2.2.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/querystring-builder": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "license": "MIT", + "node_modules/@smithy/property-provider": { + "version": "2.2.0", + "license": "Apache-2.0", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=14.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", + "node_modules/@smithy/protocol-http": { + "version": "3.3.0", + "license": "Apache-2.0", "dependencies": { - "color-convert": "^2.0.1" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=14.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "license": "MIT", + "node_modules/@smithy/querystring-builder": { + "version": "2.2.0", + "license": "Apache-2.0", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "@smithy/types": "^2.12.0", + "@smithy/util-uri-escape": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "license": "MIT", + "node_modules/@smithy/querystring-parser": { + "version": "2.2.0", + "license": "Apache-2.0", "dependencies": { - "ansi-regex": "^5.0.1" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi-cjs/node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "license": "MIT", + "node_modules/@smithy/service-error-classification": { + "version": "2.1.4", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^2.11.0" + }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/@isaacs/string-locale-compare": { - "version": "1.1.0", - "license": "ISC" - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "dev": true, - "license": "MIT", + "node_modules/@smithy/shared-ini-file-loader": { + "version": "2.4.0", + "license": "Apache-2.0", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=14.0.0" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "license": "MIT", - "peer": true, + "node_modules/@smithy/signature-v4": { + "version": "2.1.4", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" + "@smithy/eventstream-codec": "^2.1.4", + "@smithy/is-array-buffer": "^2.1.1", + "@smithy/types": "^2.11.0", + "@smithy/util-hex-encoding": "^2.1.1", + "@smithy/util-middleware": "^2.1.4", + "@smithy/util-uri-escape": "^2.1.1", + "@smithy/util-utf8": "^2.2.0", + "tslib": "^2.5.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=14.0.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "license": "MIT", - "peer": true, + "node_modules/@smithy/smithy-client": { + "version": "2.1.18", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-stack": "^2.0.9", + "@smithy/types": "^2.7.0", + "@smithy/util-stream": "^2.0.23", + "tslib": "^2.5.0" + }, "engines": { - "node": ">=6.0.0" + "node": ">=14.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "license": "MIT", - "peer": true, + "node_modules/@smithy/types": { + "version": "2.12.0", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.0.0" + "node": ">=14.0.0" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "license": "MIT", - "optional": true, - "peer": true, + "node_modules/@smithy/url-parser": { + "version": "2.2.0", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" + "@smithy/querystring-parser": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "license": "MIT" + "node_modules/@smithy/util-base64": { + "version": "2.3.0", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "license": "MIT", - "peer": true, + "node_modules/@smithy/util-body-length-browser": { + "version": "2.1.1", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "tslib": "^2.5.0" } }, - "node_modules/@js-sdsl/ordered-map": { - "version": "4.4.2", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" + "node_modules/@smithy/util-body-length-node": { + "version": "2.2.1", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@logdna/tail-file": { + "node_modules/@smithy/util-buffer-from": { "version": "2.2.0", - "license": "SEE LICENSE IN LICENSE", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=10.3.0" + "node": ">=14.0.0" } }, - "node_modules/@mdx-js/mdx": { - "version": "2.3.0", - "license": "MIT", + "node_modules/@smithy/util-config-provider": { + "version": "2.2.1", + "license": "Apache-2.0", "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/mdx": "^2.0.0", - "estree-util-build-jsx": "^2.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "estree-util-to-js": "^1.1.0", - "estree-walker": "^3.0.0", - "hast-util-to-estree": "^2.0.0", - "markdown-extensions": "^1.0.0", - "periscopic": "^3.0.0", - "remark-mdx": "^2.0.0", - "remark-parse": "^10.0.0", - "remark-rehype": "^10.0.0", - "unified": "^10.0.0", - "unist-util-position-from-estree": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "unist-util-visit": "^4.0.0", - "vfile": "^5.0.0" + "tslib": "^2.5.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@nodelib/fs.scandir": { + "node_modules/@smithy/util-defaults-mode-browser": { "version": "2.1.5", - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@smithy/property-provider": "^2.1.4", + "@smithy/smithy-client": "^2.4.3", + "@smithy/types": "^2.11.0", + "bowser": "^2.11.0", + "tslib": "^2.5.0" }, "engines": { - "node": ">= 8" + "node": ">= 10.0.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "license": "MIT", + "node_modules/@smithy/util-defaults-mode-browser/node_modules/@smithy/smithy-client": { + "version": "2.4.3", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-endpoint": "^2.4.5", + "@smithy/middleware-stack": "^2.1.4", + "@smithy/protocol-http": "^3.2.2", + "@smithy/types": "^2.11.0", + "@smithy/util-stream": "^2.1.4", + "tslib": "^2.5.0" + }, "engines": { - "node": ">= 8" + "node": ">=14.0.0" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "license": "MIT", + "node_modules/@smithy/util-defaults-mode-node": { + "version": "2.2.5", + "license": "Apache-2.0", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@smithy/config-resolver": "^2.1.5", + "@smithy/credential-provider-imds": "^2.2.6", + "@smithy/node-config-provider": "^2.2.5", + "@smithy/property-provider": "^2.1.4", + "@smithy/smithy-client": "^2.4.3", + "@smithy/types": "^2.11.0", + "tslib": "^2.5.0" }, "engines": { - "node": ">= 8" + "node": ">= 10.0.0" } }, - "node_modules/@npmcli/agent": { - "version": "2.2.2", - "license": "ISC", + "node_modules/@smithy/util-defaults-mode-node/node_modules/@smithy/smithy-client": { + "version": "2.4.3", + "license": "Apache-2.0", "dependencies": { - "agent-base": "^7.1.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "lru-cache": "^10.0.1", - "socks-proxy-agent": "^8.0.3" + "@smithy/middleware-endpoint": "^2.4.5", + "@smithy/middleware-stack": "^2.1.4", + "@smithy/protocol-http": "^3.2.2", + "@smithy/types": "^2.11.0", + "@smithy/util-stream": "^2.1.4", + "tslib": "^2.5.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=14.0.0" } }, - "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "10.2.0", - "license": "ISC", + "node_modules/@smithy/util-endpoints": { + "version": "1.1.5", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^2.2.5", + "@smithy/types": "^2.11.0", + "tslib": "^2.5.0" + }, "engines": { - "node": "14 || >=16.14" + "node": ">= 14.0.0" } }, - "node_modules/@npmcli/arborist": { - "version": "7.4.1", - "license": "ISC", + "node_modules/@smithy/util-hex-encoding": { + "version": "2.2.0", + "license": "Apache-2.0", "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/fs": "^3.1.0", - "@npmcli/installed-package-contents": "^2.0.2", - "@npmcli/map-workspaces": "^3.0.2", - "@npmcli/metavuln-calculator": "^7.0.0", - "@npmcli/name-from-folder": "^2.0.0", - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.0.0", - "@npmcli/query": "^3.1.0", - "@npmcli/run-script": "^7.0.2", - "bin-links": "^4.0.1", - "cacache": "^18.0.0", - "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^7.0.1", - "json-parse-even-better-errors": "^3.0.0", - "json-stringify-nice": "^1.1.4", - "minimatch": "^9.0.4", - "nopt": "^7.0.0", - "npm-install-checks": "^6.2.0", - "npm-package-arg": "^11.0.1", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^16.2.0", - "npmlog": "^7.0.1", - "pacote": "^17.0.4", - "parse-conflict-json": "^3.0.0", - "proc-log": "^3.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^3.0.1", - "read-package-json-fast": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^10.0.5", - "treeverse": "^3.0.0", - "walk-up-path": "^3.0.1" - }, - "bin": { - "arborist": "bin/index.js" + "tslib": "^2.6.2" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=14.0.0" } }, - "node_modules/@npmcli/fs": { - "version": "3.1.0", - "license": "ISC", + "node_modules/@smithy/util-middleware": { + "version": "2.2.0", + "license": "Apache-2.0", "dependencies": { - "semver": "^7.3.5" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=14.0.0" } }, - "node_modules/@npmcli/git": { - "version": "5.0.4", - "license": "ISC", + "node_modules/@smithy/util-retry": { + "version": "2.1.4", + "license": "Apache-2.0", "dependencies": { - "@npmcli/promise-spawn": "^7.0.0", - "lru-cache": "^10.0.1", - "npm-pick-manifest": "^9.0.0", - "proc-log": "^3.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^4.0.0" + "@smithy/service-error-classification": "^2.1.4", + "@smithy/types": "^2.11.0", + "tslib": "^2.5.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "10.2.0", - "license": "ISC", - "engines": { - "node": "14 || >=16.14" + "node": ">= 14.0.0" } }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "4.0.0", - "license": "ISC", + "node_modules/@smithy/util-stream": { + "version": "2.2.0", + "license": "Apache-2.0", "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/types": "^2.12.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-buffer-from": "^2.2.0", + "@smithy/util-hex-encoding": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": ">=14.0.0" } }, - "node_modules/@npmcli/git/node_modules/which/node_modules/isexe": { - "version": "3.1.1", - "license": "ISC", + "node_modules/@smithy/util-uri-escape": { + "version": "2.2.0", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">=16" + "node": ">=14.0.0" } }, - "node_modules/@npmcli/installed-package-contents": { - "version": "2.0.2", - "license": "ISC", + "node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "license": "Apache-2.0", "dependencies": { - "npm-bundled": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "bin": { - "installed-package-contents": "lib/index.js" + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=14.0.0" } }, - "node_modules/@npmcli/map-workspaces": { - "version": "3.0.4", - "license": "ISC", + "node_modules/@smithy/util-waiter": { + "version": "2.1.4", + "license": "Apache-2.0", "dependencies": { - "@npmcli/name-from-folder": "^2.0.0", - "glob": "^10.2.2", - "minimatch": "^9.0.0", - "read-package-json-fast": "^3.0.0" + "@smithy/abort-controller": "^2.1.4", + "@smithy/types": "^2.11.0", + "tslib": "^2.5.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=14.0.0" } }, - "node_modules/@npmcli/metavuln-calculator": { - "version": "7.0.0", - "license": "ISC", + "node_modules/@sst/platform": { + "resolved": "pkg/platform", + "link": true + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "license": "MIT", "dependencies": { - "cacache": "^18.0.0", - "json-parse-even-better-errors": "^3.0.0", - "pacote": "^17.0.0", - "semver": "^7.3.5" + "defer-to-connect": "^2.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/@npmcli/name-from-folder": { - "version": "2.0.0", - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "node_modules/@tsconfig/node18": { + "version": "18.2.2", + "dev": true, + "license": "MIT" }, - "node_modules/@npmcli/node-gyp": { - "version": "3.0.0", - "license": "ISC", + "node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@npmcli/package-json": { - "version": "5.0.0", - "license": "ISC", + "node_modules/@tufjs/models": { + "version": "2.0.0", + "license": "MIT", "dependencies": { - "@npmcli/git": "^5.0.0", - "glob": "^10.2.2", - "hosted-git-info": "^7.0.0", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.5.3" + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.3" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@npmcli/promise-spawn": { - "version": "7.0.1", - "license": "ISC", + "node_modules/@types/acorn": { + "version": "4.0.6", + "license": "MIT", "dependencies": { - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "@types/estree": "*" } }, - "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "4.0.0", - "license": "ISC", + "node_modules/@types/archiver": { + "version": "6.0.2", + "dev": true, + "license": "MIT", "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" + "@types/readdir-glob": "*" } }, - "node_modules/@npmcli/promise-spawn/node_modules/which/node_modules/isexe": { - "version": "3.1.1", - "license": "ISC", - "engines": { - "node": ">=16" - } + "node_modules/@types/aws-lambda": { + "version": "8.10.137", + "dev": true, + "license": "MIT" }, - "node_modules/@npmcli/query": { - "version": "3.1.0", - "license": "ISC", + "node_modules/@types/babel__core": { + "version": "7.20.5", + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/@npmcli/redact": { - "version": "1.1.0", - "license": "ISC", - "engines": { - "node": "^16.14.0 || >=18.0.0" + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" } }, - "node_modules/@npmcli/run-script": { - "version": "7.0.4", - "license": "ISC", + "node_modules/@types/babel__template": { + "version": "7.4.4", + "license": "MIT", "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.0.0", - "@npmcli/promise-spawn": "^7.0.0", - "node-gyp": "^10.0.0", - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/@npmcli/run-script/node_modules/which": { - "version": "4.0.0", - "license": "ISC", + "node_modules/@types/babel__traverse": { + "version": "7.20.5", + "license": "MIT", "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" + "@babel/types": "^7.20.7" } }, - "node_modules/@npmcli/run-script/node_modules/which/node_modules/isexe": { - "version": "3.1.1", - "license": "ISC", - "engines": { - "node": ">=16" + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" } }, - "node_modules/@opentelemetry/api": { - "version": "1.8.0", - "license": "Apache-2.0", - "engines": { - "node": ">=8.0.0" - } + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" }, - "node_modules/@opentelemetry/api-metrics": { - "version": "0.32.0", - "license": "Apache-2.0", + "node_modules/@types/debug": { + "version": "4.1.12", + "license": "MIT", "dependencies": { - "@opentelemetry/api": "^1.0.0" - }, - "engines": { - "node": ">=14" + "@types/ms": "*" } }, - "node_modules/@opentelemetry/context-async-hooks": { - "version": "1.23.0", - "license": "Apache-2.0", - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" - } + "node_modules/@types/estree": { + "version": "1.0.5", + "license": "MIT" }, - "node_modules/@opentelemetry/core": { - "version": "1.23.0", - "license": "Apache-2.0", + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "license": "MIT", "dependencies": { - "@opentelemetry/semantic-conventions": "1.23.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" + "@types/estree": "*" } }, - "node_modules/@opentelemetry/exporter-zipkin": { - "version": "1.23.0", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" - } + "node_modules/@types/google-protobuf": { + "version": "3.15.12", + "license": "MIT" }, - "node_modules/@opentelemetry/instrumentation": { - "version": "0.32.0", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-metrics": "0.32.0", - "require-in-the-middle": "^5.0.3", - "semver": "^7.3.2", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" - } + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "license": "MIT" }, - "node_modules/@opentelemetry/instrumentation-grpc": { - "version": "0.32.0", - "license": "Apache-2.0", + "node_modules/@types/keyv": { + "version": "3.1.4", + "license": "MIT", "dependencies": { - "@opentelemetry/api-metrics": "0.32.0", - "@opentelemetry/instrumentation": "0.32.0", - "@opentelemetry/semantic-conventions": "1.6.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" + "@types/node": "*" } }, - "node_modules/@opentelemetry/instrumentation-grpc/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.6.0", - "license": "Apache-2.0", - "engines": { - "node": ">=14" - } + "node_modules/@types/mdx": { + "version": "2.0.12", + "license": "MIT" }, - "node_modules/@opentelemetry/propagator-b3": { - "version": "1.23.0", - "license": "Apache-2.0", + "node_modules/@types/ms": { + "version": "0.7.34", + "license": "MIT" + }, + "node_modules/@types/nlcst": { + "version": "1.0.4", + "license": "MIT", "dependencies": { - "@opentelemetry/core": "1.23.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" + "@types/unist": "^2" } }, - "node_modules/@opentelemetry/propagator-jaeger": { - "version": "1.23.0", - "license": "Apache-2.0", + "node_modules/@types/node": { + "version": "20.12.5", + "license": "MIT", "dependencies": { - "@opentelemetry/core": "1.23.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" + "undici-types": "~5.26.4" } }, - "node_modules/@opentelemetry/resources": { - "version": "1.23.0", - "license": "Apache-2.0", + "node_modules/@types/node-fetch": { + "version": "2.6.11", + "dev": true, + "license": "MIT", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" + "@types/node": "*", + "form-data": "^4.0.0" } }, - "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.23.0", - "license": "Apache-2.0", + "node_modules/@types/readdir-glob": { + "version": "1.1.5", + "dev": true, + "license": "MIT", "dependencies": { - "@opentelemetry/core": "1.23.0", - "@opentelemetry/resources": "1.23.0", - "@opentelemetry/semantic-conventions": "1.23.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" + "@types/node": "*" } }, - "node_modules/@opentelemetry/sdk-trace-node": { - "version": "1.23.0", - "license": "Apache-2.0", + "node_modules/@types/responselike": { + "version": "1.0.3", + "license": "MIT", "dependencies": { - "@opentelemetry/context-async-hooks": "1.23.0", - "@opentelemetry/core": "1.23.0", - "@opentelemetry/propagator-b3": "1.23.0", - "@opentelemetry/propagator-jaeger": "1.23.0", - "@opentelemetry/sdk-trace-base": "1.23.0", - "semver": "^7.5.2" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" + "@types/node": "*" } }, - "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.23.0", - "license": "Apache-2.0", - "engines": { - "node": ">=14" + "node_modules/@types/sax": { + "version": "1.2.7", + "license": "MIT", + "dependencies": { + "@types/node": "*" } }, - "node_modules/@pagefind/default-ui": { - "version": "1.1.0", + "node_modules/@types/semver": { + "version": "7.5.8", "license": "MIT" }, - "node_modules/@pagefind/linux-x64": { - "version": "1.1.0", - "cpu": [ - "x64" - ], + "node_modules/@types/tmp": { + "version": "0.2.6", + "license": "MIT" + }, + "node_modules/@types/unist": { + "version": "2.0.10", + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.5.10", "license": "MIT", "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "license": "BSD-3-Clause", + "peer": true, "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" + "@types/node": "*" } }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "license": "BSD-3-Clause" + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "license": "ISC" }, - "node_modules/@pulumi/aws": { - "version": "v6.28.1", - "license": "Apache-2.0", + "node_modules/@vitest/expect": { + "version": "1.4.0", + "dev": true, + "license": "MIT", "dependencies": { - "@pulumi/pulumi": "^3.0.0", - "builtin-modules": "3.0.0", - "mime": "^2.0.0", - "resolve": "^1.7.1" + "@vitest/spy": "1.4.0", + "@vitest/utils": "1.4.0", + "chai": "^4.3.10" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@pulumi/cloudflare": { - "version": "v5.24.1", - "license": "Apache-2.0", + "node_modules/@vitest/runner": { + "version": "1.4.0", + "dev": true, + "license": "MIT", "dependencies": { - "@pulumi/pulumi": "^3.0.0" + "@vitest/utils": "1.4.0", + "p-limit": "^5.0.0", + "pathe": "^1.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@pulumi/pulumi": { - "version": "3.112.0", - "license": "Apache-2.0", + "node_modules/@vitest/snapshot": { + "version": "1.4.0", + "dev": true, + "license": "MIT", "dependencies": { - "@grpc/grpc-js": "^1.10.1", - "@logdna/tail-file": "^2.0.6", - "@npmcli/arborist": "^7.3.1", - "@opentelemetry/api": "^1.2.0", - "@opentelemetry/exporter-zipkin": "^1.6.0", - "@opentelemetry/instrumentation": "^0.32.0", - "@opentelemetry/instrumentation-grpc": "^0.32.0", - "@opentelemetry/resources": "^1.6.0", - "@opentelemetry/sdk-trace-base": "^1.6.0", - "@opentelemetry/sdk-trace-node": "^1.6.0", - "@opentelemetry/semantic-conventions": "^1.6.0", - "@pulumi/query": "^0.3.0", - "@types/google-protobuf": "^3.15.5", - "@types/semver": "^7.5.6", - "@types/tmp": "^0.2.6", - "execa": "^5.1.0", - "fdir": "^6.1.1", - "google-protobuf": "^3.5.0", - "got": "^11.8.6", - "ini": "^2.0.0", - "js-yaml": "^3.14.0", - "minimist": "^1.2.6", - "normalize-package-data": "^6.0.0", - "picomatch": "^3.0.1", - "pkg-dir": "^7.0.0", - "require-from-string": "^2.0.1", - "semver": "^7.5.2", - "source-map-support": "^0.5.6", - "tmp": "^0.2.1", - "ts-node": "^7.0.1", - "typescript": "~3.8.3", - "upath": "^1.1.0" + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "pretty-format": "^29.7.0" }, - "engines": { - "node": ">=8.13.0 || >=10.10.0" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/@pulumi/pulumi/node_modules/execa": { - "version": "5.1.1", + "node_modules/@vitest/spy": { + "version": "1.4.0", + "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" + "tinyspy": "^2.2.0" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://opencollective.com/vitest" } }, - "node_modules/@pulumi/pulumi/node_modules/execa/node_modules/get-stream": { - "version": "6.0.1", + "node_modules/@vitest/utils": { + "version": "1.4.0", + "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/vitest" } }, - "node_modules/@pulumi/pulumi/node_modules/execa/node_modules/human-signals": { - "version": "2.1.0", - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" + "node_modules/@volar/kit": { + "version": "2.1.6", + "license": "MIT", + "dependencies": { + "@volar/language-service": "2.1.6", + "@volar/typescript": "2.1.6", + "typesafe-path": "^0.2.2", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "typescript": "*" } }, - "node_modules/@pulumi/pulumi/node_modules/execa/node_modules/is-stream": { - "version": "2.0.1", + "node_modules/@volar/language-core": { + "version": "2.1.6", "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@volar/source-map": "2.1.6" } }, - "node_modules/@pulumi/pulumi/node_modules/execa/node_modules/npm-run-path": { - "version": "4.0.1", + "node_modules/@volar/language-server": { + "version": "2.1.6", "license": "MIT", "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" + "@volar/language-core": "2.1.6", + "@volar/language-service": "2.1.6", + "@volar/snapshot-document": "2.1.6", + "@volar/typescript": "2.1.6", + "@vscode/l10n": "^0.0.16", + "path-browserify": "^1.0.1", + "request-light": "^0.7.0", + "vscode-languageserver": "^9.0.1", + "vscode-languageserver-protocol": "^3.17.5", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" } }, - "node_modules/@pulumi/pulumi/node_modules/execa/node_modules/onetime": { - "version": "5.1.2", + "node_modules/@volar/language-service": { + "version": "2.1.6", "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@volar/language-core": "2.1.6", + "vscode-languageserver-protocol": "^3.17.5", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" } }, - "node_modules/@pulumi/pulumi/node_modules/execa/node_modules/onetime/node_modules/mimic-fn": { - "version": "2.1.0", + "node_modules/@volar/snapshot-document": { + "version": "2.1.6", "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "vscode-languageserver-protocol": "^3.17.5", + "vscode-languageserver-textdocument": "^1.0.11" } }, - "node_modules/@pulumi/pulumi/node_modules/execa/node_modules/signal-exit": { - "version": "3.0.7", - "license": "ISC" + "node_modules/@volar/source-map": { + "version": "2.1.6", + "license": "MIT", + "dependencies": { + "muggle-string": "^0.4.0" + } }, - "node_modules/@pulumi/pulumi/node_modules/execa/node_modules/strip-final-newline": { - "version": "2.0.0", + "node_modules/@volar/typescript": { + "version": "2.1.6", "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "@volar/language-core": "2.1.6", + "path-browserify": "^1.0.1" } }, - "node_modules/@pulumi/pulumi/node_modules/typescript": { - "version": "3.8.3", - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" + "node_modules/@vscode/emmet-helper": { + "version": "2.9.2", + "license": "MIT", + "dependencies": { + "emmet": "^2.4.3", + "jsonc-parser": "^2.3.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.15.1", + "vscode-uri": "^2.1.2" } }, - "node_modules/@pulumi/query": { - "version": "v0.3.0", - "license": "Apache-2.0" + "node_modules/@vscode/emmet-helper/node_modules/jsonc-parser": { + "version": "2.3.1", + "license": "MIT" }, - "node_modules/@pulumi/random": { - "version": "v4.15.0", - "license": "Apache-2.0", - "dependencies": { - "@pulumi/pulumi": "^3.0.0" - } + "node_modules/@vscode/emmet-helper/node_modules/vscode-uri": { + "version": "2.1.2", + "license": "MIT" }, - "node_modules/@pulumi/tls": { - "version": "v5.0.1", - "license": "Apache-2.0", - "dependencies": { - "@pulumi/pulumi": "^3.0.0" - } + "node_modules/@vscode/l10n": { + "version": "0.0.16", + "license": "MIT" }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.14.0", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/abbrev": { + "version": "2.0.0", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.14.0", - "cpu": [ - "x64" - ], + "node_modules/abort-controller": { + "version": "3.0.0", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@sigstore/bundle": { - "version": "2.3.1", - "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.3.1" + "event-target-shim": "^5.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=6.5" } }, - "node_modules/@sigstore/core": { - "version": "1.1.0", - "license": "Apache-2.0", + "node_modules/acorn": { + "version": "8.11.3", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=0.4.0" } }, - "node_modules/@sigstore/protobuf-specs": { - "version": "0.3.1", - "license": "Apache-2.0", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.2", + "license": "MIT", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=0.4.0" } }, - "node_modules/@sigstore/sign": { - "version": "2.3.0", - "license": "Apache-2.0", + "node_modules/agent-base": { + "version": "7.1.1", + "license": "MIT", "dependencies": { - "@sigstore/bundle": "^2.3.0", - "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.1", - "make-fetch-happen": "^13.0.0" + "debug": "^4.3.4" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">= 14" } }, - "node_modules/@sigstore/tuf": { - "version": "2.3.2", - "license": "Apache-2.0", + "node_modules/agentkeepalive": { + "version": "4.5.0", + "dev": true, + "license": "MIT", "dependencies": { - "@sigstore/protobuf-specs": "^0.3.0", - "tuf-js": "^2.2.0" + "humanize-ms": "^1.2.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">= 8.0.0" } }, - "node_modules/@sigstore/verify": { - "version": "1.2.0", - "license": "Apache-2.0", + "node_modules/aggregate-error": { + "version": "3.1.0", + "license": "MIT", "dependencies": { - "@sigstore/bundle": "^2.3.1", - "@sigstore/core": "^1.1.0", - "@sigstore/protobuf-specs": "^0.3.1" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", + "node_modules/ansi-align": { + "version": "3.0.1", + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-regex": { + "version": "6.0.1", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-sequence-parser": { + "version": "1.1.1", "dev": true, "license": "MIT" }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", + "node_modules/ansi-styles": { + "version": "5.2.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@smithy/abort-controller": { - "version": "2.2.0", - "license": "Apache-2.0", + "node_modules/anymatch": { + "version": "3.1.3", + "license": "ISC", "dependencies": { - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=14.0.0" + "node": ">= 8" } }, - "node_modules/@smithy/chunked-blob-reader": { - "version": "2.2.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@smithy/chunked-blob-reader-native": { - "version": "2.2.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-base64": "^2.3.0", - "tslib": "^2.6.2" - } + "node_modules/aproba": { + "version": "2.0.0", + "license": "ISC" }, - "node_modules/@smithy/config-resolver": { - "version": "2.1.5", - "license": "Apache-2.0", + "node_modules/archiver": { + "version": "6.0.1", + "license": "MIT", "dependencies": { - "@smithy/node-config-provider": "^2.2.5", - "@smithy/types": "^2.11.0", - "@smithy/util-config-provider": "^2.2.1", - "@smithy/util-middleware": "^2.1.4", - "tslib": "^2.5.0" + "archiver-utils": "^4.0.1", + "async": "^3.2.4", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^5.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">= 12.0.0" } }, - "node_modules/@smithy/core": { - "version": "1.3.6", - "license": "Apache-2.0", + "node_modules/archiver-utils": { + "version": "4.0.1", + "license": "MIT", "dependencies": { - "@smithy/middleware-endpoint": "^2.4.5", - "@smithy/middleware-retry": "^2.1.5", - "@smithy/middleware-serde": "^2.2.0", - "@smithy/protocol-http": "^3.2.2", - "@smithy/smithy-client": "^2.4.3", - "@smithy/types": "^2.11.0", - "@smithy/util-middleware": "^2.1.4", - "tslib": "^2.5.0" + "glob": "^8.0.0", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash": "^4.17.15", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" }, "engines": { - "node": ">=14.0.0" + "node": ">= 12.0.0" } }, - "node_modules/@smithy/core/node_modules/@smithy/smithy-client": { - "version": "2.4.3", - "license": "Apache-2.0", + "node_modules/archiver-utils/node_modules/glob": { + "version": "8.1.0", + "license": "ISC", "dependencies": { - "@smithy/middleware-endpoint": "^2.4.5", - "@smithy/middleware-stack": "^2.1.4", - "@smithy/protocol-http": "^3.2.2", - "@smithy/types": "^2.11.0", - "@smithy/util-stream": "^2.1.4", - "tslib": "^2.5.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@smithy/credential-provider-imds": { - "version": "2.2.6", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^2.2.5", - "@smithy/property-provider": "^2.1.4", - "@smithy/types": "^2.11.0", - "@smithy/url-parser": "^2.1.4", - "tslib": "^2.5.0" + "node": ">=12" }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@smithy/eventstream-codec": { - "version": "2.1.4", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/crc32": "3.0.0", - "@smithy/types": "^2.11.0", - "@smithy/util-hex-encoding": "^2.1.1", - "tslib": "^2.5.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@smithy/eventstream-serde-browser": { - "version": "2.1.4", - "license": "Apache-2.0", + "node_modules/archiver-utils/node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "license": "ISC", "dependencies": { - "@smithy/eventstream-serde-universal": "^2.1.4", - "@smithy/types": "^2.11.0", - "tslib": "^2.5.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=10" } }, - "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "2.1.4", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.11.0", - "tslib": "^2.5.0" - }, + "node_modules/are-we-there-yet": { + "version": "4.0.2", + "license": "ISC", "engines": { - "node": ">=14.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@smithy/eventstream-serde-node": { - "version": "2.1.4", - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-serde-universal": "^2.1.4", - "@smithy/types": "^2.11.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } + "node_modules/arg": { + "version": "5.0.2", + "license": "MIT" }, - "node_modules/@smithy/eventstream-serde-universal": { - "version": "2.1.4", - "license": "Apache-2.0", + "node_modules/argparse": { + "version": "1.0.10", + "license": "MIT", "dependencies": { - "@smithy/eventstream-codec": "^2.1.4", - "@smithy/types": "^2.11.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" + "sprintf-js": "~1.0.2" } }, - "node_modules/@smithy/fetch-http-handler": { - "version": "2.5.0", - "license": "Apache-2.0", + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dependencies": { - "@smithy/protocol-http": "^3.3.0", - "@smithy/querystring-builder": "^2.2.0", - "@smithy/types": "^2.12.0", - "@smithy/util-base64": "^2.3.0", - "tslib": "^2.6.2" + "dequal": "^2.0.3" } }, - "node_modules/@smithy/hash-blob-browser": { - "version": "2.2.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/chunked-blob-reader": "^2.2.0", - "@smithy/chunked-blob-reader-native": "^2.2.0", - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" + "node_modules/array-iterate": { + "version": "2.0.1", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@smithy/hash-node": { - "version": "2.1.4", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.11.0", - "@smithy/util-buffer-from": "^2.1.1", - "@smithy/util-utf8": "^2.2.0", - "tslib": "^2.5.0" - }, + "node_modules/arrify": { + "version": "1.0.1", + "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": ">=0.10.0" } }, - "node_modules/@smithy/hash-stream-node": { - "version": "2.2.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.12.0", - "@smithy/util-utf8": "^2.3.0", - "tslib": "^2.6.2" - }, + "node_modules/assertion-error": { + "version": "1.1.0", + "dev": true, + "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": "*" } }, - "node_modules/@smithy/invalid-dependency": { - "version": "2.1.4", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.11.0", - "tslib": "^2.5.0" + "node_modules/astring": { + "version": "1.8.6", + "license": "MIT", + "bin": { + "astring": "bin/astring" } }, - "node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "license": "Apache-2.0", + "node_modules/astro-sst": { + "version": "2.40.1", + "license": "MIT", "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" + "@astrojs/webapi": "^3.0.0", + "set-cookie-parser": "^2.6.0" } }, - "node_modules/@smithy/md5-js": { - "version": "2.2.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.12.0", - "@smithy/util-utf8": "^2.3.0", - "tslib": "^2.6.2" - } + "node_modules/async": { + "version": "3.2.5", + "license": "MIT" }, - "node_modules/@smithy/middleware-content-length": { - "version": "2.1.4", + "node_modules/asynckit": { + "version": "0.4.0", + "devOptional": true, + "license": "MIT" + }, + "node_modules/aws-crt": { + "version": "1.21.1", + "hasInstallScript": true, "license": "Apache-2.0", + "optional": true, + "peer": true, "dependencies": { - "@smithy/protocol-http": "^3.2.2", - "@smithy/types": "^2.11.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" + "@aws-sdk/util-utf8-browser": "^3.109.0", + "@httptoolkit/websocket-stream": "^6.0.1", + "axios": "^1.6.0", + "buffer": "^6.0.3", + "crypto-js": "^4.2.0", + "mqtt": "^4.3.8", + "process": "^0.11.10" } }, - "node_modules/@smithy/middleware-endpoint": { - "version": "2.5.1", - "license": "Apache-2.0", + "node_modules/axios": { + "version": "1.6.8", + "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@smithy/middleware-serde": "^2.3.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-middleware": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, - "node_modules/@smithy/middleware-retry": { - "version": "2.1.5", - "license": "Apache-2.0", + "node_modules/axobject-query": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", + "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", "dependencies": { - "@smithy/node-config-provider": "^2.2.5", - "@smithy/protocol-http": "^3.2.2", - "@smithy/service-error-classification": "^2.1.4", - "@smithy/smithy-client": "^2.4.3", - "@smithy/types": "^2.11.0", - "@smithy/util-middleware": "^2.1.4", - "@smithy/util-retry": "^2.1.4", - "tslib": "^2.5.0", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=14.0.0" + "dequal": "^2.0.3" } }, - "node_modules/@smithy/middleware-retry/node_modules/@smithy/smithy-client": { - "version": "2.4.3", - "license": "Apache-2.0", - "dependencies": { - "@smithy/middleware-endpoint": "^2.4.5", - "@smithy/middleware-stack": "^2.1.4", - "@smithy/protocol-http": "^3.2.2", - "@smithy/types": "^2.11.0", - "@smithy/util-stream": "^2.1.4", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" + "node_modules/b4a": { + "version": "1.6.6", + "license": "Apache-2.0" + }, + "node_modules/bail": { + "version": "2.0.2", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@smithy/middleware-serde": { - "version": "2.3.0", + "node_modules/balanced-match": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/bare-events": { + "version": "2.2.2", "license": "Apache-2.0", + "optional": true + }, + "node_modules/base-64": { + "version": "0.1.0", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/bcp-47": { + "version": "2.1.0", + "license": "MIT", "dependencies": { - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" + "is-alphabetical": "^2.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0" }, - "engines": { - "node": ">=14.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@smithy/middleware-stack": { - "version": "2.2.0", - "license": "Apache-2.0", + "node_modules/bcp-47-match": { + "version": "2.0.3", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/bin-links": { + "version": "4.0.3", + "license": "ISC", "dependencies": { - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" }, "engines": { - "node": ">=14.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@smithy/node-config-provider": { + "node_modules/binary-extensions": { "version": "2.3.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" - }, + "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@smithy/node-http-handler": { - "version": "2.5.0", - "license": "Apache-2.0", + "node_modules/boolbase": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/bowser": { + "version": "2.11.0", + "license": "MIT" + }, + "node_modules/boxen": { + "version": "7.1.1", + "license": "MIT", "dependencies": { - "@smithy/abort-controller": "^2.2.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/querystring-builder": "^2.2.0", - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" + "ansi-align": "^3.0.1", + "camelcase": "^7.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@smithy/property-provider": { - "version": "2.2.0", - "license": "Apache-2.0", + "node_modules/boxen/node_modules/string-width": { + "version": "5.1.2", + "license": "MIT", "dependencies": { - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@smithy/protocol-http": { - "version": "3.3.0", - "license": "Apache-2.0", + "node_modules/boxen/node_modules/string-width/node_modules/emoji-regex": { + "version": "9.2.2", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "license": "MIT", "dependencies": { - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" + "balanced-match": "^1.0.0" } }, - "node_modules/@smithy/querystring-builder": { - "version": "2.2.0", - "license": "Apache-2.0", + "node_modules/braces": { + "version": "3.0.2", + "license": "MIT", "dependencies": { - "@smithy/types": "^2.12.0", - "@smithy/util-uri-escape": "^2.2.0", - "tslib": "^2.6.2" + "fill-range": "^7.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=8" } }, - "node_modules/@smithy/querystring-parser": { - "version": "2.2.0", - "license": "Apache-2.0", + "node_modules/browserslist": { + "version": "4.23.0", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": ">=14.0.0" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/@smithy/service-error-classification": { - "version": "2.1.4", - "license": "Apache-2.0", + "node_modules/buffer": { + "version": "6.0.3", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@smithy/types": "^2.11.0" - }, - "engines": { - "node": ">=14.0.0" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/@smithy/shared-ini-file-loader": { - "version": "2.4.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" - }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": "*" } }, - "node_modules/@smithy/signature-v4": { - "version": "2.1.4", - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-codec": "^2.1.4", - "@smithy/is-array-buffer": "^2.1.1", - "@smithy/types": "^2.11.0", - "@smithy/util-hex-encoding": "^2.1.1", - "@smithy/util-middleware": "^2.1.4", - "@smithy/util-uri-escape": "^2.1.1", - "@smithy/util-utf8": "^2.2.0", - "tslib": "^2.5.0" - }, + "node_modules/buffer-from": { + "version": "1.1.2", + "license": "MIT" + }, + "node_modules/builtin-modules": { + "version": "3.0.0", + "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": ">=6" } }, - "node_modules/@smithy/smithy-client": { - "version": "2.1.18", - "license": "Apache-2.0", - "dependencies": { - "@smithy/middleware-stack": "^2.0.9", - "@smithy/types": "^2.7.0", - "@smithy/util-stream": "^2.0.23", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@smithy/types": { - "version": "2.12.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@smithy/url-parser": { - "version": "2.2.0", - "license": "Apache-2.0", + "node_modules/builtins": { + "version": "5.0.1", + "license": "MIT", "dependencies": { - "@smithy/querystring-parser": "^2.2.0", - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" + "semver": "^7.0.0" } }, - "node_modules/@smithy/util-base64": { - "version": "2.3.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", - "tslib": "^2.6.2" - }, + "node_modules/cac": { + "version": "6.7.14", + "dev": true, + "license": "MIT", "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@smithy/util-body-length-browser": { - "version": "2.1.1", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.5.0" + "node": ">=8" } }, - "node_modules/@smithy/util-body-length-node": { - "version": "2.2.1", - "license": "Apache-2.0", + "node_modules/cacache": { + "version": "18.0.2", + "license": "ISC", "dependencies": { - "tslib": "^2.5.0" + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" }, "engines": { - "node": ">=14.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "10.2.0", + "license": "ISC", "engines": { - "node": ">=14.0.0" + "node": "14 || >=16.14" } }, - "node_modules/@smithy/util-config-provider": { - "version": "2.2.1", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.5.0" - }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": ">=10.6.0" } }, - "node_modules/@smithy/util-defaults-mode-browser": { - "version": "2.1.5", - "license": "Apache-2.0", + "node_modules/cacheable-request": { + "version": "7.0.4", + "license": "MIT", "dependencies": { - "@smithy/property-provider": "^2.1.4", - "@smithy/smithy-client": "^2.4.3", - "@smithy/types": "^2.11.0", - "bowser": "^2.11.0", - "tslib": "^2.5.0" + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" }, "engines": { - "node": ">= 10.0.0" + "node": ">=8" } }, - "node_modules/@smithy/util-defaults-mode-browser/node_modules/@smithy/smithy-client": { - "version": "2.4.3", - "license": "Apache-2.0", + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "license": "MIT", "dependencies": { - "@smithy/middleware-endpoint": "^2.4.5", - "@smithy/middleware-stack": "^2.1.4", - "@smithy/protocol-http": "^3.2.2", - "@smithy/types": "^2.11.0", - "@smithy/util-stream": "^2.1.4", - "tslib": "^2.5.0" + "pump": "^3.0.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@smithy/util-defaults-mode-node": { - "version": "2.2.5", - "license": "Apache-2.0", - "dependencies": { - "@smithy/config-resolver": "^2.1.5", - "@smithy/credential-provider-imds": "^2.2.6", - "@smithy/node-config-provider": "^2.2.5", - "@smithy/property-provider": "^2.1.4", - "@smithy/smithy-client": "^2.4.3", - "@smithy/types": "^2.11.0", - "tslib": "^2.5.0" - }, + "node_modules/camelcase": { + "version": "7.0.1", + "license": "MIT", "engines": { - "node": ">= 10.0.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@smithy/util-defaults-mode-node/node_modules/@smithy/smithy-client": { - "version": "2.4.3", - "license": "Apache-2.0", - "dependencies": { - "@smithy/middleware-endpoint": "^2.4.5", - "@smithy/middleware-stack": "^2.1.4", - "@smithy/protocol-http": "^3.2.2", - "@smithy/types": "^2.11.0", - "@smithy/util-stream": "^2.1.4", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" + "node_modules/caniuse-lite": { + "version": "1.0.30001606", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/ccount": { + "version": "2.0.1", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@smithy/util-endpoints": { - "version": "1.1.5", - "license": "Apache-2.0", + "node_modules/chai": { + "version": "4.4.1", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/node-config-provider": "^2.2.5", - "@smithy/types": "^2.11.0", - "tslib": "^2.5.0" + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" }, "engines": { - "node": ">= 14.0.0" + "node": ">=4" } }, - "node_modules/@smithy/util-hex-encoding": { - "version": "2.2.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, + "node_modules/chalk": { + "version": "5.3.0", + "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@smithy/util-middleware": { - "version": "2.2.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" + "node_modules/character-entities": { + "version": "2.0.2", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@smithy/util-retry": { - "version": "2.1.4", - "license": "Apache-2.0", - "dependencies": { - "@smithy/service-error-classification": "^2.1.4", - "@smithy/types": "^2.11.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">= 14.0.0" + "node_modules/character-entities-html4": { + "version": "2.1.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@smithy/util-stream": { - "version": "2.2.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/types": "^2.12.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-buffer-from": "^2.2.0", - "@smithy/util-hex-encoding": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@smithy/util-uri-escape": { - "version": "2.2.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, + "node_modules/charenc": { + "version": "0.0.2", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=14.0.0" + "node": "*" } }, - "node_modules/@smithy/util-waiter": { - "version": "2.1.4", - "license": "Apache-2.0", + "node_modules/check-error": { + "version": "1.0.3", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/abort-controller": "^2.1.4", - "@smithy/types": "^2.11.0", - "tslib": "^2.5.0" + "get-func-name": "^2.0.2" }, "engines": { - "node": ">=14.0.0" + "node": "*" } }, - "node_modules/@sst/platform": { - "resolved": "pkg/platform", - "link": true - }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", + "node_modules/chokidar": { + "version": "3.6.0", "license": "MIT", "dependencies": { - "defer-to-connect": "^2.0.0" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "license": "ISC", "engines": { "node": ">=10" } }, - "node_modules/@tsconfig/node18": { - "version": "18.2.2", - "dev": true, - "license": "MIT" + "node_modules/clean-stack": { + "version": "2.2.0", + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/@tufjs/canonical-json": { - "version": "2.0.0", + "node_modules/cli-boxes": { + "version": "3.0.0", "license": "MIT", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@tufjs/models": { - "version": "2.0.0", + "node_modules/cli-cursor": { + "version": "4.0.0", "license": "MIT", "dependencies": { - "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.3" + "restore-cursor": "^4.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/acorn": { - "version": "4.0.6", + "node_modules/cli-spinners": { + "version": "2.9.2", "license": "MIT", - "dependencies": { - "@types/estree": "*" + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/archiver": { - "version": "6.0.2", - "dev": true, - "license": "MIT", + "node_modules/cliui": { + "version": "8.0.1", + "license": "ISC", "dependencies": { - "@types/readdir-glob": "*" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/@types/aws-lambda": { - "version": "8.10.137", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", "license": "MIT", - "peer": true, "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", + "node_modules/cliui/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "5.0.1", "license": "MIT", - "peer": true, - "dependencies": { - "@babel/types": "^7.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/@types/babel__template": { - "version": "7.4.4", + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", "license": "MIT", - "peer": true, "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@types/babel__traverse": { - "version": "7.20.5", + "node_modules/cliui/node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", "license": "MIT", - "peer": true, "dependencies": { - "@babel/types": "^7.20.7" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@types/cacheable-request": { - "version": "6.0.3", + "node_modules/clone-response": { + "version": "1.0.3", "license": "MIT", "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/debug": { - "version": "4.1.12", + "node_modules/clone-response/node_modules/mimic-response": { + "version": "1.0.1", "license": "MIT", - "dependencies": { - "@types/ms": "*" + "engines": { + "node": ">=4" } }, - "node_modules/@types/estree": { - "version": "1.0.5", - "license": "MIT" + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } }, - "node_modules/@types/estree-jsx": { - "version": "1.0.5", - "license": "MIT", - "dependencies": { - "@types/estree": "*" + "node_modules/cmd-shim": { + "version": "6.0.2", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@types/google-protobuf": { - "version": "3.15.12", - "license": "MIT" + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, - "node_modules/@types/hast": { - "version": "2.3.10", + "node_modules/color": { + "version": "4.2.3", "license": "MIT", "dependencies": { - "@types/unist": "^2" + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" } }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.4", - "license": "MIT" - }, - "node_modules/@types/keyv": { - "version": "3.1.4", + "node_modules/color-convert": { + "version": "2.0.1", "license": "MIT", "dependencies": { - "@types/node": "*" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@types/mdast": { - "version": "3.0.15", + "node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", "license": "MIT", "dependencies": { - "@types/unist": "^2" + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" } }, - "node_modules/@types/mdx": { - "version": "2.0.12", - "license": "MIT" - }, - "node_modules/@types/ms": { - "version": "0.7.34", - "license": "MIT" + "node_modules/color-support": { + "version": "1.1.3", + "license": "ISC", + "bin": { + "color-support": "bin.js" + } }, - "node_modules/@types/nlcst": { - "version": "1.0.4", + "node_modules/combined-stream": { + "version": "1.0.8", + "devOptional": true, "license": "MIT", "dependencies": { - "@types/unist": "^2" + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/@types/node": { - "version": "20.12.5", + "node_modules/comma-separated-tokens": { + "version": "2.0.3", "license": "MIT", - "dependencies": { - "undici-types": "~5.26.4" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@types/node-fetch": { - "version": "2.6.11", - "dev": true, + "node_modules/commander": { + "version": "2.20.3", "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/commist": { + "version": "1.1.0", + "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@types/node": "*", - "form-data": "^4.0.0" + "leven": "^2.1.0", + "minimist": "^1.1.0" } }, - "node_modules/@types/parse5": { - "version": "6.0.3", - "license": "MIT" + "node_modules/common-ancestor-path": { + "version": "1.0.1", + "license": "ISC" }, - "node_modules/@types/readdir-glob": { - "version": "1.1.5", - "dev": true, + "node_modules/compress-commons": { + "version": "5.0.3", "license": "MIT", "dependencies": { - "@types/node": "*" + "crc-32": "^1.2.0", + "crc32-stream": "^5.0.0", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 12.0.0" } }, - "node_modules/@types/responselike": { - "version": "1.0.3", + "node_modules/concat-map": { + "version": "0.0.1", "license": "MIT", - "dependencies": { - "@types/node": "*" - } + "optional": true, + "peer": true }, - "node_modules/@types/sax": { - "version": "1.2.7", + "node_modules/concat-stream": { + "version": "2.0.0", + "engines": [ + "node >= 6.0" + ], "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@types/node": "*" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" } }, - "node_modules/@types/semver": { - "version": "7.5.8", - "license": "MIT" - }, - "node_modules/@types/tmp": { - "version": "0.2.6", - "license": "MIT" + "node_modules/console-control-strings": { + "version": "1.1.0", + "license": "ISC" }, - "node_modules/@types/unist": { - "version": "2.0.10", + "node_modules/convert-source-map": { + "version": "2.0.0", "license": "MIT" }, - "node_modules/@types/ws": { - "version": "8.5.10", + "node_modules/copy-anything": { + "version": "2.0.6", "license": "MIT", "optional": true, "peer": true, "dependencies": { - "@types/node": "*" + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "license": "ISC" + "node_modules/core-util-is": { + "version": "1.0.3", + "license": "MIT" }, - "node_modules/@vitest/expect": { - "version": "1.4.0", - "dev": true, + "node_modules/crc-32": { + "version": "1.2.2", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "5.0.1", "license": "MIT", "dependencies": { - "@vitest/spy": "1.4.0", - "@vitest/utils": "1.4.0", - "chai": "^4.3.10" + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">= 12.0.0" } }, - "node_modules/@vitest/runner": { - "version": "1.4.0", - "dev": true, + "node_modules/cross-spawn": { + "version": "7.0.3", "license": "MIT", "dependencies": { - "@vitest/utils": "1.4.0", - "p-limit": "^5.0.0", - "pathe": "^1.1.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">= 8" } }, - "node_modules/@vitest/snapshot": { - "version": "1.4.0", + "node_modules/crypt": { + "version": "0.0.2", "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/crypto-js": { + "version": "4.2.0", "license": "MIT", - "dependencies": { - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "pretty-format": "^29.7.0" + "optional": true, + "peer": true + }, + "node_modules/cssesc": { + "version": "3.0.0", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">=4" } }, - "node_modules/@vitest/spy": { - "version": "1.4.0", - "dev": true, + "node_modules/debug": { + "version": "4.3.4", "license": "MIT", "dependencies": { - "tinyspy": "^2.2.0" + "ms": "2.1.2" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@vitest/utils": { - "version": "1.4.0", - "dev": true, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", "license": "MIT", "dependencies": { - "diff-sequences": "^29.6.3", - "estree-walker": "^3.0.3", - "loupe": "^2.3.7", - "pretty-format": "^29.7.0" + "character-entities": "^2.0.0" }, "funding": { - "url": "https://opencollective.com/vitest" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@volar/kit": { - "version": "2.1.6", + "node_modules/decompress-response": { + "version": "6.0.0", "license": "MIT", "dependencies": { - "@volar/language-service": "2.1.6", - "@volar/typescript": "2.1.6", - "typesafe-path": "^0.2.2", - "vscode-languageserver-textdocument": "^1.0.11", - "vscode-uri": "^3.0.8" + "mimic-response": "^3.1.0" }, - "peerDependencies": { - "typescript": "*" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@volar/language-core": { - "version": "2.1.6", + "node_modules/deep-eql": { + "version": "4.1.3", + "dev": true, "license": "MIT", "dependencies": { - "@volar/source-map": "2.1.6" + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/@volar/language-server": { - "version": "2.1.6", + "node_modules/defer-to-connect": { + "version": "2.0.1", "license": "MIT", - "dependencies": { - "@volar/language-core": "2.1.6", - "@volar/language-service": "2.1.6", - "@volar/snapshot-document": "2.1.6", - "@volar/typescript": "2.1.6", - "@vscode/l10n": "^0.0.16", - "path-browserify": "^1.0.1", - "request-light": "^0.7.0", - "vscode-languageserver": "^9.0.1", - "vscode-languageserver-protocol": "^3.17.5", - "vscode-languageserver-textdocument": "^1.0.11", - "vscode-uri": "^3.0.8" + "engines": { + "node": ">=10" } }, - "node_modules/@volar/language-service": { - "version": "2.1.6", + "node_modules/delayed-stream": { + "version": "1.0.0", + "devOptional": true, "license": "MIT", - "dependencies": { - "@volar/language-core": "2.1.6", - "vscode-languageserver-protocol": "^3.17.5", - "vscode-languageserver-textdocument": "^1.0.11", - "vscode-uri": "^3.0.8" + "engines": { + "node": ">=0.4.0" } }, - "node_modules/@volar/snapshot-document": { - "version": "2.1.6", + "node_modules/dequal": { + "version": "2.0.3", "license": "MIT", - "dependencies": { - "vscode-languageserver-protocol": "^3.17.5", - "vscode-languageserver-textdocument": "^1.0.11" + "engines": { + "node": ">=6" } }, - "node_modules/@volar/source-map": { - "version": "2.1.6", - "license": "MIT", - "dependencies": { - "muggle-string": "^0.4.0" + "node_modules/detect-libc": { + "version": "2.0.3", + "license": "Apache-2.0", + "engines": { + "node": ">=8" } }, - "node_modules/@volar/typescript": { - "version": "2.1.6", + "node_modules/devlop": { + "version": "1.1.0", "license": "MIT", "dependencies": { - "@volar/language-core": "2.1.6", - "path-browserify": "^1.0.1" + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@vscode/emmet-helper": { - "version": "2.9.2", + "node_modules/diff": { + "version": "3.5.0", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "dev": true, "license": "MIT", - "dependencies": { - "emmet": "^2.4.3", - "jsonc-parser": "^2.3.0", - "vscode-languageserver-textdocument": "^1.0.1", - "vscode-languageserver-types": "^3.15.1", - "vscode-uri": "^2.1.2" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@vscode/emmet-helper/node_modules/jsonc-parser": { - "version": "2.3.1", - "license": "MIT" + "node_modules/digest-fetch": { + "version": "1.3.0", + "dev": true, + "license": "ISC", + "dependencies": { + "base-64": "^0.1.0", + "md5": "^2.3.0" + } }, - "node_modules/@vscode/emmet-helper/node_modules/vscode-uri": { - "version": "2.1.2", - "license": "MIT" + "node_modules/direction": { + "version": "2.0.1", + "license": "MIT", + "bin": { + "direction": "cli.js" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, - "node_modules/@vscode/l10n": { - "version": "0.0.16", + "node_modules/dlv": { + "version": "1.1.3", "license": "MIT" }, - "node_modules/abbrev": { - "version": "2.0.0", - "license": "ISC", + "node_modules/dset": { + "version": "3.1.3", + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/abort-controller": { - "version": "3.0.0", - "dev": true, + "node_modules/duplexify": { + "version": "3.7.1", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, - "node_modules/acorn": { - "version": "8.11.3", + "node_modules/duplexify/node_modules/readable-stream": { + "version": "2.3.8", "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" + "optional": true, + "peer": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", + "node_modules/duplexify/node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } + "optional": true, + "peer": true }, - "node_modules/acorn-walk": { - "version": "8.3.2", + "node_modules/duplexify/node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", "license": "MIT", - "engines": { - "node": ">=0.4.0" + "optional": true, + "peer": true, + "dependencies": { + "safe-buffer": "~5.1.0" } }, - "node_modules/agent-base": { - "version": "7.1.1", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.729", + "license": "ISC" + }, + "node_modules/emmet": { + "version": "2.4.7", "license": "MIT", + "workspaces": [ + "./packages/scanner", + "./packages/abbreviation", + "./packages/css-abbreviation", + "./" + ], "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" + "@emmetio/abbreviation": "^2.3.3", + "@emmetio/css-abbreviation": "^2.1.8" } }, - "node_modules/agentkeepalive": { - "version": "4.5.0", - "dev": true, + "node_modules/emoji-regex": { + "version": "8.0.0", + "license": "MIT" + }, + "node_modules/encoding": { + "version": "0.1.13", "license": "MIT", + "optional": true, "dependencies": { - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" + "iconv-lite": "^0.6.2" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", "license": "MIT", + "optional": true, "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/ansi-align": { - "version": "3.0.1", - "license": "ISC", - "peer": true, + "node_modules/end-of-stream": { + "version": "1.4.4", + "license": "MIT", "dependencies": { - "string-width": "^4.1.0" + "once": "^1.4.0" } }, - "node_modules/ansi-regex": { - "version": "6.0.1", - "license": "MIT", + "node_modules/entities": { + "version": "4.5.0", + "license": "BSD-2-Clause", "engines": { - "node": ">=12" + "node": ">=0.12" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/ansi-sequence-parser": { - "version": "1.1.1", - "license": "MIT" - }, - "node_modules/ansi-styles": { - "version": "5.2.0", - "dev": true, + "node_modules/env-paths": { + "version": "2.2.1", "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=6" } }, - "node_modules/anymatch": { - "version": "3.1.3", - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } + "node_modules/err-code": { + "version": "2.0.3", + "license": "MIT" }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", + "node_modules/errno": { + "version": "0.1.8", "license": "MIT", - "engines": { - "node": ">=8.6" + "optional": true, + "peer": true, + "dependencies": { + "prr": "~1.0.1" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "bin": { + "errno": "cli.js" } }, - "node_modules/aproba": { - "version": "2.0.0", - "license": "ISC" + "node_modules/es-module-lexer": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.2.tgz", + "integrity": "sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==" }, - "node_modules/archiver": { - "version": "6.0.1", + "node_modules/esbuild": { + "version": "0.19.10", + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "archiver-utils": "^4.0.1", - "async": "^3.2.4", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", - "readdir-glob": "^1.1.2", - "tar-stream": "^3.0.0", - "zip-stream": "^5.0.1" + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/archiver-utils": { - "version": "4.0.1", - "license": "MIT", - "dependencies": { - "glob": "^8.0.0", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash": "^4.17.15", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" + "node": ">=12" }, - "engines": { - "node": ">= 12.0.0" + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.10", + "@esbuild/android-arm": "0.19.10", + "@esbuild/android-arm64": "0.19.10", + "@esbuild/android-x64": "0.19.10", + "@esbuild/darwin-arm64": "0.19.10", + "@esbuild/darwin-x64": "0.19.10", + "@esbuild/freebsd-arm64": "0.19.10", + "@esbuild/freebsd-x64": "0.19.10", + "@esbuild/linux-arm": "0.19.10", + "@esbuild/linux-arm64": "0.19.10", + "@esbuild/linux-ia32": "0.19.10", + "@esbuild/linux-loong64": "0.19.10", + "@esbuild/linux-mips64el": "0.19.10", + "@esbuild/linux-ppc64": "0.19.10", + "@esbuild/linux-riscv64": "0.19.10", + "@esbuild/linux-s390x": "0.19.10", + "@esbuild/linux-x64": "0.19.10", + "@esbuild/netbsd-x64": "0.19.10", + "@esbuild/openbsd-x64": "0.19.10", + "@esbuild/sunos-x64": "0.19.10", + "@esbuild/win32-arm64": "0.19.10", + "@esbuild/win32-ia32": "0.19.10", + "@esbuild/win32-x64": "0.19.10" } }, - "node_modules/archiver-utils/node_modules/glob": { - "version": "8.1.0", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, + "node_modules/esbuild/node_modules/@esbuild/aix-ppc64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.10.tgz", + "integrity": "sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/archiver-utils/node_modules/glob/node_modules/minimatch": { - "version": "5.1.6", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "node_modules/esbuild/node_modules/@esbuild/android-arm": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.10.tgz", + "integrity": "sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/are-we-there-yet": { - "version": "4.0.2", - "license": "ISC", + "node_modules/esbuild/node_modules/@esbuild/android-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.10.tgz", + "integrity": "sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "license": "MIT" - }, - "node_modules/argparse": { - "version": "1.0.10", - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-iterate": { - "version": "2.0.1", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node": ">=12" } }, - "node_modules/arrify": { - "version": "1.0.1", - "license": "MIT", + "node_modules/esbuild/node_modules/@esbuild/android-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.10.tgz", + "integrity": "sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/assertion-error": { - "version": "1.1.0", - "dev": true, - "license": "MIT", + "node_modules/esbuild/node_modules/@esbuild/darwin-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.10.tgz", + "integrity": "sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "*" - } - }, - "node_modules/astring": { - "version": "1.8.6", - "license": "MIT", - "bin": { - "astring": "bin/astring" + "node": ">=12" } }, - "node_modules/astro": { - "version": "3.6.5", - "license": "MIT", - "peer": true, - "dependencies": { - "@astrojs/compiler": "^2.3.0", - "@astrojs/internal-helpers": "0.2.1", - "@astrojs/markdown-remark": "3.5.0", - "@astrojs/telemetry": "3.0.4", - "@babel/core": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/parser": "^7.22.10", - "@babel/plugin-transform-react-jsx": "^7.22.5", - "@babel/traverse": "^7.22.10", - "@babel/types": "^7.22.10", - "@types/babel__core": "^7.20.1", - "acorn": "^8.10.0", - "boxen": "^7.1.1", - "chokidar": "^3.5.3", - "ci-info": "^3.8.0", - "clsx": "^2.0.0", - "common-ancestor-path": "^1.0.1", - "cookie": "^0.5.0", - "debug": "^4.3.4", - "deterministic-object-hash": "^1.3.1", - "devalue": "^4.3.2", - "diff": "^5.1.0", - "es-module-lexer": "^1.3.0", - "esbuild": "^0.19.2", - "estree-walker": "^3.0.3", - "execa": "^8.0.1", - "fast-glob": "^3.3.1", - "github-slugger": "^2.0.0", - "gray-matter": "^4.0.3", - "html-escaper": "^3.0.3", - "http-cache-semantics": "^4.1.1", - "js-yaml": "^4.1.0", - "kleur": "^4.1.4", - "magic-string": "^0.30.3", - "mdast-util-to-hast": "12.3.0", - "mime": "^3.0.0", - "ora": "^7.0.1", - "p-limit": "^4.0.0", - "p-queue": "^7.4.1", - "path-to-regexp": "^6.2.1", - "preferred-pm": "^3.1.2", - "probe-image-size": "^7.2.3", - "prompts": "^2.4.2", - "rehype": "^12.0.1", - "resolve": "^1.22.4", - "semver": "^7.5.4", - "server-destroy": "^1.0.1", - "shikiji": "^0.6.8", - "string-width": "^6.1.0", - "strip-ansi": "^7.1.0", - "tsconfck": "^3.0.0", - "unist-util-visit": "^4.1.2", - "vfile": "^5.3.7", - "vite": "^4.4.9", - "vitefu": "^0.2.4", - "which-pm": "^2.1.1", - "yargs-parser": "^21.1.1", - "zod": "^3.22.4" - }, - "bin": { - "astro": "astro.js" - }, + "node_modules/esbuild/node_modules/@esbuild/darwin-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.10.tgz", + "integrity": "sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=18.14.1", - "npm": ">=6.14.0" - }, - "optionalDependencies": { - "sharp": "^0.32.5" - } - }, - "node_modules/astro-expressive-code": { - "version": "0.29.4", - "license": "MIT", - "dependencies": { - "remark-expressive-code": "^0.29.4" - }, - "peerDependencies": { - "astro": "^3.0.0-beta || ^4.0.0-beta" - } - }, - "node_modules/astro-sst": { - "version": "2.40.1", - "license": "MIT", - "dependencies": { - "@astrojs/webapi": "^3.0.0", - "set-cookie-parser": "^2.6.0" + "node": ">=12" } }, - "node_modules/astro/node_modules/diff": { - "version": "5.2.0", - "license": "BSD-3-Clause", - "peer": true, + "node_modules/esbuild/node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.10.tgz", + "integrity": "sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=0.3.1" + "node": ">=12" } }, - "node_modules/astro/node_modules/esbuild": { - "version": "0.19.12", - "hasInstallScript": true, - "license": "MIT", - "peer": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" - } - }, - "node_modules/astro/node_modules/esbuild/node_modules/@esbuild/linux-x64": { - "version": "0.19.12", + "node_modules/esbuild/node_modules/@esbuild/freebsd-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.10.tgz", + "integrity": "sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ - "linux" + "freebsd" ], - "peer": true, "engines": { "node": ">=12" } }, - "node_modules/astro/node_modules/js-yaml": { - "version": "4.1.0", - "license": "MIT", - "peer": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "node_modules/esbuild/node_modules/@esbuild/linux-arm": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.10.tgz", + "integrity": "sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/astro/node_modules/js-yaml/node_modules/argparse": { - "version": "2.0.1", - "license": "Python-2.0", - "peer": true - }, - "node_modules/astro/node_modules/mime": { - "version": "3.0.0", - "license": "MIT", - "peer": true, - "bin": { - "mime": "cli.js" - }, + "node_modules/esbuild/node_modules/@esbuild/linux-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.10.tgz", + "integrity": "sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10.0.0" + "node": ">=12" } }, - "node_modules/astro/node_modules/p-limit": { - "version": "4.0.0", - "license": "MIT", - "peer": true, - "dependencies": { - "yocto-queue": "^1.0.0" - }, + "node_modules/esbuild/node_modules/@esbuild/linux-ia32": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.10.tgz", + "integrity": "sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/astro/node_modules/sharp": { - "version": "0.32.6", - "hasInstallScript": true, - "license": "Apache-2.0", + "node_modules/esbuild/node_modules/@esbuild/linux-loong64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.10.tgz", + "integrity": "sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA==", + "cpu": [ + "loong64" + ], "optional": true, - "peer": true, - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.2", - "node-addon-api": "^6.1.0", - "prebuild-install": "^7.1.1", - "semver": "^7.5.4", - "simple-get": "^4.0.1", - "tar-fs": "^3.0.4", - "tunnel-agent": "^0.6.0" - }, + "os": [ + "linux" + ], "engines": { - "node": ">=14.15.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" + "node": ">=12" } }, - "node_modules/astro/node_modules/string-width": { - "version": "6.1.0", - "license": "MIT", - "peer": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^10.2.1", - "strip-ansi": "^7.0.1" - }, + "node_modules/esbuild/node_modules/@esbuild/linux-mips64el": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.10.tgz", + "integrity": "sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/astro/node_modules/string-width/node_modules/emoji-regex": { - "version": "10.3.0", - "license": "MIT", - "peer": true - }, - "node_modules/astro/node_modules/vite": { - "version": "4.5.3", - "license": "MIT", - "peer": true, - "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.27", - "rollup": "^3.27.1" - }, - "bin": { - "vite": "bin/vite.js" - }, + "node_modules/esbuild/node_modules/@esbuild/linux-ppc64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.10.tgz", + "integrity": "sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } + "node": ">=12" } }, - "node_modules/astro/node_modules/vite/node_modules/esbuild": { - "version": "0.18.20", - "hasInstallScript": true, - "license": "MIT", - "peer": true, - "bin": { - "esbuild": "bin/esbuild" - }, + "node_modules/esbuild/node_modules/@esbuild/linux-riscv64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.10.tgz", + "integrity": "sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" - } - }, - "node_modules/astro/node_modules/vite/node_modules/esbuild/node_modules/@esbuild/linux-x64": { - "version": "0.18.20", + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-s390x": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.10.tgz", + "integrity": "sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA==", "cpu": [ - "x64" + "s390x" ], - "license": "MIT", "optional": true, "os": [ "linux" ], - "peer": true, "engines": { "node": ">=12" } }, - "node_modules/astro/node_modules/vite/node_modules/rollup": { - "version": "3.29.4", - "license": "MIT", - "peer": true, - "bin": { - "rollup": "dist/bin/rollup" - }, + "node_modules/esbuild/node_modules/@esbuild/netbsd-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.10.tgz", + "integrity": "sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">=12" } }, - "node_modules/async": { - "version": "3.2.5", - "license": "MIT" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "devOptional": true, - "license": "MIT" - }, - "node_modules/aws-crt": { - "version": "1.21.1", - "hasInstallScript": true, - "license": "Apache-2.0", + "node_modules/esbuild/node_modules/@esbuild/openbsd-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.10.tgz", + "integrity": "sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg==", + "cpu": [ + "x64" + ], "optional": true, - "peer": true, - "dependencies": { - "@aws-sdk/util-utf8-browser": "^3.109.0", - "@httptoolkit/websocket-stream": "^6.0.1", - "axios": "^1.6.0", - "buffer": "^6.0.3", - "crypto-js": "^4.2.0", - "mqtt": "^4.3.8", - "process": "^0.11.10" + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/axios": { - "version": "1.6.8", - "license": "MIT", + "node_modules/esbuild/node_modules/@esbuild/sunos-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.10.tgz", + "integrity": "sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA==", + "cpu": [ + "x64" + ], "optional": true, - "peer": true, - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" } }, - "node_modules/b4a": { - "version": "1.6.6", - "license": "Apache-2.0" + "node_modules/esbuild/node_modules/@esbuild/win32-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.10.tgz", + "integrity": "sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/bail": { - "version": "2.0.2", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/esbuild/node_modules/@esbuild/win32-ia32": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.10.tgz", + "integrity": "sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/bare-events": { - "version": "2.2.2", - "license": "Apache-2.0", - "optional": true - }, - "node_modules/bare-fs": { - "version": "2.2.3", - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "bare-events": "^2.0.0", - "bare-path": "^2.0.0", - "streamx": "^2.13.0" - } - }, - "node_modules/bare-os": { - "version": "2.2.1", - "license": "Apache-2.0", - "optional": true, - "peer": true - }, - "node_modules/bare-path": { - "version": "2.1.1", - "license": "Apache-2.0", + "node_modules/esbuild/node_modules/@esbuild/win32-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.10.tgz", + "integrity": "sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA==", + "cpu": [ + "x64" + ], "optional": true, - "peer": true, - "dependencies": { - "bare-os": "^2.1.0" - } - }, - "node_modules/base-64": { - "version": "0.1.0", - "dev": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } + "os": [ + "win32" ], - "license": "MIT", - "peer": true - }, - "node_modules/bcp-47": { - "version": "2.1.0", - "license": "MIT", - "dependencies": { - "is-alphabetical": "^2.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">=12" } }, - "node_modules/bcp-47-match": { - "version": "2.0.3", + "node_modules/escalade": { + "version": "3.1.2", "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/bin-links": { - "version": "4.0.3", - "license": "ISC", - "dependencies": { - "cmd-shim": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "read-cmd-shim": "^4.0.0", - "write-file-atomic": "^5.0.0" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/binary-extensions": { - "version": "2.3.0", + "node_modules/escape-string-regexp": { + "version": "5.0.0", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bl": { - "version": "5.1.0", + "node_modules/esprima": { + "version": "4.0.1", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", "license": "MIT", - "peer": true, "dependencies": { - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "@types/estree": "^1.0.0" } }, - "node_modules/boolbase": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/bowser": { - "version": "2.11.0", - "license": "MIT" - }, - "node_modules/boxen": { - "version": "7.1.1", + "node_modules/event-target-shim": { + "version": "5.0.1", + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "ansi-align": "^3.0.1", - "camelcase": "^7.0.1", - "chalk": "^5.2.0", - "cli-boxes": "^3.0.0", - "string-width": "^5.1.2", - "type-fest": "^2.13.0", - "widest-line": "^4.0.1", - "wrap-ansi": "^8.1.0" - }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/boxen/node_modules/string-width": { - "version": "5.1.2", + "node_modules/eventemitter3": { + "version": "5.0.1", + "license": "MIT" + }, + "node_modules/execa": { + "version": "8.0.1", "license": "MIT", - "peer": true, "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=12" + "node": ">=16.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/boxen/node_modules/string-width/node_modules/emoji-regex": { - "version": "9.2.2", - "license": "MIT", - "peer": true + "node_modules/exponential-backoff": { + "version": "3.1.1", + "license": "Apache-2.0" }, - "node_modules/brace-expansion": { + "node_modules/extend": { + "version": "3.0.2", + "license": "MIT" + }, + "node_modules/extend-shallow": { "version": "2.0.1", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/braces": { - "version": "3.0.2", + "node_modules/fast-fifo": { + "version": "1.3.2", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">=8" + "node": ">=8.6.0" } }, - "node_modules/browserslist": { - "version": "4.23.0", + "node_modules/fast-xml-parser": { + "version": "4.2.5", "funding": [ { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" }, { "type": "github", - "url": "https://github.com/sponsors/ai" + "url": "https://github.com/sponsors/NaturalIntelligence" } ], "license": "MIT", - "peer": true, "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "strnum": "^1.0.5" }, "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "fxparser": "src/cli/cli.js" } }, - "node_modules/buffer": { - "version": "6.0.3", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true, + "node_modules/fastq": { + "version": "1.17.1", + "license": "ISC", "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "reusify": "^1.0.4" } }, - "node_modules/buffer-crc32": { - "version": "0.2.13", + "node_modules/fdir": { + "version": "6.1.1", "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "license": "MIT" + "peerDependencies": { + "picomatch": "3.x" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } }, - "node_modules/builtin-modules": { - "version": "3.0.0", + "node_modules/fill-range": { + "version": "7.0.1", "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/builtins": { - "version": "5.0.1", + "node_modules/find-up": { + "version": "6.3.0", "license": "MIT", "dependencies": { - "semver": "^7.0.0" + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cac": { - "version": "6.7.14", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/find-yarn-workspace-root2": { + "version": "1.2.16", + "license": "Apache-2.0", + "dependencies": { + "micromatch": "^4.0.2", + "pkg-dir": "^4.2.0" } }, - "node_modules/cacache": { - "version": "18.0.2", - "license": "ISC", + "node_modules/find-yarn-workspace-root2/node_modules/pkg-dir": { + "version": "4.2.0", + "license": "MIT", "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^10.0.1", - "minipass": "^7.0.3", - "minipass-collect": "^2.0.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" + "find-up": "^4.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "10.2.0", - "license": "ISC", + "node_modules/find-yarn-workspace-root2/node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": "14 || >=16.14" + "node": ">=8" } }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", + "node_modules/find-yarn-workspace-root2/node_modules/pkg-dir/node_modules/find-up/node_modules/locate-path": { + "version": "5.0.0", "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, "engines": { - "node": ">=10.6.0" + "node": ">=8" } }, - "node_modules/cacheable-request": { - "version": "7.0.4", + "node_modules/find-yarn-workspace-root2/node_modules/pkg-dir/node_modules/find-up/node_modules/locate-path/node_modules/p-locate": { + "version": "4.1.0", "license": "MIT", "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" + "p-limit": "^2.2.0" }, "engines": { "node": ">=8" } }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", + "node_modules/find-yarn-workspace-root2/node_modules/pkg-dir/node_modules/find-up/node_modules/locate-path/node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", "license": "MIT", "dependencies": { - "pump": "^3.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/camelcase": { - "version": "7.0.1", + "node_modules/find-yarn-workspace-root2/node_modules/pkg-dir/node_modules/find-up/node_modules/path-exists": { + "version": "4.0.0", "license": "MIT", - "peer": true, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001606", + "node_modules/flattie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz", + "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", "funding": [ { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" } ], - "license": "CC-BY-4.0", - "peer": true - }, - "node_modules/ccount": { - "version": "2.0.1", "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "optional": true, + "peer": true, + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/chai": { - "version": "4.4.1", - "dev": true, - "license": "MIT", + "node_modules/foreground-child": { + "version": "3.1.1", + "license": "ISC", "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.0.8" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=4" - } - }, - "node_modules/chalk": { - "version": "5.3.0", - "license": "MIT", - "peer": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": ">=14" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/character-entities": { - "version": "2.0.2", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/character-entities-html4": { - "version": "2.1.0", + "node_modules/form-data": { + "version": "4.0.0", + "devOptional": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } + "node_modules/form-data-encoder": { + "version": "1.7.2", + "dev": true, + "license": "MIT" }, - "node_modules/character-reference-invalid": { - "version": "2.0.1", + "node_modules/formdata-node": { + "version": "4.4.1", + "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" + }, + "engines": { + "node": ">= 12.20" } }, - "node_modules/charenc": { - "version": "0.0.2", + "node_modules/formdata-node/node_modules/web-streams-polyfill": { + "version": "4.0.0-beta.3", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { - "node": "*" + "node": ">= 14" } }, - "node_modules/check-error": { - "version": "1.0.3", - "dev": true, - "license": "MIT", + "node_modules/fs-minipass": { + "version": "3.0.3", + "license": "ISC", "dependencies": { - "get-func-name": "^2.0.2" + "minipass": "^7.0.3" }, "engines": { - "node": "*" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/chokidar": { - "version": "3.6.0", - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 8.10.0" - }, + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "license": "MIT", "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/chownr": { - "version": "2.0.0", + "node_modules/gauge": { + "version": "5.0.1", "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^4.0.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/ci-info": { - "version": "3.9.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "node_modules/gauge/node_modules/strip-ansi": { + "version": "6.0.1", "license": "MIT", - "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { "node": ">=8" } }, - "node_modules/clean-stack": { - "version": "2.2.0", + "node_modules/gauge/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "5.0.1", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/cli-boxes": { - "version": "3.0.0", + "node_modules/gensync": { + "version": "1.0.0-beta.2", "license": "MIT", - "peer": true, "engines": { - "node": ">=10" + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", + "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-cursor": { - "version": "4.0.0", + "node_modules/get-func-name": { + "version": "2.0.2", + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "restore-cursor": "^4.0.0" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "*" + } + }, + "node_modules/get-stream": { + "version": "8.0.1", + "license": "MIT", + "engines": { + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-spinners": { - "version": "2.9.2", + "node_modules/get-tsconfig": { + "version": "4.7.3", + "dev": true, "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" + "dependencies": { + "resolve-pkg-maps": "^1.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/cliui": { - "version": "8.0.1", + "node_modules/github-slugger": { + "version": "2.0.0", + "license": "ISC" + }, + "node_modules/glob": { + "version": "10.3.10", "license": "ISC", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=12" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "license": "MIT", + "node_modules/glob-parent": { + "version": "5.1.2", + "license": "ISC", "dependencies": { - "ansi-regex": "^5.0.1" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/cliui/node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "5.0.1", + "node_modules/globals": { + "version": "11.12.0", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } + "node_modules/google-protobuf": { + "version": "3.21.2", + "license": "(BSD-3-Clause AND Apache-2.0)" }, - "node_modules/cliui/node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/got": { + "version": "11.8.6", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=10.19.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, - "node_modules/clone-response": { - "version": "1.0.3", + "node_modules/graceful-fs": { + "version": "4.2.11", + "license": "ISC" + }, + "node_modules/gray-matter": { + "version": "4.0.3", "license": "MIT", "dependencies": { - "mimic-response": "^1.0.0" + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clone-response/node_modules/mimic-response": { - "version": "1.0.1", - "license": "MIT", "engines": { - "node": ">=4" + "node": ">=6.0" } }, - "node_modules/clsx": { - "version": "2.1.0", + "node_modules/has-flag": { + "version": "3.0.0", "license": "MIT", - "peer": true, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/cmd-shim": { - "version": "6.0.2", - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "node_modules/has-unicode": { + "version": "2.0.1", + "license": "ISC" }, - "node_modules/color": { - "version": "4.2.3", + "node_modules/hasown": { + "version": "2.0.2", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=12.5.0" + "node": ">= 0.4" } }, - "node_modules/color-convert": { + "node_modules/hast-util-from-html": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.1.tgz", + "integrity": "sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==", "dependencies": { - "color-name": "~1.1.4" + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" }, - "engines": { - "node": ">=7.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/color-string": { - "version": "1.9.1", - "license": "MIT", + "node_modules/hast-util-from-html/node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + "@types/unist": "*" } }, - "node_modules/color-support": { - "version": "1.1.3", - "license": "ISC", - "bin": { - "color-support": "bin.js" - } + "node_modules/hast-util-from-html/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" }, - "node_modules/combined-stream": { - "version": "1.0.8", - "devOptional": true, - "license": "MIT", + "node_modules/hast-util-from-html/node_modules/hast-util-from-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", + "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", "dependencies": { - "delayed-stream": "~1.0.0" + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^8.0.0", + "property-information": "^6.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "license": "MIT", "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/commander": { - "version": "2.20.3", - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/commist": { - "version": "1.1.0", - "license": "MIT", - "optional": true, - "peer": true, + "node_modules/hast-util-from-html/node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", "dependencies": { - "leven": "^2.1.0", - "minimist": "^1.1.0" + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/common-ancestor-path": { - "version": "1.0.1", - "license": "ISC" - }, - "node_modules/compress-commons": { - "version": "5.0.3", - "license": "MIT", + "node_modules/hast-util-from-html/node_modules/hastscript": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", + "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", "dependencies": { - "crc-32": "^1.2.0", - "crc32-stream": "^5.0.0", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" }, - "engines": { - "node": ">= 12.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/concat-stream": { - "version": "2.0.0", - "engines": [ - "node >= 6.0" - ], - "license": "MIT", - "optional": true, - "peer": true, + "node_modules/hast-util-from-html/node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "license": "ISC" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "license": "MIT", - "peer": true - }, - "node_modules/cookie": { - "version": "0.5.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.6" + "node_modules/hast-util-from-html/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/copy-anything": { - "version": "2.0.6", - "license": "MIT", - "optional": true, - "peer": true, + "node_modules/hast-util-from-html/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dependencies": { - "is-what": "^3.14.1" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, "funding": { - "url": "https://github.com/sponsors/mesqueeb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "license": "MIT" - }, - "node_modules/crc-32": { - "version": "1.2.2", - "license": "Apache-2.0", - "bin": { - "crc32": "bin/crc32.njs" + "node_modules/hast-util-from-html/node_modules/vfile-location": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", + "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" }, - "engines": { - "node": ">=0.8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/crc32-stream": { - "version": "5.0.1", - "license": "MIT", + "node_modules/hast-util-from-html/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dependencies": { - "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, - "engines": { - "node": ">= 12.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "license": "MIT", + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "@types/hast": "^3.0.0" }, - "engines": { - "node": ">= 8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/crypt": { - "version": "0.0.2", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": "*" + "node_modules/hast-util-is-element/node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" } }, - "node_modules/crypto-js": { - "version": "4.2.0", - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/css-selector-parser": { - "version": "1.4.1", - "license": "MIT" - }, - "node_modules/cssesc": { - "version": "3.0.0", - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz", + "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" }, - "engines": { - "node": ">=4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/debug": { - "version": "4.3.4", - "license": "MIT", + "node_modules/hast-util-to-jsx-runtime/node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "@types/unist": "*" } }, - "node_modules/decode-named-character-reference": { - "version": "1.0.2", - "license": "MIT", + "node_modules/hast-util-to-jsx-runtime/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dependencies": { - "character-entities": "^2.0.0" - }, + "@types/unist": "*" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/decompress-response": { - "version": "6.0.0", - "license": "MIT", + "node_modules/hast-util-to-jsx-runtime/node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" + "@types/hast": "^3.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/deep-eql": { - "version": "4.1.3", - "dev": true, - "license": "MIT", + "node_modules/hast-util-to-jsx-runtime/node_modules/inline-style-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.3.tgz", + "integrity": "sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==" + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/mdast-util-from-markdown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz", + "integrity": "sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==", "dependencies": { - "type-detect": "^4.0.0" + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/detect-libc": { - "version": "2.0.3", - "license": "Apache-2.0", - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/deterministic-object-hash": { - "version": "1.3.1", - "license": "MIT", - "peer": true - }, - "node_modules/devalue": { - "version": "4.3.2", - "license": "MIT", - "peer": true - }, - "node_modules/devlop": { - "version": "1.1.0", - "license": "MIT", + "node_modules/hast-util-to-jsx-runtime/node_modules/mdast-util-mdx-expression": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", + "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", "dependencies": { - "dequal": "^2.0.0" + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/diff": { - "version": "3.5.0", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/digest-fetch": { - "version": "1.3.0", - "dev": true, - "license": "ISC", + "node_modules/hast-util-to-jsx-runtime/node_modules/mdast-util-mdx-jsx": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.2.tgz", + "integrity": "sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==", "dependencies": { - "base-64": "^0.1.0", - "md5": "^2.3.0" + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^5.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/direction": { + "node_modules/hast-util-to-jsx-runtime/node_modules/mdast-util-mdxjs-esm": { "version": "2.0.1", - "license": "MIT", - "bin": { - "direction": "cli.js" + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/dlv": { - "version": "1.1.3", - "license": "MIT", - "peer": true - }, - "node_modules/dset": { - "version": "3.1.3", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/duplexify": { - "version": "3.7.1", - "license": "MIT", - "optional": true, - "peer": true, + "node_modules/hast-util-to-jsx-runtime/node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/duplexify/node_modules/readable-stream": { - "version": "2.3.8", - "license": "MIT", - "optional": true, - "peer": true, + "node_modules/hast-util-to-jsx-runtime/node_modules/mdast-util-to-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/duplexify/node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/duplexify/node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.1.1", - "license": "MIT", - "optional": true, - "peer": true, + "node_modules/hast-util-to-jsx-runtime/node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", "dependencies": { - "safe-buffer": "~5.1.0" + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.4.729", - "license": "ISC", - "peer": true - }, - "node_modules/emmet": { - "version": "2.4.7", - "license": "MIT", - "workspaces": [ - "./packages/scanner", - "./packages/abbreviation", - "./packages/css-abbreviation", - "./" + "node_modules/hast-util-to-jsx-runtime/node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } ], "dependencies": { - "@emmetio/abbreviation": "^2.3.3", - "@emmetio/css-abbreviation": "^2.1.8" + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "license": "MIT" - }, - "node_modules/encoding": { - "version": "0.1.13", - "license": "MIT", - "optional": true, + "node_modules/hast-util-to-jsx-runtime/node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "iconv-lite": "^0.6.2" + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "license": "MIT", - "optional": true, + "node_modules/hast-util-to-jsx-runtime/node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "license": "MIT", + "node_modules/hast-util-to-jsx-runtime/node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/env-paths": { - "version": "2.2.1", - "license": "MIT", - "engines": { - "node": ">=6" + "node_modules/hast-util-to-jsx-runtime/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/err-code": { - "version": "2.0.3", - "license": "MIT" - }, - "node_modules/errno": { - "version": "0.1.8", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, + "node_modules/hast-util-to-jsx-runtime/node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/es-module-lexer": { - "version": "1.5.0", - "license": "MIT" - }, - "node_modules/esbuild": { - "version": "0.19.10", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.10", - "@esbuild/android-arm": "0.19.10", - "@esbuild/android-arm64": "0.19.10", - "@esbuild/android-x64": "0.19.10", - "@esbuild/darwin-arm64": "0.19.10", - "@esbuild/darwin-x64": "0.19.10", - "@esbuild/freebsd-arm64": "0.19.10", - "@esbuild/freebsd-x64": "0.19.10", - "@esbuild/linux-arm": "0.19.10", - "@esbuild/linux-arm64": "0.19.10", - "@esbuild/linux-ia32": "0.19.10", - "@esbuild/linux-loong64": "0.19.10", - "@esbuild/linux-mips64el": "0.19.10", - "@esbuild/linux-ppc64": "0.19.10", - "@esbuild/linux-riscv64": "0.19.10", - "@esbuild/linux-s390x": "0.19.10", - "@esbuild/linux-x64": "0.19.10", - "@esbuild/netbsd-x64": "0.19.10", - "@esbuild/openbsd-x64": "0.19.10", - "@esbuild/sunos-x64": "0.19.10", - "@esbuild/win32-arm64": "0.19.10", - "@esbuild/win32-ia32": "0.19.10", - "@esbuild/win32-x64": "0.19.10" + "node_modules/hast-util-to-jsx-runtime/node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/escalade": { - "version": "3.1.2", - "license": "MIT", - "engines": { - "node": ">=6" + "node_modules/hast-util-to-jsx-runtime/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/escape-string-regexp": { - "version": "5.0.0", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/hast-util-to-jsx-runtime/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/esprima": { - "version": "4.0.1", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" + "node_modules/hast-util-to-jsx-runtime/node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/estree-util-attach-comments": { - "version": "2.1.1", - "license": "MIT", + "node_modules/hast-util-to-jsx-runtime/node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@types/estree": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/estree-util-build-jsx": { - "version": "2.2.2", - "license": "MIT", + "node_modules/hast-util-to-jsx-runtime/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@types/estree-jsx": "^1.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "estree-walker": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/estree-util-is-identifier-name": { - "version": "2.1.0", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "node_modules/hast-util-to-jsx-runtime/node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/estree-util-to-js": { - "version": "1.2.0", - "license": "MIT", + "node_modules/hast-util-to-jsx-runtime/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@types/estree-jsx": "^1.0.0", - "astring": "^1.8.0", - "source-map": "^0.7.0" + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/style-to-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.6.tgz", + "integrity": "sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==", + "dependencies": { + "inline-style-parser": "0.2.3" + } + }, + "node_modules/hast-util-to-jsx-runtime/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/estree-util-to-js/node_modules/source-map": { - "version": "0.7.4", - "license": "BSD-3-Clause", - "engines": { - "node": ">= 8" + "node_modules/hast-util-to-jsx-runtime/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/estree-util-visit": { - "version": "1.2.1", - "license": "MIT", + "node_modules/hast-util-to-jsx-runtime/node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/unist": "^2.0.0" + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/estree-walker": { - "version": "3.0.3", - "license": "MIT", + "node_modules/hast-util-to-jsx-runtime/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dependencies": { - "@types/estree": "^1.0.0" + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" + "node_modules/hast-util-to-jsx-runtime/node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "license": "MIT", - "peer": true - }, - "node_modules/execa": { - "version": "8.0.1", - "license": "MIT", + "node_modules/hast-util-to-jsx-runtime/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/expand-template": { - "version": "2.0.3", - "license": "(MIT OR WTFPL)", - "optional": true, - "peer": true, - "engines": { - "node": ">=6" + "node_modules/hast-util-to-jsx-runtime/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/exponential-backoff": { - "version": "3.1.1", - "license": "Apache-2.0" + "node_modules/hast-util-to-text": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", + "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/expressive-code": { - "version": "0.29.4", - "license": "MIT", + "node_modules/hast-util-to-text/node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", "dependencies": { - "@expressive-code/core": "^0.29.4", - "@expressive-code/plugin-frames": "^0.29.4", - "@expressive-code/plugin-shiki": "^0.29.4", - "@expressive-code/plugin-text-markers": "^0.29.4" + "@types/unist": "*" } }, - "node_modules/extend": { + "node_modules/hast-util-to-text/node_modules/@types/unist": { "version": "3.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" }, - "node_modules/extend-shallow": { - "version": "2.0.1", + "node_modules/help-me": { + "version": "3.0.0", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "glob": "^7.1.6", + "readable-stream": "^3.6.0" } }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "license": "MIT", + "node_modules/help-me/node_modules/glob": { + "version": "7.2.3", + "license": "ISC", + "optional": true, + "peer": true, "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=8.6.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/fast-xml-parser": { - "version": "4.2.5", - "funding": [ - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - }, - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT", + "node_modules/help-me/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "license": "ISC", + "optional": true, + "peer": true, "dependencies": { - "strnum": "^1.0.5" + "brace-expansion": "^1.1.7" }, - "bin": { - "fxparser": "src/cli/cli.js" + "engines": { + "node": "*" } }, - "node_modules/fastq": { - "version": "1.17.1", - "license": "ISC", + "node_modules/help-me/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion": { + "version": "1.1.11", + "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "reusify": "^1.0.4" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/fdir": { - "version": "6.1.1", + "node_modules/hono": { + "version": "4.0.1", "license": "MIT", - "peerDependencies": { - "picomatch": "3.x" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } + "engines": { + "node": ">=16.0.0" } }, - "node_modules/fill-range": { + "node_modules/hosted-git-info": { "version": "7.0.1", - "license": "MIT", + "license": "ISC", "dependencies": { - "to-regex-range": "^5.0.1" + "lru-cache": "^10.0.1" }, "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/find-up": { - "version": "6.3.0", - "license": "MIT", - "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.2.0", + "license": "ISC", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "14 || >=16.14" } }, - "node_modules/find-yarn-workspace-root2": { - "version": "1.2.16", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "micromatch": "^4.0.2", - "pkg-dir": "^4.2.0" - } + "node_modules/html-escaper": { + "version": "3.0.3", + "license": "MIT" }, - "node_modules/find-yarn-workspace-root2/node_modules/pkg-dir": { - "version": "4.2.0", + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "license": "BSD-2-Clause" + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", "license": "MIT", - "peer": true, "dependencies": { - "find-up": "^4.0.0" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=8" + "node": ">= 14" } }, - "node_modules/find-yarn-workspace-root2/node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", + "node_modules/http2-wrapper": { + "version": "1.0.3", "license": "MIT", - "peer": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=10.19.0" } }, - "node_modules/find-yarn-workspace-root2/node_modules/pkg-dir/node_modules/find-up/node_modules/locate-path": { - "version": "5.0.0", + "node_modules/https-proxy-agent": { + "version": "7.0.4", "license": "MIT", - "peer": true, "dependencies": { - "p-locate": "^4.1.0" + "agent-base": "^7.0.2", + "debug": "4" }, "engines": { - "node": ">=8" + "node": ">= 14" } }, - "node_modules/find-yarn-workspace-root2/node_modules/pkg-dir/node_modules/find-up/node_modules/locate-path/node_modules/p-locate": { - "version": "4.1.0", - "license": "MIT", - "peer": true, - "dependencies": { - "p-limit": "^2.2.0" - }, + "node_modules/human-signals": { + "version": "5.0.0", + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": ">=16.17.0" } }, - "node_modules/find-yarn-workspace-root2/node_modules/pkg-dir/node_modules/find-up/node_modules/locate-path/node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", + "node_modules/humanize-ms": { + "version": "1.2.1", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "ms": "^2.0.0" } }, - "node_modules/find-yarn-workspace-root2/node_modules/pkg-dir/node_modules/find-up/node_modules/path-exists": { - "version": "4.0.0", + "node_modules/humanize-ms/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/iconv-lite": { + "version": "0.4.24", "license": "MIT", + "optional": true, "peer": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/follow-redirects": { - "version": "1.15.6", + "node_modules/ieee754": { + "version": "1.2.1", "funding": [ { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" } ], - "license": "MIT", + "license": "BSD-3-Clause", "optional": true, - "peer": true, - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } + "peer": true }, - "node_modules/foreground-child": { - "version": "3.1.1", + "node_modules/ignore-walk": { + "version": "6.0.4", "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" + "minimatch": "^9.0.0" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/form-data": { - "version": "4.0.0", - "devOptional": true, + "node_modules/image-size": { + "version": "0.5.5", "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "optional": true, + "peer": true, + "bin": { + "image-size": "bin/image-size.js" }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/form-data-encoder": { - "version": "1.7.2", - "dev": true, - "license": "MIT" + "node_modules/immutable": { + "version": "4.3.5", + "license": "MIT", + "optional": true, + "peer": true }, - "node_modules/formdata-node": { - "version": "4.4.1", - "dev": true, + "node_modules/imurmurhash": { + "version": "0.1.4", "license": "MIT", - "dependencies": { - "node-domexception": "1.0.0", - "web-streams-polyfill": "4.0.0-beta.3" - }, "engines": { - "node": ">= 12.20" + "node": ">=0.8.19" } }, - "node_modules/formdata-node/node_modules/web-streams-polyfill": { - "version": "4.0.0-beta.3", - "dev": true, + "node_modules/indent-string": { + "version": "4.0.0", "license": "MIT", "engines": { - "node": ">= 14" + "node": ">=8" } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/fs-minipass": { - "version": "3.0.3", + "node_modules/inflight": { + "version": "1.0.6", "license": "ISC", "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", + "node_modules/inherits": { + "version": "2.0.4", "license": "ISC" }, - "node_modules/function-bind": { - "version": "1.1.2", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gauge": { - "version": "5.0.1", + "node_modules/ini": { + "version": "2.0.0", "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^4.0.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/gauge/node_modules/strip-ansi": { - "version": "6.0.1", + "node_modules/inline-style-parser": { + "version": "0.1.1", + "license": "MIT" + }, + "node_modules/ip-address": { + "version": "9.0.5", "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" }, "engines": { - "node": ">=8" + "node": ">= 12" } }, - "node_modules/gauge/node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "5.0.1", + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "license": "BSD-3-Clause" + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", "license": "MIT", - "engines": { - "node": ">=8" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", + "node_modules/is-alphanumerical": { + "version": "2.0.1", "license": "MIT", - "peer": true, - "engines": { - "node": ">=6.9.0" + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } + "node_modules/is-arrayish": { + "version": "0.3.2", + "license": "MIT" }, - "node_modules/get-func-name": { - "version": "2.0.2", - "dev": true, + "node_modules/is-binary-path": { + "version": "2.1.0", "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/get-stream": { - "version": "8.0.1", + "node_modules/is-buffer": { + "version": "2.0.5", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/get-tsconfig": { - "version": "4.7.3", - "dev": true, + "node_modules/is-core-module": { + "version": "2.13.1", "license": "MIT", "dependencies": { - "resolve-pkg-maps": "^1.0.0" + "hasown": "^2.0.0" }, "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/github-from-package": { - "version": "0.0.0", + "node_modules/is-decimal": { + "version": "2.0.1", "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/github-slugger": { - "version": "2.0.0", - "license": "ISC" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, - "node_modules/glob": { - "version": "10.3.10", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, + "node_modules/is-docker": { + "version": "3.0.0", + "license": "MIT", "bin": { - "glob": "dist/esm/bin.mjs" + "is-docker": "cli.js" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, + "node_modules/is-extendable": { + "version": "0.1.1", + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/globals": { - "version": "11.12.0", + "node_modules/is-extglob": { + "version": "2.1.1", "license": "MIT", - "peer": true, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/google-protobuf": { - "version": "3.21.2", - "license": "(BSD-3-Clause AND Apache-2.0)" - }, - "node_modules/got": { - "version": "11.8.6", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" + "node": ">=8" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "license": "ISC" - }, - "node_modules/gray-matter": { + "node_modules/is-glob": { "version": "4.0.3", "license": "MIT", "dependencies": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=6.0" + "node": ">=0.10.0" } }, - "node_modules/has-flag": { - "version": "3.0.0", + "node_modules/is-hexadecimal": { + "version": "2.0.1", "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "license": "ISC" - }, - "node_modules/hasown": { - "version": "2.0.2", + "node_modules/is-inside-container": { + "version": "1.0.0", "license": "MIT", "dependencies": { - "function-bind": "^1.1.2" + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" }, "engines": { - "node": ">= 0.4" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hast-util-from-parse5": { - "version": "7.1.2", + "node_modules/is-interactive": { + "version": "2.0.0", "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.0", - "hastscript": "^7.0.0", - "property-information": "^6.0.0", - "vfile": "^5.0.0", - "vfile-location": "^4.0.0", - "web-namespaces": "^2.0.0" + "engines": { + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hast-util-has-property": { - "version": "2.0.1", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } + "node_modules/is-lambda": { + "version": "1.0.1", + "license": "MIT" }, - "node_modules/hast-util-parse-selector": { - "version": "3.1.1", + "node_modules/is-number": { + "version": "7.0.0", "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=0.12.0" } }, - "node_modules/hast-util-raw": { - "version": "7.2.3", + "node_modules/is-plain-obj": { + "version": "4.1.0", "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/parse5": "^6.0.0", - "hast-util-from-parse5": "^7.0.0", - "hast-util-to-parse5": "^7.0.0", - "html-void-elements": "^2.0.0", - "parse5": "^6.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0", - "vfile": "^5.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" + "engines": { + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hast-util-select": { - "version": "5.0.5", + "node_modules/is-reference": { + "version": "3.0.2", "license": "MIT", "dependencies": { - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.0", - "bcp-47-match": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "css-selector-parser": "^1.0.0", - "direction": "^2.0.0", - "hast-util-has-property": "^2.0.0", - "hast-util-to-string": "^2.0.0", - "hast-util-whitespace": "^2.0.0", - "not": "^0.1.0", - "nth-check": "^2.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "unist-util-visit": "^4.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "@types/estree": "*" } }, - "node_modules/hast-util-to-estree": { - "version": "2.3.3", + "node_modules/is-stream": { + "version": "3.0.0", "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "estree-util-attach-comments": "^2.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "hast-util-whitespace": "^2.0.0", - "mdast-util-mdx-expression": "^1.0.0", - "mdast-util-mdxjs-esm": "^1.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-object": "^0.4.1", - "unist-util-position": "^4.0.0", - "zwitch": "^2.0.0" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hast-util-to-html": { - "version": "8.0.4", + "node_modules/is-what": { + "version": "3.14.1", "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-raw": "^7.0.0", - "hast-util-whitespace": "^2.0.0", - "html-void-elements": "^2.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.0", - "zwitch": "^2.0.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } + "optional": true, + "peer": true }, - "node_modules/hast-util-to-parse5": { - "version": "7.1.0", + "node_modules/is-wsl": { + "version": "3.1.0", "license": "MIT", "dependencies": { - "@types/hast": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" + "is-inside-container": "^1.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-string": { - "version": "2.0.0", - "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0" + "engines": { + "node": ">=16" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hast-util-whitespace": { - "version": "2.0.1", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } + "node_modules/isarray": { + "version": "1.0.0", + "license": "MIT" }, - "node_modules/hastscript": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-parse-selector": "^3.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } + "node_modules/isexe": { + "version": "2.0.0", + "license": "ISC" }, - "node_modules/help-me": { - "version": "3.0.0", + "node_modules/isomorphic-ws": { + "version": "4.0.1", "license": "MIT", "optional": true, "peer": true, - "dependencies": { - "glob": "^7.1.6", - "readable-stream": "^3.6.0" + "peerDependencies": { + "ws": "*" } }, - "node_modules/help-me/node_modules/glob": { - "version": "7.2.3", - "license": "ISC", - "optional": true, - "peer": true, + "node_modules/jackspeak": { + "version": "2.3.6", + "license": "BlueOak-1.0.0", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": "*" + "node": ">=14" }, "funding": { "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/help-me/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "node_modules/jose": { + "version": "5.2.3", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" } }, - "node_modules/help-me/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/js-base64": { + "version": "3.7.7", + "license": "BSD-3-Clause" + }, + "node_modules/js-sdsl": { + "version": "4.3.0", "license": "MIT", "optional": true, "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" } }, - "node_modules/hono": { - "version": "4.0.1", - "license": "MIT", - "engines": { - "node": ">=16.0.0" - } + "node_modules/js-tokens": { + "version": "9.0.0", + "dev": true, + "license": "MIT" }, - "node_modules/hosted-git-info": { - "version": "7.0.1", - "license": "ISC", + "node_modules/js-yaml": { + "version": "3.14.1", + "license": "MIT", "dependencies": { - "lru-cache": "^10.0.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "10.2.0", - "license": "ISC", + "node_modules/jsbn": { + "version": "1.1.0", + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, "engines": { - "node": "14 || >=16.14" + "node": ">=4" } }, - "node_modules/html-escaper": { - "version": "3.0.3", - "license": "MIT", - "peer": true + "node_modules/json-buffer": { + "version": "3.0.1", + "license": "MIT" }, - "node_modules/html-void-elements": { - "version": "2.0.1", + "node_modules/json-parse-even-better-errors": { + "version": "3.0.1", "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "license": "BSD-2-Clause" + "node_modules/json-stringify-nice": { + "version": "1.1.4", + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", + "node_modules/json5": { + "version": "2.2.3", "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" + "bin": { + "json5": "lib/cli.js" }, "engines": { - "node": ">= 14" + "node": ">=6" } }, - "node_modules/http2-wrapper": { - "version": "1.0.3", + "node_modules/jsonc-parser": { + "version": "3.2.1", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/just-diff": { + "version": "6.0.2", + "license": "MIT" + }, + "node_modules/just-diff-apply": { + "version": "5.5.0", + "license": "MIT" + }, + "node_modules/keyv": { + "version": "4.5.4", "license": "MIT", "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - }, + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "license": "MIT", "engines": { - "node": ">=10.19.0" + "node": ">=0.10.0" } }, - "node_modules/https-proxy-agent": { - "version": "7.0.4", + "node_modules/kleur": { + "version": "4.1.5", "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, "engines": { - "node": ">= 14" + "node": ">=6" } }, - "node_modules/human-signals": { - "version": "5.0.0", - "license": "Apache-2.0", + "node_modules/lazystream": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.5" + }, "engines": { - "node": ">=16.17.0" + "node": ">= 0.6.3" } }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "dev": true, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", "license": "MIT", "dependencies": { - "ms": "^2.0.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/humanize-ms/node_modules/ms": { - "version": "2.1.3", - "dev": true, + "node_modules/lazystream/node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", "license": "MIT" }, - "node_modules/iconv-lite": { - "version": "0.4.24", + "node_modules/lazystream/node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", "license": "MIT", - "peer": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" + "safe-buffer": "~5.1.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause", - "peer": true - }, - "node_modules/ignore-walk": { - "version": "6.0.4", - "license": "ISC", + "node_modules/less": { + "version": "4.2.0", + "license": "Apache-2.0", + "optional": true, + "peer": true, "dependencies": { - "minimatch": "^9.0.0" + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" } }, - "node_modules/image-size": { - "version": "0.5.5", - "dev": true, + "node_modules/less/node_modules/mime": { + "version": "1.6.0", "license": "MIT", "optional": true, "peer": true, "bin": { - "image-size": "bin/image-size.js" + "mime": "cli.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/immutable": { - "version": "4.3.5", + "node_modules/leven": { + "version": "2.1.0", "license": "MIT", "optional": true, - "peer": true - }, - "node_modules/import-meta-resolve": { - "version": "3.1.1", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "peer": true, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "license": "MIT", + "node_modules/lightningcss": { + "version": "1.24.1", + "license": "MPL-2.0", + "optional": true, + "peer": true, + "dependencies": { + "detect-libc": "^1.0.3" + }, "engines": { - "node": ">=0.8.19" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.24.1", + "lightningcss-darwin-x64": "1.24.1", + "lightningcss-freebsd-x64": "1.24.1", + "lightningcss-linux-arm-gnueabihf": "1.24.1", + "lightningcss-linux-arm64-gnu": "1.24.1", + "lightningcss-linux-arm64-musl": "1.24.1", + "lightningcss-linux-x64-gnu": "1.24.1", + "lightningcss-linux-x64-musl": "1.24.1", + "lightningcss-win32-x64-msvc": "1.24.1" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "license": "MIT", + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.24.1", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": ">=8" + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/inflight": { - "version": "1.0.6", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.24.1", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "node_modules/ini": { - "version": "2.0.0", - "license": "ISC", + "node_modules/lightningcss/node_modules/detect-libc": { + "version": "1.0.3", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, "engines": { - "node": ">=10" + "node": ">=0.10" } }, - "node_modules/inline-style-parser": { - "version": "0.1.1", - "license": "MIT" - }, - "node_modules/ip-address": { - "version": "9.0.5", + "node_modules/load-yaml-file": { + "version": "0.2.0", "license": "MIT", "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" + "graceful-fs": "^4.1.5", + "js-yaml": "^3.13.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0" }, "engines": { - "node": ">= 12" + "node": ">=6" } }, - "node_modules/ip-address/node_modules/sprintf-js": { - "version": "1.1.3", - "license": "BSD-3-Clause" - }, - "node_modules/is-alphabetical": { - "version": "2.0.1", + "node_modules/local-pkg": { + "version": "0.5.0", + "dev": true, "license": "MIT", + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, + "engines": { + "node": ">=14" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/is-alphanumerical": { - "version": "2.0.1", + "node_modules/locate-path": { + "version": "7.2.0", "license": "MIT", "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-arrayish": { - "version": "0.3.2", + "node_modules/lodash": { + "version": "4.17.21", "license": "MIT" }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "license": "MIT" }, - "node_modules/is-buffer": { - "version": "2.0.5", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/long": { + "version": "5.2.3", + "license": "Apache-2.0" + }, + "node_modules/longest-streak": { + "version": "3.1.0", "license": "MIT", - "engines": { - "node": ">=4" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-core-module": { - "version": "2.13.1", + "node_modules/loupe": { + "version": "2.3.7", + "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "get-func-name": "^2.0.1" } }, - "node_modules/is-decimal": { - "version": "2.0.1", + "node_modules/lowercase-keys": { + "version": "2.0.0", "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">=8" } }, - "node_modules/is-docker": { - "version": "3.0.0", - "license": "MIT", - "peer": true, - "bin": { - "is-docker": "cli.js" + "node_modules/lru-cache": { + "version": "6.0.0", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/is-extendable": { - "version": "0.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node_modules/lunr": { + "version": "2.3.9", + "dev": true, + "license": "MIT" + }, + "node_modules/magic-string": { + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" } }, - "node_modules/is-extglob": { - "version": "2.1.1", + "node_modules/make-dir": { + "version": "2.1.0", "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "license": "ISC", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "license": "MIT", + "node_modules/make-error": { + "version": "1.3.6", + "license": "ISC" + }, + "node_modules/make-fetch-happen": { + "version": "13.0.0", + "license": "ISC", "dependencies": { - "is-extglob": "^2.1.1" + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/is-hexadecimal": { - "version": "2.0.1", + "node_modules/markdown-table": { + "version": "3.0.3", "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", + "node_modules/marked": { + "version": "4.3.0", + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "is-docker": "^3.0.0" - }, "bin": { - "is-inside-container": "cli.js" + "marked": "bin/marked.js" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 12" } }, - "node_modules/is-interactive": { - "version": "2.0.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/md5": { + "version": "2.3.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" } }, - "node_modules/is-lambda": { - "version": "1.0.1", + "node_modules/md5/node_modules/is-buffer": { + "version": "1.1.6", + "dev": true, "license": "MIT" }, - "node_modules/is-number": { - "version": "7.0.0", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-obj": { - "version": "4.1.0", + "node_modules/mdast-util-definitions": { + "version": "6.0.0", "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/is-reference": { - "version": "3.0.2", + "node_modules/mdast-util-definitions/node_modules/@types/mdast": { + "version": "4.0.3", "license": "MIT", "dependencies": { - "@types/estree": "*" + "@types/unist": "*" } }, - "node_modules/is-stream": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/mdast-util-definitions/node_modules/@types/unist": { + "version": "3.0.2", + "license": "MIT" }, - "node_modules/is-unicode-supported": { - "version": "1.3.0", + "node_modules/mdast-util-definitions/node_modules/unist-util-visit": { + "version": "5.0.0", "license": "MIT", - "peer": true, - "engines": { - "node": ">=12" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/is-what": { - "version": "3.14.1", + "node_modules/mdast-util-definitions/node_modules/unist-util-visit/node_modules/unist-util-is": { + "version": "6.0.0", "license": "MIT", - "optional": true, - "peer": true + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/is-wsl": { - "version": "3.1.0", + "node_modules/mdast-util-definitions/node_modules/unist-util-visit/node_modules/unist-util-visit-parents": { + "version": "6.0.1", "license": "MIT", - "peer": true, "dependencies": { - "is-inside-container": "^1.0.0" - }, - "engines": { - "node": ">=16" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/isarray": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/isexe": { + "node_modules/merge-stream": { "version": "2.0.0", - "license": "ISC" + "license": "MIT" }, - "node_modules/isomorphic-ws": { - "version": "4.0.1", + "node_modules/merge2": { + "version": "1.4.1", "license": "MIT", - "optional": true, - "peer": true, - "peerDependencies": { - "ws": "*" + "engines": { + "node": ">= 8" } }, - "node_modules/jackspeak": { - "version": "2.3.6", - "license": "BlueOak-1.0.0", + "node_modules/micromatch": { + "version": "4.0.5", + "license": "MIT", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "node": ">=8.6" } }, - "node_modules/jose": { - "version": "5.2.3", + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", "license": "MIT", + "engines": { + "node": ">=8.6" + }, "funding": { - "url": "https://github.com/sponsors/panva" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/js-base64": { - "version": "3.7.7", - "license": "BSD-3-Clause" - }, - "node_modules/js-sdsl": { - "version": "4.3.0", + "node_modules/mime": { + "version": "2.6.0", "license": "MIT", - "optional": true, - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" } }, - "node_modules/js-tokens": { - "version": "9.0.0", - "dev": true, - "license": "MIT" + "node_modules/mime-db": { + "version": "1.52.0", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/js-yaml": { - "version": "3.14.1", + "node_modules/mime-types": { + "version": "2.1.35", + "devOptional": true, "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "mime-db": "1.52.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">= 0.6" } }, - "node_modules/jsbn": { - "version": "1.1.0", - "license": "MIT" - }, - "node_modules/jsesc": { - "version": "2.5.2", + "node_modules/mimic-fn": { + "version": "4.0.0", "license": "MIT", - "peer": true, - "bin": { - "jsesc": "bin/jsesc" - }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "3.0.1", + "node_modules/mimic-response": { + "version": "3.1.0", "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/json-stringify-nice": { - "version": "1.1.4", + "node_modules/minimatch": { + "version": "9.0.4", "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/json5": { - "version": "2.2.3", + "node_modules/minimist": { + "version": "1.2.8", "license": "MIT", - "peer": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jsonc-parser": { - "version": "3.2.1", - "license": "MIT" - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "engines": [ - "node >= 0.2.0" - ], - "license": "MIT" - }, - "node_modules/just-diff": { - "version": "6.0.2", - "license": "MIT" - }, - "node_modules/just-diff-apply": { - "version": "5.5.0", - "license": "MIT" + "node_modules/minipass": { + "version": "7.0.4", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } }, - "node_modules/keyv": { - "version": "4.5.4", - "license": "MIT", + "node_modules/minipass-collect": { + "version": "2.0.1", + "license": "ISC", "dependencies": { - "json-buffer": "3.0.1" + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" } }, - "node_modules/kind-of": { - "version": "6.0.3", + "node_modules/minipass-fetch": { + "version": "3.0.4", "license": "MIT", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" } }, - "node_modules/kleur": { - "version": "4.1.5", - "license": "MIT", + "node_modules/minipass-flush": { + "version": "1.0.5", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, "engines": { - "node": ">=6" + "node": ">= 8" } }, - "node_modules/lazystream": { - "version": "1.0.1", - "license": "MIT", + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "license": "ISC", "dependencies": { - "readable-stream": "^2.0.5" + "yallist": "^4.0.0" }, "engines": { - "node": ">= 0.6.3" + "node": ">=8" } }, - "node_modules/lazystream/node_modules/readable-stream": { - "version": "2.3.8", + "node_modules/minipass-json-stream": { + "version": "1.0.1", "license": "MIT", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/lazystream/node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "license": "MIT" - }, - "node_modules/lazystream/node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" } }, - "node_modules/less": { - "version": "4.2.0", - "license": "Apache-2.0", - "optional": true, - "peer": true, + "node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "license": "ISC", "dependencies": { - "copy-anything": "^2.0.1", - "parse-node-version": "^1.0.1", - "tslib": "^2.3.0" - }, - "bin": { - "lessc": "bin/lessc" + "yallist": "^4.0.0" }, "engines": { - "node": ">=6" - }, - "optionalDependencies": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^3.1.0", - "source-map": "~0.6.0" + "node": ">=8" } }, - "node_modules/less/node_modules/mime": { - "version": "1.6.0", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "bin": { - "mime": "cli.js" + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/leven": { - "version": "2.1.0", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/lightningcss": { - "version": "1.24.1", - "license": "MPL-2.0", - "optional": true, - "peer": true, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "license": "ISC", "dependencies": { - "detect-libc": "^1.0.3" + "yallist": "^4.0.0" }, "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-darwin-arm64": "1.24.1", - "lightningcss-darwin-x64": "1.24.1", - "lightningcss-freebsd-x64": "1.24.1", - "lightningcss-linux-arm-gnueabihf": "1.24.1", - "lightningcss-linux-arm64-gnu": "1.24.1", - "lightningcss-linux-arm64-musl": "1.24.1", - "lightningcss-linux-x64-gnu": "1.24.1", - "lightningcss-linux-x64-musl": "1.24.1", - "lightningcss-win32-x64-msvc": "1.24.1" + "node": ">=8" } }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.24.1", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" + "node_modules/minipass-sized": { + "version": "1.0.3", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.24.1", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "peer": true, "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "node": ">=8" } }, - "node_modules/lightningcss/node_modules/detect-libc": { - "version": "1.0.3", - "license": "Apache-2.0", - "optional": true, - "peer": true, - "bin": { - "detect-libc": "bin/detect-libc.js" + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" }, "engines": { - "node": ">=0.10" + "node": ">=8" } }, - "node_modules/load-yaml-file": { - "version": "0.2.0", + "node_modules/minizlib": { + "version": "2.1.2", "license": "MIT", - "peer": true, "dependencies": { - "graceful-fs": "^4.1.5", - "js-yaml": "^3.13.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0" + "minipass": "^3.0.0", + "yallist": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">= 8" } }, - "node_modules/local-pkg": { - "version": "0.5.0", - "dev": true, - "license": "MIT", + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "license": "ISC", "dependencies": { - "mlly": "^1.4.2", - "pkg-types": "^1.0.3" + "yallist": "^4.0.0" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "node": ">=8" } }, - "node_modules/locate-path": { - "version": "7.2.0", + "node_modules/mkdirp": { + "version": "0.5.6", "license": "MIT", "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "minimist": "^1.2.6" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/lodash": { - "version": "4.17.21", - "license": "MIT" + "node_modules/mlly": { + "version": "1.6.1", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.0.3", + "ufo": "^1.3.2" + } }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", + "node_modules/module-details-from-path": { + "version": "1.0.3", "license": "MIT" }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "license": "MIT", - "peer": true - }, - "node_modules/log-symbols": { - "version": "5.1.0", + "node_modules/mqtt": { + "version": "4.3.8", "license": "MIT", + "optional": true, "peer": true, "dependencies": { - "chalk": "^5.0.0", - "is-unicode-supported": "^1.1.0" + "commist": "^1.0.0", + "concat-stream": "^2.0.0", + "debug": "^4.1.1", + "duplexify": "^4.1.1", + "help-me": "^3.0.0", + "inherits": "^2.0.3", + "lru-cache": "^6.0.0", + "minimist": "^1.2.5", + "mqtt-packet": "^6.8.0", + "number-allocator": "^1.0.9", + "pump": "^3.0.0", + "readable-stream": "^3.6.0", + "reinterval": "^1.1.0", + "rfdc": "^1.3.0", + "split2": "^3.1.0", + "ws": "^7.5.5", + "xtend": "^4.0.2" }, - "engines": { - "node": ">=12" + "bin": { + "mqtt": "bin/mqtt.js", + "mqtt_pub": "bin/pub.js", + "mqtt_sub": "bin/sub.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=10.0.0" } }, - "node_modules/long": { - "version": "5.2.3", - "license": "Apache-2.0" - }, - "node_modules/longest-streak": { - "version": "3.1.0", + "node_modules/mqtt-packet": { + "version": "6.10.0", "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "optional": true, + "peer": true, + "dependencies": { + "bl": "^4.0.2", + "debug": "^4.1.1", + "process-nextick-args": "^2.0.1" } }, - "node_modules/loupe": { - "version": "2.3.7", - "dev": true, + "node_modules/mqtt-packet/node_modules/bl": { + "version": "4.1.0", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "get-func-name": "^2.0.1" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/lowercase-keys": { - "version": "2.0.0", + "node_modules/mqtt-packet/node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", - "engines": { - "node": ">=8" + "optional": true, + "peer": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", + "node_modules/mqtt/node_modules/duplexify": { + "version": "4.1.3", + "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "yallist": "^4.0.0" + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.2" + } + }, + "node_modules/mqtt/node_modules/ws": { + "version": "7.5.9", + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=8.3.0" }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", "engines": { "node": ">=10" } }, - "node_modules/lunr": { - "version": "2.3.9", - "dev": true, + "node_modules/ms": { + "version": "2.1.2", "license": "MIT" }, - "node_modules/magic-string": { - "version": "0.30.9", + "node_modules/muggle-string": { + "version": "0.4.1", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" + "bin": { + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": ">=12" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/make-dir": { - "version": "2.1.0", - "dev": true, + "node_modules/needle": { + "version": "2.9.1", "license": "MIT", "optional": true, "peer": true, "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" }, "engines": { - "node": ">=6" + "node": ">= 4.4.x" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "5.7.2", - "dev": true, - "license": "ISC", + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "license": "MIT", "optional": true, "peer": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "license": "ISC" - }, - "node_modules/make-fetch-happen": { - "version": "13.0.0", - "license": "ISC", "dependencies": { - "@npmcli/agent": "^2.0.0", - "cacache": "^18.0.0", - "http-cache-semantics": "^4.1.1", - "is-lambda": "^1.0.1", - "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "ms": "^2.1.1" } }, - "node_modules/markdown-extensions": { - "version": "1.1.1", + "node_modules/needle/node_modules/debug/node_modules/ms": { + "version": "2.1.3", + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/negotiator": { + "version": "0.6.3", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/markdown-table": { - "version": "3.0.3", + "node_modules/nlcst-to-string": { + "version": "3.1.1", "license": "MIT", + "dependencies": { + "@types/nlcst": "^1.0.0" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/marked": { - "version": "4.3.0", + "node_modules/node-domexception": { + "version": "1.0.0", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], "license": "MIT", - "bin": { - "marked": "bin/marked.js" - }, "engines": { - "node": ">= 12" + "node": ">=10.5.0" } }, - "node_modules/md5": { - "version": "2.3.0", + "node_modules/node-fetch": { + "version": "2.7.0", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/md5/node_modules/is-buffer": { - "version": "1.1.6", - "dev": true, - "license": "MIT" - }, - "node_modules/mdast-util-definitions": { - "version": "6.0.0", + "node_modules/node-gyp": { + "version": "10.1.0", "license": "MIT", "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "unist-util-visit": "^5.0.0" + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/mdast-util-definitions/node_modules/@types/mdast": { - "version": "4.0.3", - "license": "MIT", + "node_modules/node-gyp/node_modules/which": { + "version": "4.0.0", + "license": "ISC", "dependencies": { - "@types/unist": "*" + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/mdast-util-definitions/node_modules/@types/unist": { - "version": "3.0.2", + "node_modules/node-gyp/node_modules/which/node_modules/isexe": { + "version": "3.1.1", + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", "license": "MIT" }, - "node_modules/mdast-util-definitions/node_modules/unist-util-visit": { - "version": "5.0.0", - "license": "MIT", + "node_modules/nopt": { + "version": "7.2.0", + "license": "ISC", "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" + "abbrev": "^2.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/mdast-util-definitions/node_modules/unist-util-visit/node_modules/unist-util-is": { + "node_modules/normalize-package-data": { "version": "6.0.0", - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "@types/unist": "^3.0.0" + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/mdast-util-definitions/node_modules/unist-util-visit/node_modules/unist-util-visit-parents": { - "version": "6.0.1", + "node_modules/normalize-path": { + "version": "3.0.0", "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/mdast-util-directive": { - "version": "2.2.4", + "node_modules/normalize-url": { + "version": "6.1.0", "license": "MIT", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "mdast-util-from-markdown": "^1.3.0", - "mdast-util-to-markdown": "^1.5.0", - "parse-entities": "^4.0.0", - "stringify-entities": "^4.0.0", - "unist-util-visit-parents": "^5.1.3" + "engines": { + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mdast-util-find-and-replace": { - "version": "2.2.2", - "license": "MIT", + "node_modules/not": { + "version": "0.1.0" + }, + "node_modules/npm-bundled": { + "version": "3.0.0", + "license": "ISC", "dependencies": { - "@types/mdast": "^3.0.0", - "escape-string-regexp": "^5.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.0.0" + "npm-normalize-package-bin": "^3.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/mdast-util-from-markdown": { - "version": "1.3.1", - "license": "MIT", + "node_modules/npm-install-checks": { + "version": "6.3.0", + "license": "BSD-2-Clause", "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "mdast-util-to-string": "^3.1.0", - "micromark": "^3.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-decode-string": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "uvu": "^0.5.0" + "semver": "^7.1.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/mdast-util-gfm": { - "version": "2.0.2", - "license": "MIT", + "node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg": { + "version": "11.0.1", + "license": "ISC", "dependencies": { - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-gfm-autolink-literal": "^1.0.0", - "mdast-util-gfm-footnote": "^1.0.0", - "mdast-util-gfm-strikethrough": "^1.0.0", - "mdast-util-gfm-table": "^1.0.0", - "mdast-util-gfm-task-list-item": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" + "hosted-git-info": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/mdast-util-gfm-autolink-literal": { - "version": "1.0.3", - "license": "MIT", + "node_modules/npm-packlist": { + "version": "8.0.2", + "license": "ISC", "dependencies": { - "@types/mdast": "^3.0.0", - "ccount": "^2.0.0", - "mdast-util-find-and-replace": "^2.0.0", - "micromark-util-character": "^1.0.0" + "ignore-walk": "^6.0.4" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/mdast-util-gfm-footnote": { - "version": "1.0.2", - "license": "MIT", + "node_modules/npm-pick-manifest": { + "version": "9.0.0", + "license": "ISC", "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.3.0", - "micromark-util-normalize-identifier": "^1.0.0" + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/mdast-util-gfm-strikethrough": { - "version": "1.0.3", - "license": "MIT", + "node_modules/npm-registry-fetch": { + "version": "16.2.0", + "license": "ISC", "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.3.0" + "@npmcli/redact": "^1.1.0", + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^11.0.0", + "proc-log": "^3.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/mdast-util-gfm-table": { - "version": "1.0.7", + "node_modules/npm-run-path": { + "version": "5.3.0", "license": "MIT", "dependencies": { - "@types/mdast": "^3.0.0", - "markdown-table": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-to-markdown": "^1.3.0" + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mdast-util-gfm-task-list-item": { - "version": "1.0.2", + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", "license": "MIT", - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.3.0" + "engines": { + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mdast-util-mdx": { - "version": "2.0.1", - "license": "MIT", + "node_modules/npmlog": { + "version": "7.0.1", + "license": "ISC", "dependencies": { - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-mdx-expression": "^1.0.0", - "mdast-util-mdx-jsx": "^2.0.0", - "mdast-util-mdxjs-esm": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" + "are-we-there-yet": "^4.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^5.0.0", + "set-blocking": "^2.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/mdast-util-mdx-expression": { - "version": "1.3.2", - "license": "MIT", + "node_modules/nth-check": { + "version": "2.1.1", + "license": "BSD-2-Clause", "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" + "boolbase": "^1.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/mdast-util-mdx-jsx": { - "version": "2.1.4", + "node_modules/number-allocator": { + "version": "1.0.14", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "ccount": "^2.0.0", - "mdast-util-from-markdown": "^1.1.0", - "mdast-util-to-markdown": "^1.3.0", - "parse-entities": "^4.0.0", - "stringify-entities": "^4.0.0", - "unist-util-remove-position": "^4.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "debug": "^4.3.1", + "js-sdsl": "4.3.0" } }, - "node_modules/mdast-util-mdxjs-esm": { - "version": "1.3.1", + "node_modules/object-hash": { + "version": "2.2.0", "license": "MIT", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">= 6" } }, - "node_modules/mdast-util-phrasing": { - "version": "3.0.1", + "node_modules/oidc-token-hash": { + "version": "5.0.3", "license": "MIT", + "engines": { + "node": "^10.13.0 || >=12.0.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "license": "ISC", "dependencies": { - "@types/mdast": "^3.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "wrappy": "1" } }, - "node_modules/mdast-util-to-hast": { - "version": "12.3.0", + "node_modules/onetime": { + "version": "6.0.0", "license": "MIT", "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-definitions": "^5.0.0", - "micromark-util-sanitize-uri": "^1.1.0", - "trim-lines": "^3.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mdast-util-to-hast/node_modules/mdast-util-definitions": { - "version": "5.1.2", - "license": "MIT", + "node_modules/openai": { + "version": "4.29.2", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "digest-fetch": "^1.3.0", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7", + "web-streams-polyfill": "^3.2.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "bin": { + "openai": "bin/cli" } }, - "node_modules/mdast-util-to-markdown": { - "version": "1.5.0", + "node_modules/openai/node_modules/@types/node": { + "version": "18.19.30", + "dev": true, "license": "MIT", "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "micromark-util-decode-string": "^1.0.0", - "unist-util-visit": "^4.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "undici-types": "~5.26.4" } }, - "node_modules/mdast-util-to-string": { - "version": "3.2.0", + "node_modules/openid-client": { + "version": "5.6.4", "license": "MIT", "dependencies": { - "@types/mdast": "^3.0.0" + "jose": "^4.15.4", + "lru-cache": "^6.0.0", + "object-hash": "^2.2.0", + "oidc-token-hash": "^5.0.3" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/panva" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "license": "MIT" + "node_modules/openid-client/node_modules/jose": { + "version": "4.15.5", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } }, - "node_modules/merge2": { - "version": "1.4.1", + "node_modules/p-cancelable": { + "version": "2.1.1", "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/micromark": { - "version": "3.2.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "micromark-core-commonmark": "^1.0.1", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-core-commonmark": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-factory-destination": "^1.0.0", - "micromark-factory-label": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-factory-title": "^1.0.0", - "micromark-factory-whitespace": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-html-tag-name": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-extension-directive": { - "version": "2.2.1", + "node_modules/p-limit": { + "version": "5.0.0", "license": "MIT", "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-factory-whitespace": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "parse-entities": "^4.0.0", - "uvu": "^0.5.0" + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": ">=18" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/micromark-extension-gfm": { - "version": "2.0.3", + "node_modules/p-locate": { + "version": "6.0.0", "license": "MIT", "dependencies": { - "micromark-extension-gfm-autolink-literal": "^1.0.0", - "micromark-extension-gfm-footnote": "^1.0.0", - "micromark-extension-gfm-strikethrough": "^1.0.0", - "micromark-extension-gfm-table": "^1.0.0", - "micromark-extension-gfm-tagfilter": "^1.0.0", - "micromark-extension-gfm-task-list-item": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-types": "^1.0.0" + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "1.0.5", + "node_modules/p-locate/node_modules/p-limit": { + "version": "4.0.0", "license": "MIT", "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/micromark-extension-gfm-footnote": { - "version": "1.1.2", + "node_modules/p-map": { + "version": "4.0.0", "license": "MIT", "dependencies": { - "micromark-core-commonmark": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/micromark-extension-gfm-strikethrough": { - "version": "1.0.7", + "node_modules/p-try": { + "version": "2.2.0", "license": "MIT", - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=6" } }, - "node_modules/micromark-extension-gfm-table": { - "version": "1.0.7", - "license": "MIT", + "node_modules/pacote": { + "version": "17.0.6", + "license": "ISC", "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" + "@npmcli/git": "^5.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^7.0.0", + "cacache": "^18.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^16.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^7.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^2.2.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/micromark-extension-gfm-tagfilter": { - "version": "1.0.2", + "node_modules/pagefind": { + "version": "1.1.0", "license": "MIT", - "dependencies": { - "micromark-util-types": "^1.0.0" + "bin": { + "pagefind": "lib/runner/bin.cjs" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "optionalDependencies": { + "@pagefind/darwin-arm64": "1.1.0", + "@pagefind/darwin-x64": "1.1.0", + "@pagefind/linux-arm64": "1.1.0", + "@pagefind/linux-x64": "1.1.0", + "@pagefind/windows-x64": "1.1.0" } }, - "node_modules/micromark-extension-gfm-task-list-item": { - "version": "1.0.5", - "license": "MIT", + "node_modules/parse-conflict-json": { + "version": "3.0.1", + "license": "ISC", "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" + "json-parse-even-better-errors": "^3.0.0", + "just-diff": "^6.0.0", + "just-diff-apply": "^5.2.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/micromark-extension-mdx-expression": { - "version": "1.0.8", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/parse-entities": { + "version": "4.0.1", "license": "MIT", "dependencies": { - "@types/estree": "^1.0.0", - "micromark-factory-mdx-expression": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-events-to-acorn": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/micromark-extension-mdx-jsx": { - "version": "1.0.5", + "node_modules/parse-latin": { + "version": "5.0.1", "license": "MIT", "dependencies": { - "@types/acorn": "^4.0.0", - "@types/estree": "^1.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "micromark-factory-mdx-expression": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" + "nlcst-to-string": "^3.0.0", + "unist-util-modify-children": "^3.0.0", + "unist-util-visit-children": "^2.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/micromark-extension-mdx-md": { + "node_modules/parse-node-version": { "version": "1.0.1", "license": "MIT", - "dependencies": { - "micromark-util-types": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "optional": true, + "peer": true, + "engines": { + "node": ">= 0.10" } }, - "node_modules/micromark-extension-mdxjs": { + "node_modules/path-browserify": { "version": "1.0.1", - "license": "MIT", - "dependencies": { - "acorn": "^8.0.0", - "acorn-jsx": "^5.0.0", - "micromark-extension-mdx-expression": "^1.0.0", - "micromark-extension-mdx-jsx": "^1.0.0", - "micromark-extension-mdx-md": "^1.0.0", - "micromark-extension-mdxjs-esm": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-types": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "5.0.0", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/micromark-extension-mdxjs-esm": { - "version": "1.0.5", + "node_modules/path-is-absolute": { + "version": "1.0.1", "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.10.2", + "license": "BlueOak-1.0.0", "dependencies": { - "@types/estree": "^1.0.0", - "micromark-core-commonmark": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-events-to-acorn": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-position-from-estree": "^1.1.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/micromark-factory-destination": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "license": "ISC", + "engines": { + "node": "14 || >=16.14" } }, - "node_modules/micromark-factory-label": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/path-to-regexp": { + "version": "6.2.1", + "license": "MIT" + }, + "node_modules/pathe": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "1.1.1", + "dev": true, "license": "MIT", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" + "engines": { + "node": "*" } }, - "node_modules/micromark-factory-mdx-expression": { - "version": "1.0.9", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/periscopic": { + "version": "3.1.0", "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-events-to-acorn": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-position-from-estree": "^1.0.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" } }, - "node_modules/micromark-factory-space": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/picocolors": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "3.0.1", "license": "MIT", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-types": "^1.0.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/micromark-factory-title": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/pify": { + "version": "4.0.1", "license": "MIT", - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "engines": { + "node": ">=6" } }, - "node_modules/micromark-factory-whitespace": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/pkg-dir": { + "version": "7.0.0", "license": "MIT", "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/micromark-util-character": { - "version": "1.2.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/pkg-types": { + "version": "1.0.3", + "dev": true, "license": "MIT", "dependencies": { - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" } }, - "node_modules/micromark-util-chunked": { - "version": "1.1.0", + "node_modules/postcss": { + "version": "8.4.38", "funding": [ { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" + "type": "opencollective", + "url": "https://opencollective.com/postcss/" }, { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-classify-character": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" }, { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "license": "MIT", "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" } }, - "node_modules/micromark-util-combine-extensions": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/postcss-nested": { + "version": "6.0.1", "license": "MIT", "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-types": "^1.0.0" + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" } }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/postcss-selector-parser": { + "version": "6.0.16", "license": "MIT", "dependencies": { - "micromark-util-symbol": "^1.0.0" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" } }, - "node_modules/micromark-util-decode-string": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/preferred-pm": { + "version": "3.1.3", "license": "MIT", "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-symbol": "^1.0.0" + "find-up": "^5.0.0", + "find-yarn-workspace-root2": "1.2.16", + "path-exists": "^4.0.0", + "which-pm": "2.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/micromark-util-encode": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-events-to-acorn": { - "version": "1.2.3", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/preferred-pm/node_modules/find-up": { + "version": "5.0.0", "license": "MIT", "dependencies": { - "@types/acorn": "^4.0.0", - "@types/estree": "^1.0.0", - "@types/unist": "^2.0.0", - "estree-util-visit": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/micromark-util-html-tag-name": { - "version": "1.2.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-normalize-identifier": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/preferred-pm/node_modules/find-up/node_modules/locate-path": { + "version": "6.0.0", "license": "MIT", "dependencies": { - "micromark-util-symbol": "^1.0.0" + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/micromark-util-resolve-all": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/preferred-pm/node_modules/find-up/node_modules/locate-path/node_modules/p-locate": { + "version": "5.0.0", "license": "MIT", "dependencies": { - "micromark-util-types": "^1.0.0" + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/micromark-util-sanitize-uri": { - "version": "1.2.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/preferred-pm/node_modules/find-up/node_modules/locate-path/node_modules/p-locate/node_modules/p-limit": { + "version": "3.1.0", "license": "MIT", "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-symbol": "^1.0.0" + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/micromark-util-subtokenize": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/preferred-pm/node_modules/find-up/node_modules/locate-path/node_modules/p-locate/node_modules/p-limit/node_modules/yocto-queue": { + "version": "0.1.0", "license": "MIT", - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/micromark-util-symbol": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-types": { - "version": "1.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" + "node_modules/preferred-pm/node_modules/path-exists": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/micromatch": { - "version": "4.0.5", + "node_modules/preferred-pm/node_modules/which-pm": { + "version": "2.0.0", "license": "MIT", "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "load-yaml-file": "^0.2.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=8.6" + "node": ">=8.15" } }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", + "node_modules/prettier": { + "version": "3.1.1", "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, "engines": { - "node": ">=8.6" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/mime": { - "version": "2.6.0", + "node_modules/pretty-format": { + "version": "29.7.0", + "dev": true, "license": "MIT", - "bin": { - "mime": "cli.js" + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">=4.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "devOptional": true, + "node_modules/prismjs": { + "version": "1.29.0", "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=6" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "devOptional": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, + "node_modules/proc-log": { + "version": "3.0.0", + "license": "ISC", "engines": { - "node": ">= 0.6" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", + "node_modules/process": { + "version": "0.11.10", "license": "MIT", + "optional": true, + "peer": true, "engines": { - "node": ">=12" - }, + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "license": "MIT" + }, + "node_modules/promise-all-reject-late": { + "version": "1.0.1", + "license": "ISC", "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mimic-response": { - "version": "3.1.0", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimatch": { - "version": "9.0.4", + "node_modules/promise-call-limit": { + "version": "3.0.1", "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/minimist": { - "version": "1.2.8", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.0.4", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } + "node_modules/promise-inflight": { + "version": "1.0.1", + "license": "ISC" }, - "node_modules/minipass-collect": { + "node_modules/promise-retry": { "version": "2.0.1", - "license": "ISC", + "license": "MIT", "dependencies": { - "minipass": "^7.0.3" + "err-code": "^2.0.2", + "retry": "^0.12.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=10" } }, - "node_modules/minipass-fetch": { - "version": "3.0.4", + "node_modules/prompts": { + "version": "2.4.2", "license": "MIT", "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" + "node": ">= 6" } }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", + "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=6" } }, - "node_modules/minipass-flush/node_modules/minipass": { - "version": "3.3.6", - "license": "ISC", + "node_modules/property-information": { + "version": "6.5.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/protobufjs": { + "version": "7.2.6", + "hasInstallScript": true, + "license": "BSD-3-Clause", "dependencies": { - "yallist": "^4.0.0" + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=12.0.0" } }, - "node_modules/minipass-json-stream": { + "node_modules/proxy-from-env": { + "version": "1.1.0", + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/prr": { "version": "1.0.1", "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/pump": { + "version": "3.0.0", + "license": "MIT", "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "node_modules/minipass-json-stream/node_modules/minipass": { - "version": "3.3.6", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/queue-tick": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", + "node_modules/react-is": { + "version": "18.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/read-cmd-shim": { + "version": "4.0.0", "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/minipass-pipeline/node_modules/minipass": { - "version": "3.3.6", + "node_modules/read-package-json": { + "version": "7.0.0", "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/minipass-sized": { - "version": "1.0.3", + "node_modules/read-package-json-fast": { + "version": "3.0.2", "license": "ISC", "dependencies": { - "minipass": "^3.0.0" + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/minipass-sized/node_modules/minipass": { - "version": "3.3.6", - "license": "ISC", + "node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/minizlib": { - "version": "2.1.2", - "license": "MIT", + "node_modules/readdir-glob": { + "version": "1.1.3", + "license": "Apache-2.0", "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" + "minimatch": "^5.1.0" } }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/mkdirp": { - "version": "0.5.6", + "node_modules/readdirp": { + "version": "3.6.0", "license": "MIT", "dependencies": { - "minimist": "^1.2.6" + "picomatch": "^2.2.1" }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": ">=8.10.0" } }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", "license": "MIT", - "optional": true, - "peer": true + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, - "node_modules/mlly": { - "version": "1.6.1", - "dev": true, - "license": "MIT", + "node_modules/rehype-expressive-code": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/rehype-expressive-code/-/rehype-expressive-code-0.35.3.tgz", + "integrity": "sha512-kj43Rg+WzYUs8RRr6XyBr60pnrIZEgbmn9yJoV6qka1UDpcx7r8icn6Q2uSAgaLtlEUy+HCPgQJraOZrA53LOQ==", "dependencies": { - "acorn": "^8.11.3", - "pathe": "^1.1.2", - "pkg-types": "^1.0.3", - "ufo": "^1.3.2" + "expressive-code": "^0.35.3" } }, - "node_modules/module-details-from-path": { - "version": "1.0.3", - "license": "MIT" + "node_modules/rehype-expressive-code/node_modules/@ctrl/tinycolor": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-4.1.0.tgz", + "integrity": "sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==", + "engines": { + "node": ">=14" + } }, - "node_modules/mqtt": { - "version": "4.3.8", - "license": "MIT", - "optional": true, - "peer": true, + "node_modules/rehype-expressive-code/node_modules/@expressive-code/core": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.35.3.tgz", + "integrity": "sha512-SYamcarAjufYhbuK/kfvJSvAXLsfnM7DKc78R7Dq4B73R5bKQK2m5zR0l57tXr4yp2C5Z8lu5xZncdwWxcmPdg==", "dependencies": { - "commist": "^1.0.0", - "concat-stream": "^2.0.0", - "debug": "^4.1.1", - "duplexify": "^4.1.1", - "help-me": "^3.0.0", - "inherits": "^2.0.3", - "lru-cache": "^6.0.0", - "minimist": "^1.2.5", - "mqtt-packet": "^6.8.0", - "number-allocator": "^1.0.9", - "pump": "^3.0.0", - "readable-stream": "^3.6.0", - "reinterval": "^1.1.0", - "rfdc": "^1.3.0", - "split2": "^3.1.0", - "ws": "^7.5.5", - "xtend": "^4.0.2" - }, - "bin": { - "mqtt": "bin/mqtt.js", - "mqtt_pub": "bin/pub.js", - "mqtt_sub": "bin/sub.js" - }, - "engines": { - "node": ">=10.0.0" + "@ctrl/tinycolor": "^4.0.4", + "hast-util-select": "^6.0.2", + "hast-util-to-html": "^9.0.1", + "hast-util-to-text": "^4.0.1", + "hastscript": "^9.0.0", + "postcss": "^8.4.38", + "postcss-nested": "^6.0.1", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.1" } }, - "node_modules/mqtt-packet": { - "version": "6.10.0", - "license": "MIT", - "optional": true, - "peer": true, + "node_modules/rehype-expressive-code/node_modules/@expressive-code/plugin-frames": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-frames/-/plugin-frames-0.35.3.tgz", + "integrity": "sha512-QYytMq6IsaHgTofQ5b6d+CnbxkqLdikSF2hC+IL/ZZwPYHYZoUlmjIwmJZhY4/hHqJGELrtZsyVdlt06RntgmA==", "dependencies": { - "bl": "^4.0.2", - "debug": "^4.1.1", - "process-nextick-args": "^2.0.1" + "@expressive-code/core": "^0.35.3" } }, - "node_modules/mqtt-packet/node_modules/bl": { - "version": "4.1.0", - "license": "MIT", - "optional": true, - "peer": true, + "node_modules/rehype-expressive-code/node_modules/@expressive-code/plugin-shiki": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-shiki/-/plugin-shiki-0.35.3.tgz", + "integrity": "sha512-aFQBPepv0zhVXqJFAvfQ4vXYv/meJKiqmEEKSxdjAfwXllIV49PDlnGEXmbGYjR4hUQQjbfDgzAbrbfePc3YVQ==", "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "@expressive-code/core": "^0.35.3", + "shiki": "^1.1.7" } }, - "node_modules/mqtt-packet/node_modules/bl/node_modules/buffer": { - "version": "5.7.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "optional": true, - "peer": true, + "node_modules/rehype-expressive-code/node_modules/@expressive-code/plugin-text-markers": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.35.3.tgz", + "integrity": "sha512-gDdnQrfDRXw5Y+PKHJDkpAUdf2pthYOthGcgy3JB8GOTQ3EL1h+755Ct/bGc4MR6jn+dgnQP47uHMWQaccvN6Q==", "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "@expressive-code/core": "^0.35.3" } }, - "node_modules/mqtt/node_modules/duplexify": { - "version": "4.1.3", - "license": "MIT", - "optional": true, - "peer": true, + "node_modules/rehype-expressive-code/node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.2" - } - }, - "node_modules/mqtt/node_modules/ws": { - "version": "7.5.9", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "@types/unist": "*" } }, - "node_modules/mri": { - "version": "1.2.0", - "license": "MIT", - "engines": { - "node": ">=4" + "node_modules/rehype-expressive-code/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dependencies": { + "@types/unist": "*" } }, - "node_modules/ms": { - "version": "2.1.2", - "license": "MIT" - }, - "node_modules/muggle-string": { - "version": "0.4.1", - "license": "MIT" + "node_modules/rehype-expressive-code/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" }, - "node_modules/nanoid": { - "version": "3.3.7", + "node_modules/rehype-expressive-code/node_modules/css-selector-parser": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.0.5.tgz", + "integrity": "sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/ai" + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "license": "MIT", - "optional": true, - "peer": true + ] }, - "node_modules/needle": { - "version": "2.9.1", - "license": "MIT", - "peer": true, + "node_modules/rehype-expressive-code/node_modules/expressive-code": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/expressive-code/-/expressive-code-0.35.3.tgz", + "integrity": "sha512-XjWWUCxS4uQjPoRM98R7SNWWIYlFEaOeHm1piWv+c7coHCekuWno81thsc3g/UJ+DajNtOEsIQIAAcsBQZ8LMg==", "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" + "@expressive-code/core": "^0.35.3", + "@expressive-code/plugin-frames": "^0.35.3", + "@expressive-code/plugin-shiki": "^0.35.3", + "@expressive-code/plugin-text-markers": "^0.35.3" } }, - "node_modules/needle/node_modules/debug": { - "version": "3.2.7", - "license": "MIT", - "peer": true, + "node_modules/rehype-expressive-code/node_modules/hast-util-from-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", + "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/needle/node_modules/debug/node_modules/ms": { - "version": "2.1.3", - "license": "MIT", - "peer": true - }, - "node_modules/negotiator": { - "version": "0.6.3", - "license": "MIT", - "engines": { - "node": ">= 0.6" + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^8.0.0", + "property-information": "^6.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nlcst-to-string": { - "version": "3.1.1", - "license": "MIT", + "node_modules/rehype-expressive-code/node_modules/hast-util-from-parse5/node_modules/hastscript": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", + "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", "dependencies": { - "@types/nlcst": "^1.0.0" + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/node-abi": { - "version": "3.57.0", - "license": "MIT", - "optional": true, - "peer": true, + "node_modules/rehype-expressive-code/node_modules/hast-util-has-property": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz", + "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==", "dependencies": { - "semver": "^7.3.5" + "@types/hast": "^3.0.0" }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-addon-api": { - "version": "6.1.0", - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/node-domexception": { - "version": "1.0.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "engines": { - "node": ">=10.5.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/node-fetch": { - "version": "2.7.0", - "dev": true, - "license": "MIT", + "node_modules/rehype-expressive-code/node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" + "@types/hast": "^3.0.0" }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/node-gyp": { - "version": "10.1.0", - "license": "MIT", + "node_modules/rehype-expressive-code/node_modules/hast-util-raw": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.2.tgz", + "integrity": "sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA==", "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^10.3.10", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^13.0.0", - "nopt": "^7.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^4.0.0" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/node-gyp/node_modules/which": { - "version": "4.0.0", - "license": "ISC", + "node_modules/rehype-expressive-code/node_modules/hast-util-select": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-6.0.2.tgz", + "integrity": "sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==", "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "bcp-47-match": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "css-selector-parser": "^3.0.0", + "devlop": "^1.0.0", + "direction": "^2.0.0", + "hast-util-has-property": "^3.0.0", + "hast-util-to-string": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "not": "^0.1.0", + "nth-check": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" }, - "engines": { - "node": "^16.13.0 || >=18.0.0" - } - }, - "node_modules/node-gyp/node_modules/which/node_modules/isexe": { - "version": "3.1.1", - "license": "ISC", - "engines": { - "node": ">=16" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/node-releases": { - "version": "2.0.14", - "license": "MIT", - "peer": true - }, - "node_modules/nopt": { - "version": "7.2.0", - "license": "ISC", + "node_modules/rehype-expressive-code/node_modules/hast-util-to-html": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.1.tgz", + "integrity": "sha512-hZOofyZANbyWo+9RP75xIDV/gq+OUKx+T46IlwERnKmfpwp81XBFbT9mi26ws+SJchA4RVUQwIBJpqEOBhMzEQ==", "dependencies": { - "abbrev": "^2.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-raw": "^9.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/normalize-package-data": { - "version": "6.0.0", - "license": "BSD-2-Clause", + "node_modules/rehype-expressive-code/node_modules/hast-util-to-parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", + "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", "dependencies": { - "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/normalize-path": { + "node_modules/rehype-expressive-code/node_modules/hast-util-to-string": { "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "license": "MIT", - "engines": { - "node": ">=10" + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.0.tgz", + "integrity": "sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==", + "dependencies": { + "@types/hast": "^3.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/not": { - "version": "0.1.0" - }, - "node_modules/npm-bundled": { + "node_modules/rehype-expressive-code/node_modules/hast-util-whitespace": { "version": "3.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", "dependencies": { - "npm-normalize-package-bin": "^3.0.0" + "@types/hast": "^3.0.0" }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/npm-install-checks": { - "version": "6.3.0", - "license": "BSD-2-Clause", + "node_modules/rehype-expressive-code/node_modules/hastscript": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.0.tgz", + "integrity": "sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==", "dependencies": { - "semver": "^7.1.1" + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/npm-normalize-package-bin": { - "version": "3.0.1", - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node_modules/rehype-expressive-code/node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/npm-package-arg": { - "version": "11.0.1", - "license": "ISC", + "node_modules/rehype-expressive-code/node_modules/mdast-util-to-hast": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.1.0.tgz", + "integrity": "sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==", "dependencies": { - "hosted-git-info": "^7.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/npm-packlist": { - "version": "8.0.2", - "license": "ISC", + "node_modules/rehype-expressive-code/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "ignore-walk": "^6.0.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/npm-pick-manifest": { - "version": "9.0.0", - "license": "ISC", - "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^11.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } + "node_modules/rehype-expressive-code/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/npm-registry-fetch": { - "version": "16.2.0", - "license": "ISC", + "node_modules/rehype-expressive-code/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@npmcli/redact": "^1.1.0", - "make-fetch-happen": "^13.0.0", - "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^11.0.0", - "proc-log": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/npm-run-path": { - "version": "5.3.0", - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/rehype-expressive-code/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/npmlog": { - "version": "7.0.1", - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^4.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^5.0.0", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "node_modules/rehype-expressive-code/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/nth-check": { - "version": "2.1.1", - "license": "BSD-2-Clause", + "node_modules/rehype-expressive-code/node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "dependencies": { - "boolbase": "^1.0.0" + "entities": "^4.4.0" }, "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/number-allocator": { - "version": "1.0.14", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "debug": "^4.3.1", - "js-sdsl": "4.3.0" - } - }, - "node_modules/object-hash": { - "version": "2.2.0", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/oidc-token-hash": { - "version": "5.0.3", - "license": "MIT", - "engines": { - "node": "^10.13.0 || >=12.0.0" + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/once": { + "node_modules/rehype-expressive-code/node_modules/shiki": { "version": "1.4.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.4.0.tgz", + "integrity": "sha512-5WIn0OL8PWm7JhnTwRWXniy6eEDY234mRrERVlFa646V2ErQqwIFd2UML7e0Pq9eqSKLoMa3Ke+xbsF+DAuy+Q==", "dependencies": { - "wrappy": "1" + "@shikijs/core": "1.4.0" } }, - "node_modules/onetime": { + "node_modules/rehype-expressive-code/node_modules/unist-util-is": { "version": "6.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" + "@types/unist": "^3.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/openai": { - "version": "4.29.2", - "dev": true, - "license": "Apache-2.0", + "node_modules/rehype-expressive-code/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dependencies": { - "@types/node": "^18.11.18", - "@types/node-fetch": "^2.6.4", - "abort-controller": "^3.0.0", - "agentkeepalive": "^4.2.1", - "digest-fetch": "^1.3.0", - "form-data-encoder": "1.7.2", - "formdata-node": "^4.3.2", - "node-fetch": "^2.6.7", - "web-streams-polyfill": "^3.2.1" + "@types/unist": "^3.0.0" }, - "bin": { - "openai": "bin/cli" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/openai/node_modules/@types/node": { - "version": "18.19.30", - "dev": true, - "license": "MIT", + "node_modules/rehype-expressive-code/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dependencies": { - "undici-types": "~5.26.4" + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/openid-client": { - "version": "5.6.4", - "license": "MIT", + "node_modules/rehype-expressive-code/node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", "dependencies": { - "jose": "^4.15.4", - "lru-cache": "^6.0.0", - "object-hash": "^2.2.0", - "oidc-token-hash": "^5.0.3" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, "funding": { - "url": "https://github.com/sponsors/panva" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/openid-client/node_modules/jose": { - "version": "4.15.5", - "license": "MIT", + "node_modules/rehype-expressive-code/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, "funding": { - "url": "https://github.com/sponsors/panva" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/ora": { - "version": "7.0.1", - "license": "MIT", - "peer": true, + "node_modules/rehype-expressive-code/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", "dependencies": { - "chalk": "^5.3.0", - "cli-cursor": "^4.0.0", - "cli-spinners": "^2.9.0", - "is-interactive": "^2.0.0", - "is-unicode-supported": "^1.3.0", - "log-symbols": "^5.1.0", - "stdin-discarder": "^0.1.0", - "string-width": "^6.1.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=16" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/ora/node_modules/string-width": { - "version": "6.1.0", - "license": "MIT", - "peer": true, + "node_modules/rehype-expressive-code/node_modules/vfile-location": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", + "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^10.2.1", - "strip-ansi": "^7.0.1" + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" }, - "engines": { - "node": ">=16" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-expressive-code/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/ora/node_modules/string-width/node_modules/emoji-regex": { - "version": "10.3.0", + "node_modules/reinterval": { + "version": "1.1.0", "license": "MIT", + "optional": true, "peer": true }, - "node_modules/p-cancelable": { - "version": "2.1.1", + "node_modules/remark-smartypants": { + "version": "2.1.0", "license": "MIT", + "dependencies": { + "retext": "^8.1.0", + "retext-smartypants": "^5.2.0", + "unist-util-visit": "^5.0.0" + }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/p-limit": { + "node_modules/remark-smartypants/node_modules/unist-util-visit": { "version": "5.0.0", - "dev": true, "license": "MIT", "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": ">=18" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/p-locate": { + "node_modules/remark-smartypants/node_modules/unist-util-visit/node_modules/@types/unist": { + "version": "3.0.2", + "license": "MIT" + }, + "node_modules/remark-smartypants/node_modules/unist-util-visit/node_modules/unist-util-is": { "version": "6.0.0", "license": "MIT", "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "@types/unist": "^3.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "4.0.0", + "node_modules/remark-smartypants/node_modules/unist-util-visit/node_modules/unist-util-visit-parents": { + "version": "6.0.1", "license": "MIT", "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/p-map": { - "version": "4.0.0", - "license": "MIT", + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/p-queue": { - "version": "7.4.1", - "license": "MIT", - "peer": true, + "node_modules/remark-stringify/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dependencies": { - "eventemitter3": "^5.0.1", - "p-timeout": "^5.0.2" + "@types/unist": "*" + } + }, + "node_modules/remark-stringify/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/remark-stringify/node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" }, - "engines": { - "node": ">=12" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify/node_modules/mdast-util-to-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/p-timeout": { - "version": "5.1.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12" + "node_modules/remark-stringify/node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dependencies": { + "@types/mdast": "^4.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/p-try": { - "version": "2.2.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" + "node_modules/remark-stringify/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/pacote": { - "version": "17.0.6", - "license": "ISC", + "node_modules/remark-stringify/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@npmcli/git": "^5.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^7.0.0", - "cacache": "^18.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^7.0.2", - "npm-package-arg": "^11.0.0", - "npm-packlist": "^8.0.0", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^16.0.0", - "proc-log": "^3.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^7.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^2.2.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/pagefind": { - "version": "1.1.0", - "license": "MIT", - "bin": { - "pagefind": "lib/runner/bin.cjs" + "node_modules/remark-stringify/node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/remark-stringify/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/remark-stringify/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/remark-stringify/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, - "optionalDependencies": { - "@pagefind/darwin-arm64": "1.1.0", - "@pagefind/darwin-x64": "1.1.0", - "@pagefind/linux-arm64": "1.1.0", - "@pagefind/linux-x64": "1.1.0", - "@pagefind/windows-x64": "1.1.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/parse-conflict-json": { - "version": "3.0.1", - "license": "ISC", + "node_modules/remark-stringify/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "just-diff": "^6.0.0", - "just-diff-apply": "^5.2.0" + "@types/unist": "^3.0.0" }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/parse-entities": { - "version": "4.0.1", - "license": "MIT", + "node_modules/remark-stringify/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dependencies": { - "@types/unist": "^2.0.0", - "character-entities": "^2.0.0", - "character-entities-legacy": "^3.0.0", - "character-reference-invalid": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0", - "is-hexadecimal": "^2.0.0" + "@types/unist": "^3.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/parse-latin": { - "version": "5.0.1", - "license": "MIT", + "node_modules/remark-stringify/node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", "dependencies": { - "nlcst-to-string": "^3.0.0", - "unist-util-modify-children": "^3.0.0", - "unist-util-visit-children": "^2.0.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.10" + "node_modules/remark-stringify/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/parse5": { + "node_modules/remark-stringify/node_modules/vfile": { "version": "6.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/path-browserify": { - "version": "1.0.1", + "node_modules/remark-stringify/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/request-light": { + "version": "0.7.0", "license": "MIT" }, - "node_modules/path-exists": { - "version": "5.0.0", + "node_modules/require-directory": { + "version": "2.1.1", "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=0.10.0" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", + "node_modules/require-from-string": { + "version": "2.0.2", "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/path-key": { - "version": "3.1.1", + "node_modules/require-in-the-middle": { + "version": "5.2.0", "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.1" + }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "license": "MIT" - }, - "node_modules/path-scurry": { - "version": "1.10.2", - "license": "BlueOak-1.0.0", + "node_modules/resolve": { + "version": "1.22.8", + "license": "MIT", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">=16 || 14 >=14.17" + "bin": { + "resolve": "bin/resolve" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.0", - "license": "ISC", - "engines": { - "node": "14 || >=16.14" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/path-to-regexp": { - "version": "6.2.1", - "license": "MIT" - }, - "node_modules/pathe": { - "version": "1.1.2", - "dev": true, + "node_modules/resolve-alpn": { + "version": "1.2.1", "license": "MIT" }, - "node_modules/pathval": { - "version": "1.1.1", + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", "dev": true, "license": "MIT", - "engines": { - "node": "*" + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, - "node_modules/periscopic": { - "version": "3.1.0", + "node_modules/responselike": { + "version": "2.0.1", "license": "MIT", "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^3.0.0", - "is-reference": "^3.0.0" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "3.0.1", - "license": "MIT", - "engines": { - "node": ">=10" + "lowercase-keys": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pify": { - "version": "4.0.1", + "node_modules/restore-cursor": { + "version": "4.0.0", "license": "MIT", - "peer": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, "engines": { - "node": ">=6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-dir": { - "version": "7.0.0", + "node_modules/restore-cursor/node_modules/onetime": { + "version": "5.1.2", "license": "MIT", "dependencies": { - "find-up": "^6.3.0" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=14.16" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-types": { - "version": "1.0.3", - "dev": true, + "node_modules/restore-cursor/node_modules/onetime/node_modules/mimic-fn": { + "version": "2.1.0", "license": "MIT", - "dependencies": { - "jsonc-parser": "^3.2.0", - "mlly": "^1.2.0", - "pathe": "^1.1.0" + "engines": { + "node": ">=6" } }, - "node_modules/postcss": { - "version": "8.4.38", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "license": "ISC" + }, + "node_modules/retext": { + "version": "8.1.0", "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.2.0" + "@types/nlcst": "^1.0.0", + "retext-latin": "^3.0.0", + "retext-stringify": "^3.0.0", + "unified": "^10.0.0" }, - "engines": { - "node": "^10 || ^12 || >=14" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/postcss-nested": { - "version": "6.0.1", + "node_modules/retext-latin": { + "version": "3.1.0", "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.11" - }, - "engines": { - "node": ">=12.0" + "@types/nlcst": "^1.0.0", + "parse-latin": "^5.0.0", + "unherit": "^3.0.0", + "unified": "^10.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" + "url": "https://opencollective.com/unified" } }, - "node_modules/postcss-selector-parser": { - "version": "6.0.16", + "node_modules/retext-smartypants": { + "version": "5.2.0", "license": "MIT", "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "@types/nlcst": "^1.0.0", + "nlcst-to-string": "^3.0.0", + "unified": "^10.0.0", + "unist-util-visit": "^4.0.0" }, - "engines": { - "node": ">=4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/prebuild-install": { - "version": "7.1.2", + "node_modules/retext-stringify": { + "version": "3.1.0", "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" + "@types/nlcst": "^1.0.0", + "nlcst-to-string": "^3.0.0", + "unified": "^10.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 4" } }, - "node_modules/prebuild-install/node_modules/tar-fs": { - "version": "2.1.1", + "node_modules/reusify": { + "version": "1.0.4", "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "node_modules/prebuild-install/node_modules/tar-fs/node_modules/chownr": { - "version": "1.1.4", - "license": "ISC", + "node_modules/rfdc": { + "version": "1.3.1", + "license": "MIT", "optional": true, "peer": true }, - "node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream": { - "version": "2.2.0", + "node_modules/rollup": { + "version": "4.14.0", "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=6" - } - }, - "node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/bl": { - "version": "4.1.0", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.14.0", + "@rollup/rollup-android-arm64": "4.14.0", + "@rollup/rollup-darwin-arm64": "4.14.0", + "@rollup/rollup-darwin-x64": "4.14.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.14.0", + "@rollup/rollup-linux-arm64-gnu": "4.14.0", + "@rollup/rollup-linux-arm64-musl": "4.14.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.14.0", + "@rollup/rollup-linux-riscv64-gnu": "4.14.0", + "@rollup/rollup-linux-s390x-gnu": "4.14.0", + "@rollup/rollup-linux-x64-gnu": "4.14.0", + "@rollup/rollup-linux-x64-musl": "4.14.0", + "@rollup/rollup-win32-arm64-msvc": "4.14.0", + "@rollup/rollup-win32-ia32-msvc": "4.14.0", + "@rollup/rollup-win32-x64-msvc": "4.14.0", + "fsevents": "~2.3.2" } }, - "node_modules/prebuild-install/node_modules/tar-fs/node_modules/tar-stream/node_modules/bl/node_modules/buffer": { - "version": "5.7.1", - "funding": [ + "node_modules/run-parallel": { + "version": "1.2.0", + "funding": [ { "type": "github", "url": "https://github.com/sponsors/feross" @@ -13002,2663 +11769,3002 @@ } ], "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "queue-microtask": "^1.2.2" } }, - "node_modules/preferred-pm": { - "version": "3.1.3", + "node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", "license": "MIT", - "peer": true, - "dependencies": { - "find-up": "^5.0.0", - "find-yarn-workspace-root2": "1.2.16", - "path-exists": "^4.0.0", - "which-pm": "2.0.0" - }, - "engines": { - "node": ">=10" - } + "optional": true }, - "node_modules/preferred-pm/node_modules/find-up": { - "version": "5.0.0", + "node_modules/sass": { + "version": "1.72.0", "license": "MIT", + "optional": true, "peer": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" }, - "engines": { - "node": ">=10" + "bin": { + "sass": "sass.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/preferred-pm/node_modules/find-up/node_modules/locate-path": { - "version": "6.0.0", + "node_modules/sax": { + "version": "1.3.0", + "license": "ISC" + }, + "node_modules/section-matter": { + "version": "1.0.0", "license": "MIT", - "peer": true, "dependencies": { - "p-locate": "^5.0.0" + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/preferred-pm/node_modules/find-up/node_modules/locate-path/node_modules/p-locate": { - "version": "5.0.0", - "license": "MIT", - "peer": true, + "node_modules/semver": { + "version": "7.6.0", + "license": "ISC", "dependencies": { - "p-limit": "^3.0.2" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/preferred-pm/node_modules/find-up/node_modules/locate-path/node_modules/p-locate/node_modules/p-limit": { - "version": "3.1.0", - "license": "MIT", - "peer": true, + "node_modules/set-blocking": { + "version": "2.0.0", + "license": "ISC" + }, + "node_modules/set-cookie-parser": { + "version": "2.6.0", + "license": "MIT" + }, + "node_modules/sharp": { + "version": "0.33.3", + "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "yocto-queue": "^0.1.0" + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.0" }, "engines": { - "node": ">=10" + "libvips": ">=8.15.2", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.33.3", + "@img/sharp-darwin-x64": "0.33.3", + "@img/sharp-libvips-darwin-arm64": "1.0.2", + "@img/sharp-libvips-darwin-x64": "1.0.2", + "@img/sharp-libvips-linux-arm": "1.0.2", + "@img/sharp-libvips-linux-arm64": "1.0.2", + "@img/sharp-libvips-linux-s390x": "1.0.2", + "@img/sharp-libvips-linux-x64": "1.0.2", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.2", + "@img/sharp-libvips-linuxmusl-x64": "1.0.2", + "@img/sharp-linux-arm": "0.33.3", + "@img/sharp-linux-arm64": "0.33.3", + "@img/sharp-linux-s390x": "0.33.3", + "@img/sharp-linux-x64": "0.33.3", + "@img/sharp-linuxmusl-arm64": "0.33.3", + "@img/sharp-linuxmusl-x64": "0.33.3", + "@img/sharp-wasm32": "0.33.3", + "@img/sharp-win32-ia32": "0.33.3", + "@img/sharp-win32-x64": "0.33.3" } }, - "node_modules/preferred-pm/node_modules/find-up/node_modules/locate-path/node_modules/p-locate/node_modules/p-limit/node_modules/yocto-queue": { - "version": "0.1.0", + "node_modules/shebang-command": { + "version": "2.0.0", "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" + "dependencies": { + "shebang-regex": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, - "node_modules/preferred-pm/node_modules/path-exists": { - "version": "4.0.0", + "node_modules/shebang-regex": { + "version": "3.0.0", "license": "MIT", - "peer": true, "engines": { "node": ">=8" } }, - "node_modules/preferred-pm/node_modules/which-pm": { - "version": "2.0.0", + "node_modules/shiki": { + "version": "0.14.7", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "load-yaml-file": "^0.2.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8.15" + "ansi-sequence-parser": "^1.1.0", + "jsonc-parser": "^3.2.0", + "vscode-oniguruma": "^1.7.0", + "vscode-textmate": "^8.0.0" } }, - "node_modules/prettier": { - "version": "3.1.1", - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, + "node_modules/shimmer": { + "version": "1.2.1", + "license": "BSD-2-Clause" + }, + "node_modules/siginfo": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "license": "ISC", "engines": { "node": ">=14" }, "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/pretty-format": { - "version": "29.7.0", - "dev": true, - "license": "MIT", + "node_modules/sigstore": { + "version": "2.3.0", + "license": "Apache-2.0", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@sigstore/bundle": "^2.3.1", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.1", + "@sigstore/sign": "^2.3.0", + "@sigstore/tuf": "^2.3.1", + "@sigstore/verify": "^1.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/prismjs": { - "version": "1.29.0", + "node_modules/simple-swizzle": { + "version": "0.2.2", "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "is-arrayish": "^0.3.1" } }, - "node_modules/probe-image-size": { - "version": "7.2.3", + "node_modules/sisteransi": { + "version": "1.0.5", + "license": "MIT" + }, + "node_modules/sitemap": { + "version": "7.1.1", "license": "MIT", - "peer": true, "dependencies": { - "lodash.merge": "^4.6.2", - "needle": "^2.5.2", - "stream-parser": "~0.3.1" - } - }, - "node_modules/proc-log": { - "version": "3.0.0", - "license": "ISC", + "@types/node": "^17.0.5", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.2.4" + }, + "bin": { + "sitemap": "dist/cli.js" + }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=12.0.0", + "npm": ">=5.6.0" } }, - "node_modules/process": { - "version": "0.11.10", + "node_modules/sitemap/node_modules/@types/node": { + "version": "17.0.45", + "license": "MIT" + }, + "node_modules/smart-buffer": { + "version": "4.2.0", "license": "MIT", - "optional": true, - "peer": true, "engines": { - "node": ">= 0.6.0" + "node": ">= 6.0.0", + "npm": ">= 3.0.0" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "license": "MIT" - }, - "node_modules/promise-all-reject-late": { - "version": "1.0.1", - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/promise-call-limit": { - "version": "3.0.1", - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "license": "ISC" - }, - "node_modules/promise-retry": { - "version": "2.0.1", + "node_modules/socks": { + "version": "2.8.1", "license": "MIT", "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" }, "engines": { - "node": ">=10" + "node": ">= 10.0.0", + "npm": ">= 3.0.0" } }, - "node_modules/prompts": { - "version": "2.4.2", + "node_modules/socks-proxy-agent": { + "version": "8.0.3", "license": "MIT", - "peer": true, "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.7.1" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, - "node_modules/prompts/node_modules/kleur": { - "version": "3.0.3", - "license": "MIT", - "peer": true, + "node_modules/source-map": { + "version": "0.6.1", + "license": "BSD-3-Clause", "engines": { - "node": ">=6" - } - }, - "node_modules/property-information": { - "version": "6.5.0", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node": ">=0.10.0" } }, - "node_modules/protobufjs": { - "version": "7.2.6", - "hasInstallScript": true, + "node_modules/source-map-js": { + "version": "1.2.0", "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, "engines": { - "node": ">=12.0.0" + "node": ">=0.10.0" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/prr": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/pump": { - "version": "3.0.0", + "node_modules/source-map-support": { + "version": "0.5.21", "license": "MIT", "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "license": "MIT" - }, - "node_modules/quick-lru": { - "version": "5.1.1", + "node_modules/space-separated-tokens": { + "version": "2.0.2", "license": "MIT", - "engines": { - "node": ">=10" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/rc": { - "version": "1.2.8", - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "optional": true, - "peer": true, + "node_modules/spdx-correct": { + "version": "3.2.0", + "license": "Apache-2.0", "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/rc/node_modules/ini": { - "version": "1.3.8", - "license": "ISC", - "optional": true, - "peer": true - }, - "node_modules/react-is": { - "version": "18.2.0", - "dev": true, - "license": "MIT" + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "license": "CC-BY-3.0" }, - "node_modules/read-cmd-shim": { - "version": "4.0.0", - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/read-package-json": { - "version": "7.0.0", + "node_modules/spdx-license-ids": { + "version": "3.0.17", + "license": "CC0-1.0" + }, + "node_modules/split2": { + "version": "3.2.2", "license": "ISC", + "optional": true, + "peer": true, "dependencies": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "readable-stream": "^3.0.0" } }, - "node_modules/read-package-json-fast": { - "version": "3.0.2", + "node_modules/sprintf-js": { + "version": "1.0.3", + "license": "BSD-3-Clause" + }, + "node_modules/ssri": { + "version": "10.0.5", "license": "ISC", "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" + "minipass": "^7.0.3" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/readable-stream": { - "version": "3.6.2", + "node_modules/sst": { + "resolved": "sdk/js", + "link": true + }, + "node_modules/stackback": { + "version": "0.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/std-env": { + "version": "3.7.0", + "dev": true, + "license": "MIT" + }, + "node_modules/stream-replace-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stream-replace-string/-/stream-replace-string-2.0.0.tgz", + "integrity": "sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==" + }, + "node_modules/stream-shift": { + "version": "1.0.3", + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/streamx": { + "version": "2.16.1", "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" }, - "engines": { - "node": ">= 6" + "optionalDependencies": { + "bare-events": "^2.2.0" } }, - "node_modules/readdir-glob": { - "version": "1.1.3", - "license": "Apache-2.0", + "node_modules/string_decoder": { + "version": "1.3.0", + "license": "MIT", "dependencies": { - "minimatch": "^5.1.0" + "safe-buffer": "~5.2.0" } }, - "node_modules/readdir-glob/node_modules/minimatch": { - "version": "5.1.6", - "license": "ISC", + "node_modules/string-width": { + "version": "4.2.3", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/readdirp": { - "version": "3.6.0", + "node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.1", "license": "MIT", "dependencies": { - "picomatch": "^2.2.1" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=8.10.0" + "node": ">=8" } }, - "node_modules/readdirp/node_modules/picomatch": { - "version": "2.3.1", + "node_modules/string-width/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "5.0.1", "license": "MIT", "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=8" } }, - "node_modules/rehype": { - "version": "12.0.1", + "node_modules/stringify-entities": { + "version": "4.0.4", "license": "MIT", "dependencies": { - "@types/hast": "^2.0.0", - "rehype-parse": "^8.0.0", - "rehype-stringify": "^9.0.0", - "unified": "^10.0.0" + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/rehype-parse": { - "version": "8.0.5", + "node_modules/strip-ansi": { + "version": "7.1.0", "license": "MIT", "dependencies": { - "@types/hast": "^2.0.0", - "hast-util-from-parse5": "^7.0.0", - "parse5": "^6.0.0", - "unified": "^10.0.0" + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/rehype-raw": { - "version": "6.1.1", + "node_modules/strip-bom": { + "version": "3.0.0", "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0", - "hast-util-raw": "^7.2.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=4" } }, - "node_modules/rehype-stringify": { - "version": "9.0.4", + "node_modules/strip-bom-string": { + "version": "1.0.0", "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0", - "hast-util-to-html": "^8.0.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/reinterval": { - "version": "1.1.0", + "node_modules/strip-final-newline": { + "version": "3.0.0", "license": "MIT", - "optional": true, - "peer": true + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/remark-directive": { - "version": "2.0.1", + "node_modules/strip-literal": { + "version": "2.1.0", + "dev": true, "license": "MIT", "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-directive": "^2.0.0", - "micromark-extension-directive": "^2.0.0", - "unified": "^10.0.0" + "js-tokens": "^9.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/antfu" } }, - "node_modules/remark-expressive-code": { - "version": "0.29.4", + "node_modules/strnum": { + "version": "1.0.5", + "license": "MIT" + }, + "node_modules/style-to-object": { + "version": "0.4.4", "license": "MIT", "dependencies": { - "expressive-code": "^0.29.4", - "hast-util-to-html": "^8.0.4", - "unist-util-visit": "^4.1.2" + "inline-style-parser": "0.1.1" } }, - "node_modules/remark-gfm": { - "version": "3.0.1", + "node_modules/stylus": { + "version": "0.63.0", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-gfm": "^2.0.0", - "micromark-extension-gfm": "^2.0.0", - "unified": "^10.0.0" + "@adobe/css-tools": "~4.3.3", + "debug": "^4.3.2", + "glob": "^7.1.6", + "sax": "~1.3.0", + "source-map": "^0.7.3" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://opencollective.com/stylus" } }, - "node_modules/remark-mdx": { - "version": "2.3.0", - "license": "MIT", + "node_modules/stylus/node_modules/glob": { + "version": "7.2.3", + "license": "ISC", + "optional": true, + "peer": true, "dependencies": { - "mdast-util-mdx": "^2.0.0", - "micromark-extension-mdxjs": "^1.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/remark-parse": { - "version": "10.0.2", - "license": "MIT", + "node_modules/stylus/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "license": "ISC", + "optional": true, + "peer": true, "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "unified": "^10.0.0" + "brace-expansion": "^1.1.7" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": "*" } }, - "node_modules/remark-rehype": { - "version": "10.1.0", + "node_modules/stylus/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion": { + "version": "1.1.11", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-to-hast": "^12.1.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/remark-smartypants": { - "version": "2.1.0", - "license": "MIT", - "dependencies": { - "retext": "^8.1.0", - "retext-smartypants": "^5.2.0", - "unist-util-visit": "^5.0.0" - }, + "node_modules/stylus/node_modules/source-map": { + "version": "0.7.4", + "license": "BSD-3-Clause", + "optional": true, + "peer": true, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">= 8" } }, - "node_modules/remark-smartypants/node_modules/unist-util-visit": { - "version": "5.0.0", + "node_modules/sugarss": { + "version": "4.0.1", "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" + "optional": true, + "peer": true, + "engines": { + "node": ">=12.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" } }, - "node_modules/remark-smartypants/node_modules/unist-util-visit/node_modules/@types/unist": { - "version": "3.0.2", - "license": "MIT" - }, - "node_modules/remark-smartypants/node_modules/unist-util-visit/node_modules/unist-util-is": { - "version": "6.0.0", + "node_modules/supports-color": { + "version": "5.5.0", "license": "MIT", "dependencies": { - "@types/unist": "^3.0.0" + "has-flag": "^3.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=4" } }, - "node_modules/remark-smartypants/node_modules/unist-util-visit/node_modules/unist-util-visit-parents": { - "version": "6.0.1", + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/request-light": { - "version": "0.7.0", - "license": "MIT" - }, - "node_modules/require-directory": { - "version": "2.1.1", - "license": "MIT", + "node_modules/tar": { + "version": "6.2.1", + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/require-from-string": { - "version": "2.0.2", + "node_modules/tar-stream": { + "version": "3.1.7", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, - "node_modules/require-in-the-middle": { - "version": "5.2.0", - "license": "MIT", + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "license": "ISC", "dependencies": { - "debug": "^4.1.1", - "module-details-from-path": "^1.0.3", - "resolve": "^1.22.1" + "minipass": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">= 8" } }, - "node_modules/resolve": { - "version": "1.22.8", - "license": "MIT", + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "license": "ISC", "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "yallist": "^4.0.0" }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "license": "MIT" - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "license": "ISC", + "engines": { + "node": ">=8" } }, - "node_modules/responselike": { - "version": "2.0.1", + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", "license": "MIT", - "dependencies": { - "lowercase-keys": "^2.0.0" + "bin": { + "mkdirp": "bin/cmd.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=10" } }, - "node_modules/restore-cursor": { - "version": "4.0.0", - "license": "MIT", + "node_modules/terser": { + "version": "5.29.2", + "license": "BSD-2-Clause", + "optional": true, "peer": true, "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "bin": { + "terser": "bin/terser" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=10" } }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "5.1.2", + "node_modules/tinybench": { + "version": "2.6.0", + "dev": true, + "license": "MIT" + }, + "node_modules/tinypool": { + "version": "0.8.3", + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=14.0.0" } }, - "node_modules/restore-cursor/node_modules/onetime/node_modules/mimic-fn": { - "version": "2.1.0", + "node_modules/tinyspy": { + "version": "2.2.1", + "dev": true, "license": "MIT", - "peer": true, "engines": { - "node": ">=6" + "node": ">=14.0.0" } }, - "node_modules/restore-cursor/node_modules/signal-exit": { - "version": "3.0.7", - "license": "ISC", - "peer": true + "node_modules/tmp": { + "version": "0.2.3", + "license": "MIT", + "engines": { + "node": ">=14.14" + } }, - "node_modules/retext": { - "version": "8.1.0", + "node_modules/to-fast-properties": { + "version": "2.0.0", "license": "MIT", - "dependencies": { - "@types/nlcst": "^1.0.0", - "retext-latin": "^3.0.0", - "retext-stringify": "^3.0.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=4" } }, - "node_modules/retext-latin": { - "version": "3.1.0", + "node_modules/to-regex-range": { + "version": "5.0.1", "license": "MIT", "dependencies": { - "@types/nlcst": "^1.0.0", - "parse-latin": "^5.0.0", - "unherit": "^3.0.0", - "unified": "^10.0.0" + "is-number": "^7.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=8.0" } }, - "node_modules/retext-smartypants": { - "version": "5.2.0", + "node_modules/tr46": { + "version": "0.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/treeverse": { + "version": "3.0.0", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", "license": "MIT", - "dependencies": { - "@types/nlcst": "^1.0.0", - "nlcst-to-string": "^3.0.0", - "unified": "^10.0.0", - "unist-util-visit": "^4.0.0" - }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/retext-stringify": { - "version": "3.1.0", + "node_modules/trough": { + "version": "2.2.0", "license": "MIT", - "dependencies": { - "@types/nlcst": "^1.0.0", - "nlcst-to-string": "^3.0.0", - "unified": "^10.0.0" - }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/retry": { - "version": "0.12.0", + "node_modules/ts-node": { + "version": "7.0.1", "license": "MIT", + "dependencies": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + }, + "bin": { + "ts-node": "dist/bin.js" + }, "engines": { - "node": ">= 4" + "node": ">=4.2.0" } }, - "node_modules/reusify": { - "version": "1.0.4", + "node_modules/tsconfck": { + "version": "3.0.3", "license": "MIT", + "bin": { + "tsconfck": "bin/tsconfck.js" + }, "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": "^18 || >=20" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/rfdc": { - "version": "1.3.1", - "license": "MIT", - "optional": true, - "peer": true + "node_modules/tslib": { + "version": "2.6.2", + "license": "0BSD" }, - "node_modules/rollup": { - "version": "4.14.0", - "devOptional": true, + "node_modules/tsx": { + "version": "4.7.2", + "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.5" + "esbuild": "~0.19.10", + "get-tsconfig": "^4.7.2" }, "bin": { - "rollup": "dist/bin/rollup" + "tsx": "dist/cli.mjs" }, "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" + "node": ">=18.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.14.0", - "@rollup/rollup-android-arm64": "4.14.0", - "@rollup/rollup-darwin-arm64": "4.14.0", - "@rollup/rollup-darwin-x64": "4.14.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.14.0", - "@rollup/rollup-linux-arm64-gnu": "4.14.0", - "@rollup/rollup-linux-arm64-musl": "4.14.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.14.0", - "@rollup/rollup-linux-riscv64-gnu": "4.14.0", - "@rollup/rollup-linux-s390x-gnu": "4.14.0", - "@rollup/rollup-linux-x64-gnu": "4.14.0", - "@rollup/rollup-linux-x64-musl": "4.14.0", - "@rollup/rollup-win32-arm64-msvc": "4.14.0", - "@rollup/rollup-win32-ia32-msvc": "4.14.0", - "@rollup/rollup-win32-x64-msvc": "4.14.0", - "fsevents": "~2.3.2" + "fsevents": "~2.3.3" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/tuf-js": { + "version": "2.2.0", "license": "MIT", "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/sade": { - "version": "1.8.1", - "license": "MIT", - "dependencies": { - "mri": "^1.1.0" + "@tufjs/models": "2.0.0", + "debug": "^4.3.4", + "make-fetch-happen": "^13.0.0" }, "engines": { - "node": ">=6" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "license": "MIT" - }, - "node_modules/sass": { - "version": "1.72.0", + "node_modules/type-detect": { + "version": "4.0.8", + "dev": true, "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, "engines": { - "node": ">=14.0.0" + "node": ">=4" } }, - "node_modules/sax": { - "version": "1.3.0", - "license": "ISC" - }, - "node_modules/section-matter": { - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - }, + "node_modules/type-fest": { + "version": "2.19.0", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=4" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semver": { - "version": "7.6.0", - "license": "ISC", + "node_modules/typedarray": { + "version": "0.0.6", + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/typedoc": { + "version": "0.25.7", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "lru-cache": "^6.0.0" + "lunr": "^2.3.9", + "marked": "^4.3.0", + "minimatch": "^9.0.3", + "shiki": "^0.14.7" }, "bin": { - "semver": "bin/semver.js" + "typedoc": "bin/typedoc" }, "engines": { - "node": ">=10" + "node": ">= 16" + }, + "peerDependencies": { + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x" } }, - "node_modules/server-destroy": { - "version": "1.0.1", - "license": "ISC", - "peer": true - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "license": "ISC" - }, - "node_modules/set-cookie-parser": { - "version": "2.6.0", + "node_modules/typesafe-path": { + "version": "0.2.2", "license": "MIT" }, - "node_modules/sharp": { - "version": "0.33.3", - "hasInstallScript": true, + "node_modules/typescript": { + "version": "5.3.3", "license": "Apache-2.0", - "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.3", - "semver": "^7.6.0" + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, "engines": { - "libvips": ">=8.15.2", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.33.3", - "@img/sharp-darwin-x64": "0.33.3", - "@img/sharp-libvips-darwin-arm64": "1.0.2", - "@img/sharp-libvips-darwin-x64": "1.0.2", - "@img/sharp-libvips-linux-arm": "1.0.2", - "@img/sharp-libvips-linux-arm64": "1.0.2", - "@img/sharp-libvips-linux-s390x": "1.0.2", - "@img/sharp-libvips-linux-x64": "1.0.2", - "@img/sharp-libvips-linuxmusl-arm64": "1.0.2", - "@img/sharp-libvips-linuxmusl-x64": "1.0.2", - "@img/sharp-linux-arm": "0.33.3", - "@img/sharp-linux-arm64": "0.33.3", - "@img/sharp-linux-s390x": "0.33.3", - "@img/sharp-linux-x64": "0.33.3", - "@img/sharp-linuxmusl-arm64": "0.33.3", - "@img/sharp-linuxmusl-x64": "0.33.3", - "@img/sharp-wasm32": "0.33.3", - "@img/sharp-win32-ia32": "0.33.3", - "@img/sharp-win32-x64": "0.33.3" + "node": ">=14.17" } }, - "node_modules/shebang-command": { - "version": "2.0.0", + "node_modules/typescript-auto-import-cache": { + "version": "0.3.2", "license": "MIT", "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" + "semver": "^7.3.8" } }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } + "node_modules/ufo": { + "version": "1.5.3", + "dev": true, + "license": "MIT" }, - "node_modules/shiki": { - "version": "0.14.7", + "node_modules/undici": { + "version": "5.28.4", "license": "MIT", "dependencies": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" } }, - "node_modules/shikiji": { - "version": "0.6.13", + "node_modules/undici-types": { + "version": "5.26.5", + "license": "MIT" + }, + "node_modules/unherit": { + "version": "3.0.1", "license": "MIT", - "dependencies": { - "hast-util-to-html": "^9.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/shikiji/node_modules/hast-util-to-html": { - "version": "9.0.1", + "node_modules/unified": { + "version": "10.1.2", "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-raw": "^9.0.0", - "hast-util-whitespace": "^3.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.0", - "zwitch": "^2.0.4" + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/@types/hast": { - "version": "3.0.4", - "license": "MIT", + "node_modules/unique-filename": { + "version": "3.0.0", + "license": "ISC", "dependencies": { - "@types/unist": "*" + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/@types/unist": { - "version": "3.0.2", - "license": "MIT" + "node_modules/unique-slug": { + "version": "4.0.0", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/hast-util-raw": { - "version": "9.0.2", - "license": "MIT", + "node_modules/unist-util-find-after": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", + "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", "dependencies": { - "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", - "@ungap/structured-clone": "^1.0.0", - "hast-util-from-parse5": "^8.0.0", - "hast-util-to-parse5": "^8.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "parse5": "^7.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" + "unist-util-is": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/hast-util-raw/node_modules/hast-util-from-parse5": { - "version": "8.0.1", - "license": "MIT", + "node_modules/unist-util-find-after/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/unist-util-find-after/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "devlop": "^1.0.0", - "hastscript": "^8.0.0", - "property-information": "^6.0.0", - "vfile": "^6.0.0", - "vfile-location": "^5.0.0", - "web-namespaces": "^2.0.0" + "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/hast-util-raw/node_modules/hast-util-from-parse5/node_modules/hastscript": { - "version": "8.0.0", + "node_modules/unist-util-is": { + "version": "5.2.1", "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-parse-selector": "^4.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0" + "@types/unist": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/hast-util-raw/node_modules/hast-util-from-parse5/node_modules/hastscript/node_modules/hast-util-parse-selector": { - "version": "4.0.0", + "node_modules/unist-util-modify-children": { + "version": "3.1.1", "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0" + "@types/unist": "^2.0.0", + "array-iterate": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/hast-util-raw/node_modules/hast-util-from-parse5/node_modules/vfile-location": { - "version": "5.0.2", + "node_modules/unist-util-stringify-position": { + "version": "3.0.3", "license": "MIT", "dependencies": { - "@types/unist": "^3.0.0", - "vfile": "^6.0.0" + "@types/unist": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/hast-util-raw/node_modules/hast-util-to-parse5": { - "version": "8.0.0", + "node_modules/unist-util-visit": { + "version": "4.1.2", "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/hast-util-raw/node_modules/parse5": { - "version": "7.1.2", - "license": "MIT", - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/hast-util-raw/node_modules/unist-util-position": { - "version": "5.0.0", + "node_modules/unist-util-visit-children": { + "version": "2.0.2", "license": "MIT", "dependencies": { - "@types/unist": "^3.0.0" + "@types/unist": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/hast-util-raw/node_modules/unist-util-visit": { - "version": "5.0.0", + "node_modules/unist-util-visit-parents": { + "version": "5.1.3", "license": "MIT", "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/hast-util-raw/node_modules/unist-util-visit/node_modules/unist-util-is": { - "version": "6.0.0", + "node_modules/upath": { + "version": "1.2.0", "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=4", + "yarn": "*" } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/hast-util-raw/node_modules/unist-util-visit/node_modules/unist-util-visit-parents": { - "version": "6.0.1", + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" + "escalade": "^3.1.1", + "picocolors": "^1.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/hast-util-raw/node_modules/vfile": { - "version": "6.0.1", + "node_modules/util-deprecate": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/uuid": { + "version": "8.3.2", "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "license": "Apache-2.0", "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/hast-util-raw/node_modules/vfile/node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "license": "MIT", + "node_modules/validate-npm-package-name": { + "version": "5.0.0", + "license": "ISC", "dependencies": { - "@types/unist": "^3.0.0" + "builtins": "^5.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/hast-util-raw/node_modules/vfile/node_modules/vfile-message": { - "version": "4.0.2", + "node_modules/vfile": { + "version": "5.3.7", "license": "MIT", "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/hast-util-whitespace": { - "version": "3.0.0", + "node_modules/vfile-message": { + "version": "3.1.4", "license": "MIT", "dependencies": { - "@types/hast": "^3.0.0" + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/html-void-elements": { - "version": "3.0.0", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/mdast-util-to-hast": { - "version": "13.1.0", - "license": "MIT", + "node_modules/vite": { + "version": "5.2.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.11.tgz", + "integrity": "sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==", "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@ungap/structured-clone": "^1.0.0", - "devlop": "^1.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "trim-lines": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" + "esbuild": "^0.20.1", + "postcss": "^8.4.38", + "rollup": "^4.13.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/mdast-util-to-hast/node_modules/@types/mdast": { - "version": "4.0.3", + "node_modules/vite-node": { + "version": "1.4.0", + "dev": true, "license": "MIT", "dependencies": { - "@types/unist": "*" + "cac": "^6.7.14", + "debug": "^4.3.4", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^5.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/mdast-util-to-hast/node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/vite/node_modules/esbuild": { + "version": "0.20.2", + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/mdast-util-to-hast/node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-character": { - "version": "2.1.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/mdast-util-to-hast/node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-character/node_modules/micromark-util-types": { - "version": "2.0.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } + "node_modules/vite/node_modules/esbuild/node_modules/@esbuild/linux-x64": { + "version": "0.20.2", + "cpu": [ + "x64" ], - "license": "MIT" - }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/mdast-util-to-hast/node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-encode": { - "version": "2.0.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" ], - "license": "MIT" + "engines": { + "node": ">=12" + } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/mdast-util-to-hast/node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-symbol": { - "version": "2.0.0", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" + "node_modules/vitefu": { + "version": "0.2.5", + "license": "MIT", + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true } - ], - "license": "MIT" + } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/mdast-util-to-hast/node_modules/unist-util-position": { - "version": "5.0.0", + "node_modules/vitest": { + "version": "1.4.0", + "dev": true, "license": "MIT", "dependencies": { - "@types/unist": "^3.0.0" + "@vitest/expect": "1.4.0", + "@vitest/runner": "1.4.0", + "@vitest/snapshot": "1.4.0", + "@vitest/spy": "1.4.0", + "@vitest/utils": "1.4.0", + "acorn-walk": "^8.3.2", + "chai": "^4.3.10", + "debug": "^4.3.4", + "execa": "^8.0.1", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "tinybench": "^2.5.1", + "tinypool": "^0.8.2", + "vite": "^5.0.0", + "vite-node": "1.4.0", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "1.4.0", + "@vitest/ui": "1.4.0", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/mdast-util-to-hast/node_modules/unist-util-visit": { - "version": "5.0.0", + "node_modules/volar-service-css": { + "version": "0.0.34", "license": "MIT", "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" + "vscode-css-languageservice": "^6.2.10", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "peerDependencies": { + "@volar/language-service": "~2.1.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/mdast-util-to-hast/node_modules/unist-util-visit/node_modules/unist-util-is": { - "version": "6.0.0", + "node_modules/volar-service-emmet": { + "version": "0.0.34", "license": "MIT", "dependencies": { - "@types/unist": "^3.0.0" + "@vscode/emmet-helper": "^2.9.2", + "vscode-html-languageservice": "^5.1.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "peerDependencies": { + "@volar/language-service": "~2.1.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/mdast-util-to-hast/node_modules/unist-util-visit/node_modules/unist-util-visit-parents": { - "version": "6.0.1", + "node_modules/volar-service-html": { + "version": "0.0.34", "license": "MIT", "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" + "vscode-html-languageservice": "^5.1.0", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "peerDependencies": { + "@volar/language-service": "~2.1.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/mdast-util-to-hast/node_modules/vfile": { - "version": "6.0.1", + "node_modules/volar-service-prettier": { + "version": "0.0.34", "license": "MIT", "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" + "vscode-uri": "^3.0.8" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "peerDependencies": { + "@volar/language-service": "~2.1.0", + "prettier": "^2.2 || ^3.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + }, + "prettier": { + "optional": true + } } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/mdast-util-to-hast/node_modules/vfile/node_modules/unist-util-stringify-position": { - "version": "4.0.0", + "node_modules/volar-service-typescript": { + "version": "0.0.34", "license": "MIT", "dependencies": { - "@types/unist": "^3.0.0" + "path-browserify": "^1.0.1", + "semver": "^7.5.4", + "typescript-auto-import-cache": "^0.3.1", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-nls": "^5.2.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "peerDependencies": { + "@volar/language-service": "~2.1.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } } }, - "node_modules/shikiji/node_modules/hast-util-to-html/node_modules/mdast-util-to-hast/node_modules/vfile/node_modules/vfile-message": { - "version": "4.0.2", + "node_modules/volar-service-typescript-twoslash-queries": { + "version": "0.0.34", "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" + "peerDependencies": { + "@volar/language-service": "~2.1.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } } }, - "node_modules/shimmer": { - "version": "1.2.1", - "license": "BSD-2-Clause" - }, - "node_modules/siginfo": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node_modules/vscode-css-languageservice": { + "version": "6.2.13", + "license": "MIT", + "dependencies": { + "@vscode/l10n": "^0.0.18", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-languageserver-types": "3.17.5", + "vscode-uri": "^3.0.8" } }, - "node_modules/sigstore": { - "version": "2.3.0", - "license": "Apache-2.0", + "node_modules/vscode-css-languageservice/node_modules/@vscode/l10n": { + "version": "0.0.18", + "license": "MIT" + }, + "node_modules/vscode-html-languageservice": { + "version": "5.2.0", + "license": "MIT", "dependencies": { - "@sigstore/bundle": "^2.3.1", - "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.1", - "@sigstore/sign": "^2.3.0", - "@sigstore/tuf": "^2.3.1", - "@sigstore/verify": "^1.2.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "@vscode/l10n": "^0.0.18", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-languageserver-types": "^3.17.5", + "vscode-uri": "^3.0.8" } }, - "node_modules/simple-concat": { - "version": "1.0.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/vscode-html-languageservice/node_modules/@vscode/l10n": { + "version": "0.0.18", + "license": "MIT" + }, + "node_modules/vscode-jsonrpc": { + "version": "8.2.0", "license": "MIT", - "optional": true, - "peer": true + "engines": { + "node": ">=14.0.0" + } }, - "node_modules/simple-get": { - "version": "4.0.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/vscode-languageserver": { + "version": "9.0.1", "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" } }, - "node_modules/simple-swizzle": { - "version": "0.2.2", + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", "license": "MIT", "dependencies": { - "is-arrayish": "^0.3.1" + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" } }, - "node_modules/sisteransi": { - "version": "1.0.5", + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.11", + "license": "MIT" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "license": "MIT" + }, + "node_modules/vscode-nls": { + "version": "5.2.0", + "license": "MIT" + }, + "node_modules/vscode-oniguruma": { + "version": "1.7.0", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-textmate": { + "version": "8.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-uri": { + "version": "3.0.8", + "license": "MIT" + }, + "node_modules/walk-up-path": { + "version": "3.0.1", + "license": "ISC" + }, + "node_modules/web-namespaces": { + "version": "2.0.1", "license": "MIT", - "peer": true + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, - "node_modules/sitemap": { - "version": "7.1.1", + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "dev": true, "license": "MIT", - "dependencies": { - "@types/node": "^17.0.5", - "@types/sax": "^1.2.1", - "arg": "^5.0.0", - "sax": "^1.2.4" - }, - "bin": { - "sitemap": "dist/cli.js" - }, "engines": { - "node": ">=12.0.0", - "npm": ">=5.6.0" + "node": ">= 8" } }, - "node_modules/sitemap/node_modules/@types/node": { - "version": "17.0.45", - "license": "MIT" + "node_modules/webidl-conversions": { + "version": "3.0.1", + "dev": true, + "license": "BSD-2-Clause" }, - "node_modules/smart-buffer": { - "version": "4.2.0", + "node_modules/whatwg-url": { + "version": "5.0.0", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, - "node_modules/socks": { - "version": "2.8.1", - "license": "MIT", + "node_modules/which": { + "version": "2.0.2", + "license": "ISC", "dependencies": { - "ip-address": "^9.0.5", - "smart-buffer": "^4.2.0" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">= 10.0.0", - "npm": ">= 3.0.0" + "node": ">= 8" } }, - "node_modules/socks-proxy-agent": { - "version": "8.0.3", + "node_modules/which-pm": { + "version": "2.1.1", "license": "MIT", "dependencies": { - "agent-base": "^7.1.1", - "debug": "^4.3.4", - "socks": "^2.7.1" + "load-yaml-file": "^0.2.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 14" + "node": ">=8.15" } }, - "node_modules/source-map": { - "version": "0.6.1", - "license": "BSD-3-Clause", + "node_modules/which-pm-runs": { + "version": "1.1.0", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/source-map-js": { - "version": "1.2.0", - "license": "BSD-3-Clause", + "node_modules/which-pm/node_modules/path-exists": { + "version": "4.0.0", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/source-map-support": { - "version": "0.5.21", + "node_modules/why-is-node-running": { + "version": "2.2.2", + "dev": true, "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" } }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/wide-align": { + "version": "1.1.5", + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" } }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", + "node_modules/widest-line": { + "version": "4.0.1", "license": "MIT", "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.17", - "license": "CC0-1.0" - }, - "node_modules/split2": { - "version": "3.2.2", - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "readable-stream": "^3.0.0" + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "license": "BSD-3-Clause" - }, - "node_modules/ssri": { - "version": "10.0.5", - "license": "ISC", + "node_modules/widest-line/node_modules/string-width": { + "version": "5.1.2", + "license": "MIT", "dependencies": { - "minipass": "^7.0.3" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sst": { - "resolved": "sdk/js", - "link": true - }, - "node_modules/stackback": { - "version": "0.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/std-env": { - "version": "3.7.0", - "dev": true, + "node_modules/widest-line/node_modules/string-width/node_modules/emoji-regex": { + "version": "9.2.2", "license": "MIT" }, - "node_modules/stdin-discarder": { - "version": "0.1.0", + "node_modules/wrap-ansi": { + "version": "8.1.0", "license": "MIT", - "peer": true, "dependencies": { - "bl": "^5.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/stream-parser": { - "version": "0.3.1", + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", "license": "MIT", - "peer": true, - "dependencies": { - "debug": "2" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/stream-parser/node_modules/debug": { - "version": "2.6.9", + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", "license": "MIT", - "peer": true, "dependencies": { - "ms": "2.0.0" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stream-parser/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "license": "MIT", - "peer": true + "node_modules/wrap-ansi/node_modules/string-width/node_modules/emoji-regex": { + "version": "9.2.2", + "license": "MIT" }, - "node_modules/stream-shift": { - "version": "1.0.3", - "license": "MIT", - "optional": true, - "peer": true + "node_modules/wrappy": { + "version": "1.0.2", + "license": "ISC" }, - "node_modules/streamx": { - "version": "2.16.1", - "license": "MIT", + "node_modules/write-file-atomic": { + "version": "5.0.1", + "license": "ISC", "dependencies": { - "fast-fifo": "^1.1.0", - "queue-tick": "^1.0.1" + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" }, - "optionalDependencies": { - "bare-events": "^2.2.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/string-width": { - "version": "4.2.3", + "node_modules/ws": { + "version": "8.16.0", "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, + "optional": true, + "peer": true, "engines": { - "node": ">=8" + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "6.0.1", + "node_modules/www": { + "resolved": "www", + "link": true + }, + "node_modules/xtend": { + "version": "4.0.2", "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, + "optional": true, + "peer": true, "engines": { - "node": ">=8" + "node": ">=0.4" } }, - "node_modules/string-width/node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "license": "MIT", + "node_modules/y18n": { + "version": "5.0.8", + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/stringify-entities": { - "version": "4.0.4", - "license": "MIT", - "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } + "node_modules/yallist": { + "version": "4.0.0", + "license": "ISC" }, - "node_modules/strip-ansi": { - "version": "7.1.0", + "node_modules/yargs": { + "version": "17.7.2", "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/strip-bom": { - "version": "3.0.0", - "license": "MIT", - "peer": true, + "node_modules/yargs-parser": { + "version": "21.1.1", + "license": "ISC", "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/strip-bom-string": { - "version": "1.0.0", + "node_modules/yn": { + "version": "2.0.0", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", + "node_modules/yocto-queue": { + "version": "1.0.0", "license": "MIT", "engines": { - "node": ">=12" + "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-json-comments": { - "version": "2.0.1", + "node_modules/zip-stream": { + "version": "5.0.2", "license": "MIT", - "optional": true, - "peer": true, + "dependencies": { + "archiver-utils": "^4.0.1", + "compress-commons": "^5.0.1", + "readable-stream": "^3.6.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 12.0.0" } }, - "node_modules/strip-literal": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^9.0.0" - }, + "node_modules/zod": { + "version": "3.23.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.6.tgz", + "integrity": "sha512-RTHJlZhsRbuA8Hmp/iNL7jnfc4nZishjsanDAfEY1QpDQZCahUp3xDzl+zfweE9BklxMUcgBgS1b7Lvie/ZVwA==", "funding": { - "url": "https://github.com/sponsors/antfu" + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/strnum": { - "version": "1.0.5", - "license": "MIT" - }, - "node_modules/style-to-object": { - "version": "0.4.4", - "license": "MIT", - "dependencies": { - "inline-style-parser": "0.1.1" + "node_modules/zod-to-json-schema": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.23.0.tgz", + "integrity": "sha512-az0uJ243PxsRIa2x1WmNE/pnuA05gUq/JB8Lwe1EDCCL/Fz9MgjYQ0fPlyc2Tcv6aF2ZA7WM5TWaRZVEFaAIag==", + "peerDependencies": { + "zod": "^3.23.3" } }, - "node_modules/stylus": { - "version": "0.63.0", + "node_modules/zwitch": { + "version": "2.0.4", "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@adobe/css-tools": "~4.3.3", - "debug": "^4.3.2", - "glob": "^7.1.6", - "sax": "~1.3.0", - "source-map": "^0.7.3" - }, - "bin": { - "stylus": "bin/stylus" - }, - "engines": { - "node": "*" - }, "funding": { - "url": "https://opencollective.com/stylus" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/stylus/node_modules/glob": { - "version": "7.2.3", - "license": "ISC", - "optional": true, - "peer": true, + "pkg/platform": { + "name": "@sst/platform", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" + "@aws-sdk/client-bedrock-runtime": "3.478.0", + "@aws-sdk/client-cloudfront": "3.478.0", + "@aws-sdk/client-cloudwatch-logs": "3.478.0", + "@aws-sdk/client-ecr": "3.478.0", + "@aws-sdk/client-lambda": "3.478.0", + "@aws-sdk/client-rds-data": "3.478.0", + "@aws-sdk/client-route-53": "3.478.0", + "@aws-sdk/client-s3": "3.478.0", + "@aws-sdk/client-ssm": "3.478.0", + "@aws-sdk/client-sts": "3.478.0", + "@aws-sdk/middleware-retry": "3.374.0", + "@pulumi/aws": "6.28.1", + "@pulumi/cloudflare": "5.24.1", + "@pulumi/docker": "4.5.3", + "@pulumi/pulumi": "3.112.0", + "@pulumi/random": "4.15.0", + "@pulumi/tls": "5.0.1", + "@smithy/smithy-client": "2.1.18", + "@types/node": "^20.10.5", + "acorn": "8.11.3", + "acorn-walk": "8.3.2", + "archiver": "6.0.1", + "astro-sst": "2.40.1", + "esbuild": "0.19.10", + "glob": "10.3.10", + "path-to-regexp": "6.2.1", + "prettier": "3.1.1", + "typescript": "5.3.3" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "devDependencies": { + "@aws-sdk/client-iot": "3.501.0", + "@pulumiverse/vercel": "1.3.0", + "@tsconfig/node18": "18.2.2", + "@types/archiver": "6.0.2", + "@types/aws-lambda": "^8.10.133", + "openai": "4.29.2", + "vitest": "^1.2.2" } }, - "node_modules/stylus/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "license": "ISC", - "optional": true, - "peer": true, + "pkg/platform/node_modules/@aws-sdk/client-iot": { + "version": "3.509.0", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "brace-expansion": "^1.1.7" + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.507.0", + "@aws-sdk/core": "3.496.0", + "@aws-sdk/credential-provider-node": "3.509.0", + "@aws-sdk/middleware-host-header": "3.502.0", + "@aws-sdk/middleware-logger": "3.502.0", + "@aws-sdk/middleware-recursion-detection": "3.502.0", + "@aws-sdk/middleware-signing": "3.502.0", + "@aws-sdk/middleware-user-agent": "3.502.0", + "@aws-sdk/region-config-resolver": "3.502.0", + "@aws-sdk/types": "3.502.0", + "@aws-sdk/util-endpoints": "3.502.0", + "@aws-sdk/util-user-agent-browser": "3.502.0", + "@aws-sdk/util-user-agent-node": "3.502.0", + "@smithy/config-resolver": "^2.1.1", + "@smithy/core": "^1.3.1", + "@smithy/fetch-http-handler": "^2.4.1", + "@smithy/hash-node": "^2.1.1", + "@smithy/invalid-dependency": "^2.1.1", + "@smithy/middleware-content-length": "^2.1.1", + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-retry": "^2.1.1", + "@smithy/middleware-serde": "^2.1.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/node-http-handler": "^2.3.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/url-parser": "^2.1.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.1", + "@smithy/util-defaults-mode-node": "^2.1.1", + "@smithy/util-endpoints": "^1.1.1", + "@smithy/util-retry": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0", + "uuid": "^8.3.2" }, "engines": { - "node": "*" + "node": ">=14.0.0" } }, - "node_modules/stylus/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", - "optional": true, - "peer": true, + "pkg/platform/node_modules/@aws-sdk/client-iot/node_modules/@aws-sdk/client-sts": { + "version": "3.507.0", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/stylus/node_modules/source-map": { - "version": "0.7.4", - "license": "BSD-3-Clause", - "optional": true, - "peer": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/sugarss": { - "version": "4.0.1", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=12.0" + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.496.0", + "@aws-sdk/middleware-host-header": "3.502.0", + "@aws-sdk/middleware-logger": "3.502.0", + "@aws-sdk/middleware-recursion-detection": "3.502.0", + "@aws-sdk/middleware-user-agent": "3.502.0", + "@aws-sdk/region-config-resolver": "3.502.0", + "@aws-sdk/types": "3.502.0", + "@aws-sdk/util-endpoints": "3.502.0", + "@aws-sdk/util-user-agent-browser": "3.502.0", + "@aws-sdk/util-user-agent-node": "3.502.0", + "@smithy/config-resolver": "^2.1.1", + "@smithy/core": "^1.3.1", + "@smithy/fetch-http-handler": "^2.4.1", + "@smithy/hash-node": "^2.1.1", + "@smithy/invalid-dependency": "^2.1.1", + "@smithy/middleware-content-length": "^2.1.1", + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-retry": "^2.1.1", + "@smithy/middleware-serde": "^2.1.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/node-http-handler": "^2.3.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/url-parser": "^2.1.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.1", + "@smithy/util-defaults-mode-node": "^2.1.1", + "@smithy/util-endpoints": "^1.1.1", + "@smithy/util-middleware": "^2.1.1", + "@smithy/util-retry": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "fast-xml-parser": "4.2.5", + "tslib": "^2.5.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "engines": { + "node": ">=14.0.0" }, "peerDependencies": { - "postcss": "^8.3.3" + "@aws-sdk/credential-provider-node": "^3.507.0" } }, - "node_modules/supports-color": { - "version": "5.5.0", - "license": "MIT", - "peer": true, + "pkg/platform/node_modules/@aws-sdk/client-iot/node_modules/@smithy/smithy-client": { + "version": "2.3.1", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "has-flag": "^3.0.0" + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/types": "^2.9.1", + "@smithy/util-stream": "^2.1.1", + "tslib": "^2.5.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=14.0.0" } }, - "node_modules/tar": { - "version": "6.2.1", - "license": "ISC", + "pkg/platform/node_modules/@aws-sdk/client-sso": { + "version": "3.507.0", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar-fs": { - "version": "3.0.5", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "pump": "^3.0.0", - "tar-stream": "^3.1.5" + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.496.0", + "@aws-sdk/middleware-host-header": "3.502.0", + "@aws-sdk/middleware-logger": "3.502.0", + "@aws-sdk/middleware-recursion-detection": "3.502.0", + "@aws-sdk/middleware-user-agent": "3.502.0", + "@aws-sdk/region-config-resolver": "3.502.0", + "@aws-sdk/types": "3.502.0", + "@aws-sdk/util-endpoints": "3.502.0", + "@aws-sdk/util-user-agent-browser": "3.502.0", + "@aws-sdk/util-user-agent-node": "3.502.0", + "@smithy/config-resolver": "^2.1.1", + "@smithy/core": "^1.3.1", + "@smithy/fetch-http-handler": "^2.4.1", + "@smithy/hash-node": "^2.1.1", + "@smithy/invalid-dependency": "^2.1.1", + "@smithy/middleware-content-length": "^2.1.1", + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-retry": "^2.1.1", + "@smithy/middleware-serde": "^2.1.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/node-http-handler": "^2.3.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/url-parser": "^2.1.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.1", + "@smithy/util-defaults-mode-node": "^2.1.1", + "@smithy/util-endpoints": "^1.1.1", + "@smithy/util-retry": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" }, - "optionalDependencies": { - "bare-fs": "^2.1.1", - "bare-path": "^2.1.0" - } - }, - "node_modules/tar-stream": { - "version": "3.1.7", - "license": "MIT", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/tar/node_modules/fs-minipass": { - "version": "2.1.0", - "license": "ISC", + "pkg/platform/node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.507.0", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "minipass": "^3.0.0" + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.507.0", + "@aws-sdk/core": "3.496.0", + "@aws-sdk/middleware-host-header": "3.502.0", + "@aws-sdk/middleware-logger": "3.502.0", + "@aws-sdk/middleware-recursion-detection": "3.502.0", + "@aws-sdk/middleware-signing": "3.502.0", + "@aws-sdk/middleware-user-agent": "3.502.0", + "@aws-sdk/region-config-resolver": "3.502.0", + "@aws-sdk/types": "3.502.0", + "@aws-sdk/util-endpoints": "3.502.0", + "@aws-sdk/util-user-agent-browser": "3.502.0", + "@aws-sdk/util-user-agent-node": "3.502.0", + "@smithy/config-resolver": "^2.1.1", + "@smithy/core": "^1.3.1", + "@smithy/fetch-http-handler": "^2.4.1", + "@smithy/hash-node": "^2.1.1", + "@smithy/invalid-dependency": "^2.1.1", + "@smithy/middleware-content-length": "^2.1.1", + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-retry": "^2.1.1", + "@smithy/middleware-serde": "^2.1.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/node-http-handler": "^2.3.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/url-parser": "^2.1.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.1", + "@smithy/util-defaults-mode-node": "^2.1.1", + "@smithy/util-endpoints": "^1.1.1", + "@smithy/util-retry": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "tslib": "^2.5.0" }, "engines": { - "node": ">= 8" + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/credential-provider-node": "^3.507.0" } }, - "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "license": "ISC", + "pkg/platform/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/client-sts": { + "version": "3.507.0", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "yallist": "^4.0.0" + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.496.0", + "@aws-sdk/middleware-host-header": "3.502.0", + "@aws-sdk/middleware-logger": "3.502.0", + "@aws-sdk/middleware-recursion-detection": "3.502.0", + "@aws-sdk/middleware-user-agent": "3.502.0", + "@aws-sdk/region-config-resolver": "3.502.0", + "@aws-sdk/types": "3.502.0", + "@aws-sdk/util-endpoints": "3.502.0", + "@aws-sdk/util-user-agent-browser": "3.502.0", + "@aws-sdk/util-user-agent-node": "3.502.0", + "@smithy/config-resolver": "^2.1.1", + "@smithy/core": "^1.3.1", + "@smithy/fetch-http-handler": "^2.4.1", + "@smithy/hash-node": "^2.1.1", + "@smithy/invalid-dependency": "^2.1.1", + "@smithy/middleware-content-length": "^2.1.1", + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-retry": "^2.1.1", + "@smithy/middleware-serde": "^2.1.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/node-http-handler": "^2.3.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/url-parser": "^2.1.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.1", + "@smithy/util-defaults-mode-node": "^2.1.1", + "@smithy/util-endpoints": "^1.1.1", + "@smithy/util-middleware": "^2.1.1", + "@smithy/util-retry": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "fast-xml-parser": "4.2.5", + "tslib": "^2.5.0" }, "engines": { - "node": ">=8" + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/credential-provider-node": "^3.507.0" } }, - "node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "license": "ISC", + "pkg/platform/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/smithy-client": { + "version": "2.3.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/types": "^2.9.1", + "@smithy/util-stream": "^2.1.1", + "tslib": "^2.5.0" + }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/tar/node_modules/mkdirp": { - "version": "1.0.4", - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" + "pkg/platform/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client": { + "version": "2.3.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/types": "^2.9.1", + "@smithy/util-stream": "^2.1.1", + "tslib": "^2.5.0" }, "engines": { - "node": ">=10" + "node": ">=14.0.0" } }, - "node_modules/terser": { - "version": "5.29.2", - "license": "BSD-2-Clause", - "optional": true, - "peer": true, + "pkg/platform/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.502.0", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" + "@aws-sdk/types": "3.502.0", + "@smithy/property-provider": "^2.1.1", + "@smithy/types": "^2.9.1", + "tslib": "^2.5.0" }, "engines": { - "node": ">=10" + "node": ">=14.0.0" } }, - "node_modules/tinybench": { - "version": "2.6.0", - "dev": true, - "license": "MIT" - }, - "node_modules/tinypool": { - "version": "0.8.3", + "pkg/platform/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.503.1", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.502.0", + "@smithy/fetch-http-handler": "^2.4.1", + "@smithy/node-http-handler": "^2.3.1", + "@smithy/property-provider": "^2.1.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/util-stream": "^2.1.1", + "tslib": "^2.5.0" + }, "engines": { "node": ">=14.0.0" } }, - "node_modules/tinyspy": { - "version": "2.2.1", + "pkg/platform/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/smithy-client": { + "version": "2.3.1", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/types": "^2.9.1", + "@smithy/util-stream": "^2.1.1", + "tslib": "^2.5.0" + }, "engines": { "node": ">=14.0.0" } }, - "node_modules/tmp": { - "version": "0.2.3", - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "license": "MIT", + "pkg/platform/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.507.0", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "is-number": "^7.0.0" + "@aws-sdk/client-sts": "3.507.0", + "@aws-sdk/credential-provider-env": "3.502.0", + "@aws-sdk/credential-provider-process": "3.502.0", + "@aws-sdk/credential-provider-sso": "3.507.0", + "@aws-sdk/credential-provider-web-identity": "3.507.0", + "@aws-sdk/types": "3.502.0", + "@smithy/credential-provider-imds": "^2.2.1", + "@smithy/property-provider": "^2.1.1", + "@smithy/shared-ini-file-loader": "^2.3.1", + "@smithy/types": "^2.9.1", + "tslib": "^2.5.0" }, "engines": { - "node": ">=8.0" + "node": ">=14.0.0" } }, - "node_modules/tr46": { - "version": "0.0.3", + "pkg/platform/node_modules/@aws-sdk/credential-provider-ini/node_modules/@aws-sdk/client-sts": { + "version": "3.507.0", "dev": true, - "license": "MIT" - }, - "node_modules/treeverse": { - "version": "3.0.0", - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/trim-lines": { - "version": "3.0.1", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/trough": { - "version": "2.2.0", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/ts-node": { - "version": "7.0.1", - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "arrify": "^1.0.0", - "buffer-from": "^1.1.0", - "diff": "^3.1.0", - "make-error": "^1.1.1", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "source-map-support": "^0.5.6", - "yn": "^2.0.0" - }, - "bin": { - "ts-node": "dist/bin.js" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/tsconfck": { - "version": "3.0.3", - "license": "MIT", - "peer": true, - "bin": { - "tsconfck": "bin/tsconfck.js" + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.496.0", + "@aws-sdk/middleware-host-header": "3.502.0", + "@aws-sdk/middleware-logger": "3.502.0", + "@aws-sdk/middleware-recursion-detection": "3.502.0", + "@aws-sdk/middleware-user-agent": "3.502.0", + "@aws-sdk/region-config-resolver": "3.502.0", + "@aws-sdk/types": "3.502.0", + "@aws-sdk/util-endpoints": "3.502.0", + "@aws-sdk/util-user-agent-browser": "3.502.0", + "@aws-sdk/util-user-agent-node": "3.502.0", + "@smithy/config-resolver": "^2.1.1", + "@smithy/core": "^1.3.1", + "@smithy/fetch-http-handler": "^2.4.1", + "@smithy/hash-node": "^2.1.1", + "@smithy/invalid-dependency": "^2.1.1", + "@smithy/middleware-content-length": "^2.1.1", + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-retry": "^2.1.1", + "@smithy/middleware-serde": "^2.1.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/node-http-handler": "^2.3.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/url-parser": "^2.1.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.1", + "@smithy/util-defaults-mode-node": "^2.1.1", + "@smithy/util-endpoints": "^1.1.1", + "@smithy/util-middleware": "^2.1.1", + "@smithy/util-retry": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "fast-xml-parser": "4.2.5", + "tslib": "^2.5.0" }, "engines": { - "node": "^18 || >=20" + "node": ">=14.0.0" }, "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@aws-sdk/credential-provider-node": "^3.507.0" } }, - "node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "node_modules/tsx": { - "version": "4.7.2", + "pkg/platform/node_modules/@aws-sdk/credential-provider-ini/node_modules/@aws-sdk/client-sts/node_modules/@smithy/smithy-client": { + "version": "2.3.1", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "esbuild": "~0.19.10", - "get-tsconfig": "^4.7.2" - }, - "bin": { - "tsx": "dist/cli.mjs" + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/types": "^2.9.1", + "@smithy/util-stream": "^2.1.1", + "tslib": "^2.5.0" }, "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" + "node": ">=14.0.0" } }, - "node_modules/tuf-js": { - "version": "2.2.0", - "license": "MIT", + "pkg/platform/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.509.0", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@tufjs/models": "2.0.0", - "debug": "^4.3.4", - "make-fetch-happen": "^13.0.0" + "@aws-sdk/credential-provider-env": "3.502.0", + "@aws-sdk/credential-provider-http": "3.503.1", + "@aws-sdk/credential-provider-ini": "3.507.0", + "@aws-sdk/credential-provider-process": "3.502.0", + "@aws-sdk/credential-provider-sso": "3.507.0", + "@aws-sdk/credential-provider-web-identity": "3.507.0", + "@aws-sdk/types": "3.502.0", + "@smithy/credential-provider-imds": "^2.2.1", + "@smithy/property-provider": "^2.1.1", + "@smithy/shared-ini-file-loader": "^2.3.1", + "@smithy/types": "^2.9.1", + "tslib": "^2.5.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=14.0.0" } }, - "node_modules/tunnel-agent": { - "version": "0.6.0", + "pkg/platform/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.502.0", + "dev": true, "license": "Apache-2.0", - "optional": true, - "peer": true, "dependencies": { - "safe-buffer": "^5.0.1" + "@aws-sdk/types": "3.502.0", + "@smithy/property-provider": "^2.1.1", + "@smithy/shared-ini-file-loader": "^2.3.1", + "@smithy/types": "^2.9.1", + "tslib": "^2.5.0" }, "engines": { - "node": "*" + "node": ">=14.0.0" } }, - "node_modules/type-detect": { - "version": "4.0.8", + "pkg/platform/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.507.0", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "2.19.0", - "license": "(MIT OR CC0-1.0)", - "peer": true, - "engines": { - "node": ">=12.20" + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-sso": "3.507.0", + "@aws-sdk/token-providers": "3.507.0", + "@aws-sdk/types": "3.502.0", + "@smithy/property-provider": "^2.1.1", + "@smithy/shared-ini-file-loader": "^2.3.1", + "@smithy/types": "^2.9.1", + "tslib": "^2.5.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/typedoc": { - "version": "0.25.7", + "pkg/platform/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.507.0", "dev": true, "license": "Apache-2.0", "dependencies": { - "lunr": "^2.3.9", - "marked": "^4.3.0", - "minimatch": "^9.0.3", - "shiki": "^0.14.7" - }, - "bin": { - "typedoc": "bin/typedoc" + "@aws-sdk/client-sts": "3.507.0", + "@aws-sdk/types": "3.502.0", + "@smithy/property-provider": "^2.1.1", + "@smithy/types": "^2.9.1", + "tslib": "^2.5.0" }, "engines": { - "node": ">= 16" - }, - "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x" + "node": ">=14.0.0" } }, - "node_modules/typesafe-path": { - "version": "0.2.2", - "license": "MIT" - }, - "node_modules/typescript": { - "version": "5.3.3", + "pkg/platform/node_modules/@aws-sdk/credential-provider-web-identity/node_modules/@aws-sdk/client-sts": { + "version": "3.507.0", + "dev": true, "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.496.0", + "@aws-sdk/middleware-host-header": "3.502.0", + "@aws-sdk/middleware-logger": "3.502.0", + "@aws-sdk/middleware-recursion-detection": "3.502.0", + "@aws-sdk/middleware-user-agent": "3.502.0", + "@aws-sdk/region-config-resolver": "3.502.0", + "@aws-sdk/types": "3.502.0", + "@aws-sdk/util-endpoints": "3.502.0", + "@aws-sdk/util-user-agent-browser": "3.502.0", + "@aws-sdk/util-user-agent-node": "3.502.0", + "@smithy/config-resolver": "^2.1.1", + "@smithy/core": "^1.3.1", + "@smithy/fetch-http-handler": "^2.4.1", + "@smithy/hash-node": "^2.1.1", + "@smithy/invalid-dependency": "^2.1.1", + "@smithy/middleware-content-length": "^2.1.1", + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-retry": "^2.1.1", + "@smithy/middleware-serde": "^2.1.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/node-http-handler": "^2.3.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/smithy-client": "^2.3.1", + "@smithy/types": "^2.9.1", + "@smithy/url-parser": "^2.1.1", + "@smithy/util-base64": "^2.1.1", + "@smithy/util-body-length-browser": "^2.1.1", + "@smithy/util-body-length-node": "^2.2.1", + "@smithy/util-defaults-mode-browser": "^2.1.1", + "@smithy/util-defaults-mode-node": "^2.1.1", + "@smithy/util-endpoints": "^1.1.1", + "@smithy/util-middleware": "^2.1.1", + "@smithy/util-retry": "^2.1.1", + "@smithy/util-utf8": "^2.1.1", + "fast-xml-parser": "4.2.5", + "tslib": "^2.5.0" }, "engines": { - "node": ">=14.17" + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/credential-provider-node": "^3.507.0" } }, - "node_modules/typescript-auto-import-cache": { - "version": "0.3.2", - "license": "MIT", + "pkg/platform/node_modules/@aws-sdk/credential-provider-web-identity/node_modules/@aws-sdk/client-sts/node_modules/@smithy/smithy-client": { + "version": "2.3.1", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "semver": "^7.3.8" + "@smithy/middleware-endpoint": "^2.4.1", + "@smithy/middleware-stack": "^2.1.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/types": "^2.9.1", + "@smithy/util-stream": "^2.1.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/ufo": { - "version": "1.5.3", + "pkg/platform/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.502.0", "dev": true, - "license": "MIT" - }, - "node_modules/undici": { - "version": "5.28.4", - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@fastify/busboy": "^2.0.0" + "@aws-sdk/types": "3.502.0", + "@smithy/protocol-http": "^3.1.1", + "@smithy/types": "^2.9.1", + "tslib": "^2.5.0" }, "engines": { - "node": ">=14.0" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "license": "MIT" - }, - "node_modules/unherit": { - "version": "3.0.1", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node": ">=14.0.0" } }, - "node_modules/unified": { - "version": "10.1.2", - "license": "MIT", + "pkg/platform/node_modules/@aws-sdk/middleware-logger": { + "version": "3.502.0", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" + "@aws-sdk/types": "3.502.0", + "@smithy/types": "^2.9.1", + "tslib": "^2.5.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/unique-filename": { - "version": "3.0.0", - "license": "ISC", + "pkg/platform/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.502.0", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "unique-slug": "^4.0.0" + "@aws-sdk/types": "3.502.0", + "@smithy/protocol-http": "^3.1.1", + "@smithy/types": "^2.9.1", + "tslib": "^2.5.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=14.0.0" } }, - "node_modules/unique-slug": { - "version": "4.0.0", - "license": "ISC", + "pkg/platform/node_modules/@aws-sdk/middleware-signing": { + "version": "3.502.0", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "imurmurhash": "^0.1.4" + "@aws-sdk/types": "3.502.0", + "@smithy/property-provider": "^2.1.1", + "@smithy/protocol-http": "^3.1.1", + "@smithy/signature-v4": "^2.1.1", + "@smithy/types": "^2.9.1", + "@smithy/util-middleware": "^2.1.1", + "tslib": "^2.5.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/unist-util-generated": { - "version": "2.0.1", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "node": ">=14.0.0" } }, - "node_modules/unist-util-is": { - "version": "5.2.1", - "license": "MIT", + "pkg/platform/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.502.0", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@types/unist": "^2.0.0" + "@aws-sdk/types": "3.502.0", + "@aws-sdk/util-endpoints": "3.502.0", + "@smithy/protocol-http": "^3.1.1", + "@smithy/types": "^2.9.1", + "tslib": "^2.5.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/unist-util-modify-children": { - "version": "3.1.1", - "license": "MIT", + "pkg/platform/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.502.0", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@types/unist": "^2.0.0", - "array-iterate": "^2.0.0" + "@aws-sdk/types": "3.502.0", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/types": "^2.9.1", + "@smithy/util-config-provider": "^2.2.1", + "@smithy/util-middleware": "^2.1.1", + "tslib": "^2.5.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/unist-util-position": { - "version": "4.0.4", - "license": "MIT", + "pkg/platform/node_modules/@aws-sdk/token-providers": { + "version": "3.507.0", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@types/unist": "^2.0.0" + "@aws-sdk/client-sso-oidc": "3.507.0", + "@aws-sdk/types": "3.502.0", + "@smithy/property-provider": "^2.1.1", + "@smithy/shared-ini-file-loader": "^2.3.1", + "@smithy/types": "^2.9.1", + "tslib": "^2.5.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/unist-util-position-from-estree": { - "version": "1.1.2", - "license": "MIT", + "pkg/platform/node_modules/@aws-sdk/types": { + "version": "3.502.0", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@types/unist": "^2.0.0" + "@smithy/types": "^2.9.1", + "tslib": "^2.5.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/unist-util-remove": { - "version": "3.1.1", - "license": "MIT", + "pkg/platform/node_modules/@aws-sdk/util-endpoints": { + "version": "3.502.0", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.0.0" + "@aws-sdk/types": "3.502.0", + "@smithy/types": "^2.9.1", + "@smithy/util-endpoints": "^1.1.1", + "tslib": "^2.5.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/unist-util-remove-position": { - "version": "4.0.2", - "license": "MIT", + "pkg/platform/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.502.0", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "@aws-sdk/types": "3.502.0", + "@smithy/types": "^2.9.1", + "bowser": "^2.11.0", + "tslib": "^2.5.0" } }, - "node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "license": "MIT", + "pkg/platform/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.502.0", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@types/unist": "^2.0.0" + "@aws-sdk/types": "3.502.0", + "@smithy/node-config-provider": "^2.2.1", + "@smithy/types": "^2.9.1", + "tslib": "^2.5.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" + "engines": { + "node": ">=14.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-children": { - "version": "2.0.2", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" + "peerDependencies": { + "aws-crt": ">=1.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "license": "MIT", + "sdk/js": { + "name": "sst", + "version": "3.0.13", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" + "@aws-sdk/client-lambda": "3.478.0", + "hono": "4.0.1", + "jose": "5.2.3", + "openid-client": "5.6.4" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "devDependencies": { + "@tsconfig/node18": "^18.2.2", + "@types/node": "^20.11.0", + "typescript": "^5.3.3" } }, - "node_modules/upath": { - "version": "1.2.0", - "license": "MIT", + "sdk/js/node_modules/@tsconfig/node18": { + "version": "18.2.4", + "dev": true, + "license": "MIT" + }, + "sdk/js/node_modules/typescript": { + "version": "5.4.4", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, "engines": { - "node": ">=4", - "yarn": "*" + "node": ">=14.17" } }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "peer": true, + "www": { + "version": "0.0.1", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" + "@astrojs/check": "^0.5.10", + "@astrojs/sitemap": "^3.1.4", + "@astrojs/starlight": "^0.22.1", + "@fontsource-variable/roboto-mono": "^5.0.17", + "@fontsource-variable/rubik": "^5.0.20", + "@fontsource/ibm-plex-mono": "^5.0.8", + "astro": "^4.3.5", + "astro-sst": "^2.41.5", + "js-base64": "^3.7.6", + "sharp": "^0.33.3" }, - "peerDependencies": { - "browserslist": ">= 4.21.0" + "devDependencies": { + "@types/node": "^20.10.5", + "tsx": "^4.7.0", + "typedoc": "0.25.7", + "typescript": "5.3.3" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } + "www/node_modules/@astrojs/internal-helpers": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.4.0.tgz", + "integrity": "sha512-6B13lz5n6BrbTqCTwhXjJXuR1sqiX/H6rTxzlXx+lN1NnV4jgnq/KJldCQaUWJzPL5SiWahQyinxAbxQtwgPHA==" }, - "node_modules/uvu": { - "version": "0.5.6", - "license": "MIT", + "www/node_modules/@astrojs/markdown-remark": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-5.1.0.tgz", + "integrity": "sha512-S6Z3K2hOB7MfjeDoHsotnP/q2UsnEDB8NlNAaCjMDsGBZfTUbWxyLW3CaphEWw08f6KLZi2ibK9yC3BaMhh2NQ==", "dependencies": { - "dequal": "^2.0.0", - "diff": "^5.0.0", - "kleur": "^4.0.3", - "sade": "^1.7.3" - }, - "bin": { - "uvu": "bin.js" - }, - "engines": { - "node": ">=8" + "@astrojs/prism": "^3.1.0", + "github-slugger": "^2.0.0", + "hast-util-from-html": "^2.0.0", + "hast-util-to-text": "^4.0.0", + "import-meta-resolve": "^4.0.0", + "mdast-util-definitions": "^6.0.0", + "rehype-raw": "^7.0.0", + "rehype-stringify": "^10.0.0", + "remark-gfm": "^4.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "remark-smartypants": "^2.0.0", + "shiki": "^1.1.2", + "unified": "^11.0.4", + "unist-util-remove-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.0", + "vfile": "^6.0.1" } }, - "node_modules/uvu/node_modules/diff": { - "version": "5.2.0", - "license": "BSD-3-Clause", + "www/node_modules/@astrojs/mdx": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-2.3.1.tgz", + "integrity": "sha512-BOQFKD2Pi9cRntNQJlpF2fh4xV8doNpmVy9NKI95r4jsitrY4X5aTOhAowi+fkQgP/zW1A4HwCyQ6Pdam6z8zQ==", + "dependencies": { + "@astrojs/markdown-remark": "5.1.0", + "@mdx-js/mdx": "^3.0.0", + "acorn": "^8.11.2", + "es-module-lexer": "^1.4.1", + "estree-util-visit": "^2.0.0", + "github-slugger": "^2.0.0", + "gray-matter": "^4.0.3", + "hast-util-to-html": "^9.0.0", + "kleur": "^4.1.4", + "rehype-raw": "^7.0.0", + "remark-gfm": "^4.0.0", + "remark-smartypants": "^2.0.0", + "source-map": "^0.7.4", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.1" + }, "engines": { - "node": ">=0.3.1" + "node": "^18.17.1 || ^20.3.0 || >=21.0.0" + }, + "peerDependencies": { + "astro": "^4.0.0" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "license": "Apache-2.0", + "www/node_modules/@astrojs/starlight": { + "version": "0.22.1", + "resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.22.1.tgz", + "integrity": "sha512-RATQZ4AVr78K30rupsNGTC+JLtHNimHpBtbslzC1bPoaG/TetTi6iUX8dQhHARKstq6sSBatYkZJcX3CGgzS2w==", "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "@astrojs/mdx": "^2.1.1", + "@astrojs/sitemap": "^3.0.5", + "@pagefind/default-ui": "^1.0.3", + "@types/hast": "^3.0.3", + "@types/mdast": "^4.0.3", + "astro-expressive-code": "^0.35.2", + "bcp-47": "^2.1.0", + "hast-util-from-html": "^2.0.1", + "hast-util-select": "^6.0.2", + "hast-util-to-string": "^3.0.0", + "hastscript": "^8.0.0", + "mdast-util-directive": "^3.0.0", + "mdast-util-to-markdown": "^2.1.0", + "pagefind": "^1.0.3", + "rehype": "^13.0.1", + "remark-directive": "^3.0.0", + "unified": "^11.0.4", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.1" + }, + "peerDependencies": { + "astro": "^4.2.7" } }, - "node_modules/validate-npm-package-name": { - "version": "5.0.0", - "license": "ISC", + "www/node_modules/@astrojs/telemetry": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.1.0.tgz", + "integrity": "sha512-/ca/+D8MIKEC8/A9cSaPUqQNZm+Es/ZinRv0ZAzvu2ios7POQSsVD+VOj7/hypWNsNM3T7RpfgNq7H2TU1KEHA==", "dependencies": { - "builtins": "^5.0.0" + "ci-info": "^4.0.0", + "debug": "^4.3.4", + "dlv": "^1.1.3", + "dset": "^3.1.3", + "is-docker": "^3.0.0", + "is-wsl": "^3.0.0", + "which-pm-runs": "^1.1.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.1 || ^20.3.0 || >=21.0.0" } }, - "node_modules/vfile": { - "version": "5.3.7", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "www/node_modules/@esbuild/linux-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/vfile-location": { - "version": "4.1.0", - "license": "MIT", + "www/node_modules/@mdx-js/mdx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.0.1.tgz", + "integrity": "sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==", "dependencies": { - "@types/unist": "^2.0.0", - "vfile": "^5.0.0" + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-to-js": "^2.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-estree": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "periscopic": "^3.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-message": { - "version": "3.1.4", - "license": "MIT", + "www/node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "@types/unist": "*" } }, - "node_modules/vite": { - "version": "5.2.8", - "devOptional": true, - "license": "MIT", + "www/node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", "dependencies": { - "esbuild": "^0.20.1", - "postcss": "^8.4.38", - "rollup": "^4.13.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } + "@types/unist": "*" } }, - "node_modules/vite-node": { - "version": "1.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "cac": "^6.7.14", + "www/node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "www/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "www/node_modules/astro": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/astro/-/astro-4.7.1.tgz", + "integrity": "sha512-3o+VmnIPBiCm0QVyyTC/F8humNXny5YpI+MKvBTksviRtKxhnztEA3+GAR2XWLUSOx1+/GVjz7mExq3hJGOeqQ==", + "dependencies": { + "@astrojs/compiler": "^2.7.1", + "@astrojs/internal-helpers": "0.4.0", + "@astrojs/markdown-remark": "5.1.0", + "@astrojs/telemetry": "3.1.0", + "@babel/core": "^7.24.5", + "@babel/generator": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/plugin-transform-react-jsx": "^7.23.4", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5", + "@types/babel__core": "^7.20.5", + "@types/cookie": "^0.6.0", + "acorn": "^8.11.3", + "aria-query": "^5.3.0", + "axobject-query": "^4.0.0", + "boxen": "^7.1.1", + "chokidar": "^3.6.0", + "ci-info": "^4.0.0", + "clsx": "^2.1.1", + "common-ancestor-path": "^1.0.1", + "cookie": "^0.6.0", + "cssesc": "^3.0.0", "debug": "^4.3.4", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "vite": "^5.0.0" + "deterministic-object-hash": "^2.0.2", + "devalue": "^5.0.0", + "diff": "^5.2.0", + "dlv": "^1.1.3", + "dset": "^3.1.3", + "es-module-lexer": "^1.5.2", + "esbuild": "^0.20.2", + "estree-walker": "^3.0.3", + "execa": "^8.0.1", + "fast-glob": "^3.3.2", + "flattie": "^1.1.1", + "github-slugger": "^2.0.0", + "gray-matter": "^4.0.3", + "html-escaper": "^3.0.3", + "http-cache-semantics": "^4.1.1", + "js-yaml": "^4.1.0", + "kleur": "^4.1.5", + "magic-string": "^0.30.10", + "mrmime": "^2.0.0", + "ora": "^8.0.1", + "p-limit": "^5.0.0", + "p-queue": "^8.0.1", + "path-to-regexp": "^6.2.2", + "preferred-pm": "^3.1.3", + "prompts": "^2.4.2", + "rehype": "^13.0.1", + "resolve": "^1.22.8", + "semver": "^7.6.0", + "shiki": "^1.3.0", + "string-width": "^7.1.0", + "strip-ansi": "^7.1.0", + "tsconfck": "^3.0.3", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.1", + "vite": "^5.2.10", + "vitefu": "^0.2.5", + "which-pm": "^2.1.1", + "yargs-parser": "^21.1.1", + "zod": "^3.23.5", + "zod-to-json-schema": "^3.23.0" }, "bin": { - "vite-node": "vite-node.mjs" + "astro": "astro.js" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.17.1 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0" }, - "funding": { - "url": "https://opencollective.com/vitest" + "optionalDependencies": { + "sharp": "^0.33.3" } }, - "node_modules/vite/node_modules/esbuild": { + "www/node_modules/astro-expressive-code": { + "version": "0.35.3", + "resolved": "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.35.3.tgz", + "integrity": "sha512-f1L1m3J3EzZHDEox6TXmuKo5fTSbaNxE/HU0S0UQmvlCowtOKnU/LOsoDwsbQSYGKz+fdLRPsCjFMiKqEoyfcw==", + "dependencies": { + "rehype-expressive-code": "^0.35.3" + }, + "peerDependencies": { + "astro": "^4.0.0-beta || ^3.3.0" + } + }, + "www/node_modules/astro-sst": { + "version": "2.41.5", + "resolved": "https://registry.npmjs.org/astro-sst/-/astro-sst-2.41.5.tgz", + "integrity": "sha512-c6/H9h2ekWGUBvhQ2YXdwI0HL7wRc4fFBzZSFAbYW1INpG+Gmg72GQaGO6uUJZRKNPrQNUPihS9YviUhqI0PCQ==", + "dependencies": { + "@astrojs/webapi": "^3.0.0", + "set-cookie-parser": "^2.6.0" + } + }, + "www/node_modules/base-64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", + "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==" + }, + "www/node_modules/ci-info": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", + "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "www/node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "engines": { + "node": ">= 0.6" + } + }, + "www/node_modules/css-selector-parser": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.0.5.tgz", + "integrity": "sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "www/node_modules/deterministic-object-hash": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/deterministic-object-hash/-/deterministic-object-hash-2.0.2.tgz", + "integrity": "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==", + "dependencies": { + "base-64": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "www/node_modules/devalue": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.0.0.tgz", + "integrity": "sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==" + }, + "www/node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "engines": { + "node": ">=0.3.1" + } + }, + "www/node_modules/emoji-regex": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==" + }, + "www/node_modules/esbuild": { "version": "0.20.2", - "devOptional": true, + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", "hasInstallScript": true, - "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -15691,1416 +14797,1722 @@ "@esbuild/win32-x64": "0.20.2" } }, - "node_modules/vite/node_modules/esbuild/node_modules/@esbuild/linux-x64": { - "version": "0.20.2", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitefu": { - "version": "0.2.5", - "license": "MIT", - "peer": true, - "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + "www/node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "dependencies": { + "@types/estree": "^1.0.0" }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/vitest": { - "version": "1.4.0", - "dev": true, - "license": "MIT", + "www/node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", "dependencies": { - "@vitest/expect": "1.4.0", - "@vitest/runner": "1.4.0", - "@vitest/snapshot": "1.4.0", - "@vitest/spy": "1.4.0", - "@vitest/utils": "1.4.0", - "acorn-walk": "^8.3.2", - "chai": "^4.3.10", - "debug": "^4.3.4", - "execa": "^8.0.1", - "local-pkg": "^0.5.0", - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "std-env": "^3.5.0", - "strip-literal": "^2.0.0", - "tinybench": "^2.5.1", - "tinypool": "^0.8.2", - "vite": "^5.0.0", - "vite-node": "1.4.0", - "why-is-node-running": "^2.2.2" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" }, "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "1.4.0", - "@vitest/ui": "1.4.0", - "happy-dom": "*", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - } + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/volar-service-css": { - "version": "0.0.34", - "license": "MIT", - "dependencies": { - "vscode-css-languageservice": "^6.2.10", - "vscode-languageserver-textdocument": "^1.0.11", - "vscode-uri": "^3.0.8" - }, - "peerDependencies": { - "@volar/language-service": "~2.1.0" - }, - "peerDependenciesMeta": { - "@volar/language-service": { - "optional": true - } + "www/node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/volar-service-emmet": { - "version": "0.0.34", - "license": "MIT", + "www/node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", "dependencies": { - "@vscode/emmet-helper": "^2.9.2", - "vscode-html-languageservice": "^5.1.0" + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" }, - "peerDependencies": { - "@volar/language-service": "~2.1.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "www/node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" }, - "peerDependenciesMeta": { - "@volar/language-service": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/volar-service-html": { - "version": "0.0.34", - "license": "MIT", + "www/node_modules/hast-util-from-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", + "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", "dependencies": { - "vscode-html-languageservice": "^5.1.0", - "vscode-languageserver-textdocument": "^1.0.11", - "vscode-uri": "^3.0.8" + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^8.0.0", + "property-information": "^6.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" }, - "peerDependencies": { - "@volar/language-service": "~2.1.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "www/node_modules/hast-util-has-property": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz", + "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==", + "dependencies": { + "@types/hast": "^3.0.0" }, - "peerDependenciesMeta": { - "@volar/language-service": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/volar-service-prettier": { - "version": "0.0.34", - "license": "MIT", + "www/node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", "dependencies": { - "vscode-uri": "^3.0.8" + "@types/hast": "^3.0.0" }, - "peerDependencies": { - "@volar/language-service": "~2.1.0", - "prettier": "^2.2 || ^3.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "www/node_modules/hast-util-raw": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.2.tgz", + "integrity": "sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" }, - "peerDependenciesMeta": { - "@volar/language-service": { - "optional": true - }, - "prettier": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/volar-service-typescript": { - "version": "0.0.34", - "license": "MIT", + "www/node_modules/hast-util-select": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-6.0.2.tgz", + "integrity": "sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==", "dependencies": { - "path-browserify": "^1.0.1", - "semver": "^7.5.4", - "typescript-auto-import-cache": "^0.3.1", - "vscode-languageserver-textdocument": "^1.0.11", - "vscode-nls": "^5.2.0" + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "bcp-47-match": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "css-selector-parser": "^3.0.0", + "devlop": "^1.0.0", + "direction": "^2.0.0", + "hast-util-has-property": "^3.0.0", + "hast-util-to-string": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "not": "^0.1.0", + "nth-check": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" }, - "peerDependencies": { - "@volar/language-service": "~2.1.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "www/node_modules/hast-util-to-estree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz", + "integrity": "sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.4.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" }, - "peerDependenciesMeta": { - "@volar/language-service": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/volar-service-typescript-twoslash-queries": { - "version": "0.0.34", - "license": "MIT", - "peerDependencies": { - "@volar/language-service": "~2.1.0" + "www/node_modules/hast-util-to-html": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.1.tgz", + "integrity": "sha512-hZOofyZANbyWo+9RP75xIDV/gq+OUKx+T46IlwERnKmfpwp81XBFbT9mi26ws+SJchA4RVUQwIBJpqEOBhMzEQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-raw": "^9.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" }, - "peerDependenciesMeta": { - "@volar/language-service": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/vscode-css-languageservice": { - "version": "6.2.13", - "license": "MIT", + "www/node_modules/hast-util-to-parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", + "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", "dependencies": { - "@vscode/l10n": "^0.0.18", - "vscode-languageserver-textdocument": "^1.0.11", - "vscode-languageserver-types": "3.17.5", - "vscode-uri": "^3.0.8" + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/vscode-css-languageservice/node_modules/@vscode/l10n": { - "version": "0.0.18", - "license": "MIT" + "www/node_modules/hast-util-to-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.0.tgz", + "integrity": "sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/vscode-html-languageservice": { - "version": "5.2.0", - "license": "MIT", + "www/node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", "dependencies": { - "@vscode/l10n": "^0.0.18", - "vscode-languageserver-textdocument": "^1.0.11", - "vscode-languageserver-types": "^3.17.5", - "vscode-uri": "^3.0.8" + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/vscode-html-languageservice/node_modules/@vscode/l10n": { - "version": "0.0.18", - "license": "MIT" + "www/node_modules/hastscript": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", + "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/vscode-jsonrpc": { - "version": "8.2.0", - "license": "MIT", + "www/node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "www/node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "www/node_modules/is-unicode-supported": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", + "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", "engines": { - "node": ">=14.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vscode-languageserver": { - "version": "9.0.1", - "license": "MIT", + "www/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dependencies": { - "vscode-languageserver-protocol": "3.17.5" + "argparse": "^2.0.1" }, "bin": { - "installServerIntoExtension": "bin/installServerIntoExtension" + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/vscode-languageserver-protocol": { - "version": "3.17.5", - "license": "MIT", + "www/node_modules/log-symbols": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", "dependencies": { - "vscode-jsonrpc": "8.2.0", - "vscode-languageserver-types": "3.17.5" - } - }, - "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.11", - "license": "MIT" - }, - "node_modules/vscode-languageserver-types": { - "version": "3.17.5", - "license": "MIT" - }, - "node_modules/vscode-nls": { - "version": "5.2.0", - "license": "MIT" - }, - "node_modules/vscode-oniguruma": { - "version": "1.7.0", - "license": "MIT" - }, - "node_modules/vscode-textmate": { - "version": "8.0.0", - "license": "MIT" - }, - "node_modules/vscode-uri": { - "version": "3.0.8", - "license": "MIT" - }, - "node_modules/walk-up-path": { - "version": "3.0.1", - "license": "ISC" - }, - "node_modules/web-namespaces": { - "version": "2.0.1", - "license": "MIT", + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/web-streams-polyfill": { - "version": "3.3.3", - "dev": true, - "license": "MIT", + "www/node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", "engines": { - "node": ">= 8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "www/node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/which": { - "version": "2.0.2", - "license": "ISC", + "www/node_modules/mdast-util-directive": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz", + "integrity": "sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-visit-parents": "^6.0.0" }, - "engines": { - "node": ">= 8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/which-pm": { - "version": "2.1.1", - "license": "MIT", - "peer": true, + "www/node_modules/mdast-util-find-and-replace": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", + "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", "dependencies": { - "load-yaml-file": "^0.2.0", - "path-exists": "^4.0.0" + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, - "engines": { - "node": ">=8.15" - } - }, - "node_modules/which-pm-runs": { - "version": "1.1.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/which-pm/node_modules/path-exists": { - "version": "4.0.0", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" + "www/node_modules/mdast-util-from-markdown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz", + "integrity": "sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/why-is-node-running": { - "version": "2.2.2", - "dev": true, - "license": "MIT", + "www/node_modules/mdast-util-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", + "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, - "bin": { - "why-is-node-running": "cli.js" - }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/wide-align": { - "version": "1.1.5", - "license": "ISC", + "www/node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz", + "integrity": "sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==", "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/widest-line": { - "version": "4.0.1", - "license": "MIT", - "peer": true, + "www/node_modules/mdast-util-gfm-footnote": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", "dependencies": { - "string-width": "^5.0.1" - }, - "engines": { - "node": ">=12" + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/widest-line/node_modules/string-width": { - "version": "5.1.2", - "license": "MIT", - "peer": true, + "www/node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/widest-line/node_modules/string-width/node_modules/emoji-regex": { - "version": "9.2.2", - "license": "MIT", - "peer": true - }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "license": "MIT", + "www/node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "license": "MIT", - "engines": { - "node": ">=12" + "www/node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "5.1.2", - "license": "MIT", + "www/node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/wrap-ansi/node_modules/string-width/node_modules/emoji-regex": { - "version": "9.2.2", - "license": "MIT" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "5.0.1", - "license": "ISC", + "www/node_modules/mdast-util-mdx-expression": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", + "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/ws": { - "version": "8.16.0", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=10.0.0" + "www/node_modules/mdast-util-mdx-jsx": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.2.tgz", + "integrity": "sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^5.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "www/node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/www": { - "resolved": "www", - "link": true + "www/node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/xtend": { - "version": "4.0.2", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=0.4" + "www/node_modules/mdast-util-to-hast": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.1.0.tgz", + "integrity": "sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/y18n": { - "version": "5.0.8", - "license": "ISC", - "engines": { - "node": ">=10" + "www/node_modules/mdast-util-to-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/yallist": { + "www/node_modules/mdast-util-to-string": { "version": "4.0.0", - "license": "ISC" - }, - "node_modules/yargs": { - "version": "17.7.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "@types/mdast": "^4.0.0" }, - "engines": { - "node": ">=12" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "license": "ISC", - "engines": { - "node": ">=12" + "www/node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/yn": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=4" + "www/node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/yocto-queue": { - "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">=12.20" + "www/node_modules/micromark-extension-directive": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.0.tgz", + "integrity": "sha512-61OI07qpQrERc+0wEysLHMvoiO3s2R56x5u7glHq2Yqq6EHbH4dW25G9GfDdGCDYqA21KE6DWgNSzxSwHc2hSg==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "parse-entities": "^4.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/zip-stream": { - "version": "5.0.2", - "license": "MIT", - "dependencies": { - "archiver-utils": "^4.0.1", - "compress-commons": "^5.0.1", - "readable-stream": "^3.6.0" + "www/node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "engines": { - "node": ">= 12.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/zod": { - "version": "3.22.4", - "license": "MIT", + "www/node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.0.0.tgz", + "integrity": "sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, "funding": { - "url": "https://github.com/sponsors/colinhacks" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/zwitch": { - "version": "2.0.4", - "license": "MIT", + "www/node_modules/micromark-extension-gfm-footnote": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "pkg/platform": { - "name": "@sst/platform", + "www/node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==", "dependencies": { - "@aws-sdk/client-bedrock-runtime": "3.478.0", - "@aws-sdk/client-cloudfront": "3.478.0", - "@aws-sdk/client-cloudwatch-logs": "3.478.0", - "@aws-sdk/client-lambda": "3.478.0", - "@aws-sdk/client-rds-data": "3.478.0", - "@aws-sdk/client-route-53": "3.478.0", - "@aws-sdk/client-s3": "3.478.0", - "@aws-sdk/client-ssm": "3.478.0", - "@aws-sdk/client-sts": "3.478.0", - "@aws-sdk/middleware-retry": "3.374.0", - "@pulumi/aws": "6.28.1", - "@pulumi/cloudflare": "5.24.1", - "@pulumi/pulumi": "3.112.0", - "@pulumi/random": "4.15.0", - "@pulumi/tls": "5.0.1", - "@smithy/smithy-client": "2.1.18", - "@types/node": "^20.10.5", - "acorn": "8.11.3", - "acorn-walk": "8.3.2", - "archiver": "6.0.1", - "astro-sst": "2.40.1", - "esbuild": "0.19.10", - "glob": "10.3.10", - "path-to-regexp": "6.2.1", - "prettier": "3.1.1", - "typescript": "5.3.3" + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "devDependencies": { - "@aws-sdk/client-iot": "3.501.0", - "@tsconfig/node18": "18.2.2", - "@types/archiver": "6.0.2", - "@types/aws-lambda": "^8.10.133", - "openai": "4.29.2", - "vitest": "^1.2.2" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "pkg/platform/node_modules/@aws-sdk/client-iot": { - "version": "3.509.0", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/micromark-extension-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.0.0.tgz", + "integrity": "sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.507.0", - "@aws-sdk/core": "3.496.0", - "@aws-sdk/credential-provider-node": "3.509.0", - "@aws-sdk/middleware-host-header": "3.502.0", - "@aws-sdk/middleware-logger": "3.502.0", - "@aws-sdk/middleware-recursion-detection": "3.502.0", - "@aws-sdk/middleware-signing": "3.502.0", - "@aws-sdk/middleware-user-agent": "3.502.0", - "@aws-sdk/region-config-resolver": "3.502.0", - "@aws-sdk/types": "3.502.0", - "@aws-sdk/util-endpoints": "3.502.0", - "@aws-sdk/util-user-agent-browser": "3.502.0", - "@aws-sdk/util-user-agent-node": "3.502.0", - "@smithy/config-resolver": "^2.1.1", - "@smithy/core": "^1.3.1", - "@smithy/fetch-http-handler": "^2.4.1", - "@smithy/hash-node": "^2.1.1", - "@smithy/invalid-dependency": "^2.1.1", - "@smithy/middleware-content-length": "^2.1.1", - "@smithy/middleware-endpoint": "^2.4.1", - "@smithy/middleware-retry": "^2.1.1", - "@smithy/middleware-serde": "^2.1.1", - "@smithy/middleware-stack": "^2.1.1", - "@smithy/node-config-provider": "^2.2.1", - "@smithy/node-http-handler": "^2.3.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/smithy-client": "^2.3.1", - "@smithy/types": "^2.9.1", - "@smithy/url-parser": "^2.1.1", - "@smithy/util-base64": "^2.1.1", - "@smithy/util-body-length-browser": "^2.1.1", - "@smithy/util-body-length-node": "^2.2.1", - "@smithy/util-defaults-mode-browser": "^2.1.1", - "@smithy/util-defaults-mode-node": "^2.1.1", - "@smithy/util-endpoints": "^1.1.1", - "@smithy/util-retry": "^2.1.1", - "@smithy/util-utf8": "^2.1.1", - "tslib": "^2.5.0", - "uuid": "^8.3.2" + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "engines": { - "node": ">=14.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "pkg/platform/node_modules/@aws-sdk/client-iot/node_modules/@aws-sdk/client-sts": { - "version": "3.507.0", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.496.0", - "@aws-sdk/middleware-host-header": "3.502.0", - "@aws-sdk/middleware-logger": "3.502.0", - "@aws-sdk/middleware-recursion-detection": "3.502.0", - "@aws-sdk/middleware-user-agent": "3.502.0", - "@aws-sdk/region-config-resolver": "3.502.0", - "@aws-sdk/types": "3.502.0", - "@aws-sdk/util-endpoints": "3.502.0", - "@aws-sdk/util-user-agent-browser": "3.502.0", - "@aws-sdk/util-user-agent-node": "3.502.0", - "@smithy/config-resolver": "^2.1.1", - "@smithy/core": "^1.3.1", - "@smithy/fetch-http-handler": "^2.4.1", - "@smithy/hash-node": "^2.1.1", - "@smithy/invalid-dependency": "^2.1.1", - "@smithy/middleware-content-length": "^2.1.1", - "@smithy/middleware-endpoint": "^2.4.1", - "@smithy/middleware-retry": "^2.1.1", - "@smithy/middleware-serde": "^2.1.1", - "@smithy/middleware-stack": "^2.1.1", - "@smithy/node-config-provider": "^2.2.1", - "@smithy/node-http-handler": "^2.3.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/smithy-client": "^2.3.1", - "@smithy/types": "^2.9.1", - "@smithy/url-parser": "^2.1.1", - "@smithy/util-base64": "^2.1.1", - "@smithy/util-body-length-browser": "^2.1.1", - "@smithy/util-body-length-node": "^2.2.1", - "@smithy/util-defaults-mode-browser": "^2.1.1", - "@smithy/util-defaults-mode-node": "^2.1.1", - "@smithy/util-endpoints": "^1.1.1", - "@smithy/util-middleware": "^2.1.1", - "@smithy/util-retry": "^2.1.1", - "@smithy/util-utf8": "^2.1.1", - "fast-xml-parser": "4.2.5", - "tslib": "^2.5.0" + "micromark-util-types": "^2.0.0" }, - "engines": { - "node": ">=14.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "www/node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.0.1.tgz", + "integrity": "sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "peerDependencies": { - "@aws-sdk/credential-provider-node": "^3.507.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "pkg/platform/node_modules/@aws-sdk/client-iot/node_modules/@smithy/smithy-client": { - "version": "2.3.1", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/micromark-extension-mdx-expression": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz", + "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@smithy/middleware-endpoint": "^2.4.1", - "@smithy/middleware-stack": "^2.1.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/types": "^2.9.1", - "@smithy/util-stream": "^2.1.1", - "tslib": "^2.5.0" + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "www/node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz", + "integrity": "sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==", + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" }, - "engines": { - "node": ">=14.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "pkg/platform/node_modules/@aws-sdk/client-sso": { - "version": "3.507.0", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.496.0", - "@aws-sdk/middleware-host-header": "3.502.0", - "@aws-sdk/middleware-logger": "3.502.0", - "@aws-sdk/middleware-recursion-detection": "3.502.0", - "@aws-sdk/middleware-user-agent": "3.502.0", - "@aws-sdk/region-config-resolver": "3.502.0", - "@aws-sdk/types": "3.502.0", - "@aws-sdk/util-endpoints": "3.502.0", - "@aws-sdk/util-user-agent-browser": "3.502.0", - "@aws-sdk/util-user-agent-node": "3.502.0", - "@smithy/config-resolver": "^2.1.1", - "@smithy/core": "^1.3.1", - "@smithy/fetch-http-handler": "^2.4.1", - "@smithy/hash-node": "^2.1.1", - "@smithy/invalid-dependency": "^2.1.1", - "@smithy/middleware-content-length": "^2.1.1", - "@smithy/middleware-endpoint": "^2.4.1", - "@smithy/middleware-retry": "^2.1.1", - "@smithy/middleware-serde": "^2.1.1", - "@smithy/middleware-stack": "^2.1.1", - "@smithy/node-config-provider": "^2.2.1", - "@smithy/node-http-handler": "^2.3.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/smithy-client": "^2.3.1", - "@smithy/types": "^2.9.1", - "@smithy/url-parser": "^2.1.1", - "@smithy/util-base64": "^2.1.1", - "@smithy/util-body-length-browser": "^2.1.1", - "@smithy/util-body-length-node": "^2.2.1", - "@smithy/util-defaults-mode-browser": "^2.1.1", - "@smithy/util-defaults-mode-node": "^2.1.1", - "@smithy/util-endpoints": "^1.1.1", - "@smithy/util-retry": "^2.1.1", - "@smithy/util-utf8": "^2.1.1", - "tslib": "^2.5.0" + "micromark-util-types": "^2.0.0" }, - "engines": { - "node": ">=14.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "www/node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "www/node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "www/node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "www/node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "www/node_modules/micromark-factory-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz", + "integrity": "sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "www/node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "www/node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "www/node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "www/node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "www/node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "www/node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "www/node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "www/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "www/node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "www/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "www/node_modules/micromark-util-events-to-acorn": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz", + "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" } }, - "pkg/platform/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.507.0", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "www/node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.507.0", - "@aws-sdk/core": "3.496.0", - "@aws-sdk/middleware-host-header": "3.502.0", - "@aws-sdk/middleware-logger": "3.502.0", - "@aws-sdk/middleware-recursion-detection": "3.502.0", - "@aws-sdk/middleware-signing": "3.502.0", - "@aws-sdk/middleware-user-agent": "3.502.0", - "@aws-sdk/region-config-resolver": "3.502.0", - "@aws-sdk/types": "3.502.0", - "@aws-sdk/util-endpoints": "3.502.0", - "@aws-sdk/util-user-agent-browser": "3.502.0", - "@aws-sdk/util-user-agent-node": "3.502.0", - "@smithy/config-resolver": "^2.1.1", - "@smithy/core": "^1.3.1", - "@smithy/fetch-http-handler": "^2.4.1", - "@smithy/hash-node": "^2.1.1", - "@smithy/invalid-dependency": "^2.1.1", - "@smithy/middleware-content-length": "^2.1.1", - "@smithy/middleware-endpoint": "^2.4.1", - "@smithy/middleware-retry": "^2.1.1", - "@smithy/middleware-serde": "^2.1.1", - "@smithy/middleware-stack": "^2.1.1", - "@smithy/node-config-provider": "^2.2.1", - "@smithy/node-http-handler": "^2.3.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/smithy-client": "^2.3.1", - "@smithy/types": "^2.9.1", - "@smithy/url-parser": "^2.1.1", - "@smithy/util-base64": "^2.1.1", - "@smithy/util-body-length-browser": "^2.1.1", - "@smithy/util-body-length-node": "^2.2.1", - "@smithy/util-defaults-mode-browser": "^2.1.1", - "@smithy/util-defaults-mode-node": "^2.1.1", - "@smithy/util-endpoints": "^1.1.1", - "@smithy/util-retry": "^2.1.1", - "@smithy/util-utf8": "^2.1.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/credential-provider-node": "^3.507.0" + "micromark-util-symbol": "^2.0.0" } }, - "pkg/platform/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/client-sts": { - "version": "3.507.0", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.496.0", - "@aws-sdk/middleware-host-header": "3.502.0", - "@aws-sdk/middleware-logger": "3.502.0", - "@aws-sdk/middleware-recursion-detection": "3.502.0", - "@aws-sdk/middleware-user-agent": "3.502.0", - "@aws-sdk/region-config-resolver": "3.502.0", - "@aws-sdk/types": "3.502.0", - "@aws-sdk/util-endpoints": "3.502.0", - "@aws-sdk/util-user-agent-browser": "3.502.0", - "@aws-sdk/util-user-agent-node": "3.502.0", - "@smithy/config-resolver": "^2.1.1", - "@smithy/core": "^1.3.1", - "@smithy/fetch-http-handler": "^2.4.1", - "@smithy/hash-node": "^2.1.1", - "@smithy/invalid-dependency": "^2.1.1", - "@smithy/middleware-content-length": "^2.1.1", - "@smithy/middleware-endpoint": "^2.4.1", - "@smithy/middleware-retry": "^2.1.1", - "@smithy/middleware-serde": "^2.1.1", - "@smithy/middleware-stack": "^2.1.1", - "@smithy/node-config-provider": "^2.2.1", - "@smithy/node-http-handler": "^2.3.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/smithy-client": "^2.3.1", - "@smithy/types": "^2.9.1", - "@smithy/url-parser": "^2.1.1", - "@smithy/util-base64": "^2.1.1", - "@smithy/util-body-length-browser": "^2.1.1", - "@smithy/util-body-length-node": "^2.2.1", - "@smithy/util-defaults-mode-browser": "^2.1.1", - "@smithy/util-defaults-mode-node": "^2.1.1", - "@smithy/util-endpoints": "^1.1.1", - "@smithy/util-middleware": "^2.1.1", - "@smithy/util-retry": "^2.1.1", - "@smithy/util-utf8": "^2.1.1", - "fast-xml-parser": "4.2.5", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/credential-provider-node": "^3.507.0" + "micromark-util-types": "^2.0.0" } }, - "pkg/platform/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/smithy-client": { - "version": "2.3.1", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@smithy/middleware-endpoint": "^2.4.1", - "@smithy/middleware-stack": "^2.1.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/types": "^2.9.1", - "@smithy/util-stream": "^2.1.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" } }, - "pkg/platform/node_modules/@aws-sdk/client-sso/node_modules/@smithy/smithy-client": { - "version": "2.3.1", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@smithy/middleware-endpoint": "^2.4.1", - "@smithy/middleware-stack": "^2.1.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/types": "^2.9.1", - "@smithy/util-stream": "^2.1.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "pkg/platform/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.502.0", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "www/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "www/node_modules/ora": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.0.1.tgz", + "integrity": "sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/property-provider": "^2.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "chalk": "^5.3.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "pkg/platform/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.503.1", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/p-queue": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.0.1.tgz", + "integrity": "sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/fetch-http-handler": "^2.4.1", - "@smithy/node-http-handler": "^2.3.1", - "@smithy/property-provider": "^2.1.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/smithy-client": "^2.3.1", - "@smithy/types": "^2.9.1", - "@smithy/util-stream": "^2.1.1", - "tslib": "^2.5.0" + "eventemitter3": "^5.0.1", + "p-timeout": "^6.1.2" + }, + "engines": { + "node": ">=18" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "www/node_modules/p-timeout": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz", + "integrity": "sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==", "engines": { - "node": ">=14.0.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "pkg/platform/node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/smithy-client": { - "version": "2.3.1", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "dependencies": { - "@smithy/middleware-endpoint": "^2.4.1", - "@smithy/middleware-stack": "^2.1.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/types": "^2.9.1", - "@smithy/util-stream": "^2.1.1", - "tslib": "^2.5.0" + "entities": "^4.4.0" }, - "engines": { - "node": ">=14.0.0" + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "pkg/platform/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.507.0", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/path-to-regexp": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", + "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==" + }, + "www/node_modules/rehype": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.1.tgz", + "integrity": "sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==", "dependencies": { - "@aws-sdk/client-sts": "3.507.0", - "@aws-sdk/credential-provider-env": "3.502.0", - "@aws-sdk/credential-provider-process": "3.502.0", - "@aws-sdk/credential-provider-sso": "3.507.0", - "@aws-sdk/credential-provider-web-identity": "3.507.0", - "@aws-sdk/types": "3.502.0", - "@smithy/credential-provider-imds": "^2.2.1", - "@smithy/property-provider": "^2.1.1", - "@smithy/shared-ini-file-loader": "^2.3.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@types/hast": "^3.0.0", + "rehype-parse": "^9.0.0", + "rehype-stringify": "^10.0.0", + "unified": "^11.0.0" }, - "engines": { - "node": ">=14.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "pkg/platform/node_modules/@aws-sdk/credential-provider-ini/node_modules/@aws-sdk/client-sts": { - "version": "3.507.0", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/rehype-parse": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.0.tgz", + "integrity": "sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.496.0", - "@aws-sdk/middleware-host-header": "3.502.0", - "@aws-sdk/middleware-logger": "3.502.0", - "@aws-sdk/middleware-recursion-detection": "3.502.0", - "@aws-sdk/middleware-user-agent": "3.502.0", - "@aws-sdk/region-config-resolver": "3.502.0", - "@aws-sdk/types": "3.502.0", - "@aws-sdk/util-endpoints": "3.502.0", - "@aws-sdk/util-user-agent-browser": "3.502.0", - "@aws-sdk/util-user-agent-node": "3.502.0", - "@smithy/config-resolver": "^2.1.1", - "@smithy/core": "^1.3.1", - "@smithy/fetch-http-handler": "^2.4.1", - "@smithy/hash-node": "^2.1.1", - "@smithy/invalid-dependency": "^2.1.1", - "@smithy/middleware-content-length": "^2.1.1", - "@smithy/middleware-endpoint": "^2.4.1", - "@smithy/middleware-retry": "^2.1.1", - "@smithy/middleware-serde": "^2.1.1", - "@smithy/middleware-stack": "^2.1.1", - "@smithy/node-config-provider": "^2.2.1", - "@smithy/node-http-handler": "^2.3.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/smithy-client": "^2.3.1", - "@smithy/types": "^2.9.1", - "@smithy/url-parser": "^2.1.1", - "@smithy/util-base64": "^2.1.1", - "@smithy/util-body-length-browser": "^2.1.1", - "@smithy/util-body-length-node": "^2.2.1", - "@smithy/util-defaults-mode-browser": "^2.1.1", - "@smithy/util-defaults-mode-node": "^2.1.1", - "@smithy/util-endpoints": "^1.1.1", - "@smithy/util-middleware": "^2.1.1", - "@smithy/util-retry": "^2.1.1", - "@smithy/util-utf8": "^2.1.1", - "fast-xml-parser": "4.2.5", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" + "@types/hast": "^3.0.0", + "hast-util-from-html": "^2.0.0", + "unified": "^11.0.0" }, - "peerDependencies": { - "@aws-sdk/credential-provider-node": "^3.507.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "pkg/platform/node_modules/@aws-sdk/credential-provider-ini/node_modules/@aws-sdk/client-sts/node_modules/@smithy/smithy-client": { - "version": "2.3.1", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", "dependencies": { - "@smithy/middleware-endpoint": "^2.4.1", - "@smithy/middleware-stack": "^2.1.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/types": "^2.9.1", - "@smithy/util-stream": "^2.1.1", - "tslib": "^2.5.0" + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" }, - "engines": { - "node": ">=14.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "pkg/platform/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.509.0", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/rehype-stringify": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.0.tgz", + "integrity": "sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.502.0", - "@aws-sdk/credential-provider-http": "3.503.1", - "@aws-sdk/credential-provider-ini": "3.507.0", - "@aws-sdk/credential-provider-process": "3.502.0", - "@aws-sdk/credential-provider-sso": "3.507.0", - "@aws-sdk/credential-provider-web-identity": "3.507.0", - "@aws-sdk/types": "3.502.0", - "@smithy/credential-provider-imds": "^2.2.1", - "@smithy/property-provider": "^2.1.1", - "@smithy/shared-ini-file-loader": "^2.3.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@types/hast": "^3.0.0", + "hast-util-to-html": "^9.0.0", + "unified": "^11.0.0" }, - "engines": { - "node": ">=14.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "pkg/platform/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.502.0", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/remark-directive": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.0.tgz", + "integrity": "sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/property-provider": "^2.1.1", - "@smithy/shared-ini-file-loader": "^2.3.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@types/mdast": "^4.0.0", + "mdast-util-directive": "^3.0.0", + "micromark-extension-directive": "^3.0.0", + "unified": "^11.0.0" }, - "engines": { - "node": ">=14.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "pkg/platform/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.507.0", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/remark-gfm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", + "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", "dependencies": { - "@aws-sdk/client-sso": "3.507.0", - "@aws-sdk/token-providers": "3.507.0", - "@aws-sdk/types": "3.502.0", - "@smithy/property-provider": "^2.1.1", - "@smithy/shared-ini-file-loader": "^2.3.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" }, - "engines": { - "node": ">=14.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "pkg/platform/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.507.0", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/remark-mdx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.0.1.tgz", + "integrity": "sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==", "dependencies": { - "@aws-sdk/client-sts": "3.507.0", - "@aws-sdk/types": "3.502.0", - "@smithy/property-provider": "^2.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" }, - "engines": { - "node": ">=14.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "pkg/platform/node_modules/@aws-sdk/credential-provider-web-identity/node_modules/@aws-sdk/client-sts": { - "version": "3.507.0", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.496.0", - "@aws-sdk/middleware-host-header": "3.502.0", - "@aws-sdk/middleware-logger": "3.502.0", - "@aws-sdk/middleware-recursion-detection": "3.502.0", - "@aws-sdk/middleware-user-agent": "3.502.0", - "@aws-sdk/region-config-resolver": "3.502.0", - "@aws-sdk/types": "3.502.0", - "@aws-sdk/util-endpoints": "3.502.0", - "@aws-sdk/util-user-agent-browser": "3.502.0", - "@aws-sdk/util-user-agent-node": "3.502.0", - "@smithy/config-resolver": "^2.1.1", - "@smithy/core": "^1.3.1", - "@smithy/fetch-http-handler": "^2.4.1", - "@smithy/hash-node": "^2.1.1", - "@smithy/invalid-dependency": "^2.1.1", - "@smithy/middleware-content-length": "^2.1.1", - "@smithy/middleware-endpoint": "^2.4.1", - "@smithy/middleware-retry": "^2.1.1", - "@smithy/middleware-serde": "^2.1.1", - "@smithy/middleware-stack": "^2.1.1", - "@smithy/node-config-provider": "^2.2.1", - "@smithy/node-http-handler": "^2.3.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/smithy-client": "^2.3.1", - "@smithy/types": "^2.9.1", - "@smithy/url-parser": "^2.1.1", - "@smithy/util-base64": "^2.1.1", - "@smithy/util-body-length-browser": "^2.1.1", - "@smithy/util-body-length-node": "^2.2.1", - "@smithy/util-defaults-mode-browser": "^2.1.1", - "@smithy/util-defaults-mode-node": "^2.1.1", - "@smithy/util-endpoints": "^1.1.1", - "@smithy/util-middleware": "^2.1.1", - "@smithy/util-retry": "^2.1.1", - "@smithy/util-utf8": "^2.1.1", - "fast-xml-parser": "4.2.5", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" }, - "peerDependencies": { - "@aws-sdk/credential-provider-node": "^3.507.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "pkg/platform/node_modules/@aws-sdk/credential-provider-web-identity/node_modules/@aws-sdk/client-sts/node_modules/@smithy/smithy-client": { - "version": "2.3.1", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/remark-rehype": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.0.tgz", + "integrity": "sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==", "dependencies": { - "@smithy/middleware-endpoint": "^2.4.1", - "@smithy/middleware-stack": "^2.1.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/types": "^2.9.1", - "@smithy/util-stream": "^2.1.1", - "tslib": "^2.5.0" + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, - "engines": { - "node": ">=14.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "pkg/platform/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.502.0", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/shiki": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.4.0.tgz", + "integrity": "sha512-5WIn0OL8PWm7JhnTwRWXniy6eEDY234mRrERVlFa646V2ErQqwIFd2UML7e0Pq9eqSKLoMa3Ke+xbsF+DAuy+Q==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/protocol-http": "^3.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" + "@shikijs/core": "1.4.0" } }, - "pkg/platform/node_modules/@aws-sdk/middleware-logger": { - "version": "3.502.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, + "www/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "engines": { - "node": ">=14.0.0" + "node": ">= 8" } }, - "pkg/platform/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.502.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/protocol-http": "^3.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, + "www/node_modules/stdin-discarder": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", + "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", "engines": { - "node": ">=14.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "pkg/platform/node_modules/@aws-sdk/middleware-signing": { - "version": "3.502.0", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/string-width": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", + "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/property-provider": "^2.1.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/signature-v4": "^2.1.1", - "@smithy/types": "^2.9.1", - "@smithy/util-middleware": "^2.1.1", - "tslib": "^2.5.0" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "pkg/platform/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.502.0", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/unified": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.4.tgz", + "integrity": "sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@aws-sdk/util-endpoints": "3.502.0", - "@smithy/protocol-http": "^3.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" }, - "engines": { - "node": ">=14.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "pkg/platform/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.502.0", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/node-config-provider": "^2.2.1", - "@smithy/types": "^2.9.1", - "@smithy/util-config-provider": "^2.2.1", - "@smithy/util-middleware": "^2.1.1", - "tslib": "^2.5.0" + "@types/unist": "^3.0.0" }, - "engines": { - "node": ">=14.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "pkg/platform/node_modules/@aws-sdk/token-providers": { - "version": "3.507.0", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", "dependencies": { - "@aws-sdk/client-sso-oidc": "3.507.0", - "@aws-sdk/types": "3.502.0", - "@smithy/property-provider": "^2.1.1", - "@smithy/shared-ini-file-loader": "^2.3.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@types/unist": "^3.0.0" }, - "engines": { - "node": ">=14.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "pkg/platform/node_modules/@aws-sdk/types": { - "version": "3.502.0", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@types/unist": "^3.0.0" }, - "engines": { - "node": ">=14.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "pkg/platform/node_modules/@aws-sdk/util-endpoints": { - "version": "3.502.0", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/types": "^2.9.1", - "@smithy/util-endpoints": "^1.1.1", - "tslib": "^2.5.0" + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" }, - "engines": { - "node": ">=14.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "pkg/platform/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.502.0", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/types": "^2.9.1", - "bowser": "^2.11.0", - "tslib": "^2.5.0" + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "pkg/platform/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.502.0", - "dev": true, - "license": "Apache-2.0", + "www/node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/node-config-provider": "^2.2.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "sdk/js": { - "name": "sst", - "version": "3.0.13", + "www/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", "dependencies": { - "@aws-sdk/client-lambda": "3.478.0", - "hono": "4.0.1", - "jose": "5.2.3", - "openid-client": "5.6.4" + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" }, - "devDependencies": { - "@tsconfig/node18": "^18.2.2", - "@types/node": "^20.11.0", - "typescript": "^5.3.3" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "sdk/js/node_modules/@tsconfig/node18": { - "version": "18.2.4", - "dev": true, - "license": "MIT" - }, - "sdk/js/node_modules/typescript": { - "version": "5.4.4", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "www/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" }, - "engines": { - "node": ">=14.17" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "www": { - "version": "0.0.1", + "www/node_modules/vfile-location": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", + "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", "dependencies": { - "@astrojs/check": "^0.5.6", - "@astrojs/sitemap": "^3.0.5", - "@astrojs/starlight": "^0.14.0", - "@fontsource-variable/roboto-mono": "^5.0.17", - "@fontsource-variable/rubik": "^5.0.20", - "@fontsource/ibm-plex-mono": "^5.0.8", - "astro-sst": "^2.40.6", - "js-base64": "^3.7.6", - "sharp": "^0.33.3" + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" }, - "devDependencies": { - "@types/node": "^20.10.5", - "tsx": "^4.7.0", - "typedoc": "0.25.7", - "typescript": "5.3.3" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "www/node_modules/astro-sst": { - "version": "2.41.4", - "license": "MIT", + "www/node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", "dependencies": { - "@astrojs/webapi": "^3.0.0", - "set-cookie-parser": "^2.6.0" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } } } diff --git a/pkg/platform/src/components/aws/apigateway-websocket-route.ts b/pkg/platform/src/components/aws/apigateway-websocket-lambda-route.ts similarity index 83% rename from pkg/platform/src/components/aws/apigateway-websocket-route.ts rename to pkg/platform/src/components/aws/apigateway-websocket-lambda-route.ts index c33047c2c..6f6298863 100644 --- a/pkg/platform/src/components/aws/apigateway-websocket-route.ts +++ b/pkg/platform/src/components/aws/apigateway-websocket-lambda-route.ts @@ -35,7 +35,7 @@ export interface Args extends ApiGatewayWebSocketRouteArgs { } /** - * The `ApiGatewayWebSocketRoute` component is internally used by the `ApiGatewayWebSocket` + * The `ApiGatewayWebSocketLambdaRoute` component is internally used by the `ApiGatewayWebSocket` * component to add routes to [AWS API Gateway WebSocket API](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api.html). * * :::caution @@ -44,7 +44,7 @@ export interface Args extends ApiGatewayWebSocketRouteArgs { * * You'll find this component returned by the `route` method of the `ApiGatewayWebSocket` component. */ -export class ApiGatewayWebSocketRoute extends Component { +export class ApiGatewayWebSocketLambdaRoute extends Component { private readonly fn: Output; private readonly permission: aws.lambda.Permission; private readonly apiRoute: aws.apigatewayv2.Route; @@ -75,16 +75,21 @@ export class ApiGatewayWebSocketRoute extends Component { description: interpolate`${api.name} route ${route}`, }, args.handlerTransform, + { parent: self }, ); } function createPermission() { - return new aws.lambda.Permission(`${name}Permissions`, { - action: "lambda:InvokeFunction", - function: fn.arn, - principal: "apigateway.amazonaws.com", - sourceArn: interpolate`${api.executionArn}/*`, - }); + return new aws.lambda.Permission( + `${name}Permissions`, + { + action: "lambda:InvokeFunction", + function: fn.arn, + principal: "apigateway.amazonaws.com", + sourceArn: interpolate`${api.executionArn}/*`, + }, + { parent: self }, + ); } function createIntegration() { @@ -95,7 +100,7 @@ export class ApiGatewayWebSocketRoute extends Component { integrationType: "AWS_PROXY", integrationUri: fn.arn, }), - { dependsOn: [permission] }, + { parent: self, dependsOn: [permission] }, ); } @@ -111,6 +116,7 @@ export class ApiGatewayWebSocketRoute extends Component { route === "$connect" && auth?.iam ? "AWS_IAM" : "NONE", ), }), + { parent: self }, ); } } @@ -141,6 +147,6 @@ export class ApiGatewayWebSocketRoute extends Component { } } -const __pulumiType = "sst:aws:ApiGatewayWebSocketRoute"; +const __pulumiType = "sst:aws:ApiGatewayWebSocketLambdaRoute"; // @ts-expect-error -ApiGatewayWebSocketRoute.__pulumiType = __pulumiType; +ApiGatewayWebSocketLambdaRoute.__pulumiType = __pulumiType; diff --git a/pkg/platform/src/components/aws/apigateway-websocket.ts b/pkg/platform/src/components/aws/apigateway-websocket.ts index 13fe3c5d5..e1c853ec6 100644 --- a/pkg/platform/src/components/aws/apigateway-websocket.ts +++ b/pkg/platform/src/components/aws/apigateway-websocket.ts @@ -19,7 +19,7 @@ import { DnsValidatedCertificate } from "./dns-validated-certificate"; import { RETENTION } from "./logging"; import { dns as awsDns } from "./dns.js"; import { ApiGatewayV2DomainArgs } from "./helpers/apigatewayv2-domain"; -import { ApiGatewayWebSocketRoute } from "./apigateway-websocket-route"; +import { ApiGatewayWebSocketLambdaRoute } from "./apigateway-websocket-lambda-route"; export interface ApiGatewayWebSocketArgs { /** @@ -430,7 +430,7 @@ export class ApiGatewayWebSocket ([domain, key]) => key ? `wss://${domain}/${key}/` : `wss://${domain}`, ) - : this.api.apiEndpoint; + : interpolate`${this.api.apiEndpoint}/${this.stage.name}`; } /** @@ -524,19 +524,18 @@ export class ApiGatewayWebSocket handler: string | FunctionArgs, args: ApiGatewayWebSocketRouteArgs = {}, ) { - const self = this; - const selfName = this.constructorName; + const prefix = this.constructorName; const suffix = sanitizeToPascalCase( ["$connect", "$disconnect", "$default"].includes(route) ? route : hashStringToPrettyString(`${this.api.id}${route}`, 6), ); - return new ApiGatewayWebSocketRoute(`${selfName}Route${suffix}`, { + return new ApiGatewayWebSocketLambdaRoute(`${prefix}Route${suffix}`, { api: { - name: selfName, - id: self.api.id, - executionArn: self.api.executionArn, + name: prefix, + id: this.api.id, + executionArn: this.api.executionArn, }, route, handler, @@ -559,7 +558,7 @@ export class ApiGatewayWebSocket public getSSTAWSPermissions() { return [ { - actions: ["execute-api:MangeConnections"], + actions: ["execute-api:ManageConnections"], resources: [interpolate`${this.api.executionArn}/*/*/@connections/*`], }, ]; diff --git a/pkg/platform/src/components/aws/apigatewayv2-lambda-route.ts b/pkg/platform/src/components/aws/apigatewayv2-lambda-route.ts new file mode 100644 index 000000000..957d0686c --- /dev/null +++ b/pkg/platform/src/components/aws/apigatewayv2-lambda-route.ts @@ -0,0 +1,205 @@ +import { + ComponentResourceOptions, + Input, + Output, + interpolate, + output, +} from "@pulumi/pulumi"; +import * as aws from "@pulumi/aws"; +import { Component, Transform, transform } from "../component"; +import { Function, FunctionArgs } from "./function"; +import { ApiGatewayV2RouteArgs } from "./apigatewayv2"; +import { hashStringToPrettyString, sanitizeToPascalCase } from "../naming"; + +const authorizers: Record = {}; + +export interface Args extends ApiGatewayV2RouteArgs { + /** + * The cluster to use for the service. + */ + api: Input<{ + /** + * The name of the cluster. + */ + name: Input; + /** + * The ID of the cluster. + */ + id: Input; + /** + * The execution ARN of the cluster. + */ + executionArn: Input; + }>; + route: Input; + /** + * The route function. + */ + handler: Input; + handlerTransform?: Transform; +} + +/** + * The `ApiGatewayV2LambdaRoute` component is internally used by the `ApiGatewayV2` component + * to add routes to [Amazon API Gateway HTTP API](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api.html). + * + * :::caution + * This component is not intended for public use. + * ::: + * + * You'll find this component returned by the `route` method of the `ApiGatewayV2` component. + */ +export class ApiGatewayV2LambdaRoute extends Component { + private readonly fn: Output; + private readonly permission: aws.lambda.Permission; + private readonly apiRoute: Output; + private readonly integration: aws.apigatewayv2.Integration; + + constructor(name: string, args: Args, opts?: ComponentResourceOptions) { + super(__pulumiType, name, args, opts); + + const self = this; + const api = output(args.api); + const route = output(args.route); + + const fn = createFunction(); + const permission = createPermission(); + const integration = createIntegration(); + const authArgs = createAuthorizer(); + const apiRoute = createApiRoute(); + + this.fn = fn; + this.permission = permission; + this.apiRoute = apiRoute; + this.integration = integration; + + function createFunction() { + return Function.fromDefinition( + `${name}Handler`, + args.handler, + { + description: interpolate`${api.name} route ${route}`, + }, + args.handlerTransform, + { parent: self }, + ); + } + + function createPermission() { + return new aws.lambda.Permission( + `${name}Permissions`, + { + action: "lambda:InvokeFunction", + function: fn.arn, + principal: "apigateway.amazonaws.com", + sourceArn: interpolate`${api.executionArn}/*`, + }, + { parent: self }, + ); + } + + function createIntegration() { + return new aws.apigatewayv2.Integration( + `${name}Integration`, + transform(args.transform?.integration, { + apiId: api.id, + integrationType: "AWS_PROXY", + integrationUri: fn.arn, + payloadFormatVersion: "2.0", + }), + { parent: self, dependsOn: [permission] }, + ); + } + + function createAuthorizer() { + return output(args.auth).apply((auth) => { + if (auth?.iam) return { authorizationType: "AWS_IAM" }; + if (auth?.jwt) { + // Build authorizer name + const id = sanitizeToPascalCase( + hashStringToPrettyString( + [ + auth.jwt.issuer, + ...auth.jwt.audiences.sort(), + auth.jwt.identitySource ?? "", + ].join(""), + 6, + ), + ); + + const authorizer = + authorizers[id] ?? + new aws.apigatewayv2.Authorizer( + `${name}Authorizer${id}`, + transform(args.transform?.authorizer, { + apiId: api.id, + authorizerType: "JWT", + identitySources: [ + auth.jwt.identitySource ?? "$request.header.Authorization", + ], + jwtConfiguration: { + audiences: auth.jwt.audiences, + issuer: auth.jwt.issuer, + }, + }), + ); + authorizers[id] = authorizer; + + return { + authorizationType: "JWT", + authorizationScopes: auth.jwt.scopes, + authorizerId: authorizer.id, + }; + } + return { + authorizationType: "NONE", + }; + }); + } + + function createApiRoute() { + return authArgs.apply( + (authArgs) => + new aws.apigatewayv2.Route( + `${name}Route`, + transform(args.transform?.route, { + apiId: api.id, + routeKey: route, + target: interpolate`integrations/${integration.id}`, + ...authArgs, + }), + { parent: self }, + ), + ); + } + } + + /** + * The underlying [resources](/docs/components/#nodes) this component creates. + */ + public get nodes() { + const self = this; + return { + /** + * The Lambda function. + */ + function: this.fn, + /** + * The Lambda permission. + */ + permission: this.permission, + /** + * The API Gateway HTTP API route. + */ + route: this.apiRoute, + /** + * The API Gateway HTTP API integration. + */ + integration: this.integration, + }; + } +} + +const __pulumiType = "sst:aws:ApiGatewayV2LambdaRoute"; +// @ts-expect-error +ApiGatewayV2LambdaRoute.__pulumiType = __pulumiType; diff --git a/pkg/platform/src/components/aws/apigatewayv2.ts b/pkg/platform/src/components/aws/apigatewayv2.ts index 163ce3074..7c4b42710 100644 --- a/pkg/platform/src/components/aws/apigatewayv2.ts +++ b/pkg/platform/src/components/aws/apigatewayv2.ts @@ -1,15 +1,9 @@ -import { - ComponentResourceOptions, - Output, - all, - interpolate, - output, -} from "@pulumi/pulumi"; +import { ComponentResourceOptions, Output, all, output } from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; import { Component, Prettify, Transform, transform } from "../component"; import { Link } from "../link"; import type { Input } from "../input"; -import { Function, FunctionArgs } from "./function"; +import { FunctionArgs } from "./function"; import { hashStringToPrettyString, prefixName, @@ -20,6 +14,7 @@ import { DnsValidatedCertificate } from "./dns-validated-certificate"; import { RETENTION } from "./logging"; import { dns as awsDns } from "./dns.js"; import { ApiGatewayV2DomainArgs } from "./helpers/apigatewayv2-domain"; +import { ApiGatewayV2LambdaRoute } from "./apigatewayv2-lambda-route"; export interface ApiGatewayV2Args { /** @@ -230,25 +225,6 @@ export interface ApiGatewayV2RouteArgs { }; } -export interface ApiGatewayV2Route { - /** - * The Lambda function. - */ - function: Output; - /** - * The Lambda permission. - */ - permission: aws.lambda.Permission; - /** - * The API Gateway HTTP API integration. - */ - integration: aws.apigatewayv2.Integration; - /** - * The API Gateway HTTP API route. - */ - route: Output; -} - /** * The `ApiGatewayV2` component lets you add an [Amazon API Gateway HTTP API](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api.html) to your app. * @@ -281,7 +257,6 @@ export class ApiGatewayV2 extends Component implements Link.Linkable { private api: aws.apigatewayv2.Api; private apigDomain?: aws.apigatewayv2.DomainName; private apiMapping?: Output; - private authorizers: Record = {}; private logGroup: aws.cloudwatch.LogGroup; constructor( @@ -617,60 +592,24 @@ export class ApiGatewayV2 extends Component implements Link.Linkable { route: string, handler: string | FunctionArgs, args: ApiGatewayV2RouteArgs = {}, - ): ApiGatewayV2Route { - const self = this; - const selfName = this.constructorName; - const routeKey = parseRoute(); - - // Build route name - const id = sanitizeToPascalCase( - hashStringToPrettyString([this.api.id, routeKey].join(""), 4), + ) { + const routeNormalized = parseRoute(); + const prefix = this.constructorName; + const suffix = sanitizeToPascalCase( + hashStringToPrettyString([this.api.id, routeNormalized].join(""), 6), ); - args = transform(this.constructorArgs.transform?.route?.args, args); - - const fn = Function.fromDefinition( - `${selfName}Handler${id}`, - handler, - { - description: `${selfName} route ${routeKey}`, + return new ApiGatewayV2LambdaRoute(`${prefix}Route${suffix}`, { + api: { + name: prefix, + id: this.api.id, + executionArn: this.api.executionArn, }, - this.constructorArgs.transform?.route?.handler, - ); - const permission = new aws.lambda.Permission( - `${selfName}Handler${id}Permissions`, - { - action: "lambda:InvokeFunction", - function: fn.arn, - principal: "apigateway.amazonaws.com", - sourceArn: interpolate`${this.nodes.api.executionArn}/*`, - }, - ); - const integration = new aws.apigatewayv2.Integration( - `${selfName}Integration${id}`, - transform(args.transform?.integration, { - apiId: this.api.id, - integrationType: "AWS_PROXY", - integrationUri: fn.arn, - payloadFormatVersion: "2.0", - }), - { dependsOn: [permission] }, - ); - const authArgs = createAuthorizer(); - - const apiRoute = authArgs.apply( - (authArgs) => - new aws.apigatewayv2.Route( - `${selfName}Route${id}`, - transform(args.transform?.route, { - apiId: this.api.id, - routeKey, - target: interpolate`integrations/${integration.id}`, - ...authArgs, - }), - ), - ); - return { function: fn, permission, integration, route: apiRoute }; + route: routeNormalized, + handler, + handlerTransform: this.constructorArgs.transform?.route?.handler, + ...transform(this.constructorArgs.transform?.route?.args, args), + }); function parseRoute() { if (route.toLowerCase() === "$default") return "$default"; @@ -704,52 +643,6 @@ export class ApiGatewayV2 extends Component implements Link.Linkable { return `${method} ${path}`; } - - function createAuthorizer() { - return output(args.auth).apply((auth) => { - if (auth?.iam) return { authorizationType: "AWS_IAM" }; - if (auth?.jwt) { - // Build authorizer name - const id = sanitizeToPascalCase( - hashStringToPrettyString( - [ - auth.jwt.issuer, - ...auth.jwt.audiences.sort(), - auth.jwt.identitySource ?? "", - ].join(""), - 4, - ), - ); - - const authorizer = - self.authorizers[id] ?? - new aws.apigatewayv2.Authorizer( - `${selfName}Authorizer${id}`, - transform(args.transform?.authorizer, { - apiId: self.api.id, - authorizerType: "JWT", - identitySources: [ - auth.jwt.identitySource ?? "$request.header.Authorization", - ], - jwtConfiguration: { - audiences: auth.jwt.audiences, - issuer: auth.jwt.issuer, - }, - }), - ); - self.authorizers[id] = authorizer; - - return { - authorizationType: "JWT", - authorizationScopes: auth.jwt.scopes, - authorizerId: authorizer.id, - }; - } - return { - authorizationType: "NONE", - }; - }); - } } /** @internal */ diff --git a/pkg/platform/src/components/aws/bucket-lambda-subscriber.ts b/pkg/platform/src/components/aws/bucket-lambda-subscriber.ts new file mode 100644 index 000000000..fd5444196 --- /dev/null +++ b/pkg/platform/src/components/aws/bucket-lambda-subscriber.ts @@ -0,0 +1,155 @@ +import { + ComponentResourceOptions, + Input, + Output, + interpolate, + output, +} from "@pulumi/pulumi"; +import * as aws from "@pulumi/aws"; +import { Component, transform } from "../component"; +import { Function, FunctionArgs } from "./function"; +import { BucketSubscriberArgs } from "./bucket"; + +export interface Args extends BucketSubscriberArgs { + /** + * The bucket to use. + */ + bucket: Input<{ + /** + * The name of the bucket. + */ + name: Input; + /** + * The ARN of the bucket. + */ + arn: Input; + }>; + /** + * The subscriber id. + */ + subscriberId: Input; + /** + * The subscriber function. + */ + subscriber: Input; +} + +/** + * The `BucketLambdaSubscriber` component is internally used by the `Bucket` component to + * add bucket notifications to [AWS S3 Bucket](https://aws.amazon.com/s3/). + * + * :::caution + * This component is not intended for public use. + * ::: + * + * You'll find this component returned by the `subscribe` method of the `Bucket` component. + */ +export class BucketLambdaSubscriber extends Component { + private readonly fn: Output; + private readonly permission: aws.lambda.Permission; + private readonly notification: aws.s3.BucketNotification; + + constructor(name: string, args: Args, opts?: ComponentResourceOptions) { + super(__pulumiType, name, args, opts); + + const self = this; + const bucket = output(args.bucket); + const events = args.events + ? output(args.events) + : output([ + "s3:ObjectCreated:*", + "s3:ObjectRemoved:*", + "s3:ObjectRestore:*", + "s3:ReducedRedundancyLostObject", + "s3:Replication:*", + "s3:LifecycleExpiration:*", + "s3:LifecycleTransition", + "s3:IntelligentTiering", + "s3:ObjectTagging:*", + "s3:ObjectAcl:Put", + ]); + + const fn = createFunction(); + const permission = createPermission(); + const notification = createNotification(); + + this.fn = fn; + this.permission = permission; + this.notification = notification; + + function createFunction() { + return Function.fromDefinition( + `${name}Function`, + args.subscriber, + { + description: events.apply((events) => + events.length < 5 + ? `Subscribed to ${name} on ${events.join(", ")}` + : `Subscribed to ${name} on ${events + .slice(0, 3) + .join(", ")}, and ${events.length - 3} more events`, + ), + }, + undefined, + { parent: self }, + ); + } + + function createPermission() { + return new aws.lambda.Permission( + `${name}Permission`, + { + action: "lambda:InvokeFunction", + function: fn.arn, + principal: "s3.amazonaws.com", + sourceArn: bucket.arn, + }, + { parent: self }, + ); + } + + function createNotification() { + return new aws.s3.BucketNotification( + `${name}Notification`, + transform(args.transform?.notification, { + bucket: bucket.name, + lambdaFunctions: [ + { + id: interpolate`Notification${args.subscriberId}`, + lambdaFunctionArn: fn.arn, + events, + filterPrefix: args.filterPrefix, + filterSuffix: args.filterSuffix, + }, + ], + }), + { parent: self, dependsOn: [permission] }, + ); + } + } + + /** + * The underlying [resources](/docs/components/#nodes) this component creates. + */ + public get nodes() { + const self = this; + return { + /** + * The Lambda function that'll be notified. + */ + function: this.fn, + /** + * The Lambda permission. + */ + permission: this.permission, + /** + * The S3 bucket notification. + */ + notification: this.notification, + }; + } +} + +const __pulumiType = "sst:aws:BucketLambdaSubscriber"; +// @ts-expect-error +BucketLambdaSubscriber.__pulumiType = __pulumiType; diff --git a/pkg/platform/src/components/aws/bucket.ts b/pkg/platform/src/components/aws/bucket.ts index edfa561b4..2a5b8c815 100644 --- a/pkg/platform/src/components/aws/bucket.ts +++ b/pkg/platform/src/components/aws/bucket.ts @@ -16,9 +16,11 @@ import { import { Component, Prettify, Transform, transform } from "../component"; import { Link } from "../link"; import type { Input } from "../input"; -import { Function, FunctionArgs } from "./function"; +import { FunctionArgs } from "./function"; import { Duration, toSeconds } from "../duration"; import { VisibleError } from "../error"; +import { parseBucketArn } from "./helpers/arn"; +import { BucketLambdaSubscriber } from "./bucket-lambda-subscriber"; interface BucketCorsArgs { /** @@ -157,7 +159,7 @@ export interface BucketArgs { }; } -export interface BucketSubscribeArgs { +export interface BucketSubscriberArgs { /** * The S3 event types that will trigger the notification. * @default All S3 events @@ -233,21 +235,6 @@ export interface BucketSubscribeArgs { }; } -export interface BucketSubscriber { - /** - * The Lambda function that'll be notified. - */ - function: Output; - /** - * The Lambda permission. - */ - permission: Output; - /** - * The S3 bucket notification. - */ - notification: Output; -} - /** * The `Bucket` component lets you add an [AWS S3 Bucket](https://aws.amazon.com/s3/) to * your app. @@ -517,7 +504,7 @@ export class Bucket */ public subscribe( subscriber: string | FunctionArgs, - args?: BucketSubscribeArgs, + args?: BucketSubscriberArgs, ) { if (this.isSubscribed) throw new VisibleError( @@ -584,17 +571,11 @@ export class Bucket public static subscribe( bucketArn: Input, subscriber: string | FunctionArgs, - args?: BucketSubscribeArgs, + args?: BucketSubscriberArgs, ) { - const bucketName = output(bucketArn).apply((bucketArn) => { - const bucketName = bucketArn.split(":").pop(); - if (!bucketArn.startsWith("arn:aws:s3:") || !bucketName) - throw new VisibleError( - `The provided ARN "${bucketArn}" is not an S3 bucket ARN.`, - ); - return bucketName; - }); - + const bucketName = output(bucketArn).apply( + (bucketArn) => parseBucketArn(bucketArn).bucketName, + ); return this._subscribe(bucketName, bucketName, bucketArn, subscriber, args); } @@ -603,99 +584,46 @@ export class Bucket bucketName: Input, bucketArn: Input, subscriber: string | FunctionArgs, - args: BucketSubscribeArgs = {}, - ): BucketSubscriber { - const ret = all([name, subscriber, args]).apply( - ([name, subscriber, args]) => { - const events = args.events ?? [ - "s3:ObjectCreated:*", - "s3:ObjectRemoved:*", - "s3:ObjectRestore:*", - "s3:ReducedRedundancyLostObject", - "s3:Replication:*", - "s3:LifecycleExpiration:*", - "s3:LifecycleTransition", - "s3:IntelligentTiering", - "s3:ObjectTagging:*", - "s3:ObjectAcl:Put", - ]; - - // Build subscriber name - const namePrefix = sanitizeToPascalCase(name); - const id = sanitizeToPascalCase( - hashStringToPrettyString( - [ - bucketArn, - // Temporarily only allowing one subscriber per bucket because of the - // AWS/Terraform issue that appending/removing a notification deletes - // all existing notifications. - // - // A solution would be to implement a dynamic provider. On create, - // get existing notifications then append. And on delete, get existing - // notifications then remove from the list. - // - // https://github.com/hashicorp/terraform-provider-aws/issues/501 - // - // Commenting out the lines below to ensure the id never changes. - // Because on id change, the removal of notification happens after - // the creation of notification. And the newly created notification - // gets removed. - - //...events, - //args.filterPrefix ?? "", - //args.filterSuffix ?? "", - //typeof subscriber === "string" ? subscriber : subscriber.handler, - ].join(""), - 4, - ), - ); - - const fn = Function.fromDefinition( - `${namePrefix}Subscriber${id}`, - subscriber, - { - description: - events.length < 5 - ? `Subscribed to ${name} on ${events.join(", ")}` - : `Subscribed to ${name} on ${events - .slice(0, 3) - .join(", ")}, and ${events.length - 3} more events`, - }, - ); - const permission = new aws.lambda.Permission( - `${namePrefix}Subscriber${id}Permissions`, - { - action: "lambda:InvokeFunction", - function: fn.arn, - principal: "s3.amazonaws.com", - sourceArn: bucketArn, - }, - ); - const notification = new aws.s3.BucketNotification( - `${namePrefix}Notification${id}`, - transform(args.transform?.notification, { - bucket: bucketName, - lambdaFunctions: [ - { - id: `Notification${id}`, - lambdaFunctionArn: fn.arn, - events, - filterPrefix: args.filterPrefix, - filterSuffix: args.filterSuffix, - }, - ], - }), - { dependsOn: [permission] }, - ); + args: BucketSubscriberArgs = {}, + ) { + return all([name, subscriber, args]).apply(([name, subscriber, args]) => { + // Build subscriber name + const prefix = sanitizeToPascalCase(name); + const suffix = sanitizeToPascalCase( + hashStringToPrettyString( + [ + bucketArn, + // Temporarily only allowing one subscriber per bucket because of the + // AWS/Terraform issue that appending/removing a notification deletes + // all existing notifications. + // + // A solution would be to implement a dynamic provider. On create, + // get existing notifications then append. And on delete, get existing + // notifications then remove from the list. + // + // https://github.com/hashicorp/terraform-provider-aws/issues/501 + // + // Commenting out the lines below to ensure the id never changes. + // Because on id change, the removal of notification happens after + // the creation of notification. And the newly created notification + // gets removed. + + //...events, + //args.filterPrefix ?? "", + //args.filterSuffix ?? "", + //typeof subscriber === "string" ? subscriber : subscriber.handler, + ].join(""), + 6, + ), + ); - return { fn, permission, notification }; - }, - ); - return { - function: ret.fn, - permission: ret.permission, - notification: ret.notification, - }; + return new BucketLambdaSubscriber(`${prefix}Subscriber${suffix}`, { + bucket: { name: bucketName, arn: bucketArn }, + subscriber, + subscriberId: suffix, + ...args, + }); + }); } /** @internal */ diff --git a/pkg/platform/src/components/aws/cluster.ts b/pkg/platform/src/components/aws/cluster.ts index e4c0b394e..ca37c65ee 100644 --- a/pkg/platform/src/components/aws/cluster.ts +++ b/pkg/platform/src/components/aws/cluster.ts @@ -278,105 +278,105 @@ export interface ClusterServiceArgs { domain?: Input< | string | { - /** - * The custom domain you want to use. - * - * @example - * ```js - * { - * domain: { - * name: "example.com" - * } - * } - * ``` - * - * Can also include subdomains based on the current stage. - * - * ```js - * { - * domain: { - * name: `${$app.stage}.example.com` - * } - * } - * ``` - */ - name: Input; - /** - * The ARN of an ACM (AWS Certificate Manager) certificate that proves ownership of the - * domain. By default, a certificate is created and validated automatically. - * - * :::tip - * You need to pass in a `cert` for domains that are not hosted on supported `dns` providers. - * ::: - * - * To manually set up a domain on an unsupported provider, you'll need to: - * - * 1. [Validate that you own the domain](https://docs.aws.amazon.com/acm/latest/userguide/domain-ownership-validation.html) by creating an ACM certificate. You can either validate it by setting a DNS record or by verifying an email sent to the domain owner. - * 2. Once validated, set the certificate ARN as the `cert` and set `dns` to `false`. - * 3. Add the DNS records in your provider to point to the load balancer endpoint. - * - * @example - * ```js - * { - * domain: { - * name: "example.com", - * dns: false, - * cert: "arn:aws:acm:us-east-1:112233445566:certificate/3a958790-8878-4cdc-a396-06d95064cf63" - * } - * } - * ``` - */ - cert?: Input; - /** - * The DNS provider to use for the domain. Defaults to the AWS. - * - * Takes an adapter that can create the DNS records on the provider. This can automate - * validating the domain and setting up the DNS routing. - * - * Supports Route 53, Cloudflare, and Vercel adapters. For other providers, you'll need - * to set `dns` to `false` and pass in a certificate validating ownership via `cert`. - * - * @default `sst.aws.dns` - * - * @example - * - * Specify the hosted zone ID for the Route 53 domain. - * - * ```js - * { - * domain: { - * name: "example.com", - * dns: sst.aws.dns({ - * zone: "Z2FDTNDATAQYW2" - * }) - * } - * } - * ``` - * - * Use a domain hosted on Cloudflare, needs the Cloudflare provider. - * - * ```js - * { - * domain: { - * name: "example.com", - * dns: sst.cloudflare.dns() - * } - * } - * ``` - * - * Use a domain hosted on Vercel, needs the Vercel provider. - * - * ```js - * { - * domain: { - * name: "example.com", - * dns: sst.vercel.dns() - * } - * } - * ``` - */ - dns?: Input; - } + /** + * The custom domain you want to use. + * + * @example + * ```js + * { + * domain: { + * name: "example.com" + * } + * } + * ``` + * + * Can also include subdomains based on the current stage. + * + * ```js + * { + * domain: { + * name: `${$app.stage}.example.com` + * } + * } + * ``` + */ + name: Input; + /** + * The ARN of an ACM (AWS Certificate Manager) certificate that proves ownership of the + * domain. By default, a certificate is created and validated automatically. + * + * :::tip + * You need to pass in a `cert` for domains that are not hosted on supported `dns` providers. + * ::: + * + * To manually set up a domain on an unsupported provider, you'll need to: + * + * 1. [Validate that you own the domain](https://docs.aws.amazon.com/acm/latest/userguide/domain-ownership-validation.html) by creating an ACM certificate. You can either validate it by setting a DNS record or by verifying an email sent to the domain owner. + * 2. Once validated, set the certificate ARN as the `cert` and set `dns` to `false`. + * 3. Add the DNS records in your provider to point to the load balancer endpoint. + * + * @example + * ```js + * { + * domain: { + * name: "example.com", + * dns: false, + * cert: "arn:aws:acm:us-east-1:112233445566:certificate/3a958790-8878-4cdc-a396-06d95064cf63" + * } + * } + * ``` + */ + cert?: Input; + /** + * The DNS provider to use for the domain. Defaults to the AWS. + * + * Takes an adapter that can create the DNS records on the provider. This can automate + * validating the domain and setting up the DNS routing. + * + * Supports Route 53, Cloudflare, and Vercel adapters. For other providers, you'll need + * to set `dns` to `false` and pass in a certificate validating ownership via `cert`. + * + * @default `sst.aws.dns` + * + * @example + * + * Specify the hosted zone ID for the Route 53 domain. + * + * ```js + * { + * domain: { + * name: "example.com", + * dns: sst.aws.dns({ + * zone: "Z2FDTNDATAQYW2" + * }) + * } + * } + * ``` + * + * Use a domain hosted on Cloudflare, needs the Cloudflare provider. + * + * ```js + * { + * domain: { + * name: "example.com", + * dns: sst.cloudflare.dns() + * } + * } + * ``` + * + * Use a domain hosted on Vercel, needs the Vercel provider. + * + * ```js + * { + * domain: { + * name: "example.com", + * dns: sst.vercel.dns() + * } + * } + * ``` + */ + dns?: Input; + } >; /** * Configure the port mappings the public endpoint listens to and forwards to the service. @@ -738,7 +738,8 @@ export interface ClusterServiceArgs { * ``` */ export class Cluster extends Component { - private args: ClusterArgs; + private constructorName: string; + private constructorArgs: ClusterArgs; private cluster: aws.ecs.Cluster; constructor( @@ -752,7 +753,8 @@ export class Cluster extends Component { const cluster = createCluster(); - this.args = args; + this.constructorName = name; + this.constructorArgs = args; this.cluster = cluster; function createCluster() { @@ -817,12 +819,14 @@ export class Cluster extends Component { * ``` */ public addService(name: string, args?: ClusterServiceArgs) { - return new Service(name, { + const prefix = this.constructorName; + return new Service(`${prefix}Service${name}`, { + name, cluster: { name: this.cluster.name, arn: this.cluster.arn, }, - vpc: this.args.vpc, + vpc: this.constructorArgs.vpc, ...args, }); } diff --git a/pkg/platform/src/components/aws/dynamo-lambda-subscriber.ts b/pkg/platform/src/components/aws/dynamo-lambda-subscriber.ts new file mode 100644 index 000000000..2115bc378 --- /dev/null +++ b/pkg/platform/src/components/aws/dynamo-lambda-subscriber.ts @@ -0,0 +1,115 @@ +import { + ComponentResourceOptions, + Input, + Output, + output, +} from "@pulumi/pulumi"; +import * as aws from "@pulumi/aws"; +import { Component, transform } from "../component"; +import { Function, FunctionArgs } from "./function"; +import { DynamoSubscriberArgs } from "./dynamo"; + +export interface Args extends DynamoSubscriberArgs { + /** + * The DynamoDB table to use. + */ + dynamo: Input<{ + /** + * The ARN of the stream. + */ + streamArn: Input; + }>; + /** + * The subscriber function. + */ + subscriber: Input; +} + +/** + * The `DynamoLambdaSubscriber` component is internally used by the `Dynamo` component to + * add stream subscriptions to [Amazon DynamoDB](https://aws.amazon.com/dynamodb/). + * + * :::caution + * This component is not intended for public use. + * ::: + * + * You'll find this component returned by the `subscribe` method of the `Dynamo` component. + */ +export class DynamoLambdaSubscriber extends Component { + private readonly fn: Output; + private readonly eventSourceMapping: aws.lambda.EventSourceMapping; + + constructor(name: string, args: Args, opts?: ComponentResourceOptions) { + super(__pulumiType, name, args, opts); + + const self = this; + const dynamo = output(args.dynamo); + const fn = createFunction(); + const eventSourceMapping = createEventSourceMapping(); + + this.fn = fn; + this.eventSourceMapping = eventSourceMapping; + + function createFunction() { + return Function.fromDefinition( + `${name}Function`, + args.subscriber, + { + description: `Subscribed to ${name}`, + permissions: [ + { + actions: [ + "dynamodb:DescribeStream", + "dynamodb:GetRecords", + "dynamodb:GetShardIterator", + "dynamodb:ListStreams", + ], + resources: [dynamo.streamArn], + }, + ], + }, + undefined, + { parent: self }, + ); + } + + function createEventSourceMapping() { + return new aws.lambda.EventSourceMapping( + `${name}EventSourceMapping`, + transform(args.transform?.eventSourceMapping, { + eventSourceArn: dynamo.streamArn, + functionName: fn.name, + filterCriteria: args.filters + ? output(args.filters).apply((filters) => ({ + filters: filters.map((filter) => ({ + pattern: JSON.stringify(filter), + })), + })) + : undefined, + startingPosition: "LATEST", + }), + ); + } + } + + /** + * The underlying [resources](/docs/components/#nodes) this component creates. + */ + public get nodes() { + const self = this; + return { + /** + * The Lambda function that'll be notified. + */ + function: this.fn, + /** + * The Lambda event source mapping. + */ + eventSourceMapping: this.eventSourceMapping, + }; + } +} + +const __pulumiType = "sst:aws:DynamoLambdaSubscriber"; +// @ts-expect-error +DynamoLambdaSubscriber.__pulumiType = __pulumiType; diff --git a/pkg/platform/src/components/aws/dynamo.ts b/pkg/platform/src/components/aws/dynamo.ts index f603860fe..e85c1bb3e 100644 --- a/pkg/platform/src/components/aws/dynamo.ts +++ b/pkg/platform/src/components/aws/dynamo.ts @@ -9,9 +9,10 @@ import * as aws from "@pulumi/aws"; import { Component, Transform, transform } from "../component"; import { Link } from "../link"; import type { Input } from "../input"; -import { Function, FunctionArgs } from "./function"; +import { FunctionArgs } from "./function"; import { hashStringToPrettyString, sanitizeToPascalCase } from "../naming"; -import { VisibleError } from "../error"; +import { parseDynamoStreamArn } from "./helpers/arn"; +import { DynamoLambdaSubscriber } from "./dynamo-lambda-subscriber"; export interface DynamoArgs { /** @@ -167,7 +168,7 @@ export interface DynamoArgs { }; } -export interface DynamoSubscribeArgs { +export interface DynamoSubscriberArgs { /** * Filter the records processed by the `subscriber` function. * @@ -243,17 +244,6 @@ export interface DynamoSubscribeArgs { }; } -export interface DynamoSubscriber { - /** - * The Lambda function that'll be notified. - */ - function: Output; - /** - * The Lambda event source mapping. - */ - eventSourceMapping: Output; -} - /** * The `Dynamo` component lets you add an [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) table to your app. * @@ -505,7 +495,7 @@ export class Dynamo */ public subscribe( subscriber: string | FunctionArgs, - args?: DynamoSubscribeArgs, + args?: DynamoSubscriberArgs, ) { const sourceName = this.constructorName; @@ -574,18 +564,11 @@ export class Dynamo public static subscribe( streamArn: Input, subscriber: string | FunctionArgs, - args?: DynamoSubscribeArgs, + args?: DynamoSubscriberArgs, ) { - // ie. "arn:aws:dynamodb:us-east-1:112233445566:table/MyTable/stream/2024-02-25T23:17:55.264" - const tableName = output(streamArn).apply((streamArn) => { - const tableName = streamArn.split(":")[5]?.split("/")[1]; - if (!streamArn.startsWith("arn:aws:dynamodb:") || !tableName) - throw new VisibleError( - `The provided ARN "${streamArn}" is not a DynamoDB stream ARN.`, - ); - return tableName; - }); - + const tableName = output(streamArn).apply( + (streamArn) => parseDynamoStreamArn(streamArn).tableName, + ); return this._subscribe(tableName, streamArn, subscriber, args); } @@ -593,62 +576,27 @@ export class Dynamo name: Input, streamArn: Input, subscriber: string | FunctionArgs, - args: DynamoSubscribeArgs = {}, - ): DynamoSubscriber { - const ret = all([name, subscriber, args]).apply( - ([name, subscriber, args]) => { - // Build subscriber name - const namePrefix = sanitizeToPascalCase(name); - const id = sanitizeToPascalCase( - hashStringToPrettyString( - [ - streamArn, - JSON.stringify(args.filters ?? {}), - typeof subscriber === "string" ? subscriber : subscriber.handler, - ].join(""), - 4, - ), - ); - - const fn = Function.fromDefinition( - `${namePrefix}Subscriber${id}`, - subscriber, - { - description: `Subscribed to ${name}`, - permissions: [ - { - actions: [ - "dynamodb:DescribeStream", - "dynamodb:GetRecords", - "dynamodb:GetShardIterator", - "dynamodb:ListStreams", - ], - resources: [streamArn], - }, - ], - }, - ); - const eventSourceMapping = new aws.lambda.EventSourceMapping( - `${namePrefix}EventSourceMapping${id}`, - transform(args.transform?.eventSourceMapping, { - eventSourceArn: streamArn, - functionName: fn.name, - filterCriteria: args.filters && { - filters: args.filters.map((filter) => ({ - pattern: JSON.stringify(filter), - })), - }, - startingPosition: "LATEST", - }), - ); - return { fn, eventSourceMapping }; - }, - ); + args: DynamoSubscriberArgs = {}, + ) { + return all([name, subscriber, args]).apply(([name, subscriber, args]) => { + const prefix = sanitizeToPascalCase(name); + const suffix = sanitizeToPascalCase( + hashStringToPrettyString( + [ + streamArn, + JSON.stringify(args.filters ?? {}), + typeof subscriber === "string" ? subscriber : subscriber.handler, + ].join(""), + 6, + ), + ); - return { - function: ret.fn, - eventSourceMapping: ret.eventSourceMapping, - }; + return new DynamoLambdaSubscriber(`${prefix}Subscriber${suffix}`, { + dynamo: { streamArn }, + subscriber, + ...args, + }); + }); } /** @internal */ diff --git a/pkg/platform/src/components/aws/helpers/arn.ts b/pkg/platform/src/components/aws/helpers/arn.ts index 53b1b3f62..ffa20c29a 100644 --- a/pkg/platform/src/components/aws/helpers/arn.ts +++ b/pkg/platform/src/components/aws/helpers/arn.ts @@ -1,6 +1,16 @@ import { aws } from "../.."; import { VisibleError } from "../../error"; +export function parseBucketArn(arn: string) { + // arn:aws:s3:::bucket-name + const bucketName = arn.split(":")[5]; + if (!arn.startsWith("arn:") || !bucketName) + throw new VisibleError( + `The provided ARN "${arn}" is not an S3 bucket ARN.`, + ); + return { bucketName }; +} + export function parseTopicArn(arn: string) { // arn:aws:sns:region:account-id:topic-name const topicName = arn.split(":")[5]; @@ -34,6 +44,16 @@ export function parseDynamoArn(arn: string) { return { tableName }; } +export function parseDynamoStreamArn(streamArn: string) { + // ie. "arn:aws:dynamodb:us-east-1:112233445566:table/MyTable/stream/2024-02-25T23:17:55.264" + const tableName = streamArn.split(":")[5]?.split("/")[1]; + if (!streamArn.startsWith("arn:aws:dynamodb:") || !tableName) + throw new VisibleError( + `The provided ARN "${streamArn}" is not a DynamoDB stream ARN.`, + ); + return { tableName }; +} + export function parseEventBus(arn: string) { // arn:aws:events:region:account-id:event-bus/bus-name const tableName = arn.split("/")[1]; diff --git a/pkg/platform/src/components/aws/queue-lambda-subscriber.ts b/pkg/platform/src/components/aws/queue-lambda-subscriber.ts new file mode 100644 index 000000000..3f967ea0f --- /dev/null +++ b/pkg/platform/src/components/aws/queue-lambda-subscriber.ts @@ -0,0 +1,116 @@ +import { + ComponentResourceOptions, + Input, + Output, + output, +} from "@pulumi/pulumi"; +import * as aws from "@pulumi/aws"; +import { Component, transform } from "../component"; +import { Function, FunctionArgs } from "./function"; +import { QueueSubscriberArgs } from "./queue"; + +export interface Args extends QueueSubscriberArgs { + /** + * The queue to use. + */ + queue: Input<{ + /** + * The ARN of the queue. + */ + arn: Input; + }>; + /** + * The subscriber function. + */ + subscriber: Input; +} + +/** + * The `QueueLambdaSubscriber` component is internally used by the `Queue` component to + * add consumer to [Amazon SQS](https://aws.amazon.com/sqs/). + * + * :::caution + * This component is not intended for public use. + * ::: + * + * You'll find this component returned by the `subscribe` method of the `Queue` component. + */ +export class QueueLambdaSubscriber extends Component { + private readonly fn: Output; + private readonly eventSourceMapping: aws.lambda.EventSourceMapping; + + constructor(name: string, args: Args, opts?: ComponentResourceOptions) { + super(__pulumiType, name, args, opts); + + const self = this; + const queue = output(args.queue); + const fn = createFunction(); + const eventSourceMapping = createEventSourceMapping(); + + this.fn = fn; + this.eventSourceMapping = eventSourceMapping; + + function createFunction() { + return Function.fromDefinition( + `${name}Function`, + args.subscriber, + { + description: `Subscribed to ${name}`, + permissions: [ + { + actions: [ + "sqs:ChangeMessageVisibility", + "sqs:DeleteMessage", + "sqs:GetQueueAttributes", + "sqs:GetQueueUrl", + "sqs:ReceiveMessage", + ], + resources: [queue.arn], + }, + ], + }, + undefined, + { parent: self }, + ); + } + + function createEventSourceMapping() { + return new aws.lambda.EventSourceMapping( + `${name}EventSourceMapping`, + transform(args.transform?.eventSourceMapping, { + eventSourceArn: queue.arn, + functionName: fn.name, + filterCriteria: args.filters && { + filters: output(args.filters).apply((filters) => + filters.map((filter) => ({ + pattern: JSON.stringify(filter), + })), + ), + }, + }), + { parent: self }, + ); + } + } + + /** + * The underlying [resources](/docs/components/#nodes) this component creates. + */ + public get nodes() { + const self = this; + return { + /** + * The Lambda function that'll be notified. + */ + function: this.fn, + /** + * The Lambda event source mapping. + */ + eventSourceMapping: this.eventSourceMapping, + }; + } +} + +const __pulumiType = "sst:aws:QueueLambdaSubscriber"; +// @ts-expect-error +QueueLambdaSubscriber.__pulumiType = __pulumiType; diff --git a/pkg/platform/src/components/aws/queue.ts b/pkg/platform/src/components/aws/queue.ts index 25fa7c182..2a88e7847 100644 --- a/pkg/platform/src/components/aws/queue.ts +++ b/pkg/platform/src/components/aws/queue.ts @@ -3,10 +3,11 @@ import * as aws from "@pulumi/aws"; import { Component, Transform, transform } from "../component"; import { Link } from "../link"; import type { Input } from "../input"; -import { Function, FunctionArgs } from "./function"; +import { FunctionArgs } from "./function"; import { VisibleError } from "../error"; import { hashStringToPrettyString, sanitizeToPascalCase } from "../naming"; import { parseQueueArn } from "./helpers/arn"; +import { QueueLambdaSubscriber } from "./queue-lambda-subscriber"; export interface QueueArgs { /** @@ -37,7 +38,7 @@ export interface QueueArgs { }; } -export interface QueueSubscribeArgs { +export interface QueueSubscriberArgs { /** * Filter the records that'll be processed by the `subscriber` function. * @@ -98,17 +99,6 @@ export interface QueueSubscribeArgs { }; } -export interface QueueSubscriber { - /** - * The Lambda function that'll be notified. - */ - function: Output; - /** - * The Lambda event source mapping. - */ - eventSourceMapping: Output; -} - /** * The `Queue` component lets you add a serverless queue to your app. It uses [Amazon SQS](https://aws.amazon.com/sqs/). * @@ -256,7 +246,7 @@ export class Queue */ public subscribe( subscriber: string | FunctionArgs, - args?: QueueSubscribeArgs, + args?: QueueSubscriberArgs, ) { if (this.isSubscribed) throw new VisibleError( @@ -319,7 +309,7 @@ export class Queue public static subscribe( queueArn: Input, subscriber: string | FunctionArgs, - args?: QueueSubscribeArgs, + args?: QueueSubscriberArgs, ) { const queueName = output(queueArn).apply( (queueArn) => parseQueueArn(queueArn).queueName, @@ -331,53 +321,20 @@ export class Queue name: Input, queueArn: Input, subscriber: string | FunctionArgs, - args: QueueSubscribeArgs = {}, - ): QueueSubscriber { - const ret = all([name, queueArn]).apply(([name, queueArn]) => { - // Build subscriber name - const namePrefix = sanitizeToPascalCase(name); - const id = sanitizeToPascalCase(hashStringToPrettyString(queueArn, 4)); + args: QueueSubscriberArgs = {}, + ) { + return all([name, queueArn]).apply(([name, queueArn]) => { + const prefix = sanitizeToPascalCase(name); + const suffix = sanitizeToPascalCase( + hashStringToPrettyString(queueArn, 6), + ); - const fn = Function.fromDefinition( - `${namePrefix}Subscriber${id}`, + return new QueueLambdaSubscriber(`${prefix}Subscriber${suffix}`, { + queue: { arn: queueArn }, subscriber, - { - description: `Subscribed to ${name}`, - permissions: [ - { - actions: [ - "sqs:ChangeMessageVisibility", - "sqs:DeleteMessage", - "sqs:GetQueueAttributes", - "sqs:GetQueueUrl", - "sqs:ReceiveMessage", - ], - resources: [queueArn], - }, - ], - }, - ); - const mapping = new aws.lambda.EventSourceMapping( - `${namePrefix}EventSourceMapping${id}`, - transform(args.transform?.eventSourceMapping, { - eventSourceArn: queueArn, - functionName: fn.name, - filterCriteria: args.filters && { - filters: output(args.filters).apply((filters) => - filters.map((filter) => ({ - pattern: JSON.stringify(filter), - })), - ), - }, - }), - ); - return { fn, mapping }; + ...args, + }); }); - - return { - function: ret.fn, - eventSourceMapping: ret.mapping, - }; } /** @internal */ diff --git a/pkg/platform/src/components/aws/service.ts b/pkg/platform/src/components/aws/service.ts index 5e30d93c6..5da52469b 100644 --- a/pkg/platform/src/components/aws/service.ts +++ b/pkg/platform/src/components/aws/service.ts @@ -42,6 +42,10 @@ export interface ServiceArgs extends ClusterServiceArgs { */ arn: Input; }>; + /** + * The name of the service. + */ + name: Input; /** * The VPC to use for the cluster. */ @@ -75,6 +79,7 @@ export class Service extends Component implements Link.Linkable { const self = this; + const serviceName = output(args.name); const cluster = output(args.cluster); const vpc = output(args.vpc); const region = normalizeRegion(); @@ -315,7 +320,7 @@ export class Service extends Component implements Link.Linkable { args: imageArgs.args, platform: imageArgs.platform, })), - imageName: $interpolate`${repo.url}:${name}`, + imageName: interpolate`${repo.url}:${serviceName}`, registry: authToken.apply((authToken) => ({ password: secret(authToken.password), username: authToken.userName, @@ -429,7 +434,7 @@ export class Service extends Component implements Link.Linkable { return new aws.cloudwatch.LogGroup( `${name}LogGroup`, transform(args.transform?.logGroup, { - name: `/sst/cluster/${prefixName(64, name)}`, + name: interpolate`/sst/cluster/${cluster.name}/${serviceName}`, retentionInDays: logging.apply( (logging) => RETENTION[logging.retention], ), @@ -482,11 +487,10 @@ export class Service extends Component implements Link.Linkable { } function createTaskDefinition() { - const taskName = prefixName(255, name); return new aws.ecs.TaskDefinition( `${name}Task`, transform(args.transform?.taskDefinition, { - family: taskName, + family: interpolate`${cluster.name}-${serviceName}`, trackLatest: true, cpu: cpu.apply((v) => toNumber(v).toString()), memory: memory.apply((v) => toMBs(v).toString()), @@ -503,7 +507,7 @@ export class Service extends Component implements Link.Linkable { taskRoleArn: taskRole.arn, containerDefinitions: $jsonStringify([ { - name: taskName, + name: serviceName, image: image.repoDigest, pseudoTerminal: true, portMappings: pub?.ports.apply((ports) => @@ -544,10 +548,10 @@ export class Service extends Component implements Link.Linkable { return new aws.ecs.Service( `${name}Service`, transform(args.transform?.service, { - name, + name: serviceName, cluster: cluster.arn, taskDefinition: taskDefinition.arn, - desiredCount: 1, + desiredCount: scaling.min, launchType: "FARGATE", networkConfiguration: { assignPublicIp: true, @@ -563,7 +567,7 @@ export class Service extends Component implements Link.Linkable { targets.apply((targets) => Object.values(targets).map((target) => ({ targetGroupArn: target.arn, - containerName: taskDefinition.family, + containerName: serviceName, containerPort: target.port.apply((port) => port!), })), ), diff --git a/pkg/platform/src/components/aws/sns-topic-lambda-subscriber.ts b/pkg/platform/src/components/aws/sns-topic-lambda-subscriber.ts new file mode 100644 index 000000000..2b8671de3 --- /dev/null +++ b/pkg/platform/src/components/aws/sns-topic-lambda-subscriber.ts @@ -0,0 +1,119 @@ +import { + ComponentResourceOptions, + Input, + Output, + output, +} from "@pulumi/pulumi"; +import * as aws from "@pulumi/aws"; +import { Component, transform } from "../component"; +import { Function, FunctionArgs } from "./function"; +import { SnsTopicSubscriberArgs } from "./sns-topic"; + +export interface Args extends SnsTopicSubscriberArgs { + /** + * The topic to use. + */ + topic: Input<{ + /** + * The ARN of the topic. + */ + arn: Input; + }>; + /** + * The subscriber function. + */ + subscriber: Input; +} + +/** + * The `SnsTopicLambdaSubscriber` component is internally used by the `SnsTopic` component + * to add subscriptions to [Amazon SNS topic](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html). + * + * :::caution + * This component is not intended for public use. + * ::: + * + * You'll find this component returned by the `subscribe` method of the `SnsTopic` component. + */ +export class SnsTopicLambdaSubscriber extends Component { + private readonly fn: Output; + private readonly permission: aws.lambda.Permission; + private readonly subscription: aws.sns.TopicSubscription; + + constructor(name: string, args: Args, opts?: ComponentResourceOptions) { + super(__pulumiType, name, args, opts); + + const self = this; + const topic = output(args.topic); + const fn = createFunction(); + const permission = createPermission(); + const subscription = createSubscription(); + + this.fn = fn; + this.permission = permission; + this.subscription = subscription; + + function createFunction() { + return Function.fromDefinition( + `${name}Function`, + args.subscriber, + { + description: `Subscribed to ${name}`, + }, + undefined, + { parent: self }, + ); + } + + function createPermission() { + return new aws.lambda.Permission( + `${name}Permission`, + { + action: "lambda:InvokeFunction", + function: fn.arn, + principal: "sns.amazonaws.com", + sourceArn: topic.arn, + }, + { parent: self }, + ); + } + + function createSubscription() { + return new aws.sns.TopicSubscription( + `${name}Subscription`, + transform(args?.transform?.subscription, { + topic: topic.arn, + protocol: "lambda", + endpoint: fn.arn, + filterPolicy: JSON.stringify(args.filter ?? {}), + }), + { parent: self, dependsOn: [permission] }, + ); + } + } + + /** + * The underlying [resources](/docs/components/#nodes) this component creates. + */ + public get nodes() { + const self = this; + return { + /** + * The Lambda function that'll be notified. + */ + function: this.fn, + /** + * The Lambda permission. + */ + permission: this.permission, + /** + * The SNS topic subscription. + */ + subscription: this.subscription, + }; + } +} + +const __pulumiType = "sst:aws:SnsTopicLambdaSubscriber"; +// @ts-expect-error +SnsTopicLambdaSubscriber.__pulumiType = __pulumiType; diff --git a/pkg/platform/src/components/aws/sns-topic-queue-subscriber.ts b/pkg/platform/src/components/aws/sns-topic-queue-subscriber.ts new file mode 100644 index 000000000..595c53d1f --- /dev/null +++ b/pkg/platform/src/components/aws/sns-topic-queue-subscriber.ts @@ -0,0 +1,109 @@ +import { ComponentResourceOptions, Input, output } from "@pulumi/pulumi"; +import * as aws from "@pulumi/aws"; +import { Component, transform } from "../component"; +import { SnsTopicSubscriberArgs } from "./sns-topic"; +import { parseQueueArn } from "./helpers/arn"; + +export interface Args extends SnsTopicSubscriberArgs { + /** + * The topic to use. + */ + topic: Input<{ + /** + * The ARN of the topic. + */ + arn: Input; + }>; + /** + * The ARN of the queue. + */ + queue: Input; +} + +/** + * The `SnsTopicQueueSubscriber` component is internally used by the `SnsTopic` component + * to add subscriptions to [Amazon SNS topic](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html). + * + * :::caution + * This component is not intended for public use. + * ::: + * + * You'll find this component returned by the `subscribe` method of the `SnsTopic` component. + */ +export class SnsTopicQueueSubscriber extends Component { + private readonly policy: aws.sqs.QueuePolicy; + private readonly subscription: aws.sns.TopicSubscription; + + constructor(name: string, args: Args, opts?: ComponentResourceOptions) { + super(__pulumiType, name, args, opts); + + const queueArn = output(args.queue); + const self = this; + const topic = output(args.topic); + const policy = createPolicy(); + const subscription = createSubscription(); + + this.policy = policy; + this.subscription = subscription; + + function createPolicy() { + return new aws.sqs.QueuePolicy(`${name}Policy`, { + queueUrl: queueArn.apply((arn) => parseQueueArn(arn).queueUrl), + policy: aws.iam.getPolicyDocumentOutput({ + statements: [ + { + actions: ["sqs:SendMessage"], + resources: [queueArn], + principals: [ + { + type: "Service", + identifiers: ["sns.amazonaws.com"], + }, + ], + conditions: [ + { + test: "ArnEquals", + variable: "aws:SourceArn", + values: [topic.arn], + }, + ], + }, + ], + }).json, + }); + } + + function createSubscription() { + return new aws.sns.TopicSubscription( + `${name}Subscription`, + transform(args?.transform?.subscription, { + topic: topic.arn, + protocol: "sqs", + endpoint: queueArn, + filterPolicy: JSON.stringify(args.filter ?? {}), + }), + ); + } + } + + /** + * The underlying [resources](/docs/components/#nodes) this component creates. + */ + public get nodes() { + const self = this; + return { + /** + * The SQS queue policy. + */ + policy: this.policy, + /** + * The SNS topic subscription. + */ + subscription: this.subscription, + }; + } +} + +const __pulumiType = "sst:aws:SnsTopicQueueSubscriber"; +// @ts-expect-error +SnsTopicQueueSubscriber.__pulumiType = __pulumiType; diff --git a/pkg/platform/src/components/aws/sns-topic.ts b/pkg/platform/src/components/aws/sns-topic.ts index 3610f0e2b..4f0c17e35 100644 --- a/pkg/platform/src/components/aws/sns-topic.ts +++ b/pkg/platform/src/components/aws/sns-topic.ts @@ -3,10 +3,11 @@ import * as aws from "@pulumi/aws"; import { Component, Transform, transform } from "../component"; import { Link } from "../link"; import type { Input } from "../input"; -import { Function, FunctionArgs } from "./function"; +import { FunctionArgs } from "./function"; import { hashStringToPrettyString, sanitizeToPascalCase } from "../naming"; -import { VisibleError } from "../error"; import { parseQueueArn, parseTopicArn } from "./helpers/arn"; +import { SnsTopicLambdaSubscriber } from "./sns-topic-lambda-subscriber"; +import { SnsTopicQueueSubscriber } from "./sns-topic-queue-subscriber"; export interface SnsTopicArgs { /** @@ -37,7 +38,7 @@ export interface SnsTopicArgs { }; } -export interface SnsTopicSubscribeArgs { +export interface SnsTopicSubscriberArgs { /** * Filter the messages that'll be processed by the subscriber. * @@ -93,32 +94,6 @@ export interface SnsTopicSubscribeArgs { }; } -export interface SnsTopicFunctionSubscriber { - /** - * The Lambda function that'll be notified. - */ - function: Output; - /** - * The Lambda permission. - */ - permission: Output; - /** - * The SNS topic subscription. - */ - subscription: Output; -} - -export interface SnsTopicQueueSubscriber { - /** - * The SNS topic policy. - */ - policy: Output; - /** - * The SNS topic subscription. - */ - subscription: Output; -} - /** * The `SnsTopic` component lets you add an [Amazon SNS topic](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) to your app. * @@ -176,7 +151,8 @@ export interface SnsTopicQueueSubscriber { */ export class SnsTopic extends Component - implements Link.Linkable, Link.AWS.Linkable { + implements Link.Linkable, Link.AWS.Linkable +{ private constructorName: string; private topic: aws.sns.Topic; @@ -269,7 +245,7 @@ export class SnsTopic */ public subscribe( subscriber: string | FunctionArgs, - args: SnsTopicSubscribeArgs = {}, + args: SnsTopicSubscriberArgs = {}, ) { return SnsTopic._subscribeFunction( this.constructorName, @@ -322,17 +298,11 @@ export class SnsTopic public static subscribe( topicArn: Input, subscriber: string | FunctionArgs, - args?: SnsTopicSubscribeArgs, + args?: SnsTopicSubscriberArgs, ) { - const topicName = output(topicArn).apply((topicArn) => { - const topicName = topicArn.split(":").pop(); - if (!topicArn.startsWith("arn:aws:sns:") || !topicName) - throw new VisibleError( - `The provided ARN "${topicArn}" is not an SNS topic ARN.`, - ); - return topicName; - }); - + const topicName = output(topicArn).apply( + (topicArn) => parseTopicArn(topicArn).topicName, + ); return this._subscribeFunction(topicName, topicArn, subscriber, args); } @@ -340,58 +310,27 @@ export class SnsTopic name: Input, topicArn: Input, subscriber: string | FunctionArgs, - args: SnsTopicSubscribeArgs = {}, - ): SnsTopicFunctionSubscriber { - const ret = all([name, subscriber, args]).apply( - ([name, subscriber, args]) => { - // Build subscriber name - const namePrefix = sanitizeToPascalCase(name); - const id = sanitizeToPascalCase( - hashStringToPrettyString( - [ - topicArn, - JSON.stringify(args.filter ?? {}), - typeof subscriber === "string" ? subscriber : subscriber.handler, - ].join(""), - 4, - ), - ); - - const fn = Function.fromDefinition( - `${namePrefix}Sub${id}`, - subscriber, - { - description: `Subscribed to ${name}`, - }, - ); - const permission = new aws.lambda.Permission( - `${namePrefix}Sub${id}Permissions`, - { - action: "lambda:InvokeFunction", - function: fn.arn, - principal: "sns.amazonaws.com", - sourceArn: topicArn, - }, - ); - const subscription = new aws.sns.TopicSubscription( - `${namePrefix}Subscription${id}`, - transform(args?.transform?.subscription, { - topic: topicArn, - protocol: "lambda", - endpoint: fn.arn, - filterPolicy: JSON.stringify(args.filter ?? {}), - }), - { dependsOn: [permission] }, - ); + args: SnsTopicSubscriberArgs = {}, + ) { + return all([name, subscriber, args]).apply(([name, subscriber, args]) => { + const prefix = sanitizeToPascalCase(name); + const suffix = sanitizeToPascalCase( + hashStringToPrettyString( + [ + topicArn, + JSON.stringify(args.filter ?? {}), + typeof subscriber === "string" ? subscriber : subscriber.handler, + ].join(""), + 6, + ), + ); - return { fn, permission, subscription }; - }, - ); - return { - function: ret.fn, - permission: ret.permission, - subscription: ret.subscription, - }; + return new SnsTopicLambdaSubscriber(`${prefix}Subscriber${suffix}`, { + topic: { arn: topicArn }, + subscriber, + ...args, + }); + }); } /** @@ -426,7 +365,7 @@ export class SnsTopic */ public subscribeQueue( queueArn: Input, - args: SnsTopicSubscribeArgs = {}, + args: SnsTopicSubscriberArgs = {}, ) { return SnsTopic._subscribeQueue( this.constructorName, @@ -471,12 +410,11 @@ export class SnsTopic public static subscribeQueue( topicArn: Input, queueArn: Input, - args?: SnsTopicSubscribeArgs, + args?: SnsTopicSubscriberArgs, ) { const topicName = output(topicArn).apply( (topicArn) => parseTopicArn(topicArn).topicName, ); - return this._subscribeQueue(topicName, topicArn, queueArn, args); } @@ -484,61 +422,23 @@ export class SnsTopic name: Input, topicArn: Input, queueArn: Input, - args: SnsTopicSubscribeArgs = {}, - ): SnsTopicQueueSubscriber { - const ret = all([name, queueArn, args]).apply(([name, queueArn, args]) => { - const { queueUrl } = parseQueueArn(queueArn); - - // Build subscriber name - const namePrefix = sanitizeToPascalCase(name); - const id = sanitizeToPascalCase( + args: SnsTopicSubscriberArgs = {}, + ) { + return all([name, queueArn, args]).apply(([name, queueArn, args]) => { + const prefix = sanitizeToPascalCase(name); + const suffix = sanitizeToPascalCase( hashStringToPrettyString( [topicArn, JSON.stringify(args.filter ?? {}), queueArn].join(""), - 4, + 6, ), ); - const policy = new aws.sqs.QueuePolicy(`${namePrefix}Policy${id}`, { - queueUrl, - policy: aws.iam.getPolicyDocumentOutput({ - statements: [ - { - actions: ["sqs:SendMessage"], - resources: [queueArn], - principals: [ - { - type: "Service", - identifiers: ["sns.amazonaws.com"], - }, - ], - conditions: [ - { - test: "ArnEquals", - variable: "aws:SourceArn", - values: [topicArn], - }, - ], - }, - ], - }).json, + return new SnsTopicQueueSubscriber(`${prefix}Subscriber${suffix}`, { + topic: { arn: topicArn }, + queue: queueArn, + ...args, }); - - const subscription = new aws.sns.TopicSubscription( - `${namePrefix}Subscription${id}`, - transform(args?.transform?.subscription, { - topic: topicArn, - protocol: "sqs", - endpoint: queueArn, - filterPolicy: JSON.stringify(args.filter ?? {}), - }), - ); - - return { policy, subscription }; }); - return { - policy: ret.policy, - subscription: ret.subscription, - }; } /** @internal */ diff --git a/www/astro.config.mjs b/www/astro.config.mjs index ed5e32335..c58773968 100644 --- a/www/astro.config.mjs +++ b/www/astro.config.mjs @@ -140,13 +140,37 @@ const sidebar = [ label: "AppSyncDataSource", link: "/docs/component/aws/app-sync-data-source/", }, + { + label: "BucketLambdaSubscriber", + link: "/docs/component/aws/bucket-lambda-subscriber/", + }, + { + label: "QueueLambdaSubscriber", + link: "/docs/component/aws/queue-lambda-subscriber/", + }, + { + label: "DynamoLambdaSubscriber", + link: "/docs/component/aws/dynamo-lambda-subscriber/", + }, + { + label: "SnsTopicLambdaSubscriber", + link: "/docs/component/aws/sns-topic-lambda-subscriber/", + }, + { + label: "SnsTopicQueueSubscriber", + link: "/docs/component/aws/sns-topic-queue-subscriber/", + }, { label: "CognitoUserPoolClient", link: "/docs/component/aws/cognito-user-pool-client/", }, { - label: "ApiGatewayWebSocketRoute", - link: "/docs/component/aws/apigateway-websocket-route/", + label: "ApiGatewayV2LambdaRoute", + link: "/docs/component/aws/apigatewayv2-lambda-route/", + }, + { + label: "ApiGatewayWebSocketLambdaRoute", + link: "/docs/component/aws/apigateway-websocket-lambda-route/", }, ], }, diff --git a/www/generate.ts b/www/generate.ts index 7d4ba4b07..5b90bf060 100644 --- a/www/generate.ts +++ b/www/generate.ts @@ -1093,20 +1093,26 @@ async function generateComponentsDoc() { } // types in different doc const externalModule = { - ApiGatewayWebSocketRoute: "apigateway-websocket-route", + ApiGatewayV2LambdaRoute: "apigatewayv2-lambda-route", + ApiGatewayWebSocketLambdaRoute: "apigateway-websocket-lambda-route", AppSyncDataSource: "app-sync-data-source", AppSyncFunction: "app-sync-function", AppSyncResolver: "app-sync-resolver", Bucket: "bucket", BucketArgs: "bucket", + BucketLambdaSubscriber: "bucket-lambda-subscriber", Cdn: "cdn", CdnArgs: "cdn", CognitoUserPoolClient: "cognito-user-pool-client", + DynamoLambdaSubscriber: "dynamo-lambda-subscriber", Function: "function", FunctionArgs: "function", FunctionPermissionArgs: "function", PostgresArgs: "postgres", + QueueLambdaSubscriber: "queue-lambda-subscriber", Service: "service", + SnsTopicLambdaSubscriber: "sns-topic-lambda-subscriber", + SnsTopicQueueSubscriber: "sns-topic-queue-subscriber", }[type.name]; if (externalModule) { const hash = type.name.endsWith("Args") @@ -1414,19 +1420,22 @@ async function buildComponents() { "../pkg/platform/src/global-config.d.ts", "../pkg/platform/src/components/secret.ts", "../pkg/platform/src/components/aws/apigateway-websocket.ts", - "../pkg/platform/src/components/aws/apigateway-websocket-route.ts", + "../pkg/platform/src/components/aws/apigateway-websocket-lambda-route.ts", "../pkg/platform/src/components/aws/apigatewayv2.ts", + "../pkg/platform/src/components/aws/apigatewayv2-lambda-route.ts", "../pkg/platform/src/components/aws/app-sync.ts", "../pkg/platform/src/components/aws/app-sync-data-source.ts", "../pkg/platform/src/components/aws/app-sync-function.ts", "../pkg/platform/src/components/aws/app-sync-resolver.ts", "../pkg/platform/src/components/aws/bucket.ts", + "../pkg/platform/src/components/aws/bucket-lambda-subscriber.ts", "../pkg/platform/src/components/aws/cluster.ts", "../pkg/platform/src/components/aws/cognito-identity-pool.ts", "../pkg/platform/src/components/aws/cognito-user-pool.ts", "../pkg/platform/src/components/aws/cognito-user-pool-client.ts", "../pkg/platform/src/components/aws/cron.ts", "../pkg/platform/src/components/aws/dynamo.ts", + "../pkg/platform/src/components/aws/dynamo-lambda-subscriber.ts", "../pkg/platform/src/components/aws/email.ts", "../pkg/platform/src/components/aws/function.ts", "../pkg/platform/src/components/aws/postgres.ts", @@ -1435,9 +1444,12 @@ async function buildComponents() { "../pkg/platform/src/components/aws/nextjs.ts", "../pkg/platform/src/components/aws/remix.ts", "../pkg/platform/src/components/aws/queue.ts", + "../pkg/platform/src/components/aws/queue-lambda-subscriber.ts", "../pkg/platform/src/components/aws/router.ts", "../pkg/platform/src/components/aws/service.ts", "../pkg/platform/src/components/aws/sns-topic.ts", + "../pkg/platform/src/components/aws/sns-topic-lambda-subscriber.ts", + "../pkg/platform/src/components/aws/sns-topic-queue-subscriber.ts", "../pkg/platform/src/components/aws/solid-start.ts", "../pkg/platform/src/components/aws/static-site.ts", "../pkg/platform/src/components/aws/svelte-kit.ts", diff --git a/www/src/content/docs/docs/component/aws/apigateway-websocket-lambda-route.mdx b/www/src/content/docs/docs/component/aws/apigateway-websocket-lambda-route.mdx new file mode 100644 index 000000000..8f35a977d --- /dev/null +++ b/www/src/content/docs/docs/component/aws/apigateway-websocket-lambda-route.mdx @@ -0,0 +1,233 @@ +--- +title: ApiGatewayWebSocketLambdaRoute +description: Reference doc for the `sst.aws.ApiGatewayWebSocketLambdaRoute` component. +--- + +{/* DO NOT EDIT. AUTO-GENERATED FROM "pkg/platform/src/components/aws/apigateway-websocket-lambda-route.ts" */} + +import Segment from '../../../../../../src/components/tsdoc/Segment.astro'; +import Section from '../../../../../../src/components/tsdoc/Section.astro'; +import NestedTitle from '../../../../../../src/components/tsdoc/NestedTitle.astro'; +import InlineSection from '../../../../../../src/components/tsdoc/InlineSection.astro'; + +
+ +
+The `ApiGatewayWebSocketLambdaRoute` component is internally used by the `ApiGatewayWebSocket` +component to add routes to [AWS API Gateway WebSocket API](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api.html). + +:::caution +This component is not intended for public use. +::: + +You'll find this component returned by the `route` method of the `ApiGatewayWebSocket` component. +
+ +--- + +## Constructor + + +
+```ts +new ApiGatewayWebSocketLambdaRoute(name, args, opts?) +``` +
+ +
+#### Parameters +-

name string

+-

args [Args](#args)

+-

opts? [ComponentResourceOptions](https://www.pulumi.com/docs/concepts/options/)

+
+
+ +## Properties + +### nodes + +
+ +**Type** Object + +-

[function](#nodes-function)

+-

[integration](#nodes-integration)

+-

[permission](#nodes-permission)

+-

[route](#nodes-route)

+
+The underlying [resources](/docs/components/#nodes) this component creates. +
+function + +
+ +**Type** Output<[Function](/docs/component/aws/function/)> + +
+The Lambda function. +
+integration + +
+ +**Type** [Integration](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/integration/) + +
+The API Gateway HTTP API integration. +
+permission + +
+ +**Type** [Permission](https://www.pulumi.com/registry/packages/aws/api-docs/lambda/permission/) + +
+The Lambda permission. +
+route + +
+ +**Type** [Route](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/route/) + +
+The API Gateway HTTP API route. +
+ +## Args +### api + +
+ +**Type** Input<Object> + +-

[executionArn](#api-executionarn)

+-

[id](#api-id)

+-

[name](#api-name)

+
+The cluster to use for the service. + +
+executionArn + +
+ +**Type** Input<string> + +
+The execution ARN of the cluster. + +
+id + +
+ +**Type** Input<string> + +
+The ID of the cluster. + +
+name + +
+ +**Type** Input<string> + +
+The name of the cluster. + +
+### auth? + +
+ +**Type** Input<Object> + +-

[iam?](#auth-iam)

+
+Enable auth for your WebSocket API. + +:::note +Currently only IAM auth is supported. +::: + +```js +{ + auth: { + iam: true + } +} +``` +
+iam? + +
+ +**Type** Input<true> + +
+Enable IAM authorization for a given API route. When IAM auth is enabled, clients need to use Signature Version 4 to sign their requests with their AWS credentials. + +
+### handler + +
+ +**Type** Input<string | [FunctionArgs](/docs/component/aws/function/#functionargs)> + +
+ +
+### handlerTransform? + +
+ +**Type** [FunctionArgs](/docs/component/aws/function/#functionargs) | (args: [FunctionArgs](/docs/component/aws/function/#functionargs) => void) + +
+ +
+### route + +
+ +**Type** Input<string> + +
+ +
+### transform? + +
+ +**Type** Object + +-

[integration?](#transform-integration)

+-

[route?](#transform-route)

+
+[Transform](/docs/components#transform) how this component creates its underlying +resources. + +
+integration? + +
+ +**Type** [IntegrationArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/integration/#inputs) | (args: [IntegrationArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/integration/#inputs) => void) + +
+Transform the API Gateway WebSocket API integration resource. + +
+route? + +
+ +**Type** [RouteArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/route/#inputs) | (args: [RouteArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/route/#inputs) => void) + +
+Transform the API Gateway WebSocket API route resource. + +
+
\ No newline at end of file diff --git a/www/src/content/docs/docs/component/aws/apigateway-websocket.mdx b/www/src/content/docs/docs/component/aws/apigateway-websocket.mdx index 2df24ca44..64ca8c8a4 100644 --- a/www/src/content/docs/docs/component/aws/apigateway-websocket.mdx +++ b/www/src/content/docs/docs/component/aws/apigateway-websocket.mdx @@ -79,7 +79,7 @@ Configure the route.
-**Returns** [ApiGatewayWebSocketRoute](/docs/component/aws/apigateway-websocket-route/) +**Returns** [ApiGatewayWebSocketLambdaRoute](/docs/component/aws/apigateway-websocket-lambda-route/) Add a route to the API Gateway WebSocket API. diff --git a/www/src/content/docs/docs/component/aws/apigatewayv2-lambda-route.mdx b/www/src/content/docs/docs/component/aws/apigatewayv2-lambda-route.mdx new file mode 100644 index 000000000..535be8872 --- /dev/null +++ b/www/src/content/docs/docs/component/aws/apigatewayv2-lambda-route.mdx @@ -0,0 +1,338 @@ +--- +title: ApiGatewayV2LambdaRoute +description: Reference doc for the `sst.aws.ApiGatewayV2LambdaRoute` component. +--- + +{/* DO NOT EDIT. AUTO-GENERATED FROM "pkg/platform/src/components/aws/apigatewayv2-lambda-route.ts" */} + +import Segment from '../../../../../../src/components/tsdoc/Segment.astro'; +import Section from '../../../../../../src/components/tsdoc/Section.astro'; +import NestedTitle from '../../../../../../src/components/tsdoc/NestedTitle.astro'; +import InlineSection from '../../../../../../src/components/tsdoc/InlineSection.astro'; + +
+ +
+The `ApiGatewayV2LambdaRoute` component is internally used by the `ApiGatewayV2` component +to add routes to [Amazon API Gateway HTTP API](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api.html). + +:::caution +This component is not intended for public use. +::: + +You'll find this component returned by the `route` method of the `ApiGatewayV2` component. +
+ +--- + +## Constructor + + +
+```ts +new ApiGatewayV2LambdaRoute(name, args, opts?) +``` +
+ +
+#### Parameters +-

name string

+-

args [Args](#args)

+-

opts? [ComponentResourceOptions](https://www.pulumi.com/docs/concepts/options/)

+
+
+ +## Properties + +### nodes + +
+ +**Type** Object + +-

[function](#nodes-function)

+-

[integration](#nodes-integration)

+-

[permission](#nodes-permission)

+-

[route](#nodes-route)

+
+The underlying [resources](/docs/components/#nodes) this component creates. +
+function + +
+ +**Type** Output<[Function](/docs/component/aws/function/)> + +
+The Lambda function. +
+integration + +
+ +**Type** [Integration](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/integration/) + +
+The API Gateway HTTP API integration. +
+permission + +
+ +**Type** [Permission](https://www.pulumi.com/registry/packages/aws/api-docs/lambda/permission/) + +
+The Lambda permission. +
+route + +
+ +**Type** Output<[Route](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/route/)> + +
+The API Gateway HTTP API route. +
+ +## Args +### api + +
+ +**Type** Input<Object> + +-

[executionArn](#api-executionarn)

+-

[id](#api-id)

+-

[name](#api-name)

+
+The cluster to use for the service. + +
+executionArn + +
+ +**Type** Input<string> + +
+The execution ARN of the cluster. + +
+id + +
+ +**Type** Input<string> + +
+The ID of the cluster. + +
+name + +
+ +**Type** Input<string> + +
+The name of the cluster. + +
+### auth? + +
+ +**Type** Input<Object> + +-

[iam?](#auth-iam)

+-

[jwt?](#auth-jwt) Input<Object>

+ -

[audiences](#auth-jwt-audiences)

+ -

[identitySource?](#auth-jwt-identitysource)

+ -

[issuer](#auth-jwt-issuer)

+ -

[scopes?](#auth-jwt-scopes)

+
+Enable auth for your HTTP API. + +:::note +Currently IAM and JWT auth are supported. +::: + +```js +{ + auth: { + iam: true + } +} +``` +
+iam? + +
+ +**Type** Input<true> + +
+Enable IAM authorization for a given API route. When IAM auth is enabled, clients need to use Signature Version 4 to sign their requests with their AWS credentials. + +
+jwt? + +
+ +**Type** Input<Object> + +
+Enable JWT or JSON Web Token authorization for a given API route. When JWT auth is enabled, clients need to include a valid JWT in their requests. + +You can configure JWT auth. + +```js +{ + auth: { + jwt: { + issuer: "https://issuer.com/", + audiences: ["https://api.example.com"], + scopes: ["read:profile", "write:profile"], + identitySource: "$request.header.AccessToken" + } + } +} +``` + +You can also use Cognito as the identity provider. + +```js +{ + auth: { + jwt: { + audiences: [userPoolClient.id], + issuer: $interpolate`https://cognito-idp.${aws.getArnOutput(userPool).region}.amazonaws.com/${userPool.id}`, + } + } +} +``` + +Where `userPool` and `userPoolClient` are: + +```js +const userPool = new aws.cognito.UserPool(); +const userPoolClient = new aws.cognito.UserPoolClient(); +``` +
+audiences + +
+ +**Type** Input<Input<string>[]> + +
+List of the intended recipients of the JWT. A valid JWT must provide an `aud` that matches at least one entry in this list. + +
+identitySource? + +
+ +**Type** Input<string> + +
+ + +**Default** "$request.header.Authorization" + +Specifies where to extract the JWT from the request. + +
+issuer + +
+ +**Type** Input<string> + +
+Base domain of the identity provider that issues JSON Web Tokens. + +
+scopes? + +
+ +**Type** Input<Input<string>[]> + +
+Defines the permissions or access levels that the JWT grants. If the JWT does not have the required scope, the request is rejected. By default it does not require any scopes. + +
+### handler + +
+ +**Type** Input<string | [FunctionArgs](/docs/component/aws/function/#functionargs)> + +
+The route function. + +
+### handlerTransform? + +
+ +**Type** [FunctionArgs](/docs/component/aws/function/#functionargs) | (args: [FunctionArgs](/docs/component/aws/function/#functionargs) => void) + +
+ +
+### route + +
+ +**Type** Input<string> + +
+ +
+### transform? + +
+ +**Type** Object + +-

[authorizer?](#transform-authorizer)

+-

[integration?](#transform-integration)

+-

[route?](#transform-route)

+
+[Transform](/docs/components#transform) how this component creates its underlying +resources. + +
+authorizer? + +
+ +**Type** [AuthorizerArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/authorizer/#inputs) | (args: [AuthorizerArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/authorizer/#inputs) => void) + +
+Transform the API Gateway authorizer resource. + +
+integration? + +
+ +**Type** [IntegrationArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/integration/#inputs) | (args: [IntegrationArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/integration/#inputs) => void) + +
+Transform the API Gateway HTTP API integration resource. + +
+route? + +
+ +**Type** [RouteArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/route/#inputs) | (args: [RouteArgs](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/route/#inputs) => void) + +
+Transform the API Gateway HTTP API route resource. + +
+
\ No newline at end of file diff --git a/www/src/content/docs/docs/component/aws/apigatewayv2.mdx b/www/src/content/docs/docs/component/aws/apigatewayv2.mdx index e29f15115..55e05f699 100644 --- a/www/src/content/docs/docs/component/aws/apigatewayv2.mdx +++ b/www/src/content/docs/docs/component/aws/apigatewayv2.mdx @@ -77,7 +77,7 @@ Configure the route. -**Returns** [ApiGatewayV2Route](#apigatewayv2route) +**Returns** [ApiGatewayV2LambdaRoute](/docs/component/aws/apigatewayv2-lambda-route/) Add a route to the API Gateway HTTP API. The route is a combination of - An HTTP method and a path, `{METHOD} /{path}`. @@ -541,48 +541,6 @@ Transform the API Gateway HTTP API stage resource.
-## ApiGatewayV2Route -### function - -
- -**Type** Output<[Function](/docs/component/aws/function/)> - -
-The Lambda function. - -
-### integration - -
- -**Type** [Integration](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/integration/) - -
-The API Gateway HTTP API integration. - -
-### permission - -
- -**Type** [Permission](https://www.pulumi.com/registry/packages/aws/api-docs/lambda/permission/) - -
-The Lambda permission. - -
-### route - -
- -**Type** Output<[Route](https://www.pulumi.com/registry/packages/aws/api-docs/apigatewayv2/route/)> - -
-The API Gateway HTTP API route. - -
- ## ApiGatewayV2RouteArgs ### auth? diff --git a/www/src/content/docs/docs/component/aws/astro.mdx b/www/src/content/docs/docs/component/aws/astro.mdx index f47b8c504..c8e4c22a0 100644 --- a/www/src/content/docs/docs/component/aws/astro.mdx +++ b/www/src/content/docs/docs/component/aws/astro.mdx @@ -310,7 +310,7 @@ The default is set to not cache on browsers, and cache for 1 day on CloudFront.
-**Type** Input<none | utf-8 | iso-8859-1 | windows-1252 | ascii> +**Type** Input<none | ascii | utf-8 | iso-8859-1 | windows-1252>
diff --git a/www/src/content/docs/docs/component/aws/bucket-lambda-subscriber.mdx b/www/src/content/docs/docs/component/aws/bucket-lambda-subscriber.mdx new file mode 100644 index 000000000..3cbc483e2 --- /dev/null +++ b/www/src/content/docs/docs/component/aws/bucket-lambda-subscriber.mdx @@ -0,0 +1,213 @@ +--- +title: BucketLambdaSubscriber +description: Reference doc for the `sst.aws.BucketLambdaSubscriber` component. +--- + +{/* DO NOT EDIT. AUTO-GENERATED FROM "pkg/platform/src/components/aws/bucket-lambda-subscriber.ts" */} + +import Segment from '../../../../../../src/components/tsdoc/Segment.astro'; +import Section from '../../../../../../src/components/tsdoc/Section.astro'; +import NestedTitle from '../../../../../../src/components/tsdoc/NestedTitle.astro'; +import InlineSection from '../../../../../../src/components/tsdoc/InlineSection.astro'; + +
+ +
+The `BucketLambdaSubscriber` component is internally used by the `Bucket` component to +add bucket notifications to [AWS S3 Bucket](https://aws.amazon.com/s3/). + +:::caution +This component is not intended for public use. +::: + +You'll find this component returned by the `subscribe` method of the `Bucket` component. +
+ +--- + +## Constructor + + +
+```ts +new BucketLambdaSubscriber(name, args, opts?) +``` +
+ +
+#### Parameters +-

name string

+-

args [Args](#args)

+-

opts? [ComponentResourceOptions](https://www.pulumi.com/docs/concepts/options/)

+
+
+ +## Properties + +### nodes + +
+ +**Type** Object + +-

[function](#nodes-function)

+-

[notification](#nodes-notification)

+-

[permission](#nodes-permission)

+
+The underlying [resources](/docs/components/#nodes) this component creates. +
+function + +
+ +**Type** Output<[Function](/docs/component/aws/function/)> + +
+The Lambda function that'll be notified. +
+notification + +
+ +**Type** [BucketNotification](https://www.pulumi.com/registry/packages/aws/api-docs/s3/bucketnotification/) + +
+The S3 bucket notification. +
+permission + +
+ +**Type** [Permission](https://www.pulumi.com/registry/packages/aws/api-docs/lambda/permission/) + +
+The Lambda permission. +
+ +## Args +### bucket + +
+ +**Type** Input<Object> + +-

[arn](#bucket-arn)

+-

[name](#bucket-name)

+
+The bucket to use. + +
+arn + +
+ +**Type** Input<string> + +
+The ARN of the bucket. + +
+name + +
+ +**Type** Input<string> + +
+The name of the bucket. + +
+### events? + +
+ +**Type** Input<Input<s3\:ObjectCreated\:\* | s3\:ObjectCreated\:Put | s3\:ObjectCreated\:Post | s3\:ObjectCreated\:Copy | s3\:ObjectCreated\:CompleteMultipartUpload | s3\:ObjectRemoved\:\* | s3\:ObjectRemoved\:Delete | s3\:ObjectRemoved\:DeleteMarkerCreated | s3\:ObjectRestore\:\* | s3\:ObjectRestore\:Post | s3\:ObjectRestore\:Completed | s3\:ObjectRestore\:Delete | s3\:ReducedRedundancyLostObject | s3\:Replication\:\* | s3\:Replication\:OperationFailedReplication | s3\:Replication\:OperationMissedThreshold | s3\:Replication\:OperationReplicatedAfterThreshold | s3\:Replication\:OperationNotTracked | s3\:LifecycleExpiration\:\* | s3\:LifecycleExpiration\:Delete | s3\:LifecycleExpiration\:DeleteMarkerCreated | s3\:LifecycleTransition | s3\:IntelligentTiering | s3\:ObjectTagging\:\* | s3\:ObjectTagging\:Put | s3\:ObjectTagging\:Delete | s3\:ObjectAcl\:Put>[]> + +
+ + +**Default** All S3 events + +The S3 event types that will trigger the notification. + +```js +{ + events: ["s3:ObjectCreated:*", "s3:ObjectRemoved:*"] +} +``` +
+### filterPrefix? + +
+ +**Type** Input<string> + +
+An S3 object key prefix that will trigger the notification. + +All the objects in the `images/` folder. +```js +{ + filterPrefix: "images/" +} +``` +
+### filterSuffix? + +
+ +**Type** Input<string> + +
+An S3 object key suffix that will trigger the notification. + +All the objects with the `.jpg` suffix. +```js +{ + filterSuffix: ".jpg" +} +``` +
+### subscriber + +
+ +**Type** Input<string | [FunctionArgs](/docs/component/aws/function/#functionargs)> + +
+The subscriber function. + +
+### subscriberId + +
+ +**Type** Input<string> + +
+The subscriber id. + +
+### transform? + +
+ +**Type** Object + +-

[notification?](#transform-notification)

+
+[Transform](/docs/components#transform) how this notification creates its underlying +resources. + +
+notification? + +
+ +**Type** [BucketNotificationArgs](https://www.pulumi.com/registry/packages/aws/api-docs/s3/bucketnotification/#inputs) | (args: [BucketNotificationArgs](https://www.pulumi.com/registry/packages/aws/api-docs/s3/bucketnotification/#inputs) => void) + +
+Transform the S3 Bucket Notification resource. + +
+
\ No newline at end of file diff --git a/www/src/content/docs/docs/component/aws/bucket.mdx b/www/src/content/docs/docs/component/aws/bucket.mdx index bf8b10d9e..a3f18601e 100644 --- a/www/src/content/docs/docs/component/aws/bucket.mdx +++ b/www/src/content/docs/docs/component/aws/bucket.mdx @@ -96,12 +96,12 @@ subscribe(subscriber, args?) #### Parameters -

subscriber string | [FunctionArgs](/docs/component/aws/function/#functionargs)

The function that'll be notified. --

args? [BucketSubscribeArgs](#bucketsubscribeargs)

+-

args? [BucketSubscriberArgs](#bucketsubscriberargs)

Configure the subscription. -**Returns** [BucketSubscriber](#bucketsubscriber) +**Returns** Output<[BucketLambdaSubscriber](/docs/component/aws/bucket-lambda-subscriber/)> Subscribe to events from this bucket. @@ -153,12 +153,12 @@ Bucket.subscribe(bucketArn, subscriber, args?) The ARN of the S3 bucket to subscribe to. -

subscriber string | [FunctionArgs](/docs/component/aws/function/#functionargs)

The function that'll be notified. --

args? [BucketSubscribeArgs](#bucketsubscribeargs)

+-

args? [BucketSubscriberArgs](#bucketsubscriberargs)

Configure the subscription. -**Returns** [BucketSubscriber](#bucketsubscriber) +**Returns** Output<[BucketLambdaSubscriber](/docs/component/aws/bucket-lambda-subscriber/)> Subscribe to events of an S3 bucket that was not created in your app. @@ -494,7 +494,7 @@ Transform the public access block resource that's attached to the Bucket.
-## BucketSubscribeArgs +## BucketSubscriberArgs ### events?
@@ -567,37 +567,5 @@ resources.
Transform the S3 Bucket Notification resource. -
- -## BucketSubscriber -### function - -
- -**Type** Output<[Function](/docs/component/aws/function/)> - -
-The Lambda function that'll be notified. - -
-### notification - -
- -**Type** Output<[BucketNotification](https://www.pulumi.com/registry/packages/aws/api-docs/s3/bucketnotification/)> - -
-The S3 bucket notification. - -
-### permission - -
- -**Type** Output<[Permission](https://www.pulumi.com/registry/packages/aws/api-docs/lambda/permission/)> - -
-The Lambda permission. -
\ No newline at end of file diff --git a/www/src/content/docs/docs/component/aws/dynamo-lambda-subscriber.mdx b/www/src/content/docs/docs/component/aws/dynamo-lambda-subscriber.mdx new file mode 100644 index 000000000..4e39b2df9 --- /dev/null +++ b/www/src/content/docs/docs/component/aws/dynamo-lambda-subscriber.mdx @@ -0,0 +1,198 @@ +--- +title: DynamoLambdaSubscriber +description: Reference doc for the `sst.aws.DynamoLambdaSubscriber` component. +--- + +{/* DO NOT EDIT. AUTO-GENERATED FROM "pkg/platform/src/components/aws/dynamo-lambda-subscriber.ts" */} + +import Segment from '../../../../../../src/components/tsdoc/Segment.astro'; +import Section from '../../../../../../src/components/tsdoc/Section.astro'; +import NestedTitle from '../../../../../../src/components/tsdoc/NestedTitle.astro'; +import InlineSection from '../../../../../../src/components/tsdoc/InlineSection.astro'; + +
+ +
+The `DynamoLambdaSubscriber` component is internally used by the `Dynamo` component to +add stream subscriptions to [Amazon DynamoDB](https://aws.amazon.com/dynamodb/). + +:::caution +This component is not intended for public use. +::: + +You'll find this component returned by the `subscribe` method of the `Dynamo` component. +
+ +--- + +## Constructor + + +
+```ts +new DynamoLambdaSubscriber(name, args, opts?) +``` +
+ +
+#### Parameters +-

name string

+-

args [Args](#args)

+-

opts? [ComponentResourceOptions](https://www.pulumi.com/docs/concepts/options/)

+
+
+ +## Properties + +### nodes + +
+ +**Type** Object + +-

[eventSourceMapping](#nodes-eventsourcemapping)

+-

[function](#nodes-function)

+
+The underlying [resources](/docs/components/#nodes) this component creates. +
+eventSourceMapping + +
+ +**Type** [EventSourceMapping](https://www.pulumi.com/registry/packages/aws/api-docs/lambda/eventsourcemapping/) + +
+The Lambda event source mapping. +
+function + +
+ +**Type** Output<[Function](/docs/component/aws/function/)> + +
+The Lambda function that'll be notified. +
+ +## Args +### dynamo + +
+ +**Type** Input<Object> + +-

[streamArn](#dynamo-streamarn)

+
+The DynamoDB table to use. + +
+streamArn + +
+ +**Type** Input<string> + +
+The ARN of the stream. + +
+### filters? + +
+ +**Type** Input<Input<Record<string, any>>[]> + +
+Filter the records processed by the `subscriber` function. + +:::tip +You can pass in up to 5 different filters. +::: + +You can pass in up to 5 different filter policies. These will logically ORed together. Meaning that if any single policy matches, the record will be processed. + +:::tip +Learn more about the [filter rule syntax](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html#filtering-syntax). +::: + +For example, if your DynamoDB table's stream contains the follow record. +```js +{ + eventID: "1", + eventVersion: "1.0", + dynamodb: { + ApproximateCreationDateTime: "1678831218.0", + Keys: { + CustomerName: { + "S": "AnyCompany Industries" + }, + NewImage: { + AccountManager: { + S: "Pat Candella" + }, + PaymentTerms: { + S: "60 days" + }, + CustomerName: { + S: "AnyCompany Industries" + } + }, + SequenceNumber: "111", + SizeBytes: 26, + StreamViewType: "NEW_IMAGE" + } + } +} +``` + +To process only those records where the `CustomerName` is `AnyCompany Industries`. + +```js +{ + filters: [ + { + dynamodb: { + Keys: { + CustomerName: { + S: ["AnyCompany Industries"] + } + } + } + } + ] +} +``` +
+### subscriber + +
+ +**Type** Input<string | [FunctionArgs](/docs/component/aws/function/#functionargs)> + +
+The subscriber function. + +
+### transform? + +
+ +**Type** Object + +-

[eventSourceMapping?](#transform-eventsourcemapping)

+
+[Transform](/docs/components#transform) how this subscription creates its underlying +resources. + +
+eventSourceMapping? + +
+ +**Type** [EventSourceMappingArgs](https://www.pulumi.com/registry/packages/aws/api-docs/lambda/eventsourcemapping/#inputs) | (args: [EventSourceMappingArgs](https://www.pulumi.com/registry/packages/aws/api-docs/lambda/eventsourcemapping/#inputs) => void) + +
+Transform the Lambda Event Source Mapping resource. + +
+
\ No newline at end of file diff --git a/www/src/content/docs/docs/component/aws/dynamo.mdx b/www/src/content/docs/docs/component/aws/dynamo.mdx index 83208545b..aa66ead64 100644 --- a/www/src/content/docs/docs/component/aws/dynamo.mdx +++ b/www/src/content/docs/docs/component/aws/dynamo.mdx @@ -146,12 +146,12 @@ subscribe(subscriber, args?) #### Parameters -

subscriber string | [FunctionArgs](/docs/component/aws/function/#functionargs)

The function that'll be notified. --

args? [DynamoSubscribeArgs](#dynamosubscribeargs)

+-

args? [DynamoSubscriberArgs](#dynamosubscriberargs)

Configure the subscription. -**Returns** [DynamoSubscriber](#dynamosubscriber) +**Returns** Output<[DynamoLambdaSubscriber](/docs/component/aws/dynamo-lambda-subscriber/)> Subscribe to the DynamoDB Stream of this table. @@ -205,12 +205,12 @@ Dynamo.subscribe(streamArn, subscriber, args?) The ARN of the DynamoDB Stream to subscribe to. -

subscriber string | [FunctionArgs](/docs/component/aws/function/#functionargs)

The function that'll be notified. --

args? [DynamoSubscribeArgs](#dynamosubscribeargs)

+-

args? [DynamoSubscriberArgs](#dynamosubscriberargs)

Configure the subscription. -**Returns** [DynamoSubscriber](#dynamosubscriber) +**Returns** Output<[DynamoLambdaSubscriber](/docs/component/aws/dynamo-lambda-subscriber/)> Subscribe to the DynamoDB stream of a table that was not created in your app. @@ -522,7 +522,7 @@ Learn more about [Time to Live (TTL)](https://docs.aws.amazon.com/amazondynamodb ```
-## DynamoSubscribeArgs +## DynamoSubscriberArgs ### filters?
@@ -611,27 +611,5 @@ resources.
Transform the Lambda Event Source Mapping resource. -
- -## DynamoSubscriber -### eventSourceMapping - -
- -**Type** Output<[EventSourceMapping](https://www.pulumi.com/registry/packages/aws/api-docs/lambda/eventsourcemapping/)> - -
-The Lambda event source mapping. - -
-### function - -
- -**Type** Output<[Function](/docs/component/aws/function/)> - -
-The Lambda function that'll be notified. -
\ No newline at end of file diff --git a/www/src/content/docs/docs/component/aws/function.mdx b/www/src/content/docs/docs/component/aws/function.mdx index 3993c6498..5b2464132 100644 --- a/www/src/content/docs/docs/component/aws/function.mdx +++ b/www/src/content/docs/docs/component/aws/function.mdx @@ -503,7 +503,7 @@ The duration the function logs are kept in CloudWatch.
-**Type** Input<$\{number\} GB | $\{number\} MB> +**Type** Input<$\{number\} MB | $\{number\} GB>
@@ -1095,7 +1095,7 @@ The HTTP headers that origins can include in requests to the function URL.
-**Type** Input<Input<DELETE | GET | HEAD | POST | PUT | \* | OPTIONS | PATCH>[]> +**Type** Input<Input<DELETE | GET | HEAD | OPTIONS | PATCH | POST | PUT | \*>[]>
diff --git a/www/src/content/docs/docs/component/aws/nextjs.mdx b/www/src/content/docs/docs/component/aws/nextjs.mdx index 43754b012..9ef074341 100644 --- a/www/src/content/docs/docs/component/aws/nextjs.mdx +++ b/www/src/content/docs/docs/component/aws/nextjs.mdx @@ -315,7 +315,7 @@ The default is set to not cache on browsers, and cache for 1 day on CloudFront.
-**Type** Input<none | utf-8 | iso-8859-1 | windows-1252 | ascii> +**Type** Input<none | ascii | utf-8 | iso-8859-1 | windows-1252>
@@ -639,7 +639,7 @@ Configure the Lambda function used for image optimization.
-**Type** $\{number\} GB | $\{number\} MB +**Type** $\{number\} MB | $\{number\} GB
diff --git a/www/src/content/docs/docs/component/aws/queue-lambda-subscriber.mdx b/www/src/content/docs/docs/component/aws/queue-lambda-subscriber.mdx new file mode 100644 index 000000000..427f4e155 --- /dev/null +++ b/www/src/content/docs/docs/component/aws/queue-lambda-subscriber.mdx @@ -0,0 +1,183 @@ +--- +title: QueueLambdaSubscriber +description: Reference doc for the `sst.aws.QueueLambdaSubscriber` component. +--- + +{/* DO NOT EDIT. AUTO-GENERATED FROM "pkg/platform/src/components/aws/queue-lambda-subscriber.ts" */} + +import Segment from '../../../../../../src/components/tsdoc/Segment.astro'; +import Section from '../../../../../../src/components/tsdoc/Section.astro'; +import NestedTitle from '../../../../../../src/components/tsdoc/NestedTitle.astro'; +import InlineSection from '../../../../../../src/components/tsdoc/InlineSection.astro'; + +
+ +
+The `QueueLambdaSubscriber` component is internally used by the `Queue` component to +add consumer to [Amazon SQS](https://aws.amazon.com/sqs/). + +:::caution +This component is not intended for public use. +::: + +You'll find this component returned by the `subscribe` method of the `Queue` component. +
+ +--- + +## Constructor + + +
+```ts +new QueueLambdaSubscriber(name, args, opts?) +``` +
+ +
+#### Parameters +-

name string

+-

args [Args](#args)

+-

opts? [ComponentResourceOptions](https://www.pulumi.com/docs/concepts/options/)

+
+
+ +## Properties + +### nodes + +
+ +**Type** Object + +-

[eventSourceMapping](#nodes-eventsourcemapping)

+-

[function](#nodes-function)

+
+The underlying [resources](/docs/components/#nodes) this component creates. +
+eventSourceMapping + +
+ +**Type** [EventSourceMapping](https://www.pulumi.com/registry/packages/aws/api-docs/lambda/eventsourcemapping/) + +
+The Lambda event source mapping. +
+function + +
+ +**Type** Output<[Function](/docs/component/aws/function/)> + +
+The Lambda function that'll be notified. +
+ +## Args +### filters? + +
+ +**Type** Input<Input<Record<string, any>>[]> + +
+Filter the records that'll be processed by the `subscriber` function. + +:::tip +You can pass in up to 5 different filters. +::: + +You can pass in up to 5 different filter policies. These will logically ORed together. Meaning that if any single policy matches, the record will be processed. Learn more about the [filter rule syntax](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html#filtering-syntax). + +For example, if you Queue contains records in this JSON format. +```js +{ + RecordNumber: 0000, + RequestCode: "AAAA", + TimeStamp: "yyyy-mm-ddThh:mm:ss" +} +``` + +To process only those records where the `RequestCode` is `BBBB`. + +```js +{ + filters: [ + { + body: { + RequestCode: ["BBBB"] + } + } + ] +} +``` + +And to process only those records where `RecordNumber` greater than `9999`. + +```js +{ + filters: [ + { + body: { + RecordNumber: [{ numeric: [ ">", 9999 ] }] + } + } + ] +} +``` +
+### queue + +
+ +**Type** Input<Object> + +-

[arn](#queue-arn)

+
+The queue to use. + +
+arn + +
+ +**Type** Input<string> + +
+The ARN of the queue. + +
+### subscriber + +
+ +**Type** Input<string | [FunctionArgs](/docs/component/aws/function/#functionargs)> + +
+The subscriber function. + +
+### transform? + +
+ +**Type** Object + +-

[eventSourceMapping?](#transform-eventsourcemapping)

+
+[Transform](/docs/components#transform) how this component creates its underlying +resources. + +
+eventSourceMapping? + +
+ +**Type** [EventSourceMappingArgs](https://www.pulumi.com/registry/packages/aws/api-docs/lambda/eventsourcemapping/#inputs) | (args: [EventSourceMappingArgs](https://www.pulumi.com/registry/packages/aws/api-docs/lambda/eventsourcemapping/#inputs) => void) + +
+Transform the Lambda Event Source Mapping resource. + +
+
\ No newline at end of file diff --git a/www/src/content/docs/docs/component/aws/queue.mdx b/www/src/content/docs/docs/component/aws/queue.mdx index 6e78fcb2f..cd64014ea 100644 --- a/www/src/content/docs/docs/component/aws/queue.mdx +++ b/www/src/content/docs/docs/component/aws/queue.mdx @@ -95,12 +95,12 @@ subscribe(subscriber, args?) #### Parameters -

subscriber string | [FunctionArgs](/docs/component/aws/function/#functionargs)

The function that'll be notified. --

args? [QueueSubscribeArgs](#queuesubscribeargs)

+-

args? [QueueSubscriberArgs](#queuesubscriberargs)

Configure the subscription. -**Returns** [QueueSubscriber](#queuesubscriber) +**Returns** Output<[QueueLambdaSubscriber](/docs/component/aws/queue-lambda-subscriber/)> Subscribe to this queue. @@ -145,12 +145,12 @@ Queue.subscribe(queueArn, subscriber, args?) The ARN of the SQS queue to subscribe to. -

subscriber string | [FunctionArgs](/docs/component/aws/function/#functionargs)

The function that'll be notified. --

args? [QueueSubscribeArgs](#queuesubscribeargs)

+-

args? [QueueSubscriberArgs](#queuesubscriberargs)

Configure the subscription. -**Returns** [QueueSubscriber](#queuesubscriber) +**Returns** Output<[QueueLambdaSubscriber](/docs/component/aws/queue-lambda-subscriber/)> Subscribe to an SQS queue that was not created in your app. @@ -293,7 +293,7 @@ Transform the SQS queue resource.
-## QueueSubscribeArgs +## QueueSubscriberArgs ### filters?
@@ -367,27 +367,5 @@ resources.
Transform the Lambda Event Source Mapping resource. -
- -## QueueSubscriber -### eventSourceMapping - -
- -**Type** Output<[EventSourceMapping](https://www.pulumi.com/registry/packages/aws/api-docs/lambda/eventsourcemapping/)> - -
-The Lambda event source mapping. - -
-### function - -
- -**Type** Output<[Function](/docs/component/aws/function/)> - -
-The Lambda function that'll be notified. -
\ No newline at end of file diff --git a/www/src/content/docs/docs/component/aws/remix.mdx b/www/src/content/docs/docs/component/aws/remix.mdx index 06b87f6b6..11b509e77 100644 --- a/www/src/content/docs/docs/component/aws/remix.mdx +++ b/www/src/content/docs/docs/component/aws/remix.mdx @@ -308,7 +308,7 @@ The default is set to not cache on browsers, and cache for 1 day on CloudFront.
-**Type** Input<none | utf-8 | iso-8859-1 | windows-1252 | ascii> +**Type** Input<none | ascii | utf-8 | iso-8859-1 | windows-1252>
diff --git a/www/src/content/docs/docs/component/aws/sns-topic-lambda-subscriber.mdx b/www/src/content/docs/docs/component/aws/sns-topic-lambda-subscriber.mdx new file mode 100644 index 000000000..5504b2083 --- /dev/null +++ b/www/src/content/docs/docs/component/aws/sns-topic-lambda-subscriber.mdx @@ -0,0 +1,188 @@ +--- +title: SnsTopicLambdaSubscriber +description: Reference doc for the `sst.aws.SnsTopicLambdaSubscriber` component. +--- + +{/* DO NOT EDIT. AUTO-GENERATED FROM "pkg/platform/src/components/aws/sns-topic-lambda-subscriber.ts" */} + +import Segment from '../../../../../../src/components/tsdoc/Segment.astro'; +import Section from '../../../../../../src/components/tsdoc/Section.astro'; +import NestedTitle from '../../../../../../src/components/tsdoc/NestedTitle.astro'; +import InlineSection from '../../../../../../src/components/tsdoc/InlineSection.astro'; + +
+ +
+The `SnsTopicLambdaSubscriber` component is internally used by the `SnsTopic` component +to add subscriptions to [Amazon SNS topic](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html). + +:::caution +This component is not intended for public use. +::: + +You'll find this component returned by the `subscribe` method of the `SnsTopic` component. +
+ +--- + +## Constructor + + +
+```ts +new SnsTopicLambdaSubscriber(name, args, opts?) +``` +
+ +
+#### Parameters +-

name string

+-

args [Args](#args)

+-

opts? [ComponentResourceOptions](https://www.pulumi.com/docs/concepts/options/)

+
+
+ +## Properties + +### nodes + +
+ +**Type** Object + +-

[function](#nodes-function)

+-

[permission](#nodes-permission)

+-

[subscription](#nodes-subscription)

+
+The underlying [resources](/docs/components/#nodes) this component creates. +
+function + +
+ +**Type** Output<[Function](/docs/component/aws/function/)> + +
+The Lambda function that'll be notified. +
+permission + +
+ +**Type** [Permission](https://www.pulumi.com/registry/packages/aws/api-docs/lambda/permission/) + +
+The Lambda permission. +
+subscription + +
+ +**Type** [TopicSubscription](https://www.pulumi.com/registry/packages/aws/api-docs/sns/topicsubscription/) + +
+The SNS topic subscription. +
+ +## Args +### filter? + +
+ +**Type** Input<Record<string, any>> + +
+Filter the messages that'll be processed by the subscriber. + +If any single property in the filter doesn't match +an attribute assigned to the message, then the policy rejects the message. + +:::tip +Learn more about [subscription filter policies](https://docs.aws.amazon.com/sns/latest/dg/sns-subscription-filter-policies.html). +::: + +For example, if your SNS topic message contains this in a JSON format. +```js +{ + store: "example_corp", + event: "order-placed", + customer_interests: [ + "soccer", + "rugby", + "hockey" + ], + price_usd: 210.75 +} +``` + +Then this filter policy accepts the message. + +```js +{ + filter: { + store: ["example_corp"], + event: [{"anything-but": "order_cancelled"}], + customer_interests: [ + "rugby", + "football", + "baseball" + ], + price_usd: [{numeric: [">=", 100]}] + } +} +``` +
+### subscriber + +
+ +**Type** Input<string | [FunctionArgs](/docs/component/aws/function/#functionargs)> + +
+The subscriber function. + +
+### topic + +
+ +**Type** Input<Object> + +-

[arn](#topic-arn)

+
+The topic to use. + +
+arn + +
+ +**Type** Input<string> + +
+The ARN of the topic. + +
+### transform? + +
+ +**Type** Object + +-

[subscription?](#transform-subscription)

+
+[Transform](/docs/components#transform) how this subscription creates its underlying +resources. + +
+subscription? + +
+ +**Type** [TopicSubscriptionArgs](https://www.pulumi.com/registry/packages/aws/api-docs/sns/topicsubscription/#inputs) | (args: [TopicSubscriptionArgs](https://www.pulumi.com/registry/packages/aws/api-docs/sns/topicsubscription/#inputs) => void) + +
+Transform the SNS topic Subscription resource. + +
+
\ No newline at end of file diff --git a/www/src/content/docs/docs/component/aws/sns-topic-queue-subscriber.mdx b/www/src/content/docs/docs/component/aws/sns-topic-queue-subscriber.mdx new file mode 100644 index 000000000..4f7cfd492 --- /dev/null +++ b/www/src/content/docs/docs/component/aws/sns-topic-queue-subscriber.mdx @@ -0,0 +1,178 @@ +--- +title: SnsTopicQueueSubscriber +description: Reference doc for the `sst.aws.SnsTopicQueueSubscriber` component. +--- + +{/* DO NOT EDIT. AUTO-GENERATED FROM "pkg/platform/src/components/aws/sns-topic-queue-subscriber.ts" */} + +import Segment from '../../../../../../src/components/tsdoc/Segment.astro'; +import Section from '../../../../../../src/components/tsdoc/Section.astro'; +import NestedTitle from '../../../../../../src/components/tsdoc/NestedTitle.astro'; +import InlineSection from '../../../../../../src/components/tsdoc/InlineSection.astro'; + +
+ +
+The `SnsTopicQueueSubscriber` component is internally used by the `SnsTopic` component +to add subscriptions to [Amazon SNS topic](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html). + +:::caution +This component is not intended for public use. +::: + +You'll find this component returned by the `subscribe` method of the `SnsTopic` component. +
+ +--- + +## Constructor + + +
+```ts +new SnsTopicQueueSubscriber(name, args, opts?) +``` +
+ +
+#### Parameters +-

name string

+-

args [Args](#args)

+-

opts? [ComponentResourceOptions](https://www.pulumi.com/docs/concepts/options/)

+
+
+ +## Properties + +### nodes + +
+ +**Type** Object + +-

[policy](#nodes-policy)

+-

[subscription](#nodes-subscription)

+
+The underlying [resources](/docs/components/#nodes) this component creates. +
+policy + +
+ +**Type** [QueuePolicy](https://www.pulumi.com/registry/packages/aws/api-docs/sqs/queuepolicy/) + +
+The SQS queue policy. +
+subscription + +
+ +**Type** [TopicSubscription](https://www.pulumi.com/registry/packages/aws/api-docs/sns/topicsubscription/) + +
+The SNS topic subscription. +
+ +## Args +### filter? + +
+ +**Type** Input<Record<string, any>> + +
+Filter the messages that'll be processed by the subscriber. + +If any single property in the filter doesn't match +an attribute assigned to the message, then the policy rejects the message. + +:::tip +Learn more about [subscription filter policies](https://docs.aws.amazon.com/sns/latest/dg/sns-subscription-filter-policies.html). +::: + +For example, if your SNS topic message contains this in a JSON format. +```js +{ + store: "example_corp", + event: "order-placed", + customer_interests: [ + "soccer", + "rugby", + "hockey" + ], + price_usd: 210.75 +} +``` + +Then this filter policy accepts the message. + +```js +{ + filter: { + store: ["example_corp"], + event: [{"anything-but": "order_cancelled"}], + customer_interests: [ + "rugby", + "football", + "baseball" + ], + price_usd: [{numeric: [">=", 100]}] + } +} +``` +
+### queue + +
+ +**Type** Input<string> + +
+The ARN of the queue. + +
+### topic + +
+ +**Type** Input<Object> + +-

[arn](#topic-arn)

+
+The topic to use. + +
+arn + +
+ +**Type** Input<string> + +
+The ARN of the topic. + +
+### transform? + +
+ +**Type** Object + +-

[subscription?](#transform-subscription)

+
+[Transform](/docs/components#transform) how this subscription creates its underlying +resources. + +
+subscription? + +
+ +**Type** [TopicSubscriptionArgs](https://www.pulumi.com/registry/packages/aws/api-docs/sns/topicsubscription/#inputs) | (args: [TopicSubscriptionArgs](https://www.pulumi.com/registry/packages/aws/api-docs/sns/topicsubscription/#inputs) => void) + +
+Transform the SNS topic Subscription resource. + +
+
\ No newline at end of file diff --git a/www/src/content/docs/docs/component/aws/sns-topic.mdx b/www/src/content/docs/docs/component/aws/sns-topic.mdx index 421ea0b89..9bff41355 100644 --- a/www/src/content/docs/docs/component/aws/sns-topic.mdx +++ b/www/src/content/docs/docs/component/aws/sns-topic.mdx @@ -99,12 +99,12 @@ subscribe(subscriber, args?) #### Parameters -

subscriber string | [FunctionArgs](/docs/component/aws/function/#functionargs)

The function that'll be notified. --

args? [SnsTopicSubscribeArgs](#snstopicsubscribeargs)

+-

args? [SnsTopicSubscriberArgs](#snstopicsubscriberargs)

Configure the subscription. -**Returns** [SnsTopicFunctionSubscriber](#snstopicfunctionsubscriber) +**Returns** Output<[SnsTopicLambdaSubscriber](/docs/component/aws/sns-topic-lambda-subscriber/)> Subscribe to this SNS topic. @@ -144,12 +144,12 @@ subscribeQueue(queueArn, args?) #### Parameters -

queueArn Input<string>

The ARN of the queue that'll be notified. --

args? [SnsTopicSubscribeArgs](#snstopicsubscribeargs)

+-

args? [SnsTopicSubscriberArgs](#snstopicsubscriberargs)

Configure the subscription. -**Returns** [SnsTopicQueueSubscriber](#snstopicqueuesubscriber) +**Returns** Output<[SnsTopicQueueSubscriber](/docs/component/aws/sns-topic-queue-subscriber/)> Subscribe to this SNS topic with an SQS queue. @@ -190,12 +190,12 @@ SnsTopic.subscribe(topicArn, subscriber, args?) The ARN of the SNS topic to subscribe to. -

subscriber string | [FunctionArgs](/docs/component/aws/function/#functionargs)

The function that'll be notified. --

args? [SnsTopicSubscribeArgs](#snstopicsubscribeargs)

+-

args? [SnsTopicSubscriberArgs](#snstopicsubscriberargs)

Configure the subscription. -**Returns** [SnsTopicFunctionSubscriber](#snstopicfunctionsubscriber) +**Returns** Output<[SnsTopicLambdaSubscriber](/docs/component/aws/sns-topic-lambda-subscriber/)> Subscribe to an SNS topic that was not created in your app. @@ -245,12 +245,12 @@ SnsTopic.subscribeQueue(topicArn, queueArn, args?) The ARN of the SNS topic to subscribe to. -

queueArn Input<string>

The ARN of the queue that'll be notified. --

args? [SnsTopicSubscribeArgs](#snstopicsubscribeargs)

+-

args? [SnsTopicSubscriberArgs](#snstopicsubscriberargs)

Configure the subscription. -**Returns** [SnsTopicQueueSubscriber](#snstopicqueuesubscriber) +**Returns** Output<[SnsTopicQueueSubscriber](/docs/component/aws/sns-topic-queue-subscriber/)> Subscribe to an existing SNS topic with a previously created SQS queue. @@ -381,61 +381,7 @@ Transform the SNS topic resource.
-## SnsTopicFunctionSubscriber -### function - -
- -**Type** Output<[Function](/docs/component/aws/function/)> - -
-The Lambda function that'll be notified. - -
-### permission - -
- -**Type** Output<[Permission](https://www.pulumi.com/registry/packages/aws/api-docs/lambda/permission/)> - -
-The Lambda permission. - -
-### subscription - -
- -**Type** Output<[TopicSubscription](https://www.pulumi.com/registry/packages/aws/api-docs/sns/topicsubscription/)> - -
-The SNS topic subscription. - -
- -## SnsTopicQueueSubscriber -### policy - -
- -**Type** Output<[QueuePolicy](https://www.pulumi.com/registry/packages/aws/api-docs/sqs/queuepolicy/)> - -
-The SNS topic policy. - -
-### subscription - -
- -**Type** Output<[TopicSubscription](https://www.pulumi.com/registry/packages/aws/api-docs/sns/topicsubscription/)> - -
-The SNS topic subscription. - -
- -## SnsTopicSubscribeArgs +## SnsTopicSubscriberArgs ### filter?
diff --git a/www/src/content/docs/docs/component/aws/solid-start.mdx b/www/src/content/docs/docs/component/aws/solid-start.mdx index 776d5a165..f24ee4638 100644 --- a/www/src/content/docs/docs/component/aws/solid-start.mdx +++ b/www/src/content/docs/docs/component/aws/solid-start.mdx @@ -308,7 +308,7 @@ The default is set to not cache on browsers, and cache for 1 day on CloudFront.
-**Type** Input<none | utf-8 | iso-8859-1 | windows-1252 | ascii> +**Type** Input<none | ascii | utf-8 | iso-8859-1 | windows-1252>
diff --git a/www/src/content/docs/docs/component/aws/static-site.mdx b/www/src/content/docs/docs/component/aws/static-site.mdx index 72b68dfb6..f9edd9379 100644 --- a/www/src/content/docs/docs/component/aws/static-site.mdx +++ b/www/src/content/docs/docs/component/aws/static-site.mdx @@ -384,7 +384,7 @@ by the `files` glob pattern.
-**Type** Input<none | utf-8 | iso-8859-1 | windows-1252 | ascii> +**Type** Input<none | ascii | utf-8 | iso-8859-1 | windows-1252>
diff --git a/www/src/content/docs/docs/component/aws/svelte-kit.mdx b/www/src/content/docs/docs/component/aws/svelte-kit.mdx index 21d7bf1f7..5d53fc954 100644 --- a/www/src/content/docs/docs/component/aws/svelte-kit.mdx +++ b/www/src/content/docs/docs/component/aws/svelte-kit.mdx @@ -308,7 +308,7 @@ The default is set to not cache on browsers, and cache for 1 day on CloudFront.
-**Type** Input<none | utf-8 | iso-8859-1 | windows-1252 | ascii> +**Type** Input<none | ascii | utf-8 | iso-8859-1 | windows-1252>
From 342f0e38b0a4673b761acd8545f45ee91a94a8e1 Mon Sep 17 00:00:00 2001 From: Frank Date: Sat, 4 May 2024 02:41:00 -0400 Subject: [PATCH 21/41] Service: linkable --- pkg/platform/src/components/aws/cluster.ts | 13 +++++-------- pkg/platform/src/components/aws/service.ts | 17 ++++++----------- 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/pkg/platform/src/components/aws/cluster.ts b/pkg/platform/src/components/aws/cluster.ts index ca37c65ee..54c9e8126 100644 --- a/pkg/platform/src/components/aws/cluster.ts +++ b/pkg/platform/src/components/aws/cluster.ts @@ -738,8 +738,7 @@ export interface ClusterServiceArgs { * ``` */ export class Cluster extends Component { - private constructorName: string; - private constructorArgs: ClusterArgs; + private args: ClusterArgs; private cluster: aws.ecs.Cluster; constructor( @@ -753,8 +752,7 @@ export class Cluster extends Component { const cluster = createCluster(); - this.constructorName = name; - this.constructorArgs = args; + this.args = args; this.cluster = cluster; function createCluster() { @@ -819,14 +817,13 @@ export class Cluster extends Component { * ``` */ public addService(name: string, args?: ClusterServiceArgs) { - const prefix = this.constructorName; - return new Service(`${prefix}Service${name}`, { - name, + // Do not prefix the service to allow `Resource.MyService` to work. + return new Service(name, { cluster: { name: this.cluster.name, arn: this.cluster.arn, }, - vpc: this.constructorArgs.vpc, + vpc: this.args.vpc, ...args, }); } diff --git a/pkg/platform/src/components/aws/service.ts b/pkg/platform/src/components/aws/service.ts index 5da52469b..25fdd171b 100644 --- a/pkg/platform/src/components/aws/service.ts +++ b/pkg/platform/src/components/aws/service.ts @@ -42,10 +42,6 @@ export interface ServiceArgs extends ClusterServiceArgs { */ arn: Input; }>; - /** - * The name of the service. - */ - name: Input; /** * The VPC to use for the cluster. */ @@ -79,7 +75,6 @@ export class Service extends Component implements Link.Linkable { const self = this; - const serviceName = output(args.name); const cluster = output(args.cluster); const vpc = output(args.vpc); const region = normalizeRegion(); @@ -320,7 +315,7 @@ export class Service extends Component implements Link.Linkable { args: imageArgs.args, platform: imageArgs.platform, })), - imageName: interpolate`${repo.url}:${serviceName}`, + imageName: interpolate`${repo.url}:${name}`, registry: authToken.apply((authToken) => ({ password: secret(authToken.password), username: authToken.userName, @@ -434,7 +429,7 @@ export class Service extends Component implements Link.Linkable { return new aws.cloudwatch.LogGroup( `${name}LogGroup`, transform(args.transform?.logGroup, { - name: interpolate`/sst/cluster/${cluster.name}/${serviceName}`, + name: interpolate`/sst/cluster/${cluster.name}/${name}`, retentionInDays: logging.apply( (logging) => RETENTION[logging.retention], ), @@ -490,7 +485,7 @@ export class Service extends Component implements Link.Linkable { return new aws.ecs.TaskDefinition( `${name}Task`, transform(args.transform?.taskDefinition, { - family: interpolate`${cluster.name}-${serviceName}`, + family: interpolate`${cluster.name}-${name}`, trackLatest: true, cpu: cpu.apply((v) => toNumber(v).toString()), memory: memory.apply((v) => toMBs(v).toString()), @@ -507,7 +502,7 @@ export class Service extends Component implements Link.Linkable { taskRoleArn: taskRole.arn, containerDefinitions: $jsonStringify([ { - name: serviceName, + name, image: image.repoDigest, pseudoTerminal: true, portMappings: pub?.ports.apply((ports) => @@ -548,7 +543,7 @@ export class Service extends Component implements Link.Linkable { return new aws.ecs.Service( `${name}Service`, transform(args.transform?.service, { - name: serviceName, + name, cluster: cluster.arn, taskDefinition: taskDefinition.arn, desiredCount: scaling.min, @@ -567,7 +562,7 @@ export class Service extends Component implements Link.Linkable { targets.apply((targets) => Object.values(targets).map((target) => ({ targetGroupArn: target.arn, - containerName: serviceName, + containerName: name, containerPort: target.port.apply((port) => port!), })), ), From e98bdf421bbd37e89773c8f239d73ee014ea0e5c Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sun, 5 May 2024 12:41:03 -0400 Subject: [PATCH 22/41] bad decision --- examples/bad-decision/.gitignore | 4 ++++ examples/bad-decision/api/index.ts | 3 +++ examples/bad-decision/package.json | 7 +++++++ examples/bad-decision/sst.config.ts | 30 +++++++++++++++++++++++++++++ examples/bad-decision/tsconfig.json | 1 + 5 files changed, 45 insertions(+) create mode 100644 examples/bad-decision/.gitignore create mode 100644 examples/bad-decision/api/index.ts create mode 100644 examples/bad-decision/package.json create mode 100644 examples/bad-decision/sst.config.ts create mode 100644 examples/bad-decision/tsconfig.json diff --git a/examples/bad-decision/.gitignore b/examples/bad-decision/.gitignore new file mode 100644 index 000000000..312e2923a --- /dev/null +++ b/examples/bad-decision/.gitignore @@ -0,0 +1,4 @@ + +# sst +.sst +.vercel diff --git a/examples/bad-decision/api/index.ts b/examples/bad-decision/api/index.ts new file mode 100644 index 000000000..3a09fb3db --- /dev/null +++ b/examples/bad-decision/api/index.ts @@ -0,0 +1,3 @@ +export function GET(request: Request) { + return new Response("im sorry"); +} diff --git a/examples/bad-decision/package.json b/examples/bad-decision/package.json new file mode 100644 index 000000000..3501d2923 --- /dev/null +++ b/examples/bad-decision/package.json @@ -0,0 +1,7 @@ +{ + "name": "base-ts", + "version": "0.0.0", + "dependencies": { + "sst": "^3.0.4" + } +} diff --git a/examples/bad-decision/sst.config.ts b/examples/bad-decision/sst.config.ts new file mode 100644 index 000000000..447aad6b2 --- /dev/null +++ b/examples/bad-decision/sst.config.ts @@ -0,0 +1,30 @@ +/// + +export default $config({ + app(input) { + return { + name: "bad-decision", + removal: input?.stage === "production" ? "retain" : "remove", + home: "aws", + providers: { + "@pulumiverse/vercel": { + team: "12345678", + }, + }, + }; + }, + async run() { + const project = new vercel.Project("WebProject", { + name: "bad-decision", + }); + const dir = vercel.getProjectDirectoryOutput({ + path: process.cwd() + "/api", + }); + const deployment = new vercel.Deployment("WebDeployment", { + projectId: project.id, + production: $app.stage === "production", + files: dir.files, + pathPrefix: process.cwd(), + }); + }, +}); diff --git a/examples/bad-decision/tsconfig.json b/examples/bad-decision/tsconfig.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/examples/bad-decision/tsconfig.json @@ -0,0 +1 @@ +{} From 13b2aa01cfc13394a8b4dba2568f042474c5f7d2 Mon Sep 17 00:00:00 2001 From: Lukas Murdock Date: Sun, 5 May 2024 21:41:28 -0400 Subject: [PATCH 23/41] docs: aws-swift typos (#364) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: aws-swift example applicaiton → application * docs: aws-swift campatible → compatible --- examples/aws-swift/README.md | 2 +- examples/aws-swift/sst.config.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/aws-swift/README.md b/examples/aws-swift/README.md index 277c42a2c..b8a9d6ccc 100644 --- a/examples/aws-swift/README.md +++ b/examples/aws-swift/README.md @@ -6,7 +6,7 @@ Deploy Swift applications using sst ion. Building your application for deployment requires installing Docker. -When deploying with `sst deploy` your application will be build for Amazon Linux, ensuring its campatible with the AWS Lambda provided runtime. +When deploying with `sst deploy` your application will be build for Amazon Linux, ensuring its compatible with the AWS Lambda provided runtime. ## Deploy diff --git a/examples/aws-swift/sst.config.ts b/examples/aws-swift/sst.config.ts index 8bd0eaafb..e73e754cb 100644 --- a/examples/aws-swift/sst.config.ts +++ b/examples/aws-swift/sst.config.ts @@ -5,7 +5,7 @@ const swiftVersion = "5.10"; /** * ## Swift on Lambda * - * Deploys a simple Swift applicaiton to Lambda using the `al2023` runtime. + * Deploys a simple Swift application to Lambda using the `al2023` runtime. * * :::note * Building this function requires Docker. From 14c953ed187cb284c13483660738d4b4448587fc Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Mon, 6 May 2024 12:26:48 -0400 Subject: [PATCH 24/41] aws-supabase-drizzle example --- examples/aws-supabase-drizzle/.gitignore | 3 ++ .../aws-supabase-drizzle/drizzle.config.ts | 14 ++++++ .../migrations/0000_great_solo.sql | 5 +++ .../migrations/meta/0000_snapshot.json | 43 ++++++++++++++++++ .../migrations/meta/_journal.json | 13 ++++++ examples/aws-supabase-drizzle/package.json | 17 +++++++ examples/aws-supabase-drizzle/src/api.ts | 31 +++++++++++++ examples/aws-supabase-drizzle/src/drizzle.ts | 13 ++++++ examples/aws-supabase-drizzle/src/todo.sql.ts | 7 +++ examples/aws-supabase-drizzle/sst-env.d.ts | 14 ++++++ examples/aws-supabase-drizzle/sst.config.ts | 45 +++++++++++++++++++ examples/aws-supabase-drizzle/tsconfig.json | 5 +++ .../src/components/aws/solid-start.ts | 1 + pkg/project/install.go | 1 + 14 files changed, 212 insertions(+) create mode 100644 examples/aws-supabase-drizzle/.gitignore create mode 100644 examples/aws-supabase-drizzle/drizzle.config.ts create mode 100644 examples/aws-supabase-drizzle/migrations/0000_great_solo.sql create mode 100644 examples/aws-supabase-drizzle/migrations/meta/0000_snapshot.json create mode 100644 examples/aws-supabase-drizzle/migrations/meta/_journal.json create mode 100644 examples/aws-supabase-drizzle/package.json create mode 100644 examples/aws-supabase-drizzle/src/api.ts create mode 100644 examples/aws-supabase-drizzle/src/drizzle.ts create mode 100644 examples/aws-supabase-drizzle/src/todo.sql.ts create mode 100644 examples/aws-supabase-drizzle/sst-env.d.ts create mode 100644 examples/aws-supabase-drizzle/sst.config.ts create mode 100644 examples/aws-supabase-drizzle/tsconfig.json diff --git a/examples/aws-supabase-drizzle/.gitignore b/examples/aws-supabase-drizzle/.gitignore new file mode 100644 index 000000000..cc54d25a1 --- /dev/null +++ b/examples/aws-supabase-drizzle/.gitignore @@ -0,0 +1,3 @@ + +# sst +.sst diff --git a/examples/aws-supabase-drizzle/drizzle.config.ts b/examples/aws-supabase-drizzle/drizzle.config.ts new file mode 100644 index 000000000..7f110ab1a --- /dev/null +++ b/examples/aws-supabase-drizzle/drizzle.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from "drizzle-kit"; +import { Resource } from "sst"; +export default defineConfig({ + schema: ["./src/**/*.sql.ts"], + out: "./migrations", + dialect: "postgresql", + dbCredentials: { + host: Resource.Database.host, + database: Resource.Database.database, + port: Resource.Database.port, + user: Resource.Database.user, + password: Resource.Database.password, + }, +}); diff --git a/examples/aws-supabase-drizzle/migrations/0000_great_solo.sql b/examples/aws-supabase-drizzle/migrations/0000_great_solo.sql new file mode 100644 index 000000000..db52d6f17 --- /dev/null +++ b/examples/aws-supabase-drizzle/migrations/0000_great_solo.sql @@ -0,0 +1,5 @@ +CREATE TABLE IF NOT EXISTS "todo" ( + "id" serial PRIMARY KEY NOT NULL, + "title" text NOT NULL, + "description" text +); diff --git a/examples/aws-supabase-drizzle/migrations/meta/0000_snapshot.json b/examples/aws-supabase-drizzle/migrations/meta/0000_snapshot.json new file mode 100644 index 000000000..64994dcf9 --- /dev/null +++ b/examples/aws-supabase-drizzle/migrations/meta/0000_snapshot.json @@ -0,0 +1,43 @@ +{ + "id": "60c8abb1-7e2d-4b3d-8bc3-68b4a51c8fb8", + "prevId": "00000000-0000-0000-0000-000000000000", + "version": "6", + "dialect": "postgresql", + "tables": { + "public.todo": { + "name": "todo", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "title": { + "name": "title", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + } + }, + "enums": {}, + "schemas": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} \ No newline at end of file diff --git a/examples/aws-supabase-drizzle/migrations/meta/_journal.json b/examples/aws-supabase-drizzle/migrations/meta/_journal.json new file mode 100644 index 000000000..6088d1cbd --- /dev/null +++ b/examples/aws-supabase-drizzle/migrations/meta/_journal.json @@ -0,0 +1,13 @@ +{ + "version": "5", + "dialect": "pg", + "entries": [ + { + "idx": 0, + "version": "6", + "when": 1715012302701, + "tag": "0000_great_solo", + "breakpoints": true + } + ] +} \ No newline at end of file diff --git a/examples/aws-supabase-drizzle/package.json b/examples/aws-supabase-drizzle/package.json new file mode 100644 index 000000000..851aff8e6 --- /dev/null +++ b/examples/aws-supabase-drizzle/package.json @@ -0,0 +1,17 @@ +{ + "name": "aws-planetscale-drizzle", + "version": "0.0.0", + "type": "module", + "scripts": { + "db": "sst shell drizzle-kit", + "db:studio": "sst shell drizzle-kit studio", + "db:migrate": "sst shell drizzle-kit migrate" + }, + "dependencies": { + "@aws-sdk/client-rds-data": "^3.564.0", + "drizzle-kit": "0.20.17-679add7", + "drizzle-orm": "^0.30.9", + "postgres": "^3.4.4", + "sst": "^3.0.4" + } +} diff --git a/examples/aws-supabase-drizzle/src/api.ts b/examples/aws-supabase-drizzle/src/api.ts new file mode 100644 index 000000000..b4abb9a66 --- /dev/null +++ b/examples/aws-supabase-drizzle/src/api.ts @@ -0,0 +1,31 @@ +import { db } from "./drizzle"; +import { todo } from "./todo.sql"; +import { APIGatewayProxyHandlerV2 } from "aws-lambda"; +import { randomUUID } from "node:crypto"; + +export const handler: APIGatewayProxyHandlerV2 = async (evt) => { + if (evt.requestContext.http.method === "GET") { + const result = await db.select().from(todo).execute(); + return { + statusCode: 200, + body: JSON.stringify(result), + }; + } + + if (evt.requestContext.http.method === "POST") { + const result = await db + .insert(todo) + .values({ title: "new todo " + randomUUID() }) + .returning() + .execute(); + return { + statusCode: 200, + body: JSON.stringify(result), + }; + } + + return { + statusCode: 404, + body: "not found", + }; +}; diff --git a/examples/aws-supabase-drizzle/src/drizzle.ts b/examples/aws-supabase-drizzle/src/drizzle.ts new file mode 100644 index 000000000..72efbb6aa --- /dev/null +++ b/examples/aws-supabase-drizzle/src/drizzle.ts @@ -0,0 +1,13 @@ +import { drizzle } from "drizzle-orm/postgres-js"; +import { Resource } from "sst"; +import postgres from "postgres"; + +const client = postgres({ + password: Resource.Database.password, + user: Resource.Database.user, + port: Resource.Database.port, + host: Resource.Database.host, + db: "postgres", +}); + +export const db = drizzle(client); diff --git a/examples/aws-supabase-drizzle/src/todo.sql.ts b/examples/aws-supabase-drizzle/src/todo.sql.ts new file mode 100644 index 000000000..1de457f10 --- /dev/null +++ b/examples/aws-supabase-drizzle/src/todo.sql.ts @@ -0,0 +1,7 @@ +import { pgTable, text, serial } from "drizzle-orm/pg-core"; + +export const todo = pgTable("todo", { + id: serial("id").primaryKey(), + title: text("title").notNull(), + description: text("description"), +}); diff --git a/examples/aws-supabase-drizzle/sst-env.d.ts b/examples/aws-supabase-drizzle/sst-env.d.ts new file mode 100644 index 000000000..1c953f021 --- /dev/null +++ b/examples/aws-supabase-drizzle/sst-env.d.ts @@ -0,0 +1,14 @@ +/* tslint:disable *//* eslint-disable */import "sst" +declare module "sst" { + export interface Resource { + Database: { + database: string + host: string + password: string + port: number + type: "supabase.index/project.Project" + user: string + } + } +} +export {} \ No newline at end of file diff --git a/examples/aws-supabase-drizzle/sst.config.ts b/examples/aws-supabase-drizzle/sst.config.ts new file mode 100644 index 000000000..9e2742984 --- /dev/null +++ b/examples/aws-supabase-drizzle/sst.config.ts @@ -0,0 +1,45 @@ +/// +export default $config({ + app(input) { + return { + name: "aws-supabase-drizzle", + removal: input?.stage === "production" ? "retain" : "remove", + home: "aws", + providers: { + "@sst-provider/supabase": { + accessToken: process.env.SUPABASE_ACCESS_TOKEN, + }, + random: true, + }, + }; + }, + async run() { + $linkable(supabase.Project, function () { + return { + properties: { + user: $interpolate`postgres.${this.id}`, + password: this.databasePassword, + host: $interpolate`aws-0-${this.region}.pooler.supabase.com`, + port: 5432, + database: "postgres", + }, + }; + }); + const project = new supabase.Project("Database", { + name: $interpolate`${$app.name}-${$app.stage}`, + region: "us-east-1", + organizationId: process.env.SUPABASE_ORG_ID!, + databasePassword: new random.RandomString("DatabasePassword", { + length: 16, + }).result, + }); + const api = new sst.aws.Function("Api", { + url: true, + handler: "./src/api.handler", + link: [project], + }); + return { + url: api.url, + }; + }, +}); diff --git a/examples/aws-supabase-drizzle/tsconfig.json b/examples/aws-supabase-drizzle/tsconfig.json new file mode 100644 index 000000000..b6955c086 --- /dev/null +++ b/examples/aws-supabase-drizzle/tsconfig.json @@ -0,0 +1,5 @@ +{ + "compilerOptions": { + "esModuleInterop": true, + } +} diff --git a/pkg/platform/src/components/aws/solid-start.ts b/pkg/platform/src/components/aws/solid-start.ts index aebb598cb..fad845c0b 100644 --- a/pkg/platform/src/components/aws/solid-start.ts +++ b/pkg/platform/src/components/aws/solid-start.ts @@ -403,6 +403,7 @@ export class SolidStart extends Component implements Link.Linkable { const serverConfig = { description: "Server handler for Solid", handler: path.join(outputPath, ".output", "server", "index.handler"), + streaming: true, }; return validatePlan({ diff --git a/pkg/project/install.go b/pkg/project/install.go index 445fcdcee..e117920f3 100644 --- a/pkg/project/install.go +++ b/pkg/project/install.go @@ -23,6 +23,7 @@ func getProviderPackage(name string) string { func cleanProviderName(name string) string { result := regexp.MustCompile("[^a-zA-Z0-9]+").ReplaceAllString(name, "") + result = strings.ReplaceAll(result, "pulumiverse", "") result = strings.ReplaceAll(result, "pulumi", "") result = strings.ReplaceAll(result, "sstprovider", "") return result From 4066c6a53734bfab369db4887f3c55d72d897f02 Mon Sep 17 00:00:00 2001 From: Jay V Date: Mon, 6 May 2024 12:29:03 -0400 Subject: [PATCH 25/41] Docs api route defaults --- examples/aws-drizzle/sst-env.d.ts | 4 +- .../src/components/aws/apigatewayv2.ts | 75 ++++++++++++++++--- .../docs/docs/component/aws/apigatewayv2.mdx | 68 +++++++++++++++-- .../docs/docs/component/aws/cluster.mdx | 2 +- .../docs/docs/component/aws/service.mdx | 2 +- www/src/content/docs/docs/examples.mdx | 2 +- 6 files changed, 133 insertions(+), 20 deletions(-) diff --git a/examples/aws-drizzle/sst-env.d.ts b/examples/aws-drizzle/sst-env.d.ts index c5e8e6325..7bf9eace9 100644 --- a/examples/aws-drizzle/sst-env.d.ts +++ b/examples/aws-drizzle/sst-env.d.ts @@ -1,7 +1,7 @@ -import "sst" +/* tslint:disable *//* eslint-disable */import "sst" declare module "sst" { export interface Resource { - Postgres: { + MyPostgres: { clusterArn: string database: string secretArn: string diff --git a/pkg/platform/src/components/aws/apigatewayv2.ts b/pkg/platform/src/components/aws/apigatewayv2.ts index 7c4b42710..35b3b0501 100644 --- a/pkg/platform/src/components/aws/apigatewayv2.ts +++ b/pkg/platform/src/components/aws/apigatewayv2.ts @@ -92,19 +92,40 @@ export interface ApiGatewayV2Args { */ accessLog?: Transform; /** - * Transform the routes. This can be used to customize the handler function and - * the arguments for each route. + * Transform the routes. This is called for every route that is added. + * + * :::note + * This is applied right before the resource is created. So it overrides the + * props set by the route. + * ::: + * + * You can use this to set any common props for all the routes and their handler function. + * Like the other transforms, you can either pass in an object or a callback. * * @example + * + * Here we are ensuring that all handler functions of our routes have a memory of `2048 MB`. + * * ```js * { * transform: { * route: { * handler: { - * link: [bucket, stripeKey] + * memory: "2048 MB" * }, - * args: { - * auth: { iam: true } + * } + * } + * } + * ``` + * + * Enable IAM auth for all our routes. + * + * ```js + * { + * transform: { + * route: { + * args: (props) => { + * props.auth = { iam: true }; * } * } * } @@ -113,7 +134,7 @@ export interface ApiGatewayV2Args { */ route?: { /** - * Transform the handler function for the route. + * Transform the handler function of the route. */ handler?: Transform; /** @@ -250,6 +271,42 @@ export interface ApiGatewayV2RouteArgs { * api.route("GET /", "src/get.handler"); * api.route("POST /", "src/post.handler"); * ``` + * + * #### Configure the routes + * + * You can configure the route and its handler function. + * + * ```ts + * api.route("GET /", "src/get.handler", { auth: { iam: true } }); + * api.route("POST /", { handler: "src/post.handler", memory: "2048 MB" }); + * ``` + * + * #### Set defaults for all routes + * + * You can use the `transform` to set some defaults for all your routes. For example, + * instead of setting the `memory` for each route. + * + * ```ts + * api.route("GET /", { handler: "src/get.handler", memory: "2048 MB" }); + * api.route("POST /", { handler: "src/post.handler", memory: "2048 MB" }); + * ``` + * + * You can set it through the `transform`. + * + * ```ts {5} + * new sst.aws.ApiGatewayV2("MyApi", { + * transform: { + * route: { + * handler: { + * memory: "2048 MB" + * } + * } + * } + * }); + * + * api.route("GET /", "src/get.handler"); + * api.route("POST /", "src/post.handler"); + * ``` */ export class ApiGatewayV2 extends Component implements Link.Linkable { private constructorName: string; @@ -482,9 +539,9 @@ export class ApiGatewayV2 extends Component implements Link.Linkable { // trailing slash, the API fails with the error {"message":"Not Found"} return this.apigDomain && this.apiMapping ? all([this.apigDomain.domainName, this.apiMapping.apiMappingKey]).apply( - ([domain, key]) => - key ? `https://${domain}/${key}/` : `https://${domain}`, - ) + ([domain, key]) => + key ? `https://${domain}/${key}/` : `https://${domain}`, + ) : this.api.apiEndpoint; } diff --git a/www/src/content/docs/docs/component/aws/apigatewayv2.mdx b/www/src/content/docs/docs/component/aws/apigatewayv2.mdx index 55e05f699..979a3813c 100644 --- a/www/src/content/docs/docs/component/aws/apigatewayv2.mdx +++ b/www/src/content/docs/docs/component/aws/apigatewayv2.mdx @@ -32,6 +32,42 @@ new sst.aws.ApiGatewayV2("MyApi", { #### Add routes ```ts +api.route("GET /", "src/get.handler"); +api.route("POST /", "src/post.handler"); +``` + +#### Configure the routes + +You can configure the route and its handler function. + +```ts +api.route("GET /", "src/get.handler", { auth: { iam: true } }); +api.route("POST /", { handler: "src/post.handler", memory: "2048 MB" }); +``` + +#### Set defaults for all routes + +You can use the `transform` to set some defaults for all your routes. For example, +instead of setting the `memory` for each route. + +```ts +api.route("GET /", { handler: "src/get.handler", memory: "2048 MB" }); +api.route("POST /", { handler: "src/post.handler", memory: "2048 MB" }); +``` + +You can set it through the `transform`. + +```ts {5} +new sst.aws.ApiGatewayV2("MyApi", { + transform: { + route: { + handler: { + memory: "2048 MB" + } + } + } +}); + api.route("GET /", "src/get.handler"); api.route("POST /", "src/post.handler"); ``` @@ -492,18 +528,38 @@ Transform the API Gateway HTTP API domain name resource. **Type** Object
-Transform the routes. This can be used to customize the handler function and -the arguments for each route. +Transform the routes. This is called for every route that is added. + +:::note +This is applied right before the resource is created. So it overrides the +props set by the route. +::: + +You can use this to set any common props for all the routes and their handler function. +Like the other transforms, you can either pass in an object or a callback. + +Here we are ensuring that all handler functions of our routes have a memory of `2048 MB`. ```js { transform: { route: { handler: { - link: [bucket, stripeKey] + memory: "2048 MB" }, - args: { - auth: { iam: true } + } + } +} +``` + +Enable IAM auth for all our routes. + +```js +{ + transform: { + route: { + args: (props) => { + props.auth = { iam: true }; } } } @@ -527,7 +583,7 @@ Transform the arguments for the route. **Type** [FunctionArgs](/docs/component/aws/function/#functionargs) | (args: [FunctionArgs](/docs/component/aws/function/#functionargs) => void) -Transform the handler function for the route. +Transform the handler function of the route.
stage? diff --git a/www/src/content/docs/docs/component/aws/cluster.mdx b/www/src/content/docs/docs/component/aws/cluster.mdx index bdfda135a..0d498784b 100644 --- a/www/src/content/docs/docs/component/aws/cluster.mdx +++ b/www/src/content/docs/docs/component/aws/cluster.mdx @@ -661,7 +661,7 @@ To manually set up a domain on an unsupported provider, you'll need to: The DNS provider to use for the domain. Defaults to the AWS. -Takes an adapter that can create the DNS records on the provider. This can automate +Takes an adapter that can create the DNS records on the provider. This can automate validating the domain and setting up the DNS routing. Supports Route 53, Cloudflare, and Vercel adapters. For other providers, you'll need diff --git a/www/src/content/docs/docs/component/aws/service.mdx b/www/src/content/docs/docs/component/aws/service.mdx index 58b429fa4..d0a7d1d75 100644 --- a/www/src/content/docs/docs/component/aws/service.mdx +++ b/www/src/content/docs/docs/component/aws/service.mdx @@ -586,7 +586,7 @@ To manually set up a domain on an unsupported provider, you'll need to: The DNS provider to use for the domain. Defaults to the AWS. -Takes an adapter that can create the DNS records on the provider. This can automate +Takes an adapter that can create the DNS records on the provider. This can automate validating the domain and setting up the DNS routing. Supports Route 53, Cloudflare, and Vercel adapters. For other providers, you'll need diff --git a/www/src/content/docs/docs/examples.mdx b/www/src/content/docs/docs/examples.mdx index 77677f90a..66f0ef518 100644 --- a/www/src/content/docs/docs/examples.mdx +++ b/www/src/content/docs/docs/examples.mdx @@ -360,7 +360,7 @@ View the [full example](https://github.com/sst/ion/tree/dev/examples/aws-static- --- ## Swift on Lambda -Deploys a simple Swift applicaiton to Lambda using the `al2023` runtime. +Deploys a simple Swift application to Lambda using the `al2023` runtime. :::note Building this function requires Docker. From f53bd76c0a8f891edd5e0e1396db0c7cdb2e641c Mon Sep 17 00:00:00 2001 From: Jay V Date: Mon, 6 May 2024 13:47:57 -0400 Subject: [PATCH 26/41] Docs types --- examples/aws-drizzle/drizzle.config.ts | 1 + examples/aws-drizzle/package.json | 4 +-- examples/aws-drizzle/src/api.ts | 8 +++--- examples/aws-drizzle/sst.config.ts | 3 +- www/src/content/docs/docs/linking.mdx | 9 +++--- .../content/docs/docs/start/aws/drizzle.mdx | 28 +++++++++++++++++++ 6 files changed, 41 insertions(+), 12 deletions(-) create mode 100644 www/src/content/docs/docs/start/aws/drizzle.mdx diff --git a/examples/aws-drizzle/drizzle.config.ts b/examples/aws-drizzle/drizzle.config.ts index e050d4c3d..effd339b5 100644 --- a/examples/aws-drizzle/drizzle.config.ts +++ b/examples/aws-drizzle/drizzle.config.ts @@ -9,6 +9,7 @@ export default defineConfig({ secretArn: Resource.MyPostgres.secretArn, resourceArn: Resource.MyPostgres.clusterArn, }, + // Pick up all our schema files schema: ["./src/**/*.sql.ts"], out: "./migrations", }); diff --git a/examples/aws-drizzle/package.json b/examples/aws-drizzle/package.json index bf85c39af..039046182 100644 --- a/examples/aws-drizzle/package.json +++ b/examples/aws-drizzle/package.json @@ -3,11 +3,11 @@ "version": "0.0.0", "scripts": { "db": "sst shell drizzle-kit", - "db:studio": "sst shell drizzle-kit studio", - "db:migrate": "sst shell drizzle-kit migrate" + "db:studio": "sst shell drizzle-kit studio" }, "dependencies": { "@aws-sdk/client-rds-data": "^3.564.0", + "@types/aws-lambda": "^8.10.137", "drizzle-kit": "0.20.17-e38e63d", "drizzle-orm": "^0.30.10", "sst": "^3.0.4" diff --git a/examples/aws-drizzle/src/api.ts b/examples/aws-drizzle/src/api.ts index 96382c8a2..bf94ad7dd 100644 --- a/examples/aws-drizzle/src/api.ts +++ b/examples/aws-drizzle/src/api.ts @@ -1,21 +1,21 @@ import { db } from "./drizzle"; import { todo } from "./todo.sql"; -// import { randomUUID } from "node:crypto"; import { APIGatewayProxyHandlerV2 } from "aws-lambda"; export const handler: APIGatewayProxyHandlerV2 = async (evt) => { if (evt.requestContext.http.method === "GET") { const result = await db.select().from(todo).execute(); + return { statusCode: 200, - body: JSON.stringify(result), + body: JSON.stringify(result, null, 2), }; } if (evt.requestContext.http.method === "POST") { const result = await db .insert(todo) - .values({ title: "new todo " + crypto.randomUUID() }) + .values({ title: "Todo", description: crypto.randomUUID() }) .returning() .execute(); @@ -27,6 +27,6 @@ export const handler: APIGatewayProxyHandlerV2 = async (evt) => { return { statusCode: 404, - body: "not found", + body: "Not found", }; }; diff --git a/examples/aws-drizzle/sst.config.ts b/examples/aws-drizzle/sst.config.ts index ba77a8d7f..bdd2c8df4 100644 --- a/examples/aws-drizzle/sst.config.ts +++ b/examples/aws-drizzle/sst.config.ts @@ -13,8 +13,9 @@ export default $config({ const api = new sst.aws.Function("MyApi", { url: true, link: [rds], - handler: "./src/api.handler", + handler: "src/api.handler", }); + return { url: api.url, }; diff --git a/www/src/content/docs/docs/linking.mdx b/www/src/content/docs/docs/linking.mdx index e80351b91..f8bec3b32 100644 --- a/www/src/content/docs/docs/linking.mdx +++ b/www/src/content/docs/docs/linking.mdx @@ -149,10 +149,9 @@ This is why when you are running your frontend locally, it needs to be wrapped i ### Generating types -When you run `sst dev` or `sst deploy`, SST generates the types to access the linked resources. These are generated in a `.sst/types.generated.ts` file. +When you run `sst dev` or `sst deploy`, it generates the types to access the linked resources. These are generated as: -:::tip -If your types are not automatically getting picked up, make sure there is a `sst-env.d.ts` file in your project root. -::: +1. A `sst-env.d.ts` file in the same directory of the nearest `package.json` of the function or frontend that's _receiving_ the links. This contains the types for the resources that are linked to it. +2. A `.sst/types.generated.ts` file that can be referenced from a `sst-env.d.ts`. This is useful for monorepo packages that don't have a function or frontend. For example, if you have a _core_ package that contains some shared code. -This file is referenced using a `sst-env.d.ts` in your project root. The `sst-env.d.ts` should be added when you initialize your app with `sst init`. +You can check the generated `sst-env.d.ts` types into source control. This will let your teammates see the types without having to run `sst dev` when they pull your changes. diff --git a/www/src/content/docs/docs/start/aws/drizzle.mdx b/www/src/content/docs/docs/start/aws/drizzle.mdx new file mode 100644 index 000000000..5946fa7b5 --- /dev/null +++ b/www/src/content/docs/docs/start/aws/drizzle.mdx @@ -0,0 +1,28 @@ +--- +title: Drizzle +draft: true +--- + +- Create a new Node project +- Init sst +- npm i drizzle-orm +- npm i -D drizzle-kit +- Add scripts to package.json +- @aws-sdk/client-rds-data +- @types/aws-lambda +- todo.sql.ts +- drizzle.config.ts + - Note: pickup all schemas +- npm run db generate + +ORM +- drizzle.ts +- api.ts + +Test +- curl -X POST +- curl + +Studio +- npm run db studio +- screenshot From 7db0101cf9ffd4f701f49d4db9af7522bd182f77 Mon Sep 17 00:00:00 2001 From: Jay V Date: Mon, 6 May 2024 14:12:37 -0400 Subject: [PATCH 27/41] Docs --- pkg/platform/src/components/aws/queue.ts | 4 ++-- www/src/content/docs/docs/component/aws/queue.mdx | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pkg/platform/src/components/aws/queue.ts b/pkg/platform/src/components/aws/queue.ts index 2a88e7847..78fef4058 100644 --- a/pkg/platform/src/components/aws/queue.ts +++ b/pkg/platform/src/components/aws/queue.ts @@ -152,8 +152,7 @@ export interface QueueSubscriberArgs { */ export class Queue extends Component - implements Link.Linkable, Link.AWS.Linkable -{ + implements Link.Linkable, Link.AWS.Linkable { private constructorName: string; private queue: aws.sqs.Queue; private isSubscribed: boolean = false; @@ -220,6 +219,7 @@ export class Queue * * ```js * queue.subscribe("src/subscriber.handler"); + * ``` * * Add a filter to the subscription. * diff --git a/www/src/content/docs/docs/component/aws/queue.mdx b/www/src/content/docs/docs/component/aws/queue.mdx index cd64014ea..9b8a2502c 100644 --- a/www/src/content/docs/docs/component/aws/queue.mdx +++ b/www/src/content/docs/docs/component/aws/queue.mdx @@ -106,6 +106,7 @@ Subscribe to this queue. ```js queue.subscribe("src/subscriber.handler"); +``` Add a filter to the subscription. From 3ab7a3f3791c6cd97badb43141e2a2eeaa6f45fc Mon Sep 17 00:00:00 2001 From: Jay V Date: Mon, 6 May 2024 14:53:40 -0400 Subject: [PATCH 28/41] Docs sidebar styles --- www/astro.config.mjs | 30 +++++++++++++++--------------- www/src/custom.css | 1 + 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/www/astro.config.mjs b/www/astro.config.mjs index c58773968..ab2643fdb 100644 --- a/www/astro.config.mjs +++ b/www/astro.config.mjs @@ -112,7 +112,6 @@ const sidebar = [ label: "Internal", collapsed: true, items: [ - { label: "Cdn", link: "/docs/component/aws/cdn/" }, { label: "Dns", items: [ @@ -127,42 +126,43 @@ const sidebar = [ }, ], }, + { label: "Cdn", link: "/docs/component/aws/cdn/" }, { label: "Service", link: "/docs/component/aws/service/" }, - { - label: "AppSyncFunction", - link: "/docs/component/aws/app-sync-function/", - }, { label: "AppSyncResolver", link: "/docs/component/aws/app-sync-resolver/", }, + { + label: "AppSyncFunction", + link: "/docs/component/aws/app-sync-function/", + }, { label: "AppSyncDataSource", link: "/docs/component/aws/app-sync-data-source/", }, { - label: "BucketLambdaSubscriber", - link: "/docs/component/aws/bucket-lambda-subscriber/", + label: "CognitoUserPoolClient", + link: "/docs/component/aws/cognito-user-pool-client/", }, { label: "QueueLambdaSubscriber", link: "/docs/component/aws/queue-lambda-subscriber/", }, { - label: "DynamoLambdaSubscriber", - link: "/docs/component/aws/dynamo-lambda-subscriber/", - }, - { - label: "SnsTopicLambdaSubscriber", - link: "/docs/component/aws/sns-topic-lambda-subscriber/", + label: "BucketLambdaSubscriber", + link: "/docs/component/aws/bucket-lambda-subscriber/", }, { label: "SnsTopicQueueSubscriber", link: "/docs/component/aws/sns-topic-queue-subscriber/", }, { - label: "CognitoUserPoolClient", - link: "/docs/component/aws/cognito-user-pool-client/", + label: "DynamoLambdaSubscriber", + link: "/docs/component/aws/dynamo-lambda-subscriber/", + }, + { + label: "SnsTopicLambdaSubscriber", + link: "/docs/component/aws/sns-topic-lambda-subscriber/", }, { label: "ApiGatewayV2LambdaRoute", diff --git a/www/src/custom.css b/www/src/custom.css index dcc99db08..dc8086d09 100644 --- a/www/src/custom.css +++ b/www/src/custom.css @@ -3,6 +3,7 @@ --sat: 28%; --content-width: 58.75rem; + --sl-sidebar-width: 19.25rem; --sl-font: 'Rubik Variable'; --sl-font-mono: 'IBM Plex Mono'; From 367ee5d63ee07c4fc7e2a7a483054f4664535777 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Mon, 6 May 2024 17:47:01 -0400 Subject: [PATCH 29/41] add Resource.App field --- cmd/sst/main.go | 1 + examples/aws-hono/index.ts | 1 + examples/aws-hono/sst-env.d.ts | 2 +- examples/aws-solid-start/.gitignore | 29 + examples/aws-solid-start/README.md | 32 + examples/aws-solid-start/app.config.ts | 7 + examples/aws-solid-start/bun.lockb | Bin 0 -> 218705 bytes examples/aws-solid-start/package.json | 18 + examples/aws-solid-start/public/favicon.ico | Bin 0 -> 664 bytes .../public/img/android-chrome-192x192.png | Bin 0 -> 9715 bytes .../public/img/android-chrome-512x512.png | Bin 0 -> 34283 bytes .../public/img/apple-touch-icon.png | Bin 0 -> 8999 bytes .../public/img/favicon-16x16.png | Bin 0 -> 664 bytes .../public/img/favicon-32x32.png | Bin 0 -> 1456 bytes .../public/img/mstile-150x150.png | Bin 0 -> 7085 bytes .../public/manifest.webmanifest | 20 + examples/aws-solid-start/public/robots.txt | 2 + examples/aws-solid-start/public/sw.js | 14 + examples/aws-solid-start/src/app.css | 307 + examples/aws-solid-start/src/app.tsx | 22 + .../src/components/comment.tsx | 23 + .../aws-solid-start/src/components/nav.tsx | 30 + .../aws-solid-start/src/components/story.tsx | 41 + .../aws-solid-start/src/components/toggle.tsx | 16 + examples/aws-solid-start/src/entry-client.tsx | 11 + examples/aws-solid-start/src/entry-server.tsx | 21 + examples/aws-solid-start/src/global.d.ts | 1 + examples/aws-solid-start/src/lib/api.ts | 55 + .../src/routes/[...stories].tsx | 56 + .../src/routes/stories/[id].tsx | 40 + .../aws-solid-start/src/routes/users/[id].tsx | 37 + examples/aws-solid-start/src/types.ts | 29 + examples/aws-solid-start/sst.config.ts | 21 + examples/aws-solid-start/tsconfig.json | 19 + examples/aws-supabase-drizzle/sst.config.ts | 2 +- .../internal/streaming-problem/sst.config.ts | 5 + package-lock.json | 16519 ---------------- pkg/platform/src/components/aws/function.ts | 4 + pkg/platform/src/components/aws/service.ts | 7 + .../src/components/cloudflare/worker.ts | 7 + sdk/js/package.json | 2 +- sdk/js/src/auth/handler.ts | 10 +- sdk/js/src/auth/session.ts | 1 + sdk/js/src/resource.ts | 13 +- sdk/js/src/vector-client.ts | 14 +- 45 files changed, 905 insertions(+), 16534 deletions(-) create mode 100644 examples/aws-solid-start/.gitignore create mode 100644 examples/aws-solid-start/README.md create mode 100644 examples/aws-solid-start/app.config.ts create mode 100755 examples/aws-solid-start/bun.lockb create mode 100644 examples/aws-solid-start/package.json create mode 100644 examples/aws-solid-start/public/favicon.ico create mode 100644 examples/aws-solid-start/public/img/android-chrome-192x192.png create mode 100644 examples/aws-solid-start/public/img/android-chrome-512x512.png create mode 100644 examples/aws-solid-start/public/img/apple-touch-icon.png create mode 100644 examples/aws-solid-start/public/img/favicon-16x16.png create mode 100644 examples/aws-solid-start/public/img/favicon-32x32.png create mode 100644 examples/aws-solid-start/public/img/mstile-150x150.png create mode 100644 examples/aws-solid-start/public/manifest.webmanifest create mode 100644 examples/aws-solid-start/public/robots.txt create mode 100644 examples/aws-solid-start/public/sw.js create mode 100644 examples/aws-solid-start/src/app.css create mode 100644 examples/aws-solid-start/src/app.tsx create mode 100644 examples/aws-solid-start/src/components/comment.tsx create mode 100644 examples/aws-solid-start/src/components/nav.tsx create mode 100644 examples/aws-solid-start/src/components/story.tsx create mode 100644 examples/aws-solid-start/src/components/toggle.tsx create mode 100644 examples/aws-solid-start/src/entry-client.tsx create mode 100644 examples/aws-solid-start/src/entry-server.tsx create mode 100644 examples/aws-solid-start/src/global.d.ts create mode 100644 examples/aws-solid-start/src/lib/api.ts create mode 100644 examples/aws-solid-start/src/routes/[...stories].tsx create mode 100644 examples/aws-solid-start/src/routes/stories/[id].tsx create mode 100644 examples/aws-solid-start/src/routes/users/[id].tsx create mode 100644 examples/aws-solid-start/src/types.ts create mode 100644 examples/aws-solid-start/sst.config.ts create mode 100644 examples/aws-solid-start/tsconfig.json delete mode 100644 package-lock.json diff --git a/cmd/sst/main.go b/cmd/sst/main.go index 7191c234a..f0d06dc29 100644 --- a/cmd/sst/main.go +++ b/cmd/sst/main.go @@ -970,6 +970,7 @@ var Root = Command{ envVar := fmt.Sprintf("SST_RESOURCE_%s=%s", resource, jsonValue) cmd.Env = append(cmd.Env, envVar) } + cmd.Env = append(cmd.Env, fmt.Sprintf(`SST_RESOURCE_App={"name": "%s", "stage": "%s" }`, p.App().Name, p.App().Stage)) for key, val := range p.Env() { key = strings.ReplaceAll(key, "SST_", "") diff --git a/examples/aws-hono/index.ts b/examples/aws-hono/index.ts index 0fe9c4725..7ecce1b73 100644 --- a/examples/aws-hono/index.ts +++ b/examples/aws-hono/index.ts @@ -13,6 +13,7 @@ const s3 = new S3Client({}); const app = new Hono() .get("/", async (c) => { + console.log(Resource.App); const command = new PutObjectCommand({ Key: crypto.randomUUID(), Bucket: Resource.MyBucket.name, diff --git a/examples/aws-hono/sst-env.d.ts b/examples/aws-hono/sst-env.d.ts index f427da8b4..4d130387e 100644 --- a/examples/aws-hono/sst-env.d.ts +++ b/examples/aws-hono/sst-env.d.ts @@ -1,4 +1,4 @@ -import "sst" +/* tslint:disable *//* eslint-disable */import "sst" declare module "sst" { export interface Resource { MyBucket: { diff --git a/examples/aws-solid-start/.gitignore b/examples/aws-solid-start/.gitignore new file mode 100644 index 000000000..274662817 --- /dev/null +++ b/examples/aws-solid-start/.gitignore @@ -0,0 +1,29 @@ + +dist +.solid +.output +.vercel +.netlify +netlify +.vinxi + +# Environment +.env +.env*.local + +# dependencies +/node_modules + +# IDEs and editors +/.idea +.project +.classpath +*.launch +.settings/ + +# Temp +gitignore + +# System Files +.DS_Store +Thumbs.db diff --git a/examples/aws-solid-start/README.md b/examples/aws-solid-start/README.md new file mode 100644 index 000000000..af8462f9d --- /dev/null +++ b/examples/aws-solid-start/README.md @@ -0,0 +1,32 @@ +# SolidStart Hackernews Example + +Everything you need to build a Solid project, powered by [`solid-start`](https://start.solidjs.com); + +## Creating a project + +```bash +# create a new project in the current directory +npm init solid@latest + +# create a new project in my-app +npm init solid@latest my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```bash +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` + +## Building + +Solid apps are built with _presets_, which optimise your project for deployment to different environments. + +By default, `npm run build` will generate a Node app that you can run with `npm start`. To use a different preset, add it to the `devDependencies` in `package.json` and specify in your `app.config.js`. + +## This project was created with the [Solid CLI](https://solid-cli.netlify.app) diff --git a/examples/aws-solid-start/app.config.ts b/examples/aws-solid-start/app.config.ts new file mode 100644 index 000000000..ef4f4a4f5 --- /dev/null +++ b/examples/aws-solid-start/app.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from "@solidjs/start/config"; + +export default defineConfig({ + server: { + preset: "aws-lambda-streaming", + }, +}); diff --git a/examples/aws-solid-start/bun.lockb b/examples/aws-solid-start/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..1aee985aa5ddd8ac4ba407a07b3205505204d9e4 GIT binary patch literal 218705 zcmeFa2{={X_xOKFqLeYBWUMGMBvS(km06=9>EaqPT(g8y85$@lp+Tj2jzZByQ5319 zG^bgbRGRs%<(&QLetO>NUcS%&`G210y`T57?jBxit-bbe_Bof{DoR=rVWCMwT@zY@=`A#>IjaR}(~Y z%pOU-dMN(l>4x`#TT5s3fL08K4mO4)M2Y{%csl=jINhKlFTr5MNBRZL_k-L5wpT}4 zq+d7-KZLVF!&spV#tZ*#z8 zNYw8Jaxh3Ekg6bMK`Mg$-is=~1yTj_g&>tdW`a}zIiHp;Adw$K=M_Mr9RZN&_h;~{ zFUVkaSh#0c7{g4I${T{jI0P|+*nVCN1}n@X!Y{y!Aq+vnIJJs17?L0xK}vzF1&QS+ z>HJ>0K9eqAN|y(M#P~VWc{7k0Hx0U679{HJN!Nc6qx3!iiFPVMB3}p++ie4haZaV{ zqv(21I`0S){c?tJz;TT5X5+9k*xsygPhW^Vl!K{wFIHH1D3k|=;w)h>ss>Q)1N_3m zeOW<_h!Cu0Fd~A&BXAxBGocuyCp##N9l&IG`h|x_Lq06rOA{tKBOHQ@@e2$Hz+%QQ z7-X~$?Y%wN^BME}!aEH4Ks$`T?XH18|?T30p*`)SJT<+84naB2XN-fUKPx(y&S!%}Jt-iu zUrRt@9HKy?o+w{G3_HUw3@m|+A42&#Z74ktX?;_`ZyfL5Fh0op45RdVgfcx@VGPE7 z$YZ&x8rAEf>GkiY8Cn6{~Ai~ElXr3;$PFz7^Kcqoo{Dnbc zoNXaam=9wG!D_{M$PAANV}*^=qsnzbqJ9=^xqhKx;eilCOk|!7qw61xrrKWxiT&^k z@@0kkg@<{uf;;qjhq5~69V?vagZwL)i>S8|q%g>ib;OQlc(FVpumQ0X%!GY5A~awu z_=)Qc)UX30Sqvp3D*iGcdqcS}NVE&nn;jLzV7MAn{Tm4!mP>&|I}t%q%&)*|1efyB;H5Jz7fp~z^#Lk4DDbm ziH~N6`hys@DAr(;RAUjP#4MI}g#E4i<+gJCm+MAko9_c4>Gc*KCeIFI~6VtkxI zN`Q|EfPwsdK5d11^lvptjEir0c<_AKX?@vjf2KzO z%N*0k`FR>;5B8C$AV7kmgJIS~JlNqKHwtE`r>`H( zJpGx}IE#bCxHW>r@zI+_@!%`$n_&#<^ub_wM0k6npMESB%V4w~L*9w%$2H(EuJ<92 zagC+(WM5zGOvS@9)Kha5bnWvD%1!{=t0SN(F8}REkSkUHyFV^aE(QAi!eDP?Ml%s;bifQI zFY@I6KN|8F*Wn=1-h60}dgbYICQL972!$_{WBkZGWW#L5I0dnTaoRJO9v-2rNCu|ZsNIZ>j@KOD$ftxR6%tNz^#CCQ{?-mQ3Zx zfK&!f5#&IS&!HasgX@+V5XQI!c^oH+G_G>vvoX>F}ao@^-c7s7K1&Q-|66nKu{0ZWW=ijB^ z!vK(Qy7TkWoEKKUj*1sNWV0ig0StJ?437?GF*KlE$9S!$;)2iP_@q-0d9-^GB-Z0O z#g`e*D1V4yI&xW?MeT3(CuP2Q2k)h(hel9TYad<^&I9G8VN2i!r9?W zJg5bRQYRLRP1JlM=Ol72Qrk@RBit`MfaSMf6l3ecIcd}5* zkm#4>4yt`?1{IG`c-(_yDkD4$4j&K?zMWLuSz*C&i(oRoKzp30flMDiYzhB`!hMEu z6v}bl?E#7XsQ`UA?h(7G_V?*L*z8y@>v!Hsa$Rree&NK+e&-f0pP{M$_|+uyMWt#2 zeqxh^zs-NY#HD?=3g3kFV(}A3xgD~2(p)TeR`KW6g!Y1*?*sY=)%PNU+YO6k^ zrq?%Xjh0L5(1LMB!tAjXO^zE%j;Ae=Nqn>HzC*yB$)Y(5&AUI z{QQ?W*$eeHRkg2N{c}^1ig=UZyBPa^V#!yJ4iRwEevv3C7=FzwpymU=vB0*99oPpZK*I#&tq1t0digExMRLVdgN)bI--9zt;@E zIqS-z(UCz9bf(f*M=EPmcSRWM=I zoAE>J*+*=Ba$?%lz6DKQwsu?7Wjm3lnV*Lzu$15Jykowuq0wTES4ni3fx!G1+t(?y zeHazz>?}X`}6umb+iAex$c^eNJ;v#kmvI-rs*4CiAYyVPU|@yLm?s zTn=3IdAog!HX|l?v(@}r4HKO6 zo0hwamLzITzh`vyj@g8Zs`vLC-&M8nfw7(b^!F3lOZt7-bFcAQ@%lp<)se5RCMceN z*W;Fsg=4|f7fz4c_P33&ec8D1NL}TC7i}Z0S4UL%evOS6Fe#Yib9RN>KohNEWra*x zdF81qV+Gwdj!W4YWG;GScX(>;3a^yHnSOV3-sB{eOx*Lc->xqaUlV4$N-uEKs0b+N z9rMIrCVFQ7vLhp1_>P^NaxQ($Zr1BH<_+JR*B4rE7cw~ixonZ$Bld%mIU8d&dOkh( z`H_D03*+5~Ui^GCu;v1S|20Wnp| zn@fCTJumT{7+z^|`|{~!8;>2^)3`v?;LyiaL2GKxM?W6DYAHkSkz7>;u@fqGrl{rX z>@=AM6Xi_@q)XLwc3v6yBI5Ipvj$%;u^hdY9${S>Ze)LA`@G1A=r&jR$tEj>ms>ro z-I!e^7ZP~9PoGGiMK>O_jc^EW7%Ote=E1ueiZ`Nm9BkQf=~iAq4$J+tdS>;WzSk@d zoy)zy-K6PM=pKW?<>xi5GJ$un2yPgA+bxv)7wNpNBc}nhU#_dVc`+MHwC+nZA`vqsD9!iP#|N3lqUQwLV zG1-%|TB^M~eSG{}8pUfIeLWUk_BIjH6&hcBZ{EVe$3ikJ&Ut!P5Bm_hs$r$**X;-R z`9>&Y3*c1>5D;1{jOdw zEEuSC=d0~tr;I-RlvlY-nAUGl{f|2avkE4~h_sIzY=2xJ$8O=E@6NvWf1gh!Q&-l8 z>6!OzkR7GdTX^-P`qH3!p;@EuK0CWD6h4&t()7f&Ocn8 zI&(nq{oy579xv9mk)D0)#?OuS&JRnl(_odaRx3Ae`~0HJS-k&{BYTXqz1_^Nu08YJ zyEyXnmi?RF7?$wOXi^IkOpEi(GM-Q5tJj(9{67cqo0Q)SG3}w5JG(q<@sRPg&tvjt zr!R`R@#ew2tM8t~jdX^mF{TG88%1hd4ZXn zn8clv7a#Q6WoE(uZcF(T^AxoOrK=NWM6^v+F#j@Z>Ly0p+iz9M{L02@`2rOSt|D4zoso36n(sz=$?SCJ_yM?Tsn z(#NMBRNmh(RB-s6D5b}9o;H8+xaTe@q^DB9qIBDi*eKH9@=Hwx3*Bu(E*>$<&YI8c zeST9z&9KhJH}iA(6~|8!v`MeiVw2d{sBg zO8>{2JzMvhr)9U)kMY&(71C-?_N!Pu%_qL5Mx}edEC~3t%G$k7;ab&(9SII1b2ceH z)0nBSy)x3Dzb-VouUo5HxYtz=a{r&Yy#CN&C#&AOi}^e^3m!PUdiNr|1l^byxB4#G zx^|`KwR1UcZvzI8yzX;NtMEypcmx^$Df>q{MCQjSp6I>MV)!NIO@o@Ir7i1+zfNo2 zxwTln#}aYb^2`CXhV?s!-(MLqMcvBS`_ZlJf`o}{e?~Ov)xL@%`|1ua_qbde_B7Vd z{l@Y}i$0P2YjeW&uYLNN7K$#-xT_*5@Q#RpFYSs{5V6bDQk7Hf_a6Q)Aa@Y`%CN?v$f})p8Hhvztr>|o^4lH zf9&O8n|Je%mJU?zvBhz#-qYN?_TJwY)LZXf{+czEsW$0<_55wRHK0=VOTeduqN(Cz zoD&tvbI^@_w=0)Z|_wLt#yqnEuehpy^*`@2Qpk?JF4pVb+g-Ns+N zj*;9mUG2`8J9kQq&X_YpN`@!gG<`4ekv)T)8=K{xT|41iQ~aakMDj}62p9j)g?i&# z%#x3N9eg`2KIgb`sK=af1NKMFm9sb4G_z0js}~zKOw&4NBQ5#NMs3;T(g{-g{p1eM zjCtm;poi^@?4lv%yQU2rI8Q+COW^Ch*2*hJo<2U(Ojqri=tRpqqT^m0itcYa5V1kE zpYe&6)4%uk%CD0C*1xyt`x|EVGwf|s*Pga2Xn%Nr_QM%xLWbRGUSuWpV$TZE`g*}& za-Sgg)3tYfi~Bm=sUqhLvM>F9KmWW*^ik6Bs?=BWVv>Z7^|!p5YBm1Vlc}#JH3nD= zFD*LZykN(vPyO#7VlP~4(Xe}X^_+%xBki`zE!T@p&1#9wzyJF=g`IUpbm20aOozAI zcDr1Ron17b{BCV++mlygn9NFDJK<63o(oDhZ;gAkpS3gR+LpqKL6U8oUy2T3c%MH1 zIxXaG+{tP2V@i|neYRQsR_BR|Z&r@st!Yza9Gbt?Xgl86FuKGb(!gEZGRLSjT%=F* z+BL0NFW36WST0?4Z*HRKtjFh`Zo84SpkM3Rhff3E#5T5Cx`{z`C7)o z*fpgtz0N9bCg&t_E?O-#_{Fxcoi_smpX@#T^;$A{PWt^h$EaY8n{wY3Pm10NOG@@g zPSUjYObWkS?)Y(k?{kf^C)>5tW`NRuEoOc-n(LpYEM4h;CiT+wY;`uv%;k5 zh8gU&{j=7Yp07LZG=M*G_t3|ti#FUm)0A3T+ru1QGj}WT)3gQ1QSiP8vpwK~cR*Yv z!h3)tTEHU<@8uXhxuO{i!fygz2YBSLj92@70F9=3cu&f8BKCdYgDu^E^r1hO8VFwr zAKeo@X5gA_zOWf z#vaF!n?(3x04CG@M;2qiO(MLm0E1!A!OL<3LmR>$1%4Xv7(4ig?ScX1ulL-F_cq8C(?BPA~e}04RZ#oEX3zc_Z{aFO!A=^*WzVB)%VgSUW};?CXRbAa!T{jb2| z{OxN0ZQx4-_^P|h{9fSwy1`4prorq69|nAP{I3PxryKSSV9~I;!EXZIy&L@ZZt^bh zrBHX`R|I@_{FjC=_qwxw*uc-~M*J#($NL}IH*p{1CXxMv4{jI+z~lW7*WgfYU}!^l zd*IDz`=pE;6{PJN;PL!G{O5+nHiW+eydLmm@9o8<0>aC|mw(uQ#PA+M$}!(rBJBpk z7lY>A;N5|@>;}IRcyj*eivO>>>A#L-_v}Xl-<|%S0lqu&?*T#UPW-Hax9P_CWp>m4 z1K{ntVP6vt{N3?C8u)IFAMo9Ye=q6ojlVVU-LbzG`0m8-0r1_4-w=4{#Pd7uRWKEJ z-oMzucc=eFz;~zrJ>Zuux?|rO`0lL#)xeYcCmaQNj^818U>gbX$NLxFdwD(o-vwTe z=8+YEixeAcL81(c%qM2|5Jb`{Un5Wfr0S1 zOmzS8-cQQ^<^yTB5P0+-+hYt#Ip#Y{q}>VNF@D$}$(27{)Zut!?y= z*q;YH#vjX&=hg?p?*|^={~-&vLar0x?*eZ|^H@g8|E7qv8w|e$sY&zr{)^if5Z(iL zoIl9HqdeD%@aurb@#A*h5(9)kPxCl$(Fb1lzmLG<`y14YJhy%j`x@}lmF(ZhlXBG8 zSt9M`0#D-C75nMHo73?}9xrYZv0o27nZH=ZYy9LCySIL(1CQq)vi6Bzf9nHjw*h$E zKe+Xq=p}qT@YsKnC-r}mq`iXDuk$yzu}9s64+I|P59$Bk?2>xIAEWK_Vw=-`A7yI% zxSjXE+qVE7=dTc5!L1*}|69Q0^GjFl4^^SQKfv+l);4GVy@1E@=k~t$d;d28kNZbg z=ifEpO@Zg-?8xcAglhNfTLF*u$#{_d{Y{egD}cxQXOF)Dztt1|Jn&|8|9@-JX_oMU zL#XxN)%j-z{CKcW?%UkUS1u0L+qAhCZNczpiDyg(QD5ySp_|L+MpxJkr*Fz`5kF;Duy3%?I| zvVS8-^!`l;Y4?KmzZVVg8b4h%>i$pq%`3kMc-C|A%>Ad>}j%c#J>ZKhQoY@60yVk#<{vC-Fm`TOSC26L@ldLYCVY5MCKz zBYOVeJ49aj#lYkG1++`QzjPCLOW@IW^oiI0%a5YYUub_YT-XP066wD?%@eys{!Itr zw*fzajvsuL%5@@qEATLc@d!$AP5+udQ{eD~^M~l;dHjGkrTs@8yz-^MbQNjc^_OQfB! z!LRWX0)W@}83B*uM>t;RPZaQY{wF-~t25uRjAN!AbaqjUt|E~j2 z<}bIgM_a^xpK%nAws|?j6W$qkGdljuLd6XFVsoif#B!ACE|ZC z*gTO(+jx<3Zh0o~IDY8A09@RT0kM+-ya~-?8L#XAIq+}<>##501^aSfob2C#ck}_} z-xBfP0eG_hvG3fD0pYg+Z_3gCzu6`AgntLTB?r]s3v7zY*cB+sk=5x_eD&n@@6 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 z z{?c6Ws1c_6qhDgg5T<6Jq!b*M9P=vnErTV;fzB{Ch`6To^onJ$GLzrL}k>gGiPOdWH=csm9Y zV!`U_I(CxJUibO|Q)(Gyqq?a-7d;Sr-Iv|@8Ew_stbdS_d*!MryY1fOU3_Ism{j1b z%yG*cgOgb@A+erTyZN1wLyP{_v;U}0z4b1wv57j?_4NRaS5a^sgH$EwvMx<{2j=I7+cy=cd$-H`o3TWtZns7b?c;ye@yM_tGyeZd0RTt@2)b8dj8~% zP(%;No$_E!xhULSuhfof@=mPI#0|Lk)%B{XVP&rE6>iboyd`M}1ze-sbD8b_5Sg4kB zSzh0C(N8z^VkC=)>hG>9ot`#(uAH^Untp4Eo6-1CRY_Eg@ARu~JnhqquYE#|$S6HX z#0v4QIB})yv-fXVGW{t0H&P?{_6^e7lG3|-eSAgDaR&}Xn#pSy?UfuwcLLQq2BCiz z4(Qzf{9l`7E8)nmKL&}RRDYQ%pJr=hwuw1qN9V?uDIokXZDbq zW!ky#ptON<>gJ9`r`LrkAIenq0k;{R` z>sPEhDX-0Lu{TsWsx@;>kIJ|DGeiD)kfFuM&paF3xV#=#qjPk`CBfasE`8)8lRJ4l zB`mRgj|`pHjM&ckysgOeH8kGjRW1Sw+M>(44$wdDV} z?_%^ivwz?+8g6{c%%%MqwyhiKYQ5>^najEiX6^&iul&T)3EBo9GIz)IJKo?t!TCT`Ce%AF7W+w!kT zYxNASstd0}X-znLb>HER;d2YWGx_|t0`{#b~VLq->#;(?c3E9w|%>s;Vl#gLAFFB&Pu`)oY-_UmhAbluN`1ddwVK#aml-J9 zC22B-BTd@i9Y6SMNafW_+aTLcTOjGz&^ct@EDf)2fvgf!t#*)@@c++0!q4cg^?@ z;W48)XG3X&w4qD>{q*CrKOJF7%g?HW(i+O^9ks-aFdrVfF7-_FU5#OcNQAe+D zb=Y_PY|8skMBk1)X~anHS3x22dw}0{Gsiwe9QMZ#U-Wrx=63Br+9bK`=`TdiH&OlB)g z8=U#H7?-hi(>HTj!76<-DuK&-B(qO~1>k|QNU;3+4=a}KddB)y#DMISM$2WjmWg=Ym>{ybS;?1WFJ$&;Qr)(x}sE5>3cMTB>+Zel(xy}{M)O&eG zulpfq*xXK+S$a^AbqW-zjnS#s4_S9_FYJzG#WL5q%o>uZUGU0L_qrf?aM3l|BE7hG zyKT3B(`pYLH>nFZLfMB{Z(bOhKj*DGmfDm@pomqD-uyzE^8Jc2Iy%g%MzUrTz-h%?8vMQekRtmS=c`;KXI^c<5? z2FF(3pxfYY|9m}n_`A3EF%;F#rSjlys9rGVmENfLNpv~pw0<{6ukQd4BMwrg9~(-O zi|^h4^Fim|YA8tC3Pr{dIu9DzJ@2vc|1%VFG=o11W!IauCJtG1=Bd9OGU_gPWL%6` zyNr4;vq}_lyTBv*(EjpGr#*N3vG>7)w#ok)c7$M&GUN_1$dEfw;uYa>;j!VYi-Rp^ z&hN4M0+k-lT+GjMJ&#Li@4>`PMuKkf~>pYX$#LK#~ptBUB6uVkETdK zOAY1w2Ul^|TDuRiui`w3IRnf4m zok^+m=lU^%ezV?rKX~0;Ym3G`bfwCJ0uq#)UOtw$&d%g|?E=${{bc>YMTE5nxs-Bl zt0KAEYuSMMJ28;*Y4>E#1OE%o{#5oNsEyEBJKmyu1>4?9JU#87D`mdX3<0{vO-`}Q zcMV6yz}*v)7`XBvt#8(_TTQLMc4$?}-0Sh8tx>}el#axDm+OX{)@J(qjEh;6$%b;+ zi_LqU+We&@HYIa7u5nY=%9TfXD48j%Zqu#Il6Ox&VcN`YXQ?t}SC{K7wv0}q@fo~Z zYSvn$bs(iTUVLcFhkxm-R~e`lu*`K&q>x*t+%egqR3Z8s(S^H(e`9FRxj)a3H&wMUU$2+tQ z2^?Q?N#etm!^s0$EQxgwDALDx?1vWZ+U+po5-6rj7eJ9x_+??s6&v<^@?R)w?Mh)* z?p&=0$1dx0R{JY+dO(p{f;5*>FqG}iYoxj4wfG0_d2Pl5wkxkCrD%xD8AQ@H(q?6t zDMmwF^4i3}BogQ5$YcMb`tZHd@x3&ip|9<_s(4QyCoSv)&#fsJU`Hag~Z>0r1tniZJ zUVt>wkh2!;bbROBc4GPZ>ALU;l-5wn?wRt~nkT;$KT*7O@{R3tF{Y5Sb{w~|-8~ny zkkt(0pdHJc-K7p!wCISK8zq z^ivSh=^URBixQhpeqA!=juwYc+A=`5_Gj<6&-90<4FA1-w$?!F9Q<^8`pP`k3g*b} z^n)JyVEz8@W#2eDWY!hDx1{w$Z|^--_NF+Dio8spsh~9uRj5Or&a|Ri%;-9hq3XAuFqv~ zBVG~Yi1K0Vo!tb)<4GRob4uR$TC zN>&ZGB*%l-5f;pjy8s;rGTxgznIrHfuLCj{gAW9&6oYDGJYt~e@T=c|YMd3X2a9|0 zq$gh145pPOb74}D)hLNm250u@5*9)O!%g8K=#+b92sni*EqJp4EKm~*JA>DSOuPcD zEew@3Fal{@$sE zd|y&+@seH)g^$KM>;=5a0ID$|{BH_N?>!GF%j*#p=W9rD-ioy<(w5FcfOT3U%+@8f zMz*mL2@VfW^p={VS9W=b(JvrGUj!&_M&*>&>Bd90w1z^1%zNf7zF0INTt$9Y78RzE zux>Fv&frReryyTb0+sRFk~G#xxT!$A^}G5WD^yrj0MP=av{pgKAs6ss;NDx}%X^iI5>f9^yVs>$|=^)g*Y zjOUr-CB#hODMk|Qp(n0svG{ED(b;T0cW6^%L=#;%$vke9;M7dAC8s`blxVwPY_ayU zMv2rpnbZVZZW`e~2v1YR^dQp6{~;hpok$PFL26V0X;sn|pGIhuaNB6uCczHDjrt#h zLAABvaSJ6$Y*ZlW_R$U@ozf`r$;=QNgekGbr&Ip3co(yv8X_@ojS{X^MavMoZpS^H z(kStc{4FZ9Wv4uDlwfBoY|C{%ZJ=0ZOOGJk0F<(sLll~;U{VM>&eH!3ZPSDYgK`KX){&$#H9kfJYe zU*&*5aziATLq9ztV%~t?T;a9iC2G&gA_l_~1J&XS3`#z+y(hP4E^pG-Cf{@xefmS^ zdz_*iDvnz|niaP7)cIzz@+QS4pE$zR&%`fEdo2=;R+ZO#u`*oECmTYMw3kzJLd!JG zL)x3FRZM&4j5QxakmNZZ$y8zbvv^HaG@kO7qrNA_+YL$DBgA_sK>e4|1uY9khc+}^ zhGcM3i1I>hoocugW#^J&wAI@_ImvuOO7eO;Q{*TQq&V)jQ;uEKh_P?BQ;JqL$^{|G z>qf~?s+p9c-M8(_-4w-7O0xW<#>i3?D=A6cH7adZy-kX;9yCgtu?-8LgV(xNB5wkdsUm*V`$>VTO_7xND>wD^->xb-$gm?7j?9vTqtE#fp%#wc1We zmhYr%tmCeca;zv>k{Xjo4qh_Jakss3vYY~uVqG^(Msh$M*5oz5k2+2T*Ci6G36um& zDnf&TlWJn2-V9?hUdW+#b5A=pXU%X(5%GaBxZ zIu0%8ef~whyzebPsS5BUuLDX^l#eQ2u9+tCnZ7b_i5x~9`4lDLTSJIU)JgeFkPl&o zVuMm|19BWT(__`e(O|5!PLjqq%4-s((Fs*L)0iFenj7LHc!bKo)DAPYEYViGmV6?u z-VtW`!k%LHQwMcE8yxDFB>E3#n=c)}W3FTh%UA8xsdB<2-+xyzQ&SKg1#eD6hsRtI zj?^b_1+a4%M*D`8$w0j~ubj>Zm;9*0R$*0-EB77sPQC+o@>*r4Uv$Mx@fkq)%$3TT zWQR;nlJuSqlsDj(9|DxmefuObMIYfzxfc<-Gv`q-6$QdpAn6l*Ax}&A>_Rvc2(bt; zS{0ZOD%NMxd&p3q@k5OIMUtGemYp< zDINa?RUo~v94>t!x#F9H>ab5()UV?3tEQ%|}IGHdmxi_7ahgH6ugC zr$$)^kcfM$Te74@idE_=bieXQn|+5r?FpsopL4cdl?Wt_ECWLR8eu-D2&1`D?T?Cg zypFXgmCVub8JR?=B!L&r|N8ebIrPvK#Vp`+9~}WUzFiHQmi_v<||b21z5sD7ss>U z>c33{U1T&UfsSa16cu?DDH)#hwNGYQDV*jCE9I}l*78x7P24&T_S z*}8arQI$i@GRSDXTBPP7B>9dc$9kW5_`9t7!<(?_3zc_D1vt??5{RK+ zUiQ#_2?_R%(ovNI)`B-*NvSU)E%kw_Z%QJSxT>bI*ssme?;t1nzKT=>+EUpZsQKhd zm4m8o2;viD^30(UnQ!Iv6<$}DGy%ExJdBjAWKGE&okBA5&}Z_&_m7!XqhUQ6%my^Gv>&k*h3 zopNL@G8}g}O8$c&)_2%pwJymN8R4YdJTjIcu7nIVs$UgP<&v3oF%$S4ZitL#pPls3 zyw`hMANy0%%>E5rB-6)d1W-0n1oT3exOH0_jwNd7sO#MsUOAnCgU~Wi7-^9~KJWBf zye3)>Y32#J=s%L}%ppWLZ;1sTVkZ~8g`vOdjE;uZh`>kt$3W$yCn+h zL|*w!x*TXy%}$?0rPn-?d^%kTt16X&D;cpd=?H{kG1fcbaWc{pruSB=dKMS}HY|CK z9!U)4+u&9!)jeBKi*HjDkYtj zal-Jgi!zQaZ_9AD`fj_G*BLepNpwvyz~;D9`Kd~Z<^F7EVuL;#rJ`jCR;!EcE(?2> zkn=SJJ8y}Xe@UeViiFe$s-iF~@k=Y6}P37dVV^3tzXC+n;5%4ynCcNM2!Jk@k+R7U5_ zRfFg~5lyqChLco;%?7qOn*>9~!q!#Ng&C($J@W|7hf@-y zH^*g?tqR?*+SoBwSKiITzJW+d2O&I-v??eWA)k4?c;9 zfiop;W2r|h%AD^ZC*_`W_`5~eu5&Q`nG69( ztH!234p)t3&?k*wj;2g|q&gEuuhU4eklLi0_EhicOnq3B2uI>(51160-WqEyMX4%F z7;C0oL$eRId=j%Sary$NkDQypEOc#1Rz1qdsak%mHtbf1Vr4RXg~5qZd@Yyt#c{Z-OQm3bmCX7gx(ZEy932l$`fDgc zB+4qD05kr23MsPRe_TOt~jM{yhivWp3e=Z_+o2BN<7!lGm#B^Gkbj=QNzj zYf>*>vQz`nI|lgJsFx$&o%3Eg6CM>`%>&7zUwuJ3{JpYt@e-+cjsyg|G3Cy8Xngq? zke42*uXUTWjYkMu1pQ2&`HVMA<_b2BR`Y2#U81F9Z{jHCR_{sBQ=BMKB;@6)J71Hy zsEJX{r7}a6EMMKNp;ePz@~kcMDvq=_k(l;G3H5VdQc{UNm?UzgS_Z#87jE_i5pItg zG=1k{-Vmqlj52nrudQ;5lMZCh{FEu`bQbwlD@^!R>k2#+Ii>5SVk_H9nKY8VwA~_xy%i=d>!|wqqt67dGQ?uA%8eh7n{2Lly6ULpR?$hQ( zV=V2E!HmF!aA~4K$?)&DI$ukMsJtr*Rs0e^J0YKW7e;=RvZ|d!9%*yN5kBWFg<=LJ zLY2|6Vcqi5-j>xwA}URIudETNj)tqua)=-!Sw3M^2jnFalD<(YqtYcL9gK$*`z55< zH!8J$xsxIG2+BZFgCc&-l_PtQ_-!;q+78 z^oS8|`XiO^ewE4T;3LC%i<$8^pXnV2k&)JiP>z?1hcvFf%~btP2{P+HBzAqZC#E!4 zX-z!YSy#6ng{6WH%Q^=dEg@{OVVjaVA_VVbxbOm!{`4$fB9` zVDXYj4U1A^vi~Cxk3euqvW3>%&8d7zQxTUL~YAOB3q3bEJ z2-52t@z@*CbV)f*lyPi*K@)2_#vTP+!8&x=$0c0ml4|9@6Dm1)1!MBsc6U5NEUn=P zxrrg!rej^InEGXpO!O8@>hwiGJ~>AMrG1DqE-6EJv5J~_$}(A2N;9%6V`&UUF-|SV zbTLKi5xbQ42rT7Z#nVqg)hG4fRKMhI?XV#j&e5f033J=Sr}}xk^E`&&1ebd^{&bM#402#S9tK8uEZq)`HSlc+w;WKv|38 z5g$gr*ffD$ePJiYi>HFI8)1=OrHy{MUXmvxnfxmz(tlnoR??r>`B&L}-5-#1&BTTE zK2ftgOh*!4^{dROpNGR~oxIP#sE_gfQSeG8@vE7&P>yqDskZ}IIgWu8Q3-uPu>Rwn z62K%G8I}odeQ77wBk!$<89s?4+G9>D+)loRtnhc_1wlIQRBV0Ay&^iHN@d@6Hqpxuie8{6AU#q>Jq%UV!l5q$oKejexP1DYY8w-F3O4IfHEYW3B%i1;P;;zh zNvxzGUlwUeJ8Dd)S+k{%P8AJeOp2X4YQjhF*~x4N?3ajweS;F3<_@1gCRJtPRc5}t z#uL(Fg}}5Y*fukfA1s#BU1hVBj67ne)xh5v4vu7i%xfYb^+ke6eSprJHY6S_3k7tZ zc@&!CEsbOK=07pmg;siRH`JVpiTEamlc!05jrN3GYz)5EJ(B~eBPrkpd=SvSf4 z;YjIN23X?Nq2M_2XVl&=)g@xeJ{I%pHaOmrypn#O=8*!Ez1rAE{Vf%BxQH0*eEXOY zkDBA=SIMxx?+}6&f1;C23xkM;Q|&opS5>tP)J3a2B9Qhb;?kbjO2D^3gDep#rJKv? z8eTF}UKEij4^#pBRg`2&!JfQUm0B3P|5y9j&k@O!fu;T!$eS??k&#Oj-)lN}(?Hk*<^oX%DgG|WQ%&=|N z_&5OTCBnffHM{B|%`wG@FvlHL#QzwL)L=wFO1S8W|4ffczMhh^GDF{y8~&bVy4^xV z`XlMQ^Pjh4X7>(|VBaWSwGdG)9x4l$MLjZ;qM>^s+Y`(c)lk03BVp^+DAJY|v*s?K z9b6Atj<=BKxI?CY!Pud}Y~Lt@;+GZ4l){?4hSMyW@``hzOhptI26?+kuQT*`Tl^6E z<*IWAoAVZa3D3L8lGYsNT<%e+XRj&|EDp;Vuj@XUL@lfu_NXP+|DB_(^4lEqSdhl^I?GI^gcXz@HHb**({?klqFQ@looqJD8LbVT-5PNCC2-rs0zO_PA3BrqEoVlo&yp~ z#(8f%biPJl&Rf-o@KfRPU`@Fg8TD%?OnvLBKy{|X>&n&3h0N*+`OdwXL@NzNi)Bf^ zEcs`;3jZ(^U@oZKtLtOGM5y)+Wn^YHRnV#*r~Xlq@H&0KanO)t0HL!6UCu&Msqx$R zk&*!TQ|@I*MJuOAK|68-e#f24e?JE)L+K+a14U(&U#X@Pmy#tb#Z2)j34RVykUCN< z9+I~f;E|X1gd!Hl-rKiJh6I1|TG<4ZjoQ{! z`??s_GSyUt!(ux%9$FDBE{=s{qC#J&JonQD+ZL&is7(5cYx%6fQc;z!ZciwuQSn*} zZ@+{T`^Jtn+kV5P5wSNick8pqyZ*}}wVni3*Zk6#h!qyWEkCMJ_tU}3;5fBx86NAB zaQu73>8r;1JiC7_mf0I;!$6>_c%9E2MqJvCfQ;9B=|J)&gsIj>ao8i?9=wjT3t)EK zsT$;$bM^KunberXVAL2{@Eh$)ZM$*9Wpguv%+@4*PeB&yaWjZvwN)uFHdq_fUnbn{ z{R13GEMB<$P-ToK<&jNpfeOD%T1p7wv(~M`Sk>3#8jLE$MvpWYbhGidRtoVpdpz7&uUtY#C z{Z#@>eLh$|>nVLdrds*BBR%0=2$!1aDkyzB#%DtLxoK z@coVtS-!nO%;!oR=Z&FB+b<@0)R^P5n%gOeg_`;kNaShqTJ(B*Vk5gl%(s;gjOT?Xju;$ z7q85p^l3!g+`j442r*VA(b=xg;oDCAPO>Jm2{GH7Lyl7}5#zXPtRO34mZ(N0%{~Q{ zNZB{r8z<-4fwrJV#fUDL`hKvkzK*-?jg!S{e$Pzu3!E!;^1u}sy{u4W7qMSD!uH@{HDzE8d=a;6DsU=>`PBU5EDw|5!L&9-ys)l+*Uq;{ffDO?$ zSF(%HI_f4zebz$-VGf}2u309kTH_F@FC6*c5s}nn#xtbEQB)b;XiR8nnQ8};MiANg z{tGHn$|R*MZOJK*MQ#HcHZ9k(lE|_yb(;Nr0+Yk)=pAL@kzn6w8QO(42?&>0s1-X6 zC^hRh-=ic(?SGWxa{cC;Q_q-yHT41R zx4*k7%Lq77QPz)Gmkn~w+)f8WhTCJ+%=k?`DId*sL2YtY#v|ADG6d5`Ngk#gSR?C) z{3bFrhghm4d-9kXKiUPqUSVpvVJ45`JY|_vutawA zH8@%+Ty~UF9y_AbV7bPFG%>XWr#{z`w@=YroL5`C3sJ%_TY61q%1f-4l#k)2X0Pp8 z>2DQODDZ?C$PG>n0Vqs7TE8(hS;bch#i;BZFm1cH3!k&N-=9H{q->D<@fl{x}7`ZbL zHFtutjCy&*;fHl4#!UZsC{{|`5SntYoK)YX7H&yKlG|e#Q@@UZBSVqo%wLtf z0?GIyCUtzKMN-_2bp1ncJ=a-lrdH|(N_XhHMAg=QUH$x$>e}N(P_p+)88p}dGU;*l zgzZ#1pX#_ZFolNEbkfJhWm`wRXIi3Pm1M1GxRi~^NU$y`Q04>Gv^&-yN-3G1yqB3x zdsD=v@+vj)OP}F!aLZJwA6H2nm!euV>G}%a#($5-AeCNH&UU1jEXGs6Dw?^0SP9|E zfTSKJGMTFZ-}eWBjQW9U$)s-a});q!&9GIjx(?Efd`i2%2zvdM?*dqAr^@Z zjBKHX&a&u4B3O&Tvc^sLvS>A?%lSw}*~50!dzWO@dxrj6!>zh=t}5l2F*5R^E}10e zM0ObkKsWSpFMJ3kQ6cMymAbHof;TGIEXfw4BDJiSOGfO>#>rlTWFVB+<%?=DzHHNb ztPEYUN=l#ns$Nq=w1$__1fNu?uMJC5_};KAdGXVUl!!{bH%cekmZK{zFGaHN;3wIZLoG2$I**xu%%>mSp;|+CgWO zPJR~Pb{OXt#ilB7R(U9HEWG|U3LCbSQh1fL9_vYcp9r|hA^HBh%~U<`C1vl0&_0?pTAoa1;#ZG%_hIl-( z-JQXXjB}L8-yEk&GXtd#Y32#ZGiyB?9JOS^ZE49zh%53v@Wp8ijeSLw%TrXE=;JnOyh#G9LXb# z_#_S0h9iz-R8wCzXa=M*W}WD$E>s+R`=`kW5gO4l&83d6pG}rE9^(XqLWUhj1i=9F&OO;Rjgkm#Agzdr5q~1jKpH`{k$?UBi1FM8B^k+4D6aqe%~Hm=dDsEzqF@RD+Hw6 zHz)?KEeDcZpQE1suK9Z(-iZoQrq3~|USbMwpx+C37BV)ZP%Ckv6lUR~M0Xs#M$G?G~XU-Fu)vd-P`&;oS` zEj(~qmy*XuDP{N{qR&S}%^Ny!^^Fc0*zxO>q$`22Q_UDYO|AtYf9b~h^_v`um6V~> zjFt4#_xJWnG7Y>Ss@`A>Ib+-$9VY!>kE~6;lZ=)0m*res)%d7We6%w!OOW)H7&R|f oKDFZ6!$Aa5Z-_|6)-UstgHxP)g@s0rzJQsGSKL|uAN~8k0GBfLc>n+a literal 0 HcmV?d00001 diff --git a/examples/aws-solid-start/package.json b/examples/aws-solid-start/package.json new file mode 100644 index 000000000..3b4228e0d --- /dev/null +++ b/examples/aws-solid-start/package.json @@ -0,0 +1,18 @@ +{ + "name": "example-hackernews", + "type": "module", + "scripts": { + "dev": "vinxi dev", + "build": "vinxi build", + "start": "vinxi start" + }, + "dependencies": { + "@solidjs/router": "^0.13.3", + "@solidjs/start": "^1.0.0-rc.0", + "solid-js": "^1.8.17", + "vinxi": "^0.3.11" + }, + "engines": { + "node": ">=18" + } +} diff --git a/examples/aws-solid-start/public/favicon.ico b/examples/aws-solid-start/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..fb282da0719ef6ab4c1732df93be6216b0d85520 GIT binary patch literal 664 zcmV;J0%!e+P)m9ebk1R zejT~~6f_`?;`cEd!+`7(hw@%%2;?RN8gX-L?z6cM( zKoG@&w+0}f@Pfvwc+deid)qgE!L$ENKYjViZC_Zcr>L(`2oXUT8f0mRQ(6-=HN_Ai zeBBEz3WP+1Cw`m!49Wf!MnZzp5bH8VkR~BcJ1s-j90TAS2Yo4j!J|KodxYR%3Numw zA?gq6e`5@!W~F$_De3yt&uspo&2yLb$(NwcPPI-4LGc!}HdY%jfq@AFs8LiZ4k(p} zZ!c9o+qbWYs-Mg zgdyTALzJX&7QXHdI_DPTFL33;w}88{e6Zk)MX0kN{3DX9uz#O_L58&XRH$Nvvu;fO zf&)7@?C~$z1K<>j0ga$$MIg+5xN;eQ?1-CA=`^Y169@Ab6!vcaNP=hxfKN%@Ly^R* zK1iv*s1Yl6_dVyz8>ZqYhz6J4|3fQ@2LQeX@^%W(B~8>=MoEmBEGGD1;gHXlpX>!W ym)!leA2L@`cpb^hy)P75=I!`pBYxP7<2VfQ3j76qLgzIA0000Ar6UPN z0Rcmc(u;r;5khY%f8OuEXZP+sd*;qOcjlS7yJt7W;)dZF76BFj0C2|GNdFf7ivRC~ zLg@Xi=?6>zfOw0szK&%$aHB&3NWa;MJT1G@741SF0<;4||4C_N%CIelfAyJa@TDIP zwVD&HFZ=8H)$OJ{!n_`YMbM7_td*%v6sUiwQsc!b8NAt|%$8TS{`uOli98V}I*$5Rt=A!{Ha>rnR{tnsSx{GGlVp{s+n#SX?1k#xYUa-&1$oZPZ`_&n z^L6^^S7kTiU7~&a+q3f~gYViE!6CA?<;iM#}yC3 z=W|+7LLS3RYvRRUvc@eRaSD?2m4GWH{`+3Hoo#2dVbVb*j+GaBpNWq z-M;I!%)nr8=t4sdurh~n#BiXVyt>a7VTdESVM*_9*#e}CLXw532ve8erc~!@Waa0X zmh#VoldZ+XJGk;|=82_jX3t`z7%xSzxK2K^aJ2a;`|ngz_>RE^@fsp>2<+IIwn_rk zHe%RVhZZiR{q#%d$DXS>rbWkkiTnQXRZV4_Ew7m{iusvSBMsVwB%k9q%)IM2nWD^~cb_n^nN9z!FszP&Wb5Y?e%v$Ns3^V5H{ zO+u6Tm2>Zc|2MUGn$Rnfxq!k(Jf>|Dku^#MUBX^qAhh$%1#l1S6 z2t?lm#FKcR$iE1Kn=iVRg%FuKnE$NVYf3fV#64!r{ekQPHR3)2Dk#nGqIYy2$>=j3 zhO313dW~fjii=z&$CC1U@G^(5xEkdW1R2e4^u8b0h$0VBlfO{hoBmchX#Qr(9W7nZIIrIfC?dOC1*18(a5{zsLkS2z3ph8m+=w9>(YzDp!U zNPtFHE~oRU+w*@Ms0Iw;D&Az4frjn*1dp9US)KZGDL1BfRo;JlnZFzUh%dpj_z%MAtzQ>m=f>H^#8kO-lS{w+vyyae_$f0R;ZeB-{f88O~Ap3Mhq>s6Qmp z>;pp&eL*~f44!phk5uLZdO!3n?z~fnxPLF;mEjDPZ|eXN0JJ_iM2Fz(LSUBb&Z zky`ojES|vWIck90shi>y4yVnrOW{A%u!4_6Cv7vjSexb@`S9j`4=_!iC<{9WykOK_ z#>w16JM*6q#e%2V=Tl@qX{CQpu-RwVuE$-RLfkl7bif)N3CiF#u6JQJ-h|wN_X{K* zwzSgQ>6fPSdTFh{9ApYNA5PEATsZ%Aebec234NS<8YR;uHzVO`%snnRj(Tfmk5p{i zQlE?Z1dq12Ydv*z5tMl-F9bPuW;@CX9K{KrTjPi}p>>~e2|n@BJspLJGItQzCit;2 zWL1z8cQFlLj1qfJO<&&&+mTQ!udbM)pgKuk^!y+$SaTP=^WSqgKQ#NuUJ{ZbXbFUb z3;ePE`Hu>*MPFn8);S*?2Xy8w#$f0=a;ZXm+E1KE6J&qt-n{m2lOuLH@qDV-p7zoV z8_ANNq*aEwolZ^spS3TRlWkxd>#=`SpzT)t`P6tIRTR{|^=4#l`R-x&D1yxh!&kG% zlwXXpRMVDpVD5LD?~3z=xWG^YfH{F;To#gY`JAq=N;STIxxN(x$mYJv#{|05jm4dp zqX=j0HGakIF^6ylu$r^n^cd2R-S7v)eF0sg2#EQK59oeF!JCnt$zCS>NN>jlzHT`M zd_R{7Z8c#_#DP51`QXpr9m>uw$3JWCziL)ZrH)oJQ>D_IUbmOS8Y}8rAAB#2#q83e zzP#D`Yr%a)mEzd69u=B+=dq(26fQgEayPLDdpdvfglTOH0BVa*luh*K^8rAbZdJ)W zeM!}Xte(RtAw`Z4$CCJ`C)qD=Rylef4XTfM{d#ay(y8{QU{GH~$Wp>z%RWXQtLFIYQ*Q5#s5LNDd0 z0~d@R=7)4$31QIXEqq+g`or$yvs_Qn!-USDcXsaJPRia4$w_MSw3=BKx_lC#G|(%peTM-acuPzB6`%2v9Wd1hZ`0A&yVhme_a!MI)6wn#>jSmYPbjRlZTC4tw$^Z%m^~ipI zX(nOEH1*VKF6sph`qdrA7vRG)5SwbK-MEkEicOb0saZgRrmiJi;r$N`?adHx!|a1koF zA=w$OJxcJvK7V1t+ti^8&&m%dag?>1{Z)8W9ySFq(>Xc3Oc7S2INb>w>ku>=8!{?V-P5hZxy0I@zA}BRZg67SJ?~4ZurrOcmm~^U~4$!t; z1;DG1%ZbszB}oVDrw34$fQLa3g4FFUFhkVVS6?964N-lRhcpc=D28wFcmMwqCIW$ zeCys;tbAKP6qMRjzpT&GQoTa3t=hS^w>|7(6dW3$5O?fYa;wGomWc6aL5plr*g%r^ ziCmIg+;SvnXp$_O(kzAfrs)1@+QY+nFg@zMvTcjWHO)ptrHiivyF%?$4+mKITvm%| zrWVlbtuyKB=m|qk3h{W9Q|mr=w-Tr+7pP&YBIcT`KLAMiXV5PtEcpp1pFOHCq16;w zUQ9D13D3ci{wE`0%Vy431e};kQv4IU|6@=SymRT6F}zSe$FQ-nw}>CaHn}%<2FKV> zgXA{s`PXp3+G}Ja-Ydl^IF^j%nA}{E5bS^Xq3eE0BIf|o6k~T}9VD{cihrDNK1yfv zb4fnd-a^+&d32Gl(>-*Rc8mF>u+mZ<4-dFj&}!&e+hKhfcN>o1+Y6J8qNszGZa7BB zv{juc2vmxbEa77NcFQ;jL0~A1F z-iZa3#b*M?zG}V^O-;Xl5|^{a5wYNd1=f|xNDaKKTe_@({Win){*_>CRc4;>vzB|B zN(?JPgImhtl&~)Uj)!{eZ)1<xwB>s;2SzA<1r*bYI6Tel#{eda9uR_Q z$rA5KTt#JZM%s&v+cMu~MmKd%)Op%V`2Zal{)V`Rzx|Re^MuE-reDtmJgmz2eBK7DN=6X=Yvm>1B8Bo?+BlB69suNK5)@opkLi|6}qF|%z+Gs`@mxDJo@VHJF5 zgepa;^0rG10$y_Sk_Fy^UX%o?#PyYA9B#;;1li`nmUp#IZQw%8~9(`=kQY_Q-LC)+Hl&2oR^MweLXUp=!d!_96}2_&01we&wniF`{XBk4^Hes90rP~F@y^FI4z z2|P-3-@CmumKEbz@aNFoQe_q>{jQ}?!c_@7%9a@V!lgIl#ZokLYhT%?FbnI^iC<5v z^WK!H!JDBxBbD&30%d*yUx>L!(pT7XlUFg5*sP!@2D1}?vZ-|>ilFT`0ssjyO0v;r zuJVAIh%=d9=IbH{y?A`JZ}ao!1d{6_rL`bJtV}KL1zTUfc3;@|=LawVXY#&V=+ z`(Bq$ZOuo+tuV^hwS@>@fEm4#>exuZ?+g|U-!&X~x%f!al}+#uIzD24?j`Yx9da(K zgi{I1{l;THyJvv2bT9YgFBo-AT96ZTWoY&6Kg;LeXIPytF!)&TYa6ku6qhBeJA+?H z7z{P#b&zivw|lV8@;o}X^`5I~nM(bg6#kp=j0<&tJB|mF2HYD^GJ^wyCziTyrTB54 zLL6p=g8WZIgsED}w(s@X-^SITVvgY2g4(eju&7xp1~7q8Cc5;wLgIz>M8Sx(08C4@ zyE=u3zKPnCb*qowoss|gO)6Sg?mHOE95rec0kW6x3gKJ0K$Ym^#hYAyNMcN;G<_Zt z^}oL$=?d{T5$DyrCo;g+{mQ_2*EybwdmOPp$I={t|KzH$V1Z^`3j znjIB}97}$=z$KcvSUB=pci>4s?2eskPFSxV#qL>9JVz^p?7$Uy>E8y~v}9g!tOKKkYuW4*WNxmUe z9H=dh*J*z5NA$25XOsk$z;Bvh3(ccR{RoTw3AO0`+I~6YrCh@3Bg?gm;i<^itm>W4 z+pbTqKa!OD0ka#gjl8GR!&?yF-IadVN=>G`0<8E$cue5lv*guJ>Xv=4*{xU%sL-P& z^QseMbUKmgci-0OOZ*Ky8pzSH7VqN2KcDL!pe1!elf?1tK*XSI`rC1A!j zCG&^u5f^dCo$&gxtscWS8ssorWD&m{T{;uxGuGNk^}L1C`kZQ5^R1 z(XAT?dX^}1w11!hJg;Gs&by*bt>`5;R0l)ZSc{BB*mN^7Dgac_ zyKJ8K^&4N6rT_~GcJo=NMdC{No^}5H;|}luA|A1z*OUM||6SRjL#|PMVUvgt;*|7c z>G&o0W-e6tf^d;n(yDfGtu+4vZ{3UhUxkl7X<}ryLFr|=gw^%i^rD-F0!+oSPu>JX zQKjlv!Ak_!*H7`RpdUZ@?$XX3`-9IVh_j{ZT8$tGIhU@C5WH_+Q?e&Et$nP3>XSu8 zQAkWg1)-4HI$!kDZFDM`G`dCH-4@*a9RG+c7w+1z_EPUaxMX)yh*A85B3t@HKAz+P z5#LtnS5lo_^db_q6E{U%dDd+nF7AvjT4r*2o7>2gOQ@Ys0Iqn#`g*c|_@IT(YQwuZ z^gFG*+8-27xnHbiM5urK3KK>B){7;2{-~%Vcxcv~t0nQX$VbJ&et(q;md%yf#G{-v;4eLcSx^xsp9D0U`PYQ)qXXWZ zXj>3hno_M0pY~OHPs8&MgYns{{!W4#ycsz|*j2`oAcsvRah+st2v~pG?!j`IXcJGn z@zYmgdN8i%xW*HGCcHhG?adY_+<&VsZ0gK^^DJWK(WZYIl<^#DPylqi=&?u2fI&ER z7=k0aEO9iPfH7lCvDI2y$8rC4F^7^{yH*!~gv(3f!TLO(DX##poitjP^8%GJ9(k8- zh)Q1ZHZV&S#Z0ef&EL$o`?=0-7!5m)ytRK-^l`S^>p-fhS z_->Um-B)z__f~#zP{GytX-8Y3F9U6L08V<;t=)`v0C^{_i@0JCxnC=|GjMBv;!4wh zW(#r#)h)npS$m&wFIkU$OgqwZVNr%*RhaP{1?h;E=Lmi3ScQ4*my_-nsPgqs^&d~p z3trz}h&=d+2_PD}`BCm&t*;q~W^`)kTbCoeFQ1XGE(!(j5Mr&nF-+0mgd+fvo^8HF zrnOOL^u`yAPh(|T#+(zKAcA+<1cg+)C`}CDa5pYeF$=+mYDUaX!{@&K-QJuL0AK$%u}$ z-s*Jc<&$Lrf;0%ECCf02Pof2WlvY4e{)DIap2V{*J0 z@?azW08^b9^Jvq3<6jd_tLQqtKb7X)_Gt1BYXrKjH{w__{G~(Gi0DQl)lsRCHb|#I6snF`3b3p%LvOpI= zZOym1Vq;vVK)Dw+)7F@YWn%q=-7%u1)NzL_?g?GFTpO6iJ|hI!PU`aMvqaeV`)_>I zvZr3BSEVYUdovV)w(D7Y$ws&|xzWZb%p(ogQ|_Dv1WXmF72xh&^(s znjL=gXwSIpmYRrK>GGx<%ZR9_-?_ij9~l1x6;2cCrROYwsSXy+M(3jX|-Gv%sRgf(G1OB6mA}y z0qEQ0&&8w(9--j`tmxw(XlIpe<92e7s_lsW4I+m%2%l>|*I z3Tj5N9cYgqvd4^x|8bz*ycC)6ad5`%hYjKq?gQakjo$@^^xF-0&n%&c+v{#Qm{4`p zuYs-i!we~(yAE5=$_{sNV#$z5zRU@AEV~{yB;|2&npz)Cd&<5TrS?@)UE9Vy^g_xD zTq|(}^wWzoybuc5;T54xbvP~N7be;33@evvx+ZMyUNzE)nlqiht2ws8dq&4d0+x)> zcZ}WqRq~LzGeky?nISS>*(yJCtTOEbVb}Ge1sHJrE6zvnHhNFi_9W_^*5}+O+9G>3 zXj#Sk$8OEtFhR)aY)45;cTIseXMdT~4>@pjq#J;^;?BqBWXn(k+QIy^+V3Mc?JMl; zUS$n8i4(B8z4jk>@RJpxvGk$pw>u+{MzOGEX|3fJk*4-5^ ze5?(_7K0YF9e>~F?7ZSxd2)vX$9@~Y-hX4?D}m=3LFvZ+!xJ*mUW+q&Xmf>cDM*hj zFNR1Kvdf7l@A#zG36Bz2lz#p@m~Ymf_D51(!mrj!s)M&JDtTh^UC9;hAI2|c?CM^= z-xxH8cO-c5F#?lCq}hzYv9MykWaWQ?u^eE}ma8rnk`9z$$HlE2=b!)TYn(1HV2^w{ zj@NMCaMuzyg!yoHnJ-dUI5`&xw?JW6Z*yD*SGj*^M=cE8zs`3TRO?_8 zv-;5#l>pdA6PaQwwOGn-xVtq%!mBuU8JFf@-dwn$L2I-=)nnd=c=_8#UpqvKVwi*cWSGOwpo@QtRkO^mTHlq~0}`%T*YD4P zj&aw&oG2?im|wA}sj1eNMvlaX(6gbADZ5H zQx|q`{}@>25wjvayh9V(_BXFMxxXEgwtF%AQ$h8uxWhJW)@lEw+twmGa2QJVrYp87 zGHJFY*z0?U@%(_o-9|CYQ_O??W;pfiD*%#ed8D=NLxx|A*7~#ZJ?FjasdI|&m zz>`D(MmV+Cuxk23gsY1To~qu@5U4vWF$&GjZY4BG0+8)7NIod&s1q zx5@+7S~`p(#NJQw!)LPRtYrK!$c=5Oy6;bsX$W5F?Imq_`Q%N@cwf^umjbmx!CwdY1v5zm`A%;z55lbC}Dz8lZzF*&$-KhX@IKFCaqy_{2mniX|5a!qF zEn-&5@YK76gKsk@Dkv5jgPcq_6g@<1P+e!Xpm86+69(71%EQ18NQMg2c;VNEId~yR zz-QU*M(rZvih8^Nhg0s5T<_c#CJ#}+M4N2xAsJ<=0v6AC`l{Pb9T<2{*-kaIzwxd9 z?_+*mR?FeglSftgW&UA9j*f_EAF-DaWzw|kDsyvK@bx%o=cbD=RMT;1dlNuv20TGm zym&{@xEFR000XCU{tM*e8u4bs_HDXoLe+2N>;@@X*>RB9>*4r>9+797t6Z-Z_dB0nyIq)ujb&W1iDA0eBK!F)_R%wyu4F3t;it7&mkjPYsa=HM+#Rgp+1EAfw{ts*XF9 zK<4Z5O&%^I7(uj{){^~Z08~;j+U4;ZB)sLf{Jl0{sX{nYVVP+=N|urIT{ScYhvGm2 zw%!r^ei|7=uhHRhog{se*sFdV*mMKRRl}#BsiNs9!eD5Y-O;wkz1!Jf{MOiv5bB%)TQ?|J2vAVRS)ae;+aMB3-)y ze_P`|m6`_p4Nlpr#GRggAy9wWG5PB@$perLfpbP0i3$HXNq$Zcpy~MVXYhLgARmFM zLA~9aXD9(Ji(JKEzvgqlspS}%7mRxZi)dMjU(4hKJfUf%MRLWn&-;OeYoDGz?@&?2 z_(Qc(yU6+6waon)Ad6X!1?3AT4LszremFfT!KKTnMd`UKu%Du<=o{JL8J5BzUJZ0R_F!}f@D4F=4YU0dT)kzMpdEQ$fy7E)xv zbeZhX_*uqb4kjcsum%>7E;T)Q5*THbd#YhJ*~xiM+P3BO zE~n9Bsz5PtR$+XjNm&&?Dh~E)>6XMV`ZT`IWv2^bKv1OH^*ARvmn*1th$sWA&gvQ$ zIaCxFirodL0}7?5+JvtO>Ds4sU`E9$xBQ>!paN~SEEJ$3@8OD5JD1X7bU7ECTYp8$$eXB=Zlt%O@&ni4Zy#5av1Wnb@NQe#z)o6 z=$PkRkF~u44TSm4e^$wbwIrQ=Klcvs>Mpx1cZ~8=VQ5cDIP0i*-fWoH#R{FKgm-h{ zJQxG9-|+MCOe42ov%;%uBcUSY919XAZQKceLpThXgYPBT8i8|!W8O;W9J#dIqvb?& zjcnFHE(=c^G>0Wa6-9yhE=+#>3V3Bm&W#*DH!ehDCQJ=buM54V)ApECHGawf`bVe9 zqa`@|D+)XzJpKLLmKZCF>+3MvVjx&3x2Iq;cNE*WlYhX~^<rI;=6Rp%Us*Q9V%=1q^y>$Jgg(sxg{JZD zuf=0U#~&x?%QJMP%xfyUZ1*4?AH35NhSBo>Bw;Ks+Lrl1h4t%>ltdAaixh#%-S5JM zs=4q};fO7+PWA9NFejG<)H6tVDm`jK#c5t+7uj@o1y$OzUX_A|lm)S+YXD_4rUEZD dfY~YcbIt>v@yEKv|9;jozIH>uO4lX!{{Ryjt}6fl literal 0 HcmV?d00001 diff --git a/examples/aws-solid-start/public/img/android-chrome-512x512.png b/examples/aws-solid-start/public/img/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..f85a880f08333e086c9a4c347eca44cea59f05bf GIT binary patch literal 34283 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 P^KZ?>$Q)f^;1v5GpkcT) literal 0 HcmV?d00001 diff --git a/examples/aws-solid-start/public/manifest.webmanifest b/examples/aws-solid-start/public/manifest.webmanifest new file mode 100644 index 000000000..1e7f4529c --- /dev/null +++ b/examples/aws-solid-start/public/manifest.webmanifest @@ -0,0 +1,20 @@ +{ + "name": "Solid Hackernews", + "short_name": "Solid HN", + "icons": [ + { + "src": "/img/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/img/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "start_url": "/", + "background_color": "#f2f3f5", + "display": "standalone", + "theme_color": "#f60" +} diff --git a/examples/aws-solid-start/public/robots.txt b/examples/aws-solid-start/public/robots.txt new file mode 100644 index 000000000..6f27bb66a --- /dev/null +++ b/examples/aws-solid-start/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: \ No newline at end of file diff --git a/examples/aws-solid-start/public/sw.js b/examples/aws-solid-start/public/sw.js new file mode 100644 index 000000000..b2ecb5056 --- /dev/null +++ b/examples/aws-solid-start/public/sw.js @@ -0,0 +1,14 @@ +self.addEventListener("fetch", (e) => { + (e.request.url.includes("localhost") || e.request.url.includes("workers")) && + e.respondWith( + caches + .open("solid-hn") + .then((t) => + t + .match(e.request) + .then((n) => n || fetch(e.request).then((n) => (t.put(e.request, n.clone()), n))) + ) + ); +}); + +self.addEventListener("activate", (e) => e.waitUntil(caches.delete("solid-hn"))); diff --git a/examples/aws-solid-start/src/app.css b/examples/aws-solid-start/src/app.css new file mode 100644 index 000000000..1db56b0a5 --- /dev/null +++ b/examples/aws-solid-start/src/app.css @@ -0,0 +1,307 @@ +body { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; + font-size: 15px; + background-color: #f2f3f5; + margin: 0; + padding-top: 55px; + color: #34495e; + overflow-y: scroll; +} + +a { + color: #34495e; + text-decoration: none; +} + +.header { + background-color: #335d92; + position: fixed; + z-index: 999; + height: 55px; + top: 0; + left: 0; + right: 0; +} + +.header .inner { + max-width: 800px; + box-sizing: border-box; + margin: 0 auto; + padding: 15px 5px; +} + +.header a { + color: rgba(255, 255, 255, 0.8); + line-height: 24px; + transition: color 0.15s ease; + display: inline-block; + vertical-align: middle; + font-weight: 300; + letter-spacing: 0.075em; + margin-right: 1.8em; +} + +.header a:hover { + color: #fff; +} + +.header a.active { + color: #fff; + font-weight: 400; +} + +.header a:nth-child(6) { + margin-right: 0; +} + +.header .github { + color: #fff; + font-size: 0.9em; + margin: 0; + float: right; +} + +.logo { + width: 24px; + margin-right: 10px; + display: inline-block; + vertical-align: middle; +} + +.view { + max-width: 800px; + margin: 0 auto; + position: relative; +} + +@media (max-width: 860px) { + .header .inner { + padding: 15px 30px; + } +} + +@media (max-width: 600px) { + .header .inner { + padding: 15px; + } + + .header a { + margin-right: 1em; + } + + .header .github { + display: none; + } +} + +.news-view { + padding-top: 45px; +} + +.news-list, .news-list-nav { + background-color: #fff; + border-radius: 2px; +} + +.news-list-nav { + padding: 15px 30px; + position: fixed; + text-align: center; + top: 55px; + left: 0; + right: 0; + z-index: 998; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.news-list-nav .page-link { + margin: 0 1em; +} + +.news-list-nav .disabled { + color: #aaa; +} + +.news-list { + position: absolute; + margin: 30px 0; + width: 100%; +} + +.news-list ul { + list-style-type: none; + padding: 0; + margin: 0; +} + +@media (max-width: 600px) { + .news-list { + margin: 10px 0; + } +} + +.news-item { + background-color: #fff; + padding: 20px 30px 20px 80px; + border-bottom: 1px solid #eee; + position: relative; + line-height: 20px; +} + +.news-item .score { + color: #335d92; + font-size: 1.1em; + font-weight: 700; + position: absolute; + top: 50%; + left: 0; + width: 80px; + text-align: center; + margin-top: -10px; +} + +.news-item .host, .news-item .meta { + font-size: 0.85em; + color: #626262; +} + +.news-item .host a, .news-item .meta a { + color: #626262; + text-decoration: underline; +} + +.news-item .host a:hover, .news-item .meta a:hover { + color: #335d92; +} + +.item-view-header { + background-color: #fff; + padding: 1.8em 2em 1em; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.item-view-header h1 { + display: inline; + font-size: 1.5em; + margin: 0; + margin-right: 0.5em; +} + +.item-view-header .host, .item-view-header .meta, .item-view-header .meta a { + color: #626262; +} + +.item-view-header .meta a { + text-decoration: underline; +} + +.item-view-comments { + background-color: #fff; + margin-top: 10px; + padding: 0 2em 0.5em; +} + +.item-view-comments-header { + margin: 0; + font-size: 1.1em; + padding: 1em 0; + position: relative; +} + +.item-view-comments-header .spinner { + display: inline-block; + margin: -15px 0; +} + +.comment-children { + list-style-type: none; + padding: 0; + margin: 0; +} + +@media (max-width: 600px) { + .item-view-header h1 { + font-size: 1.25em; + } +} + +.comment-children .comment-children { + margin-left: 1.5em; +} + +.comment { + border-top: 1px solid #eee; + position: relative; +} + +.comment .by, .comment .text, .comment .toggle { + font-size: 0.9em; + margin: 1em 0; +} + +.comment .by { + color: #626262; +} + +.comment .by a { + color: #626262; + text-decoration: underline; +} + +.comment .text { + overflow-wrap: break-word; +} + +.comment .text a:hover { + color: #335d92; +} + +.comment .text pre { + white-space: pre-wrap; +} + +.comment .toggle { + background-color: #fffbf2; + padding: 0.3em 0.5em; + border-radius: 4px; +} + +.comment .toggle a { + color: #626262; + cursor: pointer; +} + +.comment .toggle.open { + padding: 0; + background-color: transparent; + margin-bottom: -0.5em; +} + +.user-view { + background-color: #fff; + box-sizing: border-box; + padding: 2em 3em; +} + +.user-view h1 { + margin: 0; + font-size: 1.5em; +} + +.user-view .meta { + list-style-type: none; + padding: 0; +} + +.user-view .label { + display: inline-block; + min-width: 4em; +} + +.user-view .about { + margin: 1em 0; +} + +.user-view .links a { + text-decoration: underline; +} diff --git a/examples/aws-solid-start/src/app.tsx b/examples/aws-solid-start/src/app.tsx new file mode 100644 index 000000000..82e4c0de1 --- /dev/null +++ b/examples/aws-solid-start/src/app.tsx @@ -0,0 +1,22 @@ +import { Router } from "@solidjs/router"; +import { FileRoutes } from "@solidjs/start/router"; +import { Suspense } from "solid-js"; +import "./app.css"; +import Nav from "./components/nav"; + +export default function App() { + return ( + ( + <> +