From ab195ea872115e99f843f5653830b2e2658aed8d Mon Sep 17 00:00:00 2001 From: Daniel Grant <1670902+djgrant@users.noreply.github.com> Date: Mon, 12 Feb 2024 13:47:30 -0800 Subject: [PATCH 1/2] Add cloudfront resource --- packages/aws.iac/package.json | 15 +- packages/aws.iac/src/index.ts | 3 +- .../cloudfront/distribution.schema.ts | 403 ++++++++ .../src/resources/cloudfront/distribution.ts | 111 +++ .../aws.iac/src/resources/cloudfront/index.ts | 1 + packages/aws.iac/src/utils/aws-clients.ts | 19 +- packages/aws.iac/src/utils/types.ts | 26 +- pnpm-lock.yaml | 915 +++++++++++++++++- 8 files changed, 1463 insertions(+), 30 deletions(-) create mode 100644 packages/aws.iac/src/resources/cloudfront/distribution.schema.ts create mode 100644 packages/aws.iac/src/resources/cloudfront/distribution.ts create mode 100644 packages/aws.iac/src/resources/cloudfront/index.ts diff --git a/packages/aws.iac/package.json b/packages/aws.iac/package.json index 27c135a..479a53f 100644 --- a/packages/aws.iac/package.json +++ b/packages/aws.iac/package.json @@ -12,15 +12,16 @@ "dist" ], "dependencies": { - "@aws-sdk/client-apigatewayv2": "^3.441.0", - "@aws-sdk/client-cloudwatch-logs": "^3.441.0", - "@aws-sdk/client-eventbridge": "^3.470.0", - "@aws-sdk/client-iam": "^3.441.0", - "@aws-sdk/client-lambda": "^3.441.0", - "@aws-sdk/client-sts": "^3.441.0", + "@aws-sdk/client-apigatewayv2": "^3.511.0", + "@aws-sdk/client-cloudfront": "^3.511.0", + "@aws-sdk/client-cloudwatch-logs": "^3.511.0", + "@aws-sdk/client-eventbridge": "^3.511.0", + "@aws-sdk/client-iam": "^3.511.0", + "@aws-sdk/client-lambda": "^3.511.0", + "@aws-sdk/client-sts": "^3.511.0", "@notation/core": "workspace:*", "@notation/std.iac": "workspace:*", - "@types/aws-lambda": "^8.10.125", + "@types/aws-lambda": "^8.10.133", "zod": "^3.22.4" } } diff --git a/packages/aws.iac/src/index.ts b/packages/aws.iac/src/index.ts index b64c1a4..a879288 100644 --- a/packages/aws.iac/src/index.ts +++ b/packages/aws.iac/src/index.ts @@ -1,4 +1,5 @@ export * from "./client"; export * as apiGateway from "./resources/api-gateway"; -export * as lambda from "./resources/lambda"; +export * as cloudFront from "./resources/cloudfront"; export * as eventBridge from "./resources/event-bridge"; +export * as lambda from "./resources/lambda"; diff --git a/packages/aws.iac/src/resources/cloudfront/distribution.schema.ts b/packages/aws.iac/src/resources/cloudfront/distribution.schema.ts new file mode 100644 index 0000000..58e196c --- /dev/null +++ b/packages/aws.iac/src/resources/cloudfront/distribution.schema.ts @@ -0,0 +1,403 @@ +import { resource } from "@notation/core"; +import * as z from "zod"; +import * as sdk from "@aws-sdk/client-cloudfront"; +import { AwsSchema } from "src/utils/types"; + +type DistributionSchema = AwsSchema<{ + Key: Omit & { + ETag: string; + }; + CreateParams: NonNullable< + sdk.CreateDistributionRequest["DistributionConfig"] + >; + ReadResult: Omit< + NonNullable, + "DistributionConfig" + > & + NonNullable< + sdk.GetDistributionResult["Distribution"] + >["DistributionConfig"] & { ETag: string }; + UpdateParams: sdk.UpdateDistributionRequest["Id"] & + NonNullable; +}>; + +const distribution = resource({ + type: "aws/cloudFront/Distribution", +}); + +export const distributionSchema = distribution.defineSchema({ + Id: { + propertyType: "computed", + presence: "required", + primaryKey: true, + valueType: z.string(), + }, + ETag: { + propertyType: "computed", + presence: "required", + secondaryKey: true, + valueType: z.string(), + }, + ARN: { + propertyType: "computed", + presence: "required", + valueType: z.string(), + }, + ActiveTrustedKeyGroups: { + propertyType: "computed", + presence: "optional", + valueType: z.object({ + Enabled: z.boolean(), + Quantity: z.number(), + Items: z + .array( + z.object({ + KeyGroupId: z.string().optional(), + KeyPairIds: z + .object({ + Quantity: z.number(), + Items: z.array(z.string()).optional(), + }) + .optional(), + }), + ) + .optional(), + }), + }, + ActiveTrustedSigners: { + propertyType: "computed", + presence: "optional", + valueType: z.object({ + Enabled: z.boolean(), + Quantity: z.number(), + Items: z + .array( + z.object({ + AwsAccountNumber: z.string().optional(), + KeyPairIds: z + .object({ + Quantity: z.number(), + Items: z.array(z.string()).optional(), + }) + .optional(), + }), + ) + .optional(), + }), + }, + Aliases: { + propertyType: "param", + presence: "optional", + valueType: z.object({ + Quantity: z.number(), + Items: z.array(z.string()), + }), + }, + AliasICPRecordals: { + propertyType: "computed", + presence: "optional", + valueType: z.array( + z.object({ + CNAME: z.string().optional(), + ICPRecordalStatus: z + .enum(["APPROVED", "PENDING", "SUSPENDED"]) + .optional(), + }), + ), + }, + CacheBehaviors: { + propertyType: "param", + presence: "optional", + valueType: z.object({ + Quantity: z.number(), + Items: z.array( + getCacheBehaviourSchema().extend({ + PathPattern: z.string(), + }), + ), + }), + }, + CallerReference: { + propertyType: "param", + presence: "required", + valueType: z.string(), + }, + Comment: { + propertyType: "param", + presence: "required", + valueType: z.string(), + }, + ContinuousDeploymentPolicyId: { + propertyType: "param", + presence: "optional", + valueType: z.string(), + }, + CustomErrorResponses: { + propertyType: "param", + presence: "optional", + valueType: z.object({ + Quantity: z.number(), + Items: z.array( + z.object({ + ErrorCode: z.number(), + ResponsePagePath: z.string().optional(), + ResponseCode: z.string().optional(), + ErrorCachingMinTTL: z.number(), + }), + ), + }), + }, + DefaultCacheBehavior: { + propertyType: "param", + presence: "required", + valueType: getCacheBehaviourSchema(), + }, + DefaultRootObject: { + propertyType: "param", + presence: "optional", + valueType: z.string(), + }, + DomainName: { + propertyType: "computed", + presence: "required", + valueType: z.string(), + }, + Enabled: { + propertyType: "param", + presence: "required", + valueType: z.boolean(), + }, + HttpVersion: { + propertyType: "param", + presence: "optional", + valueType: z.enum(["http1.1", "http2"]), + }, + InProgressInvalidationBatches: { + propertyType: "computed", + presence: "optional", + valueType: z.number(), + }, + IsIPV6Enabled: { + propertyType: "param", + presence: "optional", + valueType: z.boolean(), + }, + LastModifiedTime: { + propertyType: "computed", + presence: "required", + valueType: z.date(), + }, + Logging: { + propertyType: "param", + presence: "optional", + valueType: z.object({ + Bucket: z.string(), + Enabled: z.boolean(), + IncludeCookies: z.boolean(), + Prefix: z.string(), + }), + }, + OriginGroups: { + propertyType: "param", + presence: "optional", + valueType: z.object({ + Quantity: z.number(), + Items: z.array( + z.object({ + Id: z.string(), + FailoverCriteria: z.object({ + StatusCodes: z.object({ + Quantity: z.number(), + Items: z.array(z.number()), + }), + }), + Members: z.object({ + Quantity: z.number(), + Items: z.array(z.object({ OriginId: z.string() })), + }), + }), + ), + }), + }, + Origins: { + propertyType: "param", + valueType: z.object({ + Quantity: z.number(), + Items: z.array( + z.object({ + Id: z.string(), + DomainName: z.string(), + OriginPath: z.string().optional(), + // todo + CustomHeaders: z.any(), + // todo + S3OriginConfig: z.any().optional(), + // todo + CustomOriginConfig: z.any().optional(), + ConnectionsAttempts: z.number().optional(), + ConnectionTimeout: z.number().optional(), + OriginShield: z.any().optional(), + OriginAccessControlId: z.string().optional(), + }), + ), + }), + presence: "required", + }, + PriceClass: { + propertyType: "param", + presence: "optional", + valueType: z.enum(["PriceClass_100", "PriceClass_200", "PriceClass_All"]), + }, + Restrictions: { + propertyType: "param", + presence: "optional", + valueType: z.object({ + GeoRestriction: z.object({ + RestrictionType: z.enum(["none", "blacklist", "whitelist"]), + Quantity: z.number(), + Items: z.array(z.string()).optional(), + }), + }), + }, + Staging: { + propertyType: "param", + presence: "optional", + valueType: z.boolean(), + }, + Status: { + propertyType: "computed", + presence: "required", + valueType: z.string(), + }, + ViewerCertificate: { + propertyType: "param", + presence: "optional", + valueType: z.object({ + ACMCertificateArn: z.string().optional(), + IAMCertificateId: z.string().optional(), + CloudFrontDefaultCertificate: z.boolean().optional(), + SNIEnabled: z.boolean().optional(), + MinimumProtocolVersion: z + .enum([ + "SSLv3", + "TLSv1", + "TLSv1.1_2016", + "TLSv1_2016", + "TLSv1.2_2018", + "TLSv1.2_2019", + "TLSv1.2_2021", + ]) + .optional(), + Certificate: z.string().optional(), + CertificateSource: z.enum(["acm", "cloudfront", "iam"]).optional(), + }), + }, + WebACLId: { + propertyType: "param", + presence: "optional", + valueType: z.string(), + }, +}); + +function getCacheBehaviourSchema() { + return z.object({ + ViewerProtocolPolicy: z.enum([ + "allow-all", + "https-only", + "redirect-to-https", + ]), + TargetOriginId: z.string(), + // todo make required + CachePolicyId: z.string().optional(), + TrustedSigners: z + .object({ + Enabled: z.boolean(), + Quantity: z.number(), + Items: z.array(z.string()).optional(), + }) + .optional(), + TrustedKeyGroups: z + .object({ + Enabled: z.boolean(), + Quantity: z.number(), + Items: z.array(z.string()).optional(), + }) + .optional(), + AllowedMethods: z + .object({ + Quantity: z.number(), + Items: z.array( + z.enum(["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"]), + ), + CachedMethods: z + .object({ + Quantity: z.number(), + Items: z.array( + z.enum([ + "DELETE", + "GET", + "HEAD", + "OPTIONS", + "PATCH", + "POST", + "PUT", + ]), + ), + }) + .optional(), + }) + .optional(), + SmoothStreaming: z.boolean().optional(), + Compress: z.boolean().optional(), + LambdaFunctionAssociations: z + .object({ + Quantity: z.number(), + Items: z + .array( + z.object({ + LambdaFunctionARN: z.string(), + EventType: z.enum([ + "origin-request", + "origin-response", + "viewer-request", + "viewer-response", + ]), + IncludeBody: z.boolean(), + }), + ) + .optional(), + }) + .optional(), + FieldLevelEncryptionId: z.string().optional(), + // todo deprecate + ForwardedValues: z + .object({ + QueryString: z.boolean(), + Cookies: z.object({ + Forward: z.enum(["all", "none", "whitelist"]), + WhitelistedNames: z + .object({ + Quantity: z.number(), + Items: z.array(z.string()).optional(), + }) + .optional(), + }), + Headers: z + .object({ + Quantity: z.number(), + Items: z.array(z.string()).optional(), + }) + .optional(), + QueryStringCacheKeys: z + .object({ + Quantity: z.number(), + Items: z.array(z.string()).optional(), + }) + .optional(), + }) + .optional(), + MinTTL: z.number().optional(), + MaxTTL: z.number().optional(), + DefaultTTL: z.number().optional(), + }); +} diff --git a/packages/aws.iac/src/resources/cloudfront/distribution.ts b/packages/aws.iac/src/resources/cloudfront/distribution.ts new file mode 100644 index 0000000..65049b7 --- /dev/null +++ b/packages/aws.iac/src/resources/cloudfront/distribution.ts @@ -0,0 +1,111 @@ +import * as sdk from "@aws-sdk/client-cloudfront"; +import { cloudFrontClient } from "src/utils/aws-clients"; +import { ExcludeUndefined } from "src/utils/types"; +import { ApiInstance } from "../api-gateway/api"; +import { distributionSchema } from "./distribution.schema"; + +type DistributionDependencies = { + origin: ApiInstance; +}; + +export const Distribution = distributionSchema + .defineOperations({ + async create(params) { + const command = new sdk.CreateDistributionCommand({ + DistributionConfig: params, + }); + const result = await cloudFrontClient.send(command); + return { Id: result.Distribution!.Id! }; + }, + async read(key) { + const command = new sdk.GetDistributionCommand(key); + const result = await cloudFrontClient.send(command); + const { DistributionConfig, ...Distribution } = result.Distribution!; + const payload = { + ...Distribution, + ...DistributionConfig, + ETag: result.ETag, + }; + return payload as ExcludeUndefined; + }, + async update(key, patch, params, state) { + const readCommand = new sdk.GetDistributionCommand(key); + const readResult = await cloudFrontClient.send(readCommand); + const command = new sdk.UpdateDistributionCommand({ + Id: key.Id, + IfMatch: readResult.ETag, + // soft rewrite e.g. not reading current state in + // so will fail if state is out of date + DistributionConfig: { ...state, ...patch }, + }); + await cloudFrontClient.send(command); + }, + async delete(key, state) { + let ETag = key.ETag; + if (state.Enabled) { + const updateCommand = new sdk.UpdateDistributionCommand({ + Id: key.Id, + IfMatch: state.ETag, + DistributionConfig: { + ...state, + Enabled: false, + }, + }); + // todo: store in state in case delete fails + const updateResult = await cloudFrontClient.send(updateCommand); + ETag = updateResult.ETag!; + } + // todo: wait until the distribution is actually disabled + const deleteCommand = new sdk.DeleteDistributionCommand({ + Id: key.Id, + IfMatch: ETag, + }); + await cloudFrontClient.send(deleteCommand); + }, + }) + .requireDependencies() + .setIntrinsicConfig(({ deps }) => ({ + Origins: { + Quantity: 1, + Items: [ + { + Id: `cf-origin-${deps.origin.id}`, + DomainName: deps.origin.output.ApiEndpoint.replace("https://", ""), + CustomHeaders: { + Quantity: 0, + Items: [], + }, + CustomOriginConfig: { + OriginProtocolPolicy: "https-only", + HTTPPort: 80, + HTTPSPort: 443, + }, + }, + ], + }, + DefaultCacheBehavior: { + TargetOriginId: `cf-origin-${deps.origin.id}`, + ViewerProtocolPolicy: "https-only", + // CachePolicyId: "", + AllowedMethods: { + Quantity: 7, + Items: ["GET", "HEAD", "OPTIONS", "PUT", "POST", "PATCH", "DELETE"], + CachedMethods: { + Quantity: 2, + Items: ["GET", "HEAD"], + }, + }, + ForwardedValues: { + QueryString: true, + // If your application uses cookies or requires specific headers, configure them here + Cookies: { Forward: "none" }, + Headers: { + Quantity: 1, + Items: ["Origin"], // Specify the headers you want to forward to the origin + }, + }, + MinTTL: 1, + }, + })); + +export type DistributionInstance = InstanceType; diff --git a/packages/aws.iac/src/resources/cloudfront/index.ts b/packages/aws.iac/src/resources/cloudfront/index.ts new file mode 100644 index 0000000..7cb7ca9 --- /dev/null +++ b/packages/aws.iac/src/resources/cloudfront/index.ts @@ -0,0 +1 @@ +export * from "./distribution"; diff --git a/packages/aws.iac/src/utils/aws-clients.ts b/packages/aws.iac/src/utils/aws-clients.ts index 2533a28..f0ca0f0 100644 --- a/packages/aws.iac/src/utils/aws-clients.ts +++ b/packages/aws.iac/src/utils/aws-clients.ts @@ -1,15 +1,16 @@ -import { STSClient } from "@aws-sdk/client-sts"; -import { CloudWatchLogsClient } from "@aws-sdk/client-cloudwatch-logs"; import { ApiGatewayV2Client } from "@aws-sdk/client-apigatewayv2"; -import { LambdaClient } from "@aws-sdk/client-lambda"; +import { CloudFrontClient } from "@aws-sdk/client-cloudfront"; +import { CloudWatchLogsClient } from "@aws-sdk/client-cloudwatch-logs"; +import { EventBridgeClient } from "@aws-sdk/client-eventbridge"; import { IAMClient } from "@aws-sdk/client-iam"; +import { LambdaClient } from "@aws-sdk/client-lambda"; +import { STSClient } from "@aws-sdk/client-sts"; import { region } from "src/config"; -import { EventBridgeClient } from "@aws-sdk/client-eventbridge"; -export const stsClient = new STSClient({ region }); -export const cloudWatchLogsClient = new CloudWatchLogsClient({ region }); -export const lambdaClient = new LambdaClient({ region }); export const apiGatewayClient = new ApiGatewayV2Client({ region }); -export const iamClient = new IAMClient({ region }); - +export const cloudFrontClient = new CloudFrontClient({ region }); +export const cloudWatchLogsClient = new CloudWatchLogsClient({ region }); export const eventBridgeClient = new EventBridgeClient({ region }); +export const iamClient = new IAMClient({ region }); +export const lambdaClient = new LambdaClient({ region }); +export const stsClient = new STSClient({ region }); diff --git a/packages/aws.iac/src/utils/types.ts b/packages/aws.iac/src/utils/types.ts index cd1adcd..f33bd2e 100644 --- a/packages/aws.iac/src/utils/types.ts +++ b/packages/aws.iac/src/utils/types.ts @@ -5,16 +5,30 @@ */ export type AwsSchema = { Key: S["Key"]; - CreateParams: NonUndefined; + CreateParams: ExcludeUndefined; UpdateParams: S["UpdateParams"] extends undefined - ? NonUndefined + ? ExcludeUndefined : never; - ReadResult: S["ReadResult"] extends undefined ? {} : S["ReadResult"]; + ReadResult: S["ReadResult"] extends undefined + ? {} + : ExcludeUndefined; }; -type NonUndefined = { - [P in keyof T]: Exclude; -}; +/** + * Unwraps type + */ +type Prettify = { + [K in keyof T]: T[K]; +} & {}; + +/** + * Excludes undefined from object properties + * For forcing exact optional types and removing + * the undefined that AWS's SDK adds to every property + */ +export type ExcludeUndefined = Prettify<{ + [P in keyof T]: ExcludeUndefined>; +}>; type SdkSchema = { Key: any; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 20e33fb..59919ca 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -83,6 +83,22 @@ importers: specifier: ^20.8.4 version: 20.8.8 + examples/cloudfront: + dependencies: + '@notation/aws': + specifier: workspace:* + version: link:../../packages/aws + '@notation/cli': + specifier: workspace:* + version: link:../../packages/cli + '@notation/core': + specifier: workspace:* + version: link:../../packages/core + devDependencies: + '@types/node': + specifier: ^20.8.4 + version: 20.8.8 + examples/event-bridge: dependencies: '@notation/aws': @@ -120,22 +136,25 @@ importers: packages/aws.iac: dependencies: '@aws-sdk/client-apigatewayv2': - specifier: ^3.441.0 + specifier: ^3.511.0 version: 3.511.0 + '@aws-sdk/client-cloudfront': + specifier: ^3.511.0 + version: 3.749.0 '@aws-sdk/client-cloudwatch-logs': - specifier: ^3.441.0 + specifier: ^3.511.0 version: 3.511.0 '@aws-sdk/client-eventbridge': - specifier: ^3.470.0 + specifier: ^3.511.0 version: 3.511.0 '@aws-sdk/client-iam': - specifier: ^3.441.0 + specifier: ^3.511.0 version: 3.511.0 '@aws-sdk/client-lambda': - specifier: ^3.441.0 + specifier: ^3.511.0 version: 3.511.0 '@aws-sdk/client-sts': - specifier: ^3.441.0 + specifier: ^3.511.0 version: 3.511.0(@aws-sdk/credential-provider-node@3.511.0) '@notation/core': specifier: workspace:* @@ -144,7 +163,7 @@ importers: specifier: workspace:* version: link:../std.iac '@types/aws-lambda': - specifier: ^8.10.125 + specifier: ^8.10.133 version: 8.10.133 zod: specifier: ^3.22.4 @@ -351,19 +370,36 @@ packages: '@aws-crypto/sha256-browser@3.0.0': resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + '@aws-crypto/sha256-js@3.0.0': resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + '@aws-crypto/supports-web-crypto@3.0.0': resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + '@aws-crypto/util@3.0.0': resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + '@aws-sdk/client-apigatewayv2@3.511.0': resolution: {integrity: sha512-PnCVR/bZZfJ5PmGTyN0DjV+96yBSElRsSvyVCNJawqL+rSI0bBstSjKCRnhddTCAajNH+w0hB/cLTqDMtmm0Fw==} engines: {node: '>=14.0.0'} + '@aws-sdk/client-cloudfront@3.749.0': + resolution: {integrity: sha512-fS5wRLkkfSkyR7njKivEzn2cuWjwcowwS4z4sReGuyevIQnt/n7wTvJH1cVKlT4WGeAri8d8C0W8LZrccUZVTQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/client-cloudwatch-logs@3.511.0': resolution: {integrity: sha512-MS5EiKfmEpo/y6bKBQEJZUppYrh3k/yCj67ckC+9/xzLzeT7XSRt3eM4MqNTVKt1HHWJLufuEE655hX4bJ2D+Q==} engines: {node: '>=14.0.0'} @@ -390,6 +426,10 @@ packages: resolution: {integrity: sha512-v1f5ZbuZWpad+fgTOpgFyIZT3A37wdqoSPh0hl+cKRu5kPsz96xCe9+UvLx+HdN2yJ/mV0UZcMq6ysj4xAGIEg==} engines: {node: '>=14.0.0'} + '@aws-sdk/client-sso@3.749.0': + resolution: {integrity: sha512-ecmuDu8EPya1LDpGRtpgN7C9PHayDh8EaW37ZBKhuxA7cg099yvTFqsGngwRXbhNjKJ4oVa9OUe0EDnu60atYA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/client-sts@3.511.0': resolution: {integrity: sha512-lwVEEXK+1auEwmBuTv35m2GvbxPthi8SjNUpU4pRetZPVbGhnhCN6H7JqeMDP6GLf81Io2eySXRsmLMt7l/fjg==} engines: {node: '>=14.0.0'} @@ -400,46 +440,90 @@ packages: resolution: {integrity: sha512-0gbDvQhToyLxPyr/7KP6uavrBYKh7exld2lju1Lp65U61XgEjTVP/thJmHTvH4BAKGSqeIz/rrwJ0KrC8nwBtw==} engines: {node: '>=14.0.0'} + '@aws-sdk/core@3.749.0': + resolution: {integrity: sha512-w5Jj573+XKwrDNZUjUJDXL5upx+RCw64TLq3Zk8FVg9MsgkzAPorQ9qmzffi6os+PWngd3pFmD8q5y+Y35LpFQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-env@3.511.0': resolution: {integrity: sha512-4VUsnLRox8YzxnZwnFrfZM4bL5KKLhsjjjX7oiuLyzFkhauI4HFYt7rTB8YNGphpqAg/Wzw5DBZfO3Bw1iR1HA==} engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-env@3.749.0': + resolution: {integrity: sha512-bhB1ds5QzcSfmCTbjVessXy8xHJROota6wOhFtBsL1aZRQyNN2a9h2QS6xkxjmqVE3yHBsPz+OiSOeLn0kxm7Q==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-http@3.511.0': resolution: {integrity: sha512-y83Gt8GPpgMe/lMFxIq+0G2rbzLTC6lhrDocHUzqcApLD6wet8Esy2iYckSRlJgYY+qsVAzpLrSMtt85DwRPTw==} engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-http@3.749.0': + resolution: {integrity: sha512-enFGT8uvETbE6+4bDA2aTOrA/83GrIVPpg2g2r7MwJb36jreXA3KDXaP/5jQsxyIZW70cnYNl/Cawdd4ZXs7CQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-ini@3.511.0': resolution: {integrity: sha512-AgIOCtYzm61jbTQCY/2Vf/yu7DeLG0TLZa05a3VVRN9XE4ERtEnMn7TdbxM+hS24MTX8xI0HbMcWxCBkXRIg9w==} engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-ini@3.749.0': + resolution: {integrity: sha512-OB4AGK61lQdoW2mTmaMBw8L+eBo7wF3YJZXwqFI7M2cQe9WtfuKGIxbYWMBMzoLvEtmsbzeppoZZUezooaIclg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-node@3.511.0': resolution: {integrity: sha512-5JDZXsSluliJmxOF+lYYFgJdSKQfVLQyic5NxScHULTERGoEwEHMgucFGwJ9MV9FoINjNTQLfAiWlJL/kGkCEQ==} engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-node@3.749.0': + resolution: {integrity: sha512-1QGstZmGmgmY0rLSTAURlBJdR4s2PRYiZh6dS4HkzzQu7xVDWoCMD+2F7dolsNA8ChTNx2OvBW80n3O9QPICCg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-process@3.511.0': resolution: {integrity: sha512-88hLUPqcTwjSubPS+34ZfmglnKeLny8GbmZsyllk96l26PmDTAqo5RScSA8BWxL0l5pRRWGtcrFyts+oibHIuQ==} engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-process@3.749.0': + resolution: {integrity: sha512-C/cgg/AhRabybZRY9mJ6KDz8uqfasWKuFIFGzTpeb/MIDIL53ZqP61CspiQJTRvC4zlFGqvm43XefphfrBGGlQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-sso@3.511.0': resolution: {integrity: sha512-aEei9UdXYEE2e0Htf28/IcuHcWk3VkUkpcg3KDR/AyzXA3i/kxmixtAgRmHOForC5CMqoJjzVPFUITNkAscyag==} engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-sso@3.749.0': + resolution: {integrity: sha512-bQNgWcYk10fYOvFwcLskYYVNLO3KMgmV1ip9ieapJb9JDg6bSBaXNjIDhdpK4biTOfrV+adtDO5EU93ogpmAWA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-web-identity@3.511.0': resolution: {integrity: sha512-/3XMyN7YYefAsES/sMMY5zZGRmZ5QJisJw798DdMYmYMsb1dt0Qy8kZTu+59ZzOiVIcznsjSTCEB81QmGtDKcA==} engines: {node: '>=14.0.0'} + '@aws-sdk/credential-provider-web-identity@3.749.0': + resolution: {integrity: sha512-jzHk6i4G4dnXL+L+qeILguDCiIhA1rNvJzB5lTts4R8OdmNkG12bGbYL8bL4O1b5qCimlo7HS0IZIby0pS7rcg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-host-header@3.511.0': resolution: {integrity: sha512-DbBzQP/6woSHR/+g9dHN3YiYaLIqFw9u8lQFMxi3rT3hqITFVYLzzXtEaHjDD6/is56pNT84CIKbyJ6/gY5d1Q==} engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-host-header@3.734.0': + resolution: {integrity: sha512-LW7RRgSOHHBzWZnigNsDIzu3AiwtjeI2X66v+Wn1P1u+eXssy1+up4ZY/h+t2sU4LU36UvEf+jrZti9c6vRnFw==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-logger@3.511.0': resolution: {integrity: sha512-EYU9dBlJXvQcCsM2Tfgi0NQoXrqovfDv/fDy8oGJgZFrgNuHDti8tdVVxeJTUJNEAF67xlDl5o+rWEkKthkYGQ==} engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-logger@3.734.0': + resolution: {integrity: sha512-mUMFITpJUW3LcKvFok176eI5zXAUomVtahb9IQBwLzkqFYOrMJvWAvoV4yuxrJ8TlQBG8gyEnkb9SnhZvjg67w==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-recursion-detection@3.511.0': resolution: {integrity: sha512-PlNPCV/6zpDVdNx1K69xDTh/wPNU4WyP4qa6hUo2/+4/PNG5HI9xbCWtpb4RjhdTRw6qDtkBNcPICHbtWx5aHg==} engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-recursion-detection@3.734.0': + resolution: {integrity: sha512-CUat2d9ITsFc2XsmeiRQO96iWpxSKYFjxvj27Hc7vo87YUHRnfMfnc8jw1EpxEwMcvBD7LsRa6vDNky6AjcrFA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-sdk-s3@3.511.0': resolution: {integrity: sha512-SKJr8mKaqjcGpu0xxRPXZiKrJmyetDfgzvWuZ7QOgdnPa+6jk5fmEUTFoPb3VCarMkf8xo/l6cTZ5lei7Lbflw==} engines: {node: '>=14.0.0'} @@ -452,10 +536,22 @@ packages: resolution: {integrity: sha512-eLs+CxP2QCXh3tCGYCdAml3oyWj8MSIwKbH+8rKw0k/5vmY1YJDBy526whOxx61ivhz2e0muuijN4X5EZZ2Pnw==} engines: {node: '>=14.0.0'} + '@aws-sdk/middleware-user-agent@3.749.0': + resolution: {integrity: sha512-dNRkZtiM8OoGb/h2Fgrgvty9ltYEubzsD5FH+VN14RrluertLQMmqHrgvq7JoAXFf7MJy+uwhRu4V6pf1sZR/w==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/nested-clients@3.749.0': + resolution: {integrity: sha512-5L8OuVojcVQAZw+iVXTaw88AZTlMw8fD51lB6spzbZdNLl6dd5Iz1JVJAOUl2mTAZXRiN5Q9VECwY1yMgWweAw==} + engines: {node: '>=18.0.0'} + '@aws-sdk/region-config-resolver@3.511.0': resolution: {integrity: sha512-RzBLSNaRd4iEkQyEGfiSNvSnWU/x23rsiFgA9tqYFA0Vqx7YmzSWC8QBUxpwybB8HkbbL9wNVKQqTbhI3mYneQ==} engines: {node: '>=14.0.0'} + '@aws-sdk/region-config-resolver@3.734.0': + resolution: {integrity: sha512-Lvj1kPRC5IuJBr9DyJ9T9/plkh+EfKLy+12s/mykOy1JaKHDpvj+XGy2YO6YgYVOb8JFtaqloid+5COtje4JTQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/signature-v4-multi-region@3.511.0': resolution: {integrity: sha512-lwbU3LX5TpYu1DHBMH2Wz+2MWGccn5G3psu1Y9WTPc+1bubVQHWf8UD2lzON5L2QirT9tQheQjTke1u5JC7FTQ==} engines: {node: '>=14.0.0'} @@ -464,10 +560,18 @@ packages: resolution: {integrity: sha512-92dXjMHBJcRoUkJHc0Bvtsz7Sal8t6VASRJ5vfs5c2ZpTVgLpVnM4dBmwUgGUdnvHov0cZTXbbadTJ/qOWx5Zw==} engines: {node: '>=14.0.0'} + '@aws-sdk/token-providers@3.749.0': + resolution: {integrity: sha512-s3ExVWoNZan6U7ljMqjiHq3bOe4EqL+U+cVPwqNxAsMaJpGyCiA8VQFlXNGg0EPAFbz/0DVBcozYht6/vyH3sg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/types@3.511.0': resolution: {integrity: sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==} engines: {node: '>=14.0.0'} + '@aws-sdk/types@3.734.0': + resolution: {integrity: sha512-o11tSPTT70nAkGV1fN9wm/hAIiLPyWX6SuGf+9JyTp7S/rC2cFWhR26MvA69nplcjNaXVzB0f+QFrLXXjOqCrg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/util-arn-parser@3.495.0': resolution: {integrity: sha512-hwdA3XAippSEUxs7jpznwD63YYFR+LtQvlEcebPTgWR9oQgG9TfS+39PUfbnEeje1ICuOrN3lrFqFbmP9uzbMg==} engines: {node: '>=14.0.0'} @@ -476,6 +580,10 @@ packages: resolution: {integrity: sha512-J/5hsscJkg2pAOdLx1YKlyMCk5lFRxRxEtup9xipzOxVBlqOIE72Tuu31fbxSlF8XzO/AuCJcZL4m1v098K9oA==} engines: {node: '>=14.0.0'} + '@aws-sdk/util-endpoints@3.743.0': + resolution: {integrity: sha512-sN1l559zrixeh5x+pttrnd0A3+r34r0tmPkJ/eaaMaAzXqsmKU/xYre9K3FNnsSS1J1k4PEfk/nHDTVUgFYjnw==} + engines: {node: '>=18.0.0'} + '@aws-sdk/util-locate-window@3.310.0': resolution: {integrity: sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==} engines: {node: '>=14.0.0'} @@ -483,6 +591,9 @@ packages: '@aws-sdk/util-user-agent-browser@3.511.0': resolution: {integrity: sha512-5LuESdwtIcA10aHcX7pde7aCIijcyTPBXFuXmFlDTgm/naAayQxelQDpvgbzuzGLgePf8eTyyhDKhzwPZ2EqiQ==} + '@aws-sdk/util-user-agent-browser@3.734.0': + resolution: {integrity: sha512-xQTCus6Q9LwUuALW+S76OL0jcWtMOVu14q+GoLnWPUM7QeUw963oQcLhF7oq0CtaLLKyl4GOUfcwc773Zmwwng==} + '@aws-sdk/util-user-agent-node@3.511.0': resolution: {integrity: sha512-UopdlRvYY5mxlS4wwFv+QAWL6/T302wmoQj7i+RY+c/D3Ej3PKBb/mW3r2wEOgZLJmPpeeM1SYMk+rVmsW1rqw==} engines: {node: '>=14.0.0'} @@ -492,9 +603,22 @@ packages: aws-crt: optional: true + '@aws-sdk/util-user-agent-node@3.749.0': + resolution: {integrity: sha512-uBzolGGrwvZKhpYlGIy9tw6gRdqVs2zyjjXUiifdgbr3WiQXJe8sE1KhLjzyN/VOPcZB0rY34ybqiKEDOymOeQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + '@aws-sdk/util-utf8-browser@3.259.0': resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} + '@aws-sdk/xml-builder@3.734.0': + resolution: {integrity: sha512-Zrjxi5qwGEcUsJ0ru7fRtW74WcTS0rbLcehoFB+rN1GRi2hbLcFaYs4PwVA5diLeAJH0gszv3x4Hr/S87MfbKQ==} + engines: {node: '>=18.0.0'} + '@babel/code-frame@7.22.13': resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} @@ -1105,18 +1229,34 @@ packages: resolution: {integrity: sha512-1+qdrUqLhaALYL0iOcN43EP6yAXXQ2wWZ6taf4S2pNGowmOc5gx+iMQv+E42JizNJjB0+gEadOXeV1Bf7JWL1Q==} engines: {node: '>=14.0.0'} + '@smithy/abort-controller@4.0.1': + resolution: {integrity: sha512-fiUIYgIgRjMWznk6iLJz35K2YxSLHzLBA/RC6lBrKfQ8fHbPfvk7Pk9UvpKoHgJjI18MnbPuEju53zcVy6KF1g==} + engines: {node: '>=18.0.0'} + '@smithy/config-resolver@2.1.1': resolution: {integrity: sha512-lxfLDpZm+AWAHPFZps5JfDoO9Ux1764fOgvRUBpHIO8HWHcSN1dkgsago1qLRVgm1BZ8RCm8cgv99QvtaOWIhw==} engines: {node: '>=14.0.0'} + '@smithy/config-resolver@4.0.1': + resolution: {integrity: sha512-Igfg8lKu3dRVkTSEm98QpZUvKEOa71jDX4vKRcvJVyRc3UgN3j7vFMf0s7xLQhYmKa8kyJGQgUJDOV5V3neVlQ==} + engines: {node: '>=18.0.0'} + '@smithy/core@1.3.2': resolution: {integrity: sha512-tYDmTp0f2TZVE18jAOH1PnmkngLQ+dOGUlMd1u67s87ieueNeyqhja6z/Z4MxhybEiXKOWFOmGjfTZWFxljwJw==} engines: {node: '>=14.0.0'} + '@smithy/core@3.1.4': + resolution: {integrity: sha512-wFExFGK+7r2wYriOqe7RRIBNpvxwiS95ih09+GSLRBdoyK/O1uZA7K7pKesj5CBvwJuSBeXwLyR88WwIAY+DGA==} + engines: {node: '>=18.0.0'} + '@smithy/credential-provider-imds@2.2.1': resolution: {integrity: sha512-7XHjZUxmZYnONheVQL7j5zvZXga+EWNgwEAP6OPZTi7l8J4JTeNh9aIOfE5fKHZ/ee2IeNOh54ZrSna+Vc6TFA==} engines: {node: '>=14.0.0'} + '@smithy/credential-provider-imds@4.0.1': + resolution: {integrity: sha512-l/qdInaDq1Zpznpmev/+52QomsJNZ3JkTl5yrTl02V6NBgJOQ4LY0SFw/8zsMwj3tLe8vqiIuwF6nxaEwgf6mg==} + engines: {node: '>=18.0.0'} + '@smithy/eventstream-codec@2.1.1': resolution: {integrity: sha512-E8KYBxBIuU4c+zrpR22VsVrOPoEDzk35bQR3E+xm4k6Pa6JqzkDOdMyf9Atac5GPNKHJBdVaQ4JtjdWX2rl/nw==} @@ -1139,143 +1279,287 @@ packages: '@smithy/fetch-http-handler@2.4.1': resolution: {integrity: sha512-VYGLinPsFqH68lxfRhjQaSkjXM7JysUOJDTNjHBuN/ykyRb2f1gyavN9+VhhPTWCy32L4yZ2fdhpCs/nStEicg==} + '@smithy/fetch-http-handler@5.0.1': + resolution: {integrity: sha512-3aS+fP28urrMW2KTjb6z9iFow6jO8n3MFfineGbndvzGZit3taZhKWtTorf+Gp5RpFDDafeHlhfsGlDCXvUnJA==} + engines: {node: '>=18.0.0'} + '@smithy/hash-node@2.1.1': resolution: {integrity: sha512-Qhoq0N8f2OtCnvUpCf+g1vSyhYQrZjhSwvJ9qvR8BUGOtTXiyv2x1OD2e6jVGmlpC4E4ax1USHoyGfV9JFsACg==} engines: {node: '>=14.0.0'} + '@smithy/hash-node@4.0.1': + resolution: {integrity: sha512-TJ6oZS+3r2Xu4emVse1YPB3Dq3d8RkZDKcPr71Nj/lJsdAP1c7oFzYqEn1IBc915TsgLl2xIJNuxCz+gLbLE0w==} + engines: {node: '>=18.0.0'} + '@smithy/invalid-dependency@2.1.1': resolution: {integrity: sha512-7WTgnKw+VPg8fxu2v9AlNOQ5yaz6RA54zOVB4f6vQuR0xFKd+RzlCpt0WidYTsye7F+FYDIaS/RnJW4pxjNInw==} + '@smithy/invalid-dependency@4.0.1': + resolution: {integrity: sha512-gdudFPf4QRQ5pzj7HEnu6FhKRi61BfH/Gk5Yf6O0KiSbr1LlVhgjThcvjdu658VE6Nve8vaIWB8/fodmS1rBPQ==} + engines: {node: '>=18.0.0'} + '@smithy/is-array-buffer@2.1.1': resolution: {integrity: sha512-xozSQrcUinPpNPNPds4S7z/FakDTh1MZWtRP/2vQtYB/u3HYrX2UXuZs+VhaKBd6Vc7g2XPr2ZtwGBNDN6fNKQ==} engines: {node: '>=14.0.0'} + '@smithy/is-array-buffer@4.0.0': + resolution: {integrity: sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==} + engines: {node: '>=18.0.0'} + '@smithy/middleware-content-length@2.1.1': resolution: {integrity: sha512-rSr9ezUl9qMgiJR0UVtVOGEZElMdGFyl8FzWEF5iEKTlcWxGr2wTqGfDwtH3LAB7h+FPkxqv4ZU4cpuCN9Kf/g==} engines: {node: '>=14.0.0'} + '@smithy/middleware-content-length@4.0.1': + resolution: {integrity: sha512-OGXo7w5EkB5pPiac7KNzVtfCW2vKBTZNuCctn++TTSOMpe6RZO/n6WEC1AxJINn3+vWLKW49uad3lo/u0WJ9oQ==} + engines: {node: '>=18.0.0'} + '@smithy/middleware-endpoint@2.4.1': resolution: {integrity: sha512-XPZTb1E2Oav60Ven3n2PFx+rX9EDsU/jSTA8VDamt7FXks67ekjPY/XrmmPDQaFJOTUHJNKjd8+kZxVO5Ael4Q==} engines: {node: '>=14.0.0'} + '@smithy/middleware-endpoint@4.0.5': + resolution: {integrity: sha512-cPzGZV7qStHwboFrm6GfrzQE+YDiCzWcTh4+7wKrP/ZQ4gkw+r7qDjV8GjM4N0UYsuUyLfpzLGg5hxsYTU11WA==} + engines: {node: '>=18.0.0'} + '@smithy/middleware-retry@2.1.1': resolution: {integrity: sha512-eMIHOBTXro6JZ+WWzZWd/8fS8ht5nS5KDQjzhNMHNRcG5FkNTqcKpYhw7TETMYzbLfhO5FYghHy1vqDWM4FLDA==} engines: {node: '>=14.0.0'} + '@smithy/middleware-retry@4.0.6': + resolution: {integrity: sha512-s8QzuOQnbdvRymD9Gt9c9zMq10wUQAHQ3z72uirrBHCwZcLTrL5iCOuVTMdka2IXOYhQE890WD5t6G24+F+Qcg==} + engines: {node: '>=18.0.0'} + '@smithy/middleware-serde@2.1.1': resolution: {integrity: sha512-D8Gq0aQBeE1pxf3cjWVkRr2W54t+cdM2zx78tNrVhqrDykRA7asq8yVJij1u5NDtKzKqzBSPYh7iW0svUKg76g==} engines: {node: '>=14.0.0'} + '@smithy/middleware-serde@4.0.2': + resolution: {integrity: sha512-Sdr5lOagCn5tt+zKsaW+U2/iwr6bI9p08wOkCp6/eL6iMbgdtc2R5Ety66rf87PeohR0ExI84Txz9GYv5ou3iQ==} + engines: {node: '>=18.0.0'} + '@smithy/middleware-stack@2.1.1': resolution: {integrity: sha512-KPJhRlhsl8CjgGXK/DoDcrFGfAqoqvuwlbxy+uOO4g2Azn1dhH+GVfC3RAp+6PoL5PWPb+vt6Z23FP+Mr6qeCw==} engines: {node: '>=14.0.0'} + '@smithy/middleware-stack@4.0.1': + resolution: {integrity: sha512-dHwDmrtR/ln8UTHpaIavRSzeIk5+YZTBtLnKwDW3G2t6nAupCiQUvNzNoHBpik63fwUaJPtlnMzXbQrNFWssIA==} + engines: {node: '>=18.0.0'} + '@smithy/node-config-provider@2.2.1': resolution: {integrity: sha512-epzK3x1xNxA9oJgHQ5nz+2j6DsJKdHfieb+YgJ7ATWxzNcB7Hc+Uya2TUck5MicOPhDV8HZImND7ZOecVr+OWg==} engines: {node: '>=14.0.0'} + '@smithy/node-config-provider@4.0.1': + resolution: {integrity: sha512-8mRTjvCtVET8+rxvmzRNRR0hH2JjV0DFOmwXPrISmTIJEfnCBugpYYGAsCj8t41qd+RB5gbheSQ/6aKZCQvFLQ==} + engines: {node: '>=18.0.0'} + '@smithy/node-http-handler@2.3.1': resolution: {integrity: sha512-gLA8qK2nL9J0Rk/WEZSvgin4AppvuCYRYg61dcUo/uKxvMZsMInL5I5ZdJTogOvdfVug3N2dgI5ffcUfS4S9PA==} engines: {node: '>=14.0.0'} + '@smithy/node-http-handler@4.0.2': + resolution: {integrity: sha512-X66H9aah9hisLLSnGuzRYba6vckuFtGE+a5DcHLliI/YlqKrGoxhisD5XbX44KyoeRzoNlGr94eTsMVHFAzPOw==} + engines: {node: '>=18.0.0'} + '@smithy/property-provider@2.1.1': resolution: {integrity: sha512-FX7JhhD/o5HwSwg6GLK9zxrMUrGnb3PzNBrcthqHKBc3dH0UfgEAU24xnJ8F0uow5mj17UeBEOI6o3CF2k7Mhw==} engines: {node: '>=14.0.0'} + '@smithy/property-provider@4.0.1': + resolution: {integrity: sha512-o+VRiwC2cgmk/WFV0jaETGOtX16VNPp2bSQEzu0whbReqE1BMqsP2ami2Vi3cbGVdKu1kq9gQkDAGKbt0WOHAQ==} + engines: {node: '>=18.0.0'} + '@smithy/protocol-http@3.1.1': resolution: {integrity: sha512-6ZRTSsaXuSL9++qEwH851hJjUA0OgXdQFCs+VDw4tGH256jQ3TjYY/i34N4vd24RV3nrjNsgd1yhb57uMoKbzQ==} engines: {node: '>=14.0.0'} + '@smithy/protocol-http@5.0.1': + resolution: {integrity: sha512-TE4cpj49jJNB/oHyh/cRVEgNZaoPaxd4vteJNB0yGidOCVR0jCw/hjPVsT8Q8FRmj8Bd3bFZt8Dh7xGCT+xMBQ==} + engines: {node: '>=18.0.0'} + '@smithy/querystring-builder@2.1.1': resolution: {integrity: sha512-C/ko/CeEa8jdYE4gt6nHO5XDrlSJ3vdCG0ZAc6nD5ZIE7LBp0jCx4qoqp7eoutBu7VrGMXERSRoPqwi1WjCPbg==} engines: {node: '>=14.0.0'} + '@smithy/querystring-builder@4.0.1': + resolution: {integrity: sha512-wU87iWZoCbcqrwszsOewEIuq+SU2mSoBE2CcsLwE0I19m0B2gOJr1MVjxWcDQYOzHbR1xCk7AcOBbGFUYOKvdg==} + engines: {node: '>=18.0.0'} + '@smithy/querystring-parser@2.1.1': resolution: {integrity: sha512-H4+6jKGVhG1W4CIxfBaSsbm98lOO88tpDWmZLgkJpt8Zkk/+uG0FmmqMuCAc3HNM2ZDV+JbErxr0l5BcuIf/XQ==} engines: {node: '>=14.0.0'} + '@smithy/querystring-parser@4.0.1': + resolution: {integrity: sha512-Ma2XC7VS9aV77+clSFylVUnPZRindhB7BbmYiNOdr+CHt/kZNJoPP0cd3QxCnCFyPXC4eybmyE98phEHkqZ5Jw==} + engines: {node: '>=18.0.0'} + '@smithy/service-error-classification@2.1.1': resolution: {integrity: sha512-txEdZxPUgM1PwGvDvHzqhXisrc5LlRWYCf2yyHfvITWioAKat7srQvpjMAvgzf0t6t7j8yHrryXU9xt7RZqFpw==} engines: {node: '>=14.0.0'} + '@smithy/service-error-classification@4.0.1': + resolution: {integrity: sha512-3JNjBfOWpj/mYfjXJHB4Txc/7E4LVq32bwzE7m28GN79+M1f76XHflUaSUkhOriprPDzev9cX/M+dEB80DNDKA==} + engines: {node: '>=18.0.0'} + '@smithy/shared-ini-file-loader@2.3.1': resolution: {integrity: sha512-2E2kh24igmIznHLB6H05Na4OgIEilRu0oQpYXo3LCNRrawHAcfDKq9004zJs+sAMt2X5AbY87CUCJ7IpqpSgdw==} engines: {node: '>=14.0.0'} + '@smithy/shared-ini-file-loader@4.0.1': + resolution: {integrity: sha512-hC8F6qTBbuHRI/uqDgqqi6J0R4GtEZcgrZPhFQnMhfJs3MnUTGSnR1NSJCJs5VWlMydu0kJz15M640fJlRsIOw==} + engines: {node: '>=18.0.0'} + '@smithy/signature-v4@2.1.1': resolution: {integrity: sha512-Hb7xub0NHuvvQD3YwDSdanBmYukoEkhqBjqoxo+bSdC0ryV9cTfgmNjuAQhTPYB6yeU7hTR+sPRiFMlxqv6kmg==} engines: {node: '>=14.0.0'} + '@smithy/signature-v4@5.0.1': + resolution: {integrity: sha512-nCe6fQ+ppm1bQuw5iKoeJ0MJfz2os7Ic3GBjOkLOPtavbD1ONoyE3ygjBfz2ythFWm4YnRm6OxW+8p/m9uCoIA==} + engines: {node: '>=18.0.0'} + '@smithy/smithy-client@2.3.1': resolution: {integrity: sha512-YsTdU8xVD64r2pLEwmltrNvZV6XIAC50LN6ivDopdt+YiF/jGH6PY9zUOu0CXD/d8GMB8gbhnpPsdrjAXHS9QA==} engines: {node: '>=14.0.0'} + '@smithy/smithy-client@4.1.5': + resolution: {integrity: sha512-DMXYoYeL4QkElr216n1yodTFeATbfb4jwYM9gKn71Rw/FNA1/Sm36tkTSCsZEs7mgpG3OINmkxL9vgVFzyGPaw==} + engines: {node: '>=18.0.0'} + '@smithy/types@2.9.1': resolution: {integrity: sha512-vjXlKNXyprDYDuJ7UW5iobdmyDm6g8dDG+BFUncAg/3XJaN45Gy5RWWWUVgrzIK7S4R1KWgIX5LeJcfvSI24bw==} engines: {node: '>=14.0.0'} + '@smithy/types@4.1.0': + resolution: {integrity: sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==} + engines: {node: '>=18.0.0'} + '@smithy/url-parser@2.1.1': resolution: {integrity: sha512-qC9Bv8f/vvFIEkHsiNrUKYNl8uKQnn4BdhXl7VzQRP774AwIjiSMMwkbT+L7Fk8W8rzYVifzJNYxv1HwvfBo3Q==} + '@smithy/url-parser@4.0.1': + resolution: {integrity: sha512-gPXcIEUtw7VlK8f/QcruNXm7q+T5hhvGu9tl63LsJPZ27exB6dtNwvh2HIi0v7JcXJ5emBxB+CJxwaLEdJfA+g==} + engines: {node: '>=18.0.0'} + '@smithy/util-base64@2.1.1': resolution: {integrity: sha512-UfHVpY7qfF/MrgndI5PexSKVTxSZIdz9InghTFa49QOvuu9I52zLPLUHXvHpNuMb1iD2vmc6R+zbv/bdMipR/g==} engines: {node: '>=14.0.0'} + '@smithy/util-base64@4.0.0': + resolution: {integrity: sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==} + engines: {node: '>=18.0.0'} + '@smithy/util-body-length-browser@2.1.1': resolution: {integrity: sha512-ekOGBLvs1VS2d1zM2ER4JEeBWAvIOUKeaFch29UjjJsxmZ/f0L3K3x0dEETgh3Q9bkZNHgT+rkdl/J/VUqSRag==} + '@smithy/util-body-length-browser@4.0.0': + resolution: {integrity: sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==} + engines: {node: '>=18.0.0'} + '@smithy/util-body-length-node@2.2.1': resolution: {integrity: sha512-/ggJG+ta3IDtpNVq4ktmEUtOkH1LW64RHB5B0hcr5ZaWBmo96UX2cIOVbjCqqDickTXqBWZ4ZO0APuaPrD7Abg==} engines: {node: '>=14.0.0'} + '@smithy/util-body-length-node@4.0.0': + resolution: {integrity: sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==} + engines: {node: '>=18.0.0'} + '@smithy/util-buffer-from@2.1.1': resolution: {integrity: sha512-clhNjbyfqIv9Md2Mg6FffGVrJxw7bgK7s3Iax36xnfVj6cg0fUG7I4RH0XgXJF8bxi+saY5HR21g2UPKSxVCXg==} engines: {node: '>=14.0.0'} + '@smithy/util-buffer-from@4.0.0': + resolution: {integrity: sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==} + engines: {node: '>=18.0.0'} + '@smithy/util-config-provider@2.2.1': resolution: {integrity: sha512-50VL/tx9oYYcjJn/qKqNy7sCtpD0+s8XEBamIFo4mFFTclKMNp+rsnymD796uybjiIquB7VCB/DeafduL0y2kw==} engines: {node: '>=14.0.0'} + '@smithy/util-config-provider@4.0.0': + resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} + engines: {node: '>=18.0.0'} + '@smithy/util-defaults-mode-browser@2.1.1': resolution: {integrity: sha512-lqLz/9aWRO6mosnXkArtRuQqqZBhNpgI65YDpww4rVQBuUT7qzKbDLG5AmnQTCiU4rOquaZO/Kt0J7q9Uic7MA==} engines: {node: '>= 10.0.0'} + '@smithy/util-defaults-mode-browser@4.0.6': + resolution: {integrity: sha512-N8+VCt+piupH1A7DgSVDNrVHqRLz8r6DvBkpS7EWHiIxsUk4jqGuQLjqC/gnCzmwGkVBdNruHoYAzzaSQ8e80w==} + engines: {node: '>=18.0.0'} + '@smithy/util-defaults-mode-node@2.2.0': resolution: {integrity: sha512-iFJp/N4EtkanFpBUtSrrIbtOIBf69KNuve03ic1afhJ9/korDxdM0c6cCH4Ehj/smI9pDCfVv+bqT3xZjF2WaA==} engines: {node: '>= 10.0.0'} + '@smithy/util-defaults-mode-node@4.0.6': + resolution: {integrity: sha512-9zhx1shd1VwSSVvLZB8CM3qQ3RPD3le7A3h/UPuyh/PC7g4OaWDi2xUNzamsVoSmCGtmUBONl56lM2EU6LcH7A==} + engines: {node: '>=18.0.0'} + '@smithy/util-endpoints@1.1.1': resolution: {integrity: sha512-sI4d9rjoaekSGEtq3xSb2nMjHMx8QXcz2cexnVyRWsy4yQ9z3kbDpX+7fN0jnbdOp0b3KSTZJZ2Yb92JWSanLw==} engines: {node: '>= 14.0.0'} + '@smithy/util-endpoints@3.0.1': + resolution: {integrity: sha512-zVdUENQpdtn9jbpD9SCFK4+aSiavRb9BxEtw9ZGUR1TYo6bBHbIoi7VkrFQ0/RwZlzx0wRBaRmPclj8iAoJCLA==} + engines: {node: '>=18.0.0'} + '@smithy/util-hex-encoding@2.1.1': resolution: {integrity: sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg==} engines: {node: '>=14.0.0'} + '@smithy/util-hex-encoding@4.0.0': + resolution: {integrity: sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==} + engines: {node: '>=18.0.0'} + '@smithy/util-middleware@2.1.1': resolution: {integrity: sha512-mKNrk8oz5zqkNcbcgAAepeJbmfUW6ogrT2Z2gDbIUzVzNAHKJQTYmH9jcy0jbWb+m7ubrvXKb6uMjkSgAqqsFA==} engines: {node: '>=14.0.0'} + '@smithy/util-middleware@4.0.1': + resolution: {integrity: sha512-HiLAvlcqhbzhuiOa0Lyct5IIlyIz0PQO5dnMlmQ/ubYM46dPInB+3yQGkfxsk6Q24Y0n3/JmcA1v5iEhmOF5mA==} + engines: {node: '>=18.0.0'} + '@smithy/util-retry@2.1.1': resolution: {integrity: sha512-Mg+xxWPTeSPrthpC5WAamJ6PW4Kbo01Fm7lWM1jmGRvmrRdsd3192Gz2fBXAMURyXpaNxyZf6Hr/nQ4q70oVEA==} engines: {node: '>= 14.0.0'} + '@smithy/util-retry@4.0.1': + resolution: {integrity: sha512-WmRHqNVwn3kI3rKk1LsKcVgPBG6iLTBGC1iYOV3GQegwJ3E8yjzHytPt26VNzOWr1qu0xE03nK0Ug8S7T7oufw==} + engines: {node: '>=18.0.0'} + '@smithy/util-stream@2.1.1': resolution: {integrity: sha512-J7SMIpUYvU4DQN55KmBtvaMc7NM3CZ2iWICdcgaovtLzseVhAqFRYqloT3mh0esrFw+3VEK6nQFteFsTqZSECQ==} engines: {node: '>=14.0.0'} + '@smithy/util-stream@4.1.1': + resolution: {integrity: sha512-+Xvh8nhy0Wjv1y71rBVyV3eJU3356XsFQNI8dEZVNrQju7Eib8G31GWtO+zMa9kTCGd41Mflu+ZKfmQL/o2XzQ==} + engines: {node: '>=18.0.0'} + '@smithy/util-uri-escape@2.1.1': resolution: {integrity: sha512-saVzI1h6iRBUVSqtnlOnc9ssU09ypo7n+shdQ8hBTZno/9rZ3AuRYvoHInV57VF7Qn7B+pFJG7qTzFiHxWlWBw==} engines: {node: '>=14.0.0'} + '@smithy/util-uri-escape@4.0.0': + resolution: {integrity: sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==} + engines: {node: '>=18.0.0'} + '@smithy/util-utf8@2.1.1': resolution: {integrity: sha512-BqTpzYEcUMDwAKr7/mVRUtHDhs6ZoXDi9NypMvMfOr/+u1NW7JgqodPDECiiLboEm6bobcPcECxzjtQh865e9A==} engines: {node: '>=14.0.0'} + '@smithy/util-utf8@4.0.0': + resolution: {integrity: sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==} + engines: {node: '>=18.0.0'} + '@smithy/util-waiter@2.1.1': resolution: {integrity: sha512-kYy6BLJJNif+uqNENtJqWdXcpqo1LS+nj1AfXcDhOpqpSHJSAkVySLyZV9fkmuVO21lzGoxjvd1imGGJHph/IA==} engines: {node: '>=14.0.0'} + '@smithy/util-waiter@4.0.2': + resolution: {integrity: sha512-piUTHyp2Axx3p/kc2CIJkYSv0BAaheBQmbACZgQSSfWUumWNW+R1lL+H9PDBxKJkvOeEX+hKYEFiwO8xagL8AQ==} + engines: {node: '>=18.0.0'} + '@tailwindcss/typography@0.5.10': resolution: {integrity: sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==} peerDependencies: @@ -1976,6 +2260,10 @@ packages: resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} hasBin: true + fast-xml-parser@4.4.1: + resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} + hasBin: true + fastify-plugin@4.5.1: resolution: {integrity: sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==} @@ -3376,6 +3664,10 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -3580,22 +3872,48 @@ snapshots: '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 + '@aws-crypto/sha256-browser@5.2.0': + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.734.0 + '@aws-sdk/util-locate-window': 3.310.0 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + '@aws-crypto/sha256-js@3.0.0': dependencies: '@aws-crypto/util': 3.0.0 '@aws-sdk/types': 3.511.0 tslib: 1.14.1 + '@aws-crypto/sha256-js@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.734.0 + tslib: 2.6.2 + '@aws-crypto/supports-web-crypto@3.0.0': dependencies: tslib: 1.14.1 + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.6.2 + '@aws-crypto/util@3.0.0': dependencies: '@aws-sdk/types': 3.511.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.734.0 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + '@aws-sdk/client-apigatewayv2@3.511.0': dependencies: '@aws-crypto/sha256-browser': 3.0.0 @@ -3642,6 +3960,53 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/client-cloudfront@3.749.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.749.0 + '@aws-sdk/credential-provider-node': 3.749.0 + '@aws-sdk/middleware-host-header': 3.734.0 + '@aws-sdk/middleware-logger': 3.734.0 + '@aws-sdk/middleware-recursion-detection': 3.734.0 + '@aws-sdk/middleware-user-agent': 3.749.0 + '@aws-sdk/region-config-resolver': 3.734.0 + '@aws-sdk/types': 3.734.0 + '@aws-sdk/util-endpoints': 3.743.0 + '@aws-sdk/util-user-agent-browser': 3.734.0 + '@aws-sdk/util-user-agent-node': 3.749.0 + '@aws-sdk/xml-builder': 3.734.0 + '@smithy/config-resolver': 4.0.1 + '@smithy/core': 3.1.4 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/hash-node': 4.0.1 + '@smithy/invalid-dependency': 4.0.1 + '@smithy/middleware-content-length': 4.0.1 + '@smithy/middleware-endpoint': 4.0.5 + '@smithy/middleware-retry': 4.0.6 + '@smithy/middleware-serde': 4.0.2 + '@smithy/middleware-stack': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/node-http-handler': 4.0.2 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.5 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.6 + '@smithy/util-defaults-mode-node': 4.0.6 + '@smithy/util-endpoints': 3.0.1 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 + '@smithy/util-stream': 4.1.1 + '@smithy/util-utf8': 4.0.0 + '@smithy/util-waiter': 4.0.2 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/client-cloudwatch-logs@3.511.0': dependencies: '@aws-crypto/sha256-browser': 3.0.0 @@ -3920,6 +4285,49 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/client-sso@3.749.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.749.0 + '@aws-sdk/middleware-host-header': 3.734.0 + '@aws-sdk/middleware-logger': 3.734.0 + '@aws-sdk/middleware-recursion-detection': 3.734.0 + '@aws-sdk/middleware-user-agent': 3.749.0 + '@aws-sdk/region-config-resolver': 3.734.0 + '@aws-sdk/types': 3.734.0 + '@aws-sdk/util-endpoints': 3.743.0 + '@aws-sdk/util-user-agent-browser': 3.734.0 + '@aws-sdk/util-user-agent-node': 3.749.0 + '@smithy/config-resolver': 4.0.1 + '@smithy/core': 3.1.4 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/hash-node': 4.0.1 + '@smithy/invalid-dependency': 4.0.1 + '@smithy/middleware-content-length': 4.0.1 + '@smithy/middleware-endpoint': 4.0.5 + '@smithy/middleware-retry': 4.0.6 + '@smithy/middleware-serde': 4.0.2 + '@smithy/middleware-stack': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/node-http-handler': 4.0.2 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.5 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.6 + '@smithy/util-defaults-mode-node': 4.0.6 + '@smithy/util-endpoints': 3.0.1 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 + '@smithy/util-utf8': 4.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/client-sts@3.511.0(@aws-sdk/credential-provider-node@3.511.0)': dependencies: '@aws-crypto/sha256-browser': 3.0.0 @@ -3974,6 +4382,20 @@ snapshots: '@smithy/types': 2.9.1 tslib: 2.6.2 + '@aws-sdk/core@3.749.0': + dependencies: + '@aws-sdk/types': 3.734.0 + '@smithy/core': 3.1.4 + '@smithy/node-config-provider': 4.0.1 + '@smithy/property-provider': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/signature-v4': 5.0.1 + '@smithy/smithy-client': 4.1.5 + '@smithy/types': 4.1.0 + '@smithy/util-middleware': 4.0.1 + fast-xml-parser: 4.4.1 + tslib: 2.6.2 + '@aws-sdk/credential-provider-env@3.511.0': dependencies: '@aws-sdk/types': 3.511.0 @@ -3981,6 +4403,14 @@ snapshots: '@smithy/types': 2.9.1 tslib: 2.6.2 + '@aws-sdk/credential-provider-env@3.749.0': + dependencies: + '@aws-sdk/core': 3.749.0 + '@aws-sdk/types': 3.734.0 + '@smithy/property-provider': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@aws-sdk/credential-provider-http@3.511.0': dependencies: '@aws-sdk/types': 3.511.0 @@ -3993,6 +4423,19 @@ snapshots: '@smithy/util-stream': 2.1.1 tslib: 2.6.2 + '@aws-sdk/credential-provider-http@3.749.0': + dependencies: + '@aws-sdk/core': 3.749.0 + '@aws-sdk/types': 3.734.0 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/node-http-handler': 4.0.2 + '@smithy/property-provider': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.5 + '@smithy/types': 4.1.0 + '@smithy/util-stream': 4.1.1 + tslib: 2.6.2 + '@aws-sdk/credential-provider-ini@3.511.0(@aws-sdk/credential-provider-node@3.511.0)': dependencies: '@aws-sdk/client-sts': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) @@ -4010,6 +4453,24 @@ snapshots: - '@aws-sdk/credential-provider-node' - aws-crt + '@aws-sdk/credential-provider-ini@3.749.0': + dependencies: + '@aws-sdk/core': 3.749.0 + '@aws-sdk/credential-provider-env': 3.749.0 + '@aws-sdk/credential-provider-http': 3.749.0 + '@aws-sdk/credential-provider-process': 3.749.0 + '@aws-sdk/credential-provider-sso': 3.749.0 + '@aws-sdk/credential-provider-web-identity': 3.749.0 + '@aws-sdk/nested-clients': 3.749.0 + '@aws-sdk/types': 3.734.0 + '@smithy/credential-provider-imds': 4.0.1 + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-node@3.511.0': dependencies: '@aws-sdk/credential-provider-env': 3.511.0 @@ -4027,6 +4488,23 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-node@3.749.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.749.0 + '@aws-sdk/credential-provider-http': 3.749.0 + '@aws-sdk/credential-provider-ini': 3.749.0 + '@aws-sdk/credential-provider-process': 3.749.0 + '@aws-sdk/credential-provider-sso': 3.749.0 + '@aws-sdk/credential-provider-web-identity': 3.749.0 + '@aws-sdk/types': 3.734.0 + '@smithy/credential-provider-imds': 4.0.1 + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-process@3.511.0': dependencies: '@aws-sdk/types': 3.511.0 @@ -4035,6 +4513,15 @@ snapshots: '@smithy/types': 2.9.1 tslib: 2.6.2 + '@aws-sdk/credential-provider-process@3.749.0': + dependencies: + '@aws-sdk/core': 3.749.0 + '@aws-sdk/types': 3.734.0 + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@aws-sdk/credential-provider-sso@3.511.0(@aws-sdk/credential-provider-node@3.511.0)': dependencies: '@aws-sdk/client-sso': 3.511.0 @@ -4048,6 +4535,19 @@ snapshots: - '@aws-sdk/credential-provider-node' - aws-crt + '@aws-sdk/credential-provider-sso@3.749.0': + dependencies: + '@aws-sdk/client-sso': 3.749.0 + '@aws-sdk/core': 3.749.0 + '@aws-sdk/token-providers': 3.749.0 + '@aws-sdk/types': 3.734.0 + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-web-identity@3.511.0(@aws-sdk/credential-provider-node@3.511.0)': dependencies: '@aws-sdk/client-sts': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) @@ -4059,6 +4559,17 @@ snapshots: - '@aws-sdk/credential-provider-node' - aws-crt + '@aws-sdk/credential-provider-web-identity@3.749.0': + dependencies: + '@aws-sdk/core': 3.749.0 + '@aws-sdk/nested-clients': 3.749.0 + '@aws-sdk/types': 3.734.0 + '@smithy/property-provider': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/middleware-host-header@3.511.0': dependencies: '@aws-sdk/types': 3.511.0 @@ -4066,12 +4577,25 @@ snapshots: '@smithy/types': 2.9.1 tslib: 2.6.2 + '@aws-sdk/middleware-host-header@3.734.0': + dependencies: + '@aws-sdk/types': 3.734.0 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@aws-sdk/middleware-logger@3.511.0': dependencies: '@aws-sdk/types': 3.511.0 '@smithy/types': 2.9.1 tslib: 2.6.2 + '@aws-sdk/middleware-logger@3.734.0': + dependencies: + '@aws-sdk/types': 3.734.0 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@aws-sdk/middleware-recursion-detection@3.511.0': dependencies: '@aws-sdk/types': 3.511.0 @@ -4079,6 +4603,13 @@ snapshots: '@smithy/types': 2.9.1 tslib: 2.6.2 + '@aws-sdk/middleware-recursion-detection@3.734.0': + dependencies: + '@aws-sdk/types': 3.734.0 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@aws-sdk/middleware-sdk-s3@3.511.0': dependencies: '@aws-sdk/types': 3.511.0 @@ -4109,6 +4640,59 @@ snapshots: '@smithy/types': 2.9.1 tslib: 2.6.2 + '@aws-sdk/middleware-user-agent@3.749.0': + dependencies: + '@aws-sdk/core': 3.749.0 + '@aws-sdk/types': 3.734.0 + '@aws-sdk/util-endpoints': 3.743.0 + '@smithy/core': 3.1.4 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + + '@aws-sdk/nested-clients@3.749.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.749.0 + '@aws-sdk/middleware-host-header': 3.734.0 + '@aws-sdk/middleware-logger': 3.734.0 + '@aws-sdk/middleware-recursion-detection': 3.734.0 + '@aws-sdk/middleware-user-agent': 3.749.0 + '@aws-sdk/region-config-resolver': 3.734.0 + '@aws-sdk/types': 3.734.0 + '@aws-sdk/util-endpoints': 3.743.0 + '@aws-sdk/util-user-agent-browser': 3.734.0 + '@aws-sdk/util-user-agent-node': 3.749.0 + '@smithy/config-resolver': 4.0.1 + '@smithy/core': 3.1.4 + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/hash-node': 4.0.1 + '@smithy/invalid-dependency': 4.0.1 + '@smithy/middleware-content-length': 4.0.1 + '@smithy/middleware-endpoint': 4.0.5 + '@smithy/middleware-retry': 4.0.6 + '@smithy/middleware-serde': 4.0.2 + '@smithy/middleware-stack': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/node-http-handler': 4.0.2 + '@smithy/protocol-http': 5.0.1 + '@smithy/smithy-client': 4.1.5 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 + '@smithy/util-base64': 4.0.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-body-length-node': 4.0.0 + '@smithy/util-defaults-mode-browser': 4.0.6 + '@smithy/util-defaults-mode-node': 4.0.6 + '@smithy/util-endpoints': 3.0.1 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 + '@smithy/util-utf8': 4.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/region-config-resolver@3.511.0': dependencies: '@aws-sdk/types': 3.511.0 @@ -4118,6 +4702,15 @@ snapshots: '@smithy/util-middleware': 2.1.1 tslib: 2.6.2 + '@aws-sdk/region-config-resolver@3.734.0': + dependencies: + '@aws-sdk/types': 3.734.0 + '@smithy/node-config-provider': 4.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.1 + tslib: 2.6.2 + '@aws-sdk/signature-v4-multi-region@3.511.0': dependencies: '@aws-sdk/middleware-sdk-s3': 3.511.0 @@ -4139,11 +4732,27 @@ snapshots: - '@aws-sdk/credential-provider-node' - aws-crt + '@aws-sdk/token-providers@3.749.0': + dependencies: + '@aws-sdk/nested-clients': 3.749.0 + '@aws-sdk/types': 3.734.0 + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/types@3.511.0': dependencies: '@smithy/types': 2.9.1 tslib: 2.6.2 + '@aws-sdk/types@3.734.0': + dependencies: + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@aws-sdk/util-arn-parser@3.495.0': dependencies: tslib: 2.6.2 @@ -4155,6 +4764,13 @@ snapshots: '@smithy/util-endpoints': 1.1.1 tslib: 2.6.2 + '@aws-sdk/util-endpoints@3.743.0': + dependencies: + '@aws-sdk/types': 3.734.0 + '@smithy/types': 4.1.0 + '@smithy/util-endpoints': 3.0.1 + tslib: 2.6.2 + '@aws-sdk/util-locate-window@3.310.0': dependencies: tslib: 2.6.2 @@ -4166,6 +4782,13 @@ snapshots: bowser: 2.11.0 tslib: 2.6.2 + '@aws-sdk/util-user-agent-browser@3.734.0': + dependencies: + '@aws-sdk/types': 3.734.0 + '@smithy/types': 4.1.0 + bowser: 2.11.0 + tslib: 2.6.2 + '@aws-sdk/util-user-agent-node@3.511.0': dependencies: '@aws-sdk/types': 3.511.0 @@ -4173,10 +4796,23 @@ snapshots: '@smithy/types': 2.9.1 tslib: 2.6.2 + '@aws-sdk/util-user-agent-node@3.749.0': + dependencies: + '@aws-sdk/middleware-user-agent': 3.749.0 + '@aws-sdk/types': 3.734.0 + '@smithy/node-config-provider': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@aws-sdk/util-utf8-browser@3.259.0': dependencies: tslib: 2.6.2 + '@aws-sdk/xml-builder@3.734.0': + dependencies: + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@babel/code-frame@7.22.13': dependencies: '@babel/highlight': 7.22.13 @@ -4789,6 +5425,11 @@ snapshots: '@smithy/types': 2.9.1 tslib: 2.6.2 + '@smithy/abort-controller@4.0.1': + dependencies: + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@smithy/config-resolver@2.1.1': dependencies: '@smithy/node-config-provider': 2.2.1 @@ -4797,6 +5438,14 @@ snapshots: '@smithy/util-middleware': 2.1.1 tslib: 2.6.2 + '@smithy/config-resolver@4.0.1': + dependencies: + '@smithy/node-config-provider': 4.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-config-provider': 4.0.0 + '@smithy/util-middleware': 4.0.1 + tslib: 2.6.2 + '@smithy/core@1.3.2': dependencies: '@smithy/middleware-endpoint': 2.4.1 @@ -4808,6 +5457,17 @@ snapshots: '@smithy/util-middleware': 2.1.1 tslib: 2.6.2 + '@smithy/core@3.1.4': + dependencies: + '@smithy/middleware-serde': 4.0.2 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-body-length-browser': 4.0.0 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-stream': 4.1.1 + '@smithy/util-utf8': 4.0.0 + tslib: 2.6.2 + '@smithy/credential-provider-imds@2.2.1': dependencies: '@smithy/node-config-provider': 2.2.1 @@ -4816,6 +5476,14 @@ snapshots: '@smithy/url-parser': 2.1.1 tslib: 2.6.2 + '@smithy/credential-provider-imds@4.0.1': + dependencies: + '@smithy/node-config-provider': 4.0.1 + '@smithy/property-provider': 4.0.1 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 + tslib: 2.6.2 + '@smithy/eventstream-codec@2.1.1': dependencies: '@aws-crypto/crc32': 3.0.0 @@ -4854,6 +5522,14 @@ snapshots: '@smithy/util-base64': 2.1.1 tslib: 2.6.2 + '@smithy/fetch-http-handler@5.0.1': + dependencies: + '@smithy/protocol-http': 5.0.1 + '@smithy/querystring-builder': 4.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-base64': 4.0.0 + tslib: 2.6.2 + '@smithy/hash-node@2.1.1': dependencies: '@smithy/types': 2.9.1 @@ -4861,21 +5537,43 @@ snapshots: '@smithy/util-utf8': 2.1.1 tslib: 2.6.2 + '@smithy/hash-node@4.0.1': + dependencies: + '@smithy/types': 4.1.0 + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.6.2 + '@smithy/invalid-dependency@2.1.1': dependencies: '@smithy/types': 2.9.1 tslib: 2.6.2 + '@smithy/invalid-dependency@4.0.1': + dependencies: + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@smithy/is-array-buffer@2.1.1': dependencies: tslib: 2.6.2 + '@smithy/is-array-buffer@4.0.0': + dependencies: + tslib: 2.6.2 + '@smithy/middleware-content-length@2.1.1': dependencies: '@smithy/protocol-http': 3.1.1 '@smithy/types': 2.9.1 tslib: 2.6.2 + '@smithy/middleware-content-length@4.0.1': + dependencies: + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@smithy/middleware-endpoint@2.4.1': dependencies: '@smithy/middleware-serde': 2.1.1 @@ -4886,6 +5584,17 @@ snapshots: '@smithy/util-middleware': 2.1.1 tslib: 2.6.2 + '@smithy/middleware-endpoint@4.0.5': + dependencies: + '@smithy/core': 3.1.4 + '@smithy/middleware-serde': 4.0.2 + '@smithy/node-config-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 + '@smithy/url-parser': 4.0.1 + '@smithy/util-middleware': 4.0.1 + tslib: 2.6.2 + '@smithy/middleware-retry@2.1.1': dependencies: '@smithy/node-config-provider': 2.2.1 @@ -4898,16 +5607,38 @@ snapshots: tslib: 2.6.2 uuid: 8.3.2 + '@smithy/middleware-retry@4.0.6': + dependencies: + '@smithy/node-config-provider': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/service-error-classification': 4.0.1 + '@smithy/smithy-client': 4.1.5 + '@smithy/types': 4.1.0 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-retry': 4.0.1 + tslib: 2.6.2 + uuid: 9.0.1 + '@smithy/middleware-serde@2.1.1': dependencies: '@smithy/types': 2.9.1 tslib: 2.6.2 + '@smithy/middleware-serde@4.0.2': + dependencies: + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@smithy/middleware-stack@2.1.1': dependencies: '@smithy/types': 2.9.1 tslib: 2.6.2 + '@smithy/middleware-stack@4.0.1': + dependencies: + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@smithy/node-config-provider@2.2.1': dependencies: '@smithy/property-provider': 2.1.1 @@ -4915,6 +5646,13 @@ snapshots: '@smithy/types': 2.9.1 tslib: 2.6.2 + '@smithy/node-config-provider@4.0.1': + dependencies: + '@smithy/property-provider': 4.0.1 + '@smithy/shared-ini-file-loader': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@smithy/node-http-handler@2.3.1': dependencies: '@smithy/abort-controller': 2.1.1 @@ -4923,36 +5661,74 @@ snapshots: '@smithy/types': 2.9.1 tslib: 2.6.2 + '@smithy/node-http-handler@4.0.2': + dependencies: + '@smithy/abort-controller': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/querystring-builder': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@smithy/property-provider@2.1.1': dependencies: '@smithy/types': 2.9.1 tslib: 2.6.2 + '@smithy/property-provider@4.0.1': + dependencies: + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@smithy/protocol-http@3.1.1': dependencies: '@smithy/types': 2.9.1 tslib: 2.6.2 + '@smithy/protocol-http@5.0.1': + dependencies: + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@smithy/querystring-builder@2.1.1': dependencies: '@smithy/types': 2.9.1 '@smithy/util-uri-escape': 2.1.1 tslib: 2.6.2 + '@smithy/querystring-builder@4.0.1': + dependencies: + '@smithy/types': 4.1.0 + '@smithy/util-uri-escape': 4.0.0 + tslib: 2.6.2 + '@smithy/querystring-parser@2.1.1': dependencies: '@smithy/types': 2.9.1 tslib: 2.6.2 + '@smithy/querystring-parser@4.0.1': + dependencies: + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@smithy/service-error-classification@2.1.1': dependencies: '@smithy/types': 2.9.1 + '@smithy/service-error-classification@4.0.1': + dependencies: + '@smithy/types': 4.1.0 + '@smithy/shared-ini-file-loader@2.3.1': dependencies: '@smithy/types': 2.9.1 tslib: 2.6.2 + '@smithy/shared-ini-file-loader@4.0.1': + dependencies: + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@smithy/signature-v4@2.1.1': dependencies: '@smithy/eventstream-codec': 2.1.1 @@ -4964,6 +5740,17 @@ snapshots: '@smithy/util-utf8': 2.1.1 tslib: 2.6.2 + '@smithy/signature-v4@5.0.1': + dependencies: + '@smithy/is-array-buffer': 4.0.0 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-hex-encoding': 4.0.0 + '@smithy/util-middleware': 4.0.1 + '@smithy/util-uri-escape': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.6.2 + '@smithy/smithy-client@2.3.1': dependencies: '@smithy/middleware-endpoint': 2.4.1 @@ -4973,38 +5760,81 @@ snapshots: '@smithy/util-stream': 2.1.1 tslib: 2.6.2 + '@smithy/smithy-client@4.1.5': + dependencies: + '@smithy/core': 3.1.4 + '@smithy/middleware-endpoint': 4.0.5 + '@smithy/middleware-stack': 4.0.1 + '@smithy/protocol-http': 5.0.1 + '@smithy/types': 4.1.0 + '@smithy/util-stream': 4.1.1 + tslib: 2.6.2 + '@smithy/types@2.9.1': dependencies: tslib: 2.6.2 + '@smithy/types@4.1.0': + dependencies: + tslib: 2.6.2 + '@smithy/url-parser@2.1.1': dependencies: '@smithy/querystring-parser': 2.1.1 '@smithy/types': 2.9.1 tslib: 2.6.2 + '@smithy/url-parser@4.0.1': + dependencies: + '@smithy/querystring-parser': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@smithy/util-base64@2.1.1': dependencies: '@smithy/util-buffer-from': 2.1.1 tslib: 2.6.2 + '@smithy/util-base64@4.0.0': + dependencies: + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.6.2 + '@smithy/util-body-length-browser@2.1.1': dependencies: tslib: 2.6.2 + '@smithy/util-body-length-browser@4.0.0': + dependencies: + tslib: 2.6.2 + '@smithy/util-body-length-node@2.2.1': dependencies: tslib: 2.6.2 + '@smithy/util-body-length-node@4.0.0': + dependencies: + tslib: 2.6.2 + '@smithy/util-buffer-from@2.1.1': dependencies: '@smithy/is-array-buffer': 2.1.1 tslib: 2.6.2 + '@smithy/util-buffer-from@4.0.0': + dependencies: + '@smithy/is-array-buffer': 4.0.0 + tslib: 2.6.2 + '@smithy/util-config-provider@2.2.1': dependencies: tslib: 2.6.2 + '@smithy/util-config-provider@4.0.0': + dependencies: + tslib: 2.6.2 + '@smithy/util-defaults-mode-browser@2.1.1': dependencies: '@smithy/property-provider': 2.1.1 @@ -5013,6 +5843,14 @@ snapshots: bowser: 2.11.0 tslib: 2.6.2 + '@smithy/util-defaults-mode-browser@4.0.6': + dependencies: + '@smithy/property-provider': 4.0.1 + '@smithy/smithy-client': 4.1.5 + '@smithy/types': 4.1.0 + bowser: 2.11.0 + tslib: 2.6.2 + '@smithy/util-defaults-mode-node@2.2.0': dependencies: '@smithy/config-resolver': 2.1.1 @@ -5023,27 +5861,58 @@ snapshots: '@smithy/types': 2.9.1 tslib: 2.6.2 + '@smithy/util-defaults-mode-node@4.0.6': + dependencies: + '@smithy/config-resolver': 4.0.1 + '@smithy/credential-provider-imds': 4.0.1 + '@smithy/node-config-provider': 4.0.1 + '@smithy/property-provider': 4.0.1 + '@smithy/smithy-client': 4.1.5 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@smithy/util-endpoints@1.1.1': dependencies: '@smithy/node-config-provider': 2.2.1 '@smithy/types': 2.9.1 tslib: 2.6.2 + '@smithy/util-endpoints@3.0.1': + dependencies: + '@smithy/node-config-provider': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@smithy/util-hex-encoding@2.1.1': dependencies: tslib: 2.6.2 + '@smithy/util-hex-encoding@4.0.0': + dependencies: + tslib: 2.6.2 + '@smithy/util-middleware@2.1.1': dependencies: '@smithy/types': 2.9.1 tslib: 2.6.2 + '@smithy/util-middleware@4.0.1': + dependencies: + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@smithy/util-retry@2.1.1': dependencies: '@smithy/service-error-classification': 2.1.1 '@smithy/types': 2.9.1 tslib: 2.6.2 + '@smithy/util-retry@4.0.1': + dependencies: + '@smithy/service-error-classification': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@smithy/util-stream@2.1.1': dependencies: '@smithy/fetch-http-handler': 2.4.1 @@ -5055,21 +5924,47 @@ snapshots: '@smithy/util-utf8': 2.1.1 tslib: 2.6.2 + '@smithy/util-stream@4.1.1': + dependencies: + '@smithy/fetch-http-handler': 5.0.1 + '@smithy/node-http-handler': 4.0.2 + '@smithy/types': 4.1.0 + '@smithy/util-base64': 4.0.0 + '@smithy/util-buffer-from': 4.0.0 + '@smithy/util-hex-encoding': 4.0.0 + '@smithy/util-utf8': 4.0.0 + tslib: 2.6.2 + '@smithy/util-uri-escape@2.1.1': dependencies: tslib: 2.6.2 + '@smithy/util-uri-escape@4.0.0': + dependencies: + tslib: 2.6.2 + '@smithy/util-utf8@2.1.1': dependencies: '@smithy/util-buffer-from': 2.1.1 tslib: 2.6.2 + '@smithy/util-utf8@4.0.0': + dependencies: + '@smithy/util-buffer-from': 4.0.0 + tslib: 2.6.2 + '@smithy/util-waiter@2.1.1': dependencies: '@smithy/abort-controller': 2.1.1 '@smithy/types': 2.9.1 tslib: 2.6.2 + '@smithy/util-waiter@4.0.2': + dependencies: + '@smithy/abort-controller': 4.0.1 + '@smithy/types': 4.1.0 + tslib: 2.6.2 + '@tailwindcss/typography@0.5.10(tailwindcss@3.3.6)': dependencies: lodash.castarray: 4.4.0 @@ -5924,6 +6819,10 @@ snapshots: dependencies: strnum: 1.0.5 + fast-xml-parser@4.4.1: + dependencies: + strnum: 1.0.5 + fastify-plugin@4.5.1: {} fastify@4.24.3: @@ -7284,6 +8183,8 @@ snapshots: uuid@8.3.2: {} + uuid@9.0.1: {} + validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 From 211b0c76dedc99dc62c4434801cf13f10c20722b Mon Sep 17 00:00:00 2001 From: Daniel Grant <1670902+djgrant@users.noreply.github.com> Date: Tue, 27 Feb 2024 06:38:50 -0800 Subject: [PATCH 2/2] Add cloudfront example --- examples/cloudfront/infra/api.ts | 24 ++++++++++++++++++++++++ examples/cloudfront/package.json | 21 +++++++++++++++++++++ examples/cloudfront/runtime/todos.fn.ts | 15 +++++++++++++++ examples/cloudfront/runtime/utils.ts | 6 ++++++ examples/cloudfront/tsconfig.json | 9 +++++++++ 5 files changed, 75 insertions(+) create mode 100644 examples/cloudfront/infra/api.ts create mode 100644 examples/cloudfront/package.json create mode 100644 examples/cloudfront/runtime/todos.fn.ts create mode 100644 examples/cloudfront/runtime/utils.ts create mode 100644 examples/cloudfront/tsconfig.json diff --git a/examples/cloudfront/infra/api.ts b/examples/cloudfront/infra/api.ts new file mode 100644 index 0000000..bfda3f4 --- /dev/null +++ b/examples/cloudfront/infra/api.ts @@ -0,0 +1,24 @@ +import { apiGateway, cloudFront } from "@notation/aws.iac"; +import { api, router } from "@notation/aws/api-gateway"; +import { getTodos } from "../runtime/todos.fn"; + +const todoApi = api({ name: "todo-api" }); +const todoRouter = router(todoApi); + +todoRouter.get("/todos2", getTodos); + +const apiResource = todoApi.findResource(apiGateway.Api)!; + +const cdn = todoApi.add( + new cloudFront.Distribution({ + id: "my-cdn", + config: { + CallerReference: "todoApiCallerReference", + Comment: "CloudFront Distribution for Todo API", + Enabled: false, + }, + dependencies: { + origin: apiResource, + }, + }), +); diff --git a/examples/cloudfront/package.json b/examples/cloudfront/package.json new file mode 100644 index 0000000..e881f7d --- /dev/null +++ b/examples/cloudfront/package.json @@ -0,0 +1,21 @@ +{ + "private": true, + "name": "cloudfront-demo", + "scripts": { + "compile": "notation compile infra/api.ts", + "dashboard": "notation dashboard", + "deploy": "notation deploy infra/api.ts", + "destroy": "notation destroy infra/api.ts", + "viz": "notation viz infra/api.ts", + "watch": "notation watch infra/api.ts" + }, + "dependencies": { + "@notation/aws": "workspace:*", + "@notation/cli": "workspace:*", + "@notation/core": "workspace:*" + }, + "devDependencies": { + "@types/node": "^20.8.4" + }, + "version": null +} diff --git a/examples/cloudfront/runtime/todos.fn.ts b/examples/cloudfront/runtime/todos.fn.ts new file mode 100644 index 0000000..1f864ea --- /dev/null +++ b/examples/cloudfront/runtime/todos.fn.ts @@ -0,0 +1,15 @@ +import type { LambdaConfig } from "@notation/aws/lambda.fn"; +import { handle, json } from "@notation/aws/lambda.fn"; +import { api } from "./utils"; + +const todos = await api.get("/todos"); + +export const getTodos = handle.apiRequest(() => { + return json(todos); +}); + +export const config: LambdaConfig = { + service: "aws/lambda", + timeout: 5, + memory: 64, +}; diff --git a/examples/cloudfront/runtime/utils.ts b/examples/cloudfront/runtime/utils.ts new file mode 100644 index 0000000..1caa134 --- /dev/null +++ b/examples/cloudfront/runtime/utils.ts @@ -0,0 +1,6 @@ +export const api = { + get: async (path: string) => { + const res = await fetch(`https://jsonplaceholder.typicode.com${path}`); + return res.json() as Promise; + }, +}; diff --git a/examples/cloudfront/tsconfig.json b/examples/cloudfront/tsconfig.json new file mode 100644 index 0000000..be63b97 --- /dev/null +++ b/examples/cloudfront/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "tsconfig/base.json", + "compilerOptions": { + "paths": { + "runtime/*": ["./runtime/*"], + "infra/*": ["./infra/*"] + } + } +}