diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 0b851394bf..ea36c929e2 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,5 +1,5 @@ # See here for image contents: https://github.com/microsoft/vscode-dev-containers/blob/v0.212.0/containers/javascript-node/.devcontainer/base.Dockerfile -FROM mcr.microsoft.com/vscode/devcontainers/javascript-node@sha256:cad3951c5a6ff844e5b080541b5a0fee63fc18b21adc9f4854a7b50b9775f4fd +FROM mcr.microsoft.com/vscode/devcontainers/javascript-node@sha256:cf266839b0b4ae3b1462d6aceff78defa1fcd6aa62beb32274055cc57b21795b # Install fnm to manage Node.js versions RUN curl -fsSL https://fnm.vercel.app/install -o /tmp/install \ diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index 6c8f8c8224..24a0dd11f5 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -19,4 +19,4 @@ jobs: - name: 'Checkout Repository' uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: 'Dependency Review' - uses: actions/dependency-review-action@72eb03d02c7872a771aacd928f3123ac62ad6d3a # v4.3.3 + uses: actions/dependency-review-action@5a2ce3f5b92ee19cbb1541a4984c76d921601d7c # v4.3.4 diff --git a/.github/workflows/make-release.yml b/.github/workflows/make-release.yml index b4abf71760..9a08893c55 100644 --- a/.github/workflows/make-release.yml +++ b/.github/workflows/make-release.yml @@ -49,7 +49,7 @@ jobs: with: ref: ${{ github.sha }} - name: Setup NodeJS - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 with: node-version: "20" cache: "npm" diff --git a/.github/workflows/make-version.yml b/.github/workflows/make-version.yml index 63fa25c911..47aac1640d 100644 --- a/.github/workflows/make-version.yml +++ b/.github/workflows/make-version.yml @@ -23,7 +23,7 @@ jobs: ref: ${{ github.ref }} fetch-depth: 0 # fetch all history, commits and tags, lerna scans it to the last tag and looks at commits, we need all of it to determine the next version - name: Setup NodeJS - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 with: node-version: "20" cache: "npm" diff --git a/.github/workflows/publish_layer.yml b/.github/workflows/publish_layer.yml index 32a5315be8..b71b0295aa 100644 --- a/.github/workflows/publish_layer.yml +++ b/.github/workflows/publish_layer.yml @@ -35,7 +35,7 @@ jobs: with: ref: ${{ github.sha }} - name: Setup Node.js - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 with: node-version: "20" - name: Setup dependencies diff --git a/.github/workflows/reusable-run-linting-check-and-unit-tests.yml b/.github/workflows/reusable-run-linting-check-and-unit-tests.yml index f3926b9bc9..f9226f9514 100644 --- a/.github/workflows/reusable-run-linting-check-and-unit-tests.yml +++ b/.github/workflows/reusable-run-linting-check-and-unit-tests.yml @@ -19,7 +19,7 @@ jobs: - name: Checkout code uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Setup NodeJS - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 with: node-version: ${{ matrix.version }} cache: "npm" @@ -46,7 +46,7 @@ jobs: - name: Checkout code uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Setup NodeJS - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 with: node-version: 20 cache: "npm" @@ -64,7 +64,7 @@ jobs: - name: Checkout code uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Setup NodeJS - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 with: node-version: 20 cache: "npm" @@ -82,7 +82,7 @@ jobs: - name: Checkout code uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Setup NodeJS - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 with: node-version: 20 cache: "npm" @@ -98,7 +98,7 @@ jobs: - name: Checkout code uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Setup NodeJS - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 with: node-version: 20 cache: "npm" diff --git a/.github/workflows/reusable_deploy_layer_stack.yml b/.github/workflows/reusable_deploy_layer_stack.yml index 45e8d6904a..907475d8cd 100644 --- a/.github/workflows/reusable_deploy_layer_stack.yml +++ b/.github/workflows/reusable_deploy_layer_stack.yml @@ -70,7 +70,7 @@ jobs: role-to-assume: ${{ secrets.target-account-role }} mask-aws-account-id: true - name: Setup Node.js - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 with: node-version: "20" - name: Setup dependencies diff --git a/.github/workflows/reusable_publish_docs.yml b/.github/workflows/reusable_publish_docs.yml index ff8fc9d139..321965806c 100644 --- a/.github/workflows/reusable_publish_docs.yml +++ b/.github/workflows/reusable_publish_docs.yml @@ -52,7 +52,7 @@ jobs: - name: Checkout code uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - name: Setup NodeJS - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 with: node-version: "20" cache: "npm" diff --git a/.github/workflows/run-e2e-tests.yml b/.github/workflows/run-e2e-tests.yml index d67c48f869..76bee15be5 100644 --- a/.github/workflows/run-e2e-tests.yml +++ b/.github/workflows/run-e2e-tests.yml @@ -55,7 +55,7 @@ jobs: with: ref: ${{ steps.extract_PR_details.outputs.headSHA }} - name: Setup NodeJS - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 + uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 with: node-version: '20' - name: Setup dependencies diff --git a/CHANGELOG.md b/CHANGELOG.md index b89cf28dfb..6b804dbdef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.5.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.4.0...v2.5.0) (2024-07-15) + + +### Bug Fixes + +* **parser:** include error cause in ParseError ([#2774](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2774)) ([34d0b55](https://github.com/aws-powertools/powertools-lambda-typescript/commit/34d0b5500ca67a6df0703be66031d1aee61a09fa)) + + +### Features + +* **logger:** custom function for unserializable values (JSON replacer) ([#2739](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2739)) ([fbc8688](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fbc86889f88203945a4201c6a6c403b3a257d54f)) + + + + + # [2.4.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.3.0...v2.4.0) (2024-07-10) diff --git a/docs/core/logger.md b/docs/core/logger.md index 6dbdf7370a..ffce457122 100644 --- a/docs/core/logger.md +++ b/docs/core/logger.md @@ -760,6 +760,26 @@ This is how the printed log would look: !!! tip "Custom Log formatter and Child loggers" It is not necessary to pass the `LogFormatter` each time a [child logger](#using-multiple-logger-instances-across-your-code) is created. The parent's LogFormatter will be inherited by the child logger. +### Bring your own JSON serializer + +You can extend the default JSON serializer by passing a custom serializer function to the `Logger` constructor, using the `jsonReplacerFn` option. This is useful when you want to customize the serialization of specific values. + +=== "unserializableValues.ts" + + ```typescript hl_lines="4-5 7" + --8<-- "examples/snippets/logger/unserializableValues.ts" + ``` + +=== "unserializableValues.json" + + ```json hl_lines="8" + --8<-- "examples/snippets/logger/unserializableValues.json" + ``` + +By default, Logger uses `JSON.stringify()` to serialize log items and a [custom replacer function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#the_replacer_parameter) to serialize common unserializable values such as `BigInt`, circular references, and `Error` objects. + +When you extend the default JSON serializer, we will call your custom serializer function before the default one. This allows you to customize the serialization while still benefiting from the default behavior. + ## Testing your code ### Inject Lambda Context diff --git a/docs/index.md b/docs/index.md index 6f29a6cb19..fd96ce3ea1 100644 --- a/docs/index.md +++ b/docs/index.md @@ -69,7 +69,7 @@ You can use Powertools for AWS Lambda (TypeScript) by installing it with your fa For the latter, make sure to replace `{region}` with your AWS region, e.g., `eu-west-1`. - __arn:aws:lambda:{region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8__{: .copyMe}:clipboard: + __arn:aws:lambda:{region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9__{: .copyMe}:clipboard: ???+ note "Code snippets for popular infrastructure as code frameworks" @@ -89,7 +89,7 @@ You can use Powertools for AWS Lambda (TypeScript) by installing it with your fa const powertoolsLayer = LayerVersion.fromLayerVersionArn( this, 'PowertoolsLayer', - `arn:aws:lambda:${Stack.of(this).region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8` + `arn:aws:lambda:${Stack.of(this).region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9` ); new Function(this, 'Function', { @@ -126,7 +126,7 @@ You can use Powertools for AWS Lambda (TypeScript) by installing it with your fa Type: AWS::Serverless::Function Properties: Layers: - - !Sub arn:aws:lambda:${AWS::Region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8 + - !Sub arn:aws:lambda:${AWS::Region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9 ``` If you use `esbuild` to bundle your code, make sure to exclude `@aws-lambda-powertools/*` and `@aws-sdk/*` from being bundled since the packages are already present the layer: @@ -155,7 +155,7 @@ You can use Powertools for AWS Lambda (TypeScript) by installing it with your fa hello: handler: lambda_function.lambda_handler layers: - - arn:aws:lambda:${aws:region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8 + - arn:aws:lambda:${aws:region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9 ``` If you use `esbuild` to bundle your code, make sure to exclude `@aws-lambda-powertools/*` and `@aws-sdk/*` from being bundled since the packages are already present the layer: @@ -190,7 +190,7 @@ You can use Powertools for AWS Lambda (TypeScript) by installing it with your fa role = ... handler = "index.handler" runtime = "nodejs20.x" - layers = ["arn:aws:lambda:{aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8"] + layers = ["arn:aws:lambda:{aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9"] source_code_hash = filebase64sha256("lambda_function_payload.zip") } ``` @@ -208,7 +208,7 @@ You can use Powertools for AWS Lambda (TypeScript) by installing it with your fa const lambdaFunction = new aws.lambda.Function('function', { layers: [ - pulumi.interpolate`arn:aws:lambda:${aws.getRegionOutput().name}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8` + pulumi.interpolate`arn:aws:lambda:${aws.getRegionOutput().name}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9` ], code: new pulumi.asset.FileArchive('lambda_function_payload.zip'), tracingConfig: { @@ -232,7 +232,7 @@ You can use Powertools for AWS Lambda (TypeScript) by installing it with your fa ? Do you want to configure advanced settings? Yes ... ? Do you want to enable Lambda layers for this function? Yes - ? Enter up to 5 existing Lambda layer ARNs (comma-separated): arn:aws:lambda:{aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8 + ? Enter up to 5 existing Lambda layer ARNs (comma-separated): arn:aws:lambda:{aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9 ❯ amplify push -y # Updating an existing function and add the layer @@ -242,7 +242,7 @@ You can use Powertools for AWS Lambda (TypeScript) by installing it with your fa - Name: ? Which setting do you want to update? Lambda layers configuration ? Do you want to enable Lambda layers for this function? Yes - ? Enter up to 5 existing Lambda layer ARNs (comma-separated): arn:aws:lambda:{aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8 + ? Enter up to 5 existing Lambda layer ARNs (comma-separated): arn:aws:lambda:{aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9 ? Do you want to edit the local lambda function now? No ``` @@ -255,33 +255,33 @@ You can use the Lambda Layer both with CommonJS and ESM (ECMAScript modules) for ??? note "Click to expand and copy any regional Lambda Layer ARN" | Region | Layer ARN | | ---------------- | ------------------------------------------------------------------------------------------------------------- | - | `us-east-1` | [arn:aws:lambda:us-east-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `us-east-2` | [arn:aws:lambda:us-east-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `us-west-1` | [arn:aws:lambda:us-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `us-west-2` | [arn:aws:lambda:us-west-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `ap-south-1` | [arn:aws:lambda:ap-south-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `ap-east-1` | [arn:aws:lambda:ap-east-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `ap-northeast-1` | [arn:aws:lambda:ap-northeast-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `ap-northeast-2` | [arn:aws:lambda:ap-northeast-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `ap-northeast-3` | [arn:aws:lambda:ap-northeast-3:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `ap-southeast-1` | [arn:aws:lambda:ap-southeast-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `ap-southeast-2` | [arn:aws:lambda:ap-southeast-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `ap-southeast-3` | [arn:aws:lambda:ap-southeast-3:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `ap-southeast-4` | [arn:aws:lambda:ap-southeast-4:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `eu-central-1` | [arn:aws:lambda:eu-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `eu-central-2` | [arn:aws:lambda:eu-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `eu-west-1` | [arn:aws:lambda:eu-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `eu-west-2` | [arn:aws:lambda:eu-west-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `eu-west-3` | [arn:aws:lambda:eu-west-3:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `eu-north-1` | [arn:aws:lambda:eu-north-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `eu-south-1` | [arn:aws:lambda:eu-south-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `eu-south-2` | [arn:aws:lambda:eu-south-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `ca-central-1` | [arn:aws:lambda:ca-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `ca-west-1` | [arn:aws:lambda:ca-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `sa-east-1` | [arn:aws:lambda:sa-east-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `af-south-1` | [arn:aws:lambda:af-south-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `me-south-1` | [arn:aws:lambda:me-south-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | - | `il-central-1` | [arn:aws:lambda:il-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8](#){: .copyMe}:clipboard: | + | `us-east-1` | [arn:aws:lambda:us-east-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `us-east-2` | [arn:aws:lambda:us-east-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `us-west-1` | [arn:aws:lambda:us-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `us-west-2` | [arn:aws:lambda:us-west-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `ap-south-1` | [arn:aws:lambda:ap-south-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `ap-east-1` | [arn:aws:lambda:ap-east-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `ap-northeast-1` | [arn:aws:lambda:ap-northeast-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `ap-northeast-2` | [arn:aws:lambda:ap-northeast-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `ap-northeast-3` | [arn:aws:lambda:ap-northeast-3:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `ap-southeast-1` | [arn:aws:lambda:ap-southeast-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `ap-southeast-2` | [arn:aws:lambda:ap-southeast-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `ap-southeast-3` | [arn:aws:lambda:ap-southeast-3:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `ap-southeast-4` | [arn:aws:lambda:ap-southeast-4:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `eu-central-1` | [arn:aws:lambda:eu-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `eu-central-2` | [arn:aws:lambda:eu-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `eu-west-1` | [arn:aws:lambda:eu-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `eu-west-2` | [arn:aws:lambda:eu-west-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `eu-west-3` | [arn:aws:lambda:eu-west-3:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `eu-north-1` | [arn:aws:lambda:eu-north-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `eu-south-1` | [arn:aws:lambda:eu-south-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `eu-south-2` | [arn:aws:lambda:eu-south-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `ca-central-1` | [arn:aws:lambda:ca-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `ca-west-1` | [arn:aws:lambda:ca-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `sa-east-1` | [arn:aws:lambda:sa-east-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `af-south-1` | [arn:aws:lambda:af-south-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `me-south-1` | [arn:aws:lambda:me-south-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | + | `il-central-1` | [arn:aws:lambda:il-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9](#){: .copyMe}:clipboard: | **Want to inspect the contents of the Layer?** @@ -290,7 +290,7 @@ The pre-signed URL to download this Lambda Layer will be within `Location` key i Change `{aws::region}` to your AWS region, e.g. `eu-west-1`, and run the following command: ```bash title="AWS CLI command to download Lambda Layer content" -aws lambda get-layer-version-by-arn --arn arn:aws:lambda:{aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:8 --region {aws::region} +aws lambda get-layer-version-by-arn --arn arn:aws:lambda:{aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:9 --region {aws::region} ``` ## Instrumentation diff --git a/docs/utilities/parser.md b/docs/utilities/parser.md index 3784c37376..d8e836184d 100644 --- a/docs/utilities/parser.md +++ b/docs/utilities/parser.md @@ -249,3 +249,51 @@ The package `@types/aws-lambda` is a popular project that contains type definiti Powertools parser utility also bring AWS Lambda event types based on the built-in schema definitions. We recommend to use the types provided by the parser utility. If you encounter any issues or have any feedback, please [submit an issue](https://github.com/aws-powertools/powertools-lambda-typescript/issues/new/choose). + +## Testing your code + +When testing your handler with [**parser decorator**](#parse-events) you need to use double assetion to bypass TypeScript type checking in your tests. +This is useful when you want to test the handler for invalid payloads or when you want to test the error handling. +If you are you use middy middleware, you don't need to do this. + +=== "handlerDecorator.test.ts" + + ```typescript hl_lines="26" + --8<-- "examples/snippets/parser/unitTestDecorator.ts" + ``` + + 1. Use double assertion `as unknown as X` to bypass TypeScript type checking in your tests + +=== "handlerDecorator.ts" + + ```typescript + --8<-- "examples/snippets/parser/handlerDecorator.ts" + ``` + +=== "schema.ts" + + ```typescript + --8<-- "examples/snippets/parser/schema.ts" + ``` + +This also works when using `safeParse` option. + +=== "handlerSafeParse.test.ts" + + ```typescript hl_lines="21-29 35 45" + --8<-- "examples/snippets/parser/unitTestSafeParse.ts" + ``` + + 1. Use double assertion to pass expected types to the handler + +=== "handlerSafeParse.ts" + + ```typescript + --8<-- "examples/snippets/parser/handlerSafeParseDecorator.ts" + ``` + +=== "schema.ts" + + ```typescript + --8<-- "examples/snippets/parser/schema.ts" + ``` diff --git a/examples/app/CHANGELOG.md b/examples/app/CHANGELOG.md index 78ba996ad4..3e73d97886 100644 --- a/examples/app/CHANGELOG.md +++ b/examples/app/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.5.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.4.0...v2.5.0) (2024-07-15) + +**Note:** Version bump only for package powertools-sample-app + + + + + # [2.4.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.3.0...v2.4.0) (2024-07-10) **Note:** Version bump only for package powertools-sample-app diff --git a/examples/app/package.json b/examples/app/package.json index 320b147a65..30b84d438e 100644 --- a/examples/app/package.json +++ b/examples/app/package.json @@ -1,6 +1,6 @@ { "name": "powertools-sample-app", - "version": "2.4.0", + "version": "2.5.0", "author": { "name": "Amazon Web Services", "url": "https://aws.amazon.com" @@ -32,9 +32,9 @@ "#errors": "./functions/commons/errors.js" }, "devDependencies": { - "@types/aws-lambda": "^8.10.140", + "@types/aws-lambda": "^8.10.141", "@types/jest": "^29.5.12", - "@types/node": "20.14.9", + "@types/node": "20.14.10", "aws-cdk": "^2.145.0", "aws-cdk-lib": "^2.145.0", "constructs": "^10.3.0", @@ -45,18 +45,18 @@ "typescript": "^5.4.5" }, "dependencies": { - "@aws-lambda-powertools/batch": "^2.4.0", - "@aws-lambda-powertools/idempotency": "^2.4.0", - "@aws-lambda-powertools/logger": "^2.4.0", - "@aws-lambda-powertools/metrics": "^2.4.0", - "@aws-lambda-powertools/parameters": "^2.4.0", - "@aws-lambda-powertools/tracer": "^2.4.0", - "@aws-sdk/client-ssm": "^3.613.0", - "@aws-sdk/lib-dynamodb": "^3.613.0", + "@aws-lambda-powertools/batch": "^2.5.0", + "@aws-lambda-powertools/idempotency": "^2.5.0", + "@aws-lambda-powertools/logger": "^2.5.0", + "@aws-lambda-powertools/metrics": "^2.5.0", + "@aws-lambda-powertools/parameters": "^2.5.0", + "@aws-lambda-powertools/tracer": "^2.5.0", + "@aws-sdk/client-ssm": "^3.614.0", + "@aws-sdk/lib-dynamodb": "^3.614.0", "@middy/core": "^4.7.0", - "@types/aws-lambda": "^8.10.140", + "@types/aws-lambda": "^8.10.141", "@types/jest": "^29.5.12", - "@types/node": "20.14.9", + "@types/node": "20.14.10", "constructs": "^10.3.0", "esbuild": "^0.23.0", "jest": "^29.7.0", diff --git a/examples/snippets/CHANGELOG.md b/examples/snippets/CHANGELOG.md index 46f7f8e908..0a4c897ab2 100644 --- a/examples/snippets/CHANGELOG.md +++ b/examples/snippets/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.5.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.4.0...v2.5.0) (2024-07-15) + + +### Features + +* **logger:** custom function for unserializable values (JSON replacer) ([#2739](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2739)) ([fbc8688](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fbc86889f88203945a4201c6a6c403b3a257d54f)) + + + + + # [2.4.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.3.0...v2.4.0) (2024-07-10) diff --git a/examples/snippets/logger/unserializableValues.json b/examples/snippets/logger/unserializableValues.json new file mode 100644 index 0000000000..9134cdcbe3 --- /dev/null +++ b/examples/snippets/logger/unserializableValues.json @@ -0,0 +1,9 @@ +{ + "level": "INFO", + "message": "Serialize with custom serializer", + "sampling_rate": 0, + "service": "serverlessAirline", + "timestamp": "2024-07-07T09:52:14.212Z", + "xray_trace_id": "1-668a654d-396c646b760ee7d067f32f18", + "serializedValue": [1, 2, 3] +} diff --git a/examples/snippets/logger/unserializableValues.ts b/examples/snippets/logger/unserializableValues.ts new file mode 100644 index 0000000000..0a5ff0e2c7 --- /dev/null +++ b/examples/snippets/logger/unserializableValues.ts @@ -0,0 +1,13 @@ +import { Logger } from '@aws-lambda-powertools/logger'; +import type { CustomReplacerFn } from '@aws-lambda-powertools/logger/types'; + +const jsonReplacerFn: CustomReplacerFn = (_: string, value: unknown) => + value instanceof Set ? [...value] : value; + +const logger = new Logger({ serviceName: 'serverlessAirline', jsonReplacerFn }); + +export const handler = async (): Promise => { + logger.info('Serialize with custom serializer', { + serializedValue: new Set([1, 2, 3]), + }); +}; diff --git a/examples/snippets/package.json b/examples/snippets/package.json index 82a0834ed2..d8480b8795 100644 --- a/examples/snippets/package.json +++ b/examples/snippets/package.json @@ -1,6 +1,6 @@ { "name": "code-snippets", - "version": "2.4.0", + "version": "2.5.0", "description": "A collection code snippets for the Powertools for AWS Lambda (TypeScript) docs", "author": { "name": "Amazon Web Services", @@ -29,19 +29,19 @@ }, "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript#readme", "devDependencies": { - "@aws-lambda-powertools/batch": "^2.4.0", - "@aws-lambda-powertools/idempotency": "^2.4.0", - "@aws-lambda-powertools/jmespath": "^2.4.0", - "@aws-lambda-powertools/logger": "^2.4.0", - "@aws-lambda-powertools/metrics": "^2.4.0", - "@aws-lambda-powertools/parameters": "^2.4.0", - "@aws-lambda-powertools/parser": "^2.4.0", - "@aws-lambda-powertools/tracer": "^2.4.0", - "@aws-sdk/client-appconfigdata": "^3.613.0", - "@aws-sdk/client-dynamodb": "^3.613.0", - "@aws-sdk/client-secrets-manager": "^3.613.0", - "@aws-sdk/client-ssm": "^3.613.0", - "@aws-sdk/util-dynamodb": "^3.613.0", + "@aws-lambda-powertools/batch": "^2.5.0", + "@aws-lambda-powertools/idempotency": "^2.5.0", + "@aws-lambda-powertools/jmespath": "^2.5.0", + "@aws-lambda-powertools/logger": "^2.5.0", + "@aws-lambda-powertools/metrics": "^2.5.0", + "@aws-lambda-powertools/parameters": "^2.5.0", + "@aws-lambda-powertools/parser": "^2.5.0", + "@aws-lambda-powertools/tracer": "^2.5.0", + "@aws-sdk/client-appconfigdata": "^3.614.0", + "@aws-sdk/client-dynamodb": "^3.614.0", + "@aws-sdk/client-secrets-manager": "^3.614.0", + "@aws-sdk/client-ssm": "^3.614.0", + "@aws-sdk/util-dynamodb": "^3.614.0", "@middy/core": "^4.7.0", "aws-sdk": "^2.1657.0", "aws-sdk-client-mock": "^4.0.1", diff --git a/examples/snippets/parser/handlerDecorator.ts b/examples/snippets/parser/handlerDecorator.ts new file mode 100644 index 0000000000..c8b3cbd40a --- /dev/null +++ b/examples/snippets/parser/handlerDecorator.ts @@ -0,0 +1,20 @@ +import type { Context } from 'aws-lambda'; +import type { LambdaInterface } from '@aws-lambda-powertools/commons/types'; +import { parser } from '@aws-lambda-powertools/parser'; +import { Logger } from '@aws-lambda-powertools/logger'; +import { orderSchema, type Order } from './schema.js'; + +const logger = new Logger(); + +class Lambda implements LambdaInterface { + @parser({ schema: orderSchema }) + public async handler(event: Order, _context: Context): Promise { + logger.info('Processing event', { event }); + + // ... business logic + return event.id; + } +} + +const myFunction = new Lambda(); +export const handler = myFunction.handler.bind(myFunction); diff --git a/examples/snippets/parser/handlerSafeParseDecorator.ts b/examples/snippets/parser/handlerSafeParseDecorator.ts new file mode 100644 index 0000000000..55a13e4519 --- /dev/null +++ b/examples/snippets/parser/handlerSafeParseDecorator.ts @@ -0,0 +1,36 @@ +import type { Context } from 'aws-lambda'; +import type { LambdaInterface } from '@aws-lambda-powertools/commons/types'; +import { parser } from '@aws-lambda-powertools/parser'; +import { Logger } from '@aws-lambda-powertools/logger'; +import { orderSchema, type Order } from './schema.js'; +import { EventBridgeEnvelope } from '@aws-lambda-powertools/parser/envelopes'; +import type { + ParsedResult, + EventBridgeEvent, +} from '@aws-lambda-powertools/parser/types'; + +const logger = new Logger(); + +class Lambda implements LambdaInterface { + @parser({ + schema: orderSchema, + envelope: EventBridgeEnvelope, + safeParse: true, + }) + public async handler( + event: ParsedResult, + _context: Context + ): Promise { + logger.info('Processing event', { event }); + if (event.success) { + // ... business logic + return event.data.id; + } else { + logger.error('Failed to parse event', { event }); + throw new Error('Failed to parse event'); + } + } +} + +const myFunction = new Lambda(); +export const handler = myFunction.handler.bind(myFunction); diff --git a/examples/snippets/parser/safeParseDecorator.ts b/examples/snippets/parser/safeParseDecorator.ts index aaf4d19ca9..7e709c97a4 100644 --- a/examples/snippets/parser/safeParseDecorator.ts +++ b/examples/snippets/parser/safeParseDecorator.ts @@ -7,6 +7,7 @@ import type { EventBridgeEvent, } from '@aws-lambda-powertools/parser/types'; import { Logger } from '@aws-lambda-powertools/logger'; +import { EventBridgeEnvelope } from '@aws-lambda-powertools/parser/envelopes'; const logger = new Logger(); @@ -26,7 +27,11 @@ const orderSchema = z.object({ type Order = z.infer; class Lambda implements LambdaInterface { - @parser({ schema: orderSchema, safeParse: true }) // (1)! + @parser({ + schema: orderSchema, + envelope: EventBridgeEnvelope, + safeParse: true, + }) // (1)! public async handler( event: ParsedResult, _context: Context diff --git a/examples/snippets/parser/schema.ts b/examples/snippets/parser/schema.ts index f14db32fff..1340b40f26 100644 --- a/examples/snippets/parser/schema.ts +++ b/examples/snippets/parser/schema.ts @@ -13,4 +13,6 @@ const orderSchema = z.object({ optionalField: z.string().optional(), }); -export { orderSchema }; +type Order = z.infer; + +export { orderSchema, type Order }; diff --git a/examples/snippets/parser/unitTestDecorator.ts b/examples/snippets/parser/unitTestDecorator.ts new file mode 100644 index 0000000000..eabc1c0f59 --- /dev/null +++ b/examples/snippets/parser/unitTestDecorator.ts @@ -0,0 +1,31 @@ +import type { Context } from 'aws-lambda'; +import type { Order } from './schema.js'; +import { handler } from './decorator.js'; + +describe('Test handler', () => { + it('should parse event successfully', async () => { + const testEvent = { + id: 123, + description: 'test', + items: [ + { + id: 1, + quantity: 1, + description: 'item1', + }, + ], + }; + + await expect(handler(testEvent, {} as Context)).resolves.toEqual(123); + }); + + it('should throw error if event is invalid', async () => { + const testEvent = { foo: 'bar' }; + await expect( + handler( + testEvent as unknown as Order, // (1)! + {} as Context + ) + ).rejects.toThrow(); + }); +}); diff --git a/examples/snippets/parser/unitTestSafeParse.ts b/examples/snippets/parser/unitTestSafeParse.ts new file mode 100644 index 0000000000..9f83f3a0af --- /dev/null +++ b/examples/snippets/parser/unitTestSafeParse.ts @@ -0,0 +1,50 @@ +import type { Order } from './schema.js'; +import type { Context } from 'aws-lambda'; +import { handler } from './safeParseDecorator.js'; +import { + ParsedResult, + EventBridgeEvent, +} from '@aws-lambda-powertools/parser/types'; + +describe('Test handler', () => { + it('should parse event successfully', async () => { + const testEvent = { + version: '0', + id: '6a7e8feb-b491-4cf7-a9f1-bf3703467718', + 'detail-type': 'OrderPurchased', + source: 'OrderService', + account: '111122223333', + time: '2020-10-22T18:43:48Z', + region: 'us-west-1', + resources: ['some_additional'], + detail: { + id: 10876546789, + description: 'My order', + items: [ + { + id: 1015938732, + quantity: 1, + description: 'item xpto', + }, + ], + }, + }; + + await expect( + handler( + testEvent as unknown as ParsedResult, // (1)! + {} as Context + ) + ).resolves.toEqual(10876546789); + }); + + it('should throw error if event is invalid', async () => { + const testEvent = { foo: 'bar' }; + await expect( + handler( + testEvent as unknown as ParsedResult, + {} as Context + ) + ).rejects.toThrow(); + }); +}); diff --git a/layers/CHANGELOG.md b/layers/CHANGELOG.md index eb194e5640..334e75d79e 100644 --- a/layers/CHANGELOG.md +++ b/layers/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.5.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.4.0...v2.5.0) (2024-07-15) + +**Note:** Version bump only for package layers + + + + + # [2.4.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.3.0...v2.4.0) (2024-07-10) diff --git a/layers/package.json b/layers/package.json index 2b9d54fd55..748686d6da 100644 --- a/layers/package.json +++ b/layers/package.json @@ -1,6 +1,6 @@ { "name": "layers", - "version": "2.4.0", + "version": "2.5.0", "bin": { "layer": "bin/layers.js" }, diff --git a/lerna.json b/lerna.json index 1598250944..0c88c39ce1 100644 --- a/lerna.json +++ b/lerna.json @@ -14,7 +14,7 @@ "layers", "examples/snippets" ], - "version": "2.4.0", + "version": "2.5.0", "npmClient": "npm", "message": "chore(release): %s [skip ci]" } diff --git a/package-lock.json b/package-lock.json index 5db05cfd41..4a1893f160 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,9 +24,9 @@ "examples/app" ], "devDependencies": { - "@types/aws-lambda": "^8.10.140", + "@types/aws-lambda": "^8.10.141", "@types/jest": "^29.5.12", - "@types/node": "^20.14.9", + "@types/node": "^20.14.10", "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", "eslint": "^8.57.0", @@ -46,7 +46,7 @@ "prettier": "^3.3.2", "ts-jest": "^29.1.5", "ts-node": "^10.9.2", - "typedoc": "^0.26.3", + "typedoc": "^0.26.4", "typedoc-plugin-missing-exports": "^3.0.0", "typedoc-plugin-zod": "^1.2.0", "typescript": "^5.4.5" @@ -57,21 +57,21 @@ }, "examples/app": { "name": "powertools-sample-app", - "version": "2.4.0", + "version": "2.5.0", "license": "MIT-0", "dependencies": { - "@aws-lambda-powertools/batch": "^2.4.0", - "@aws-lambda-powertools/idempotency": "^2.4.0", - "@aws-lambda-powertools/logger": "^2.4.0", - "@aws-lambda-powertools/metrics": "^2.4.0", - "@aws-lambda-powertools/parameters": "^2.4.0", - "@aws-lambda-powertools/tracer": "^2.4.0", - "@aws-sdk/client-ssm": "^3.613.0", - "@aws-sdk/lib-dynamodb": "^3.613.0", + "@aws-lambda-powertools/batch": "^2.5.0", + "@aws-lambda-powertools/idempotency": "^2.5.0", + "@aws-lambda-powertools/logger": "^2.5.0", + "@aws-lambda-powertools/metrics": "^2.5.0", + "@aws-lambda-powertools/parameters": "^2.5.0", + "@aws-lambda-powertools/tracer": "^2.5.0", + "@aws-sdk/client-ssm": "^3.614.0", + "@aws-sdk/lib-dynamodb": "^3.614.0", "@middy/core": "^4.7.0", - "@types/aws-lambda": "^8.10.140", + "@types/aws-lambda": "^8.10.141", "@types/jest": "^29.5.12", - "@types/node": "20.14.9", + "@types/node": "20.14.10", "constructs": "^10.3.0", "esbuild": "^0.23.0", "jest": "^29.7.0", @@ -80,9 +80,9 @@ "typescript": "^5.4.5" }, "devDependencies": { - "@types/aws-lambda": "^8.10.140", + "@types/aws-lambda": "^8.10.141", "@types/jest": "^29.5.12", - "@types/node": "20.14.9", + "@types/node": "20.14.10", "aws-cdk": "^2.145.0", "aws-cdk-lib": "^2.145.0", "constructs": "^10.3.0", @@ -110,22 +110,22 @@ }, "examples/snippets": { "name": "code-snippets", - "version": "2.4.0", + "version": "2.5.0", "license": "MIT-0", "devDependencies": { - "@aws-lambda-powertools/batch": "^2.4.0", - "@aws-lambda-powertools/idempotency": "^2.4.0", - "@aws-lambda-powertools/jmespath": "^2.4.0", - "@aws-lambda-powertools/logger": "^2.4.0", - "@aws-lambda-powertools/metrics": "^2.4.0", - "@aws-lambda-powertools/parameters": "^2.4.0", - "@aws-lambda-powertools/parser": "^2.4.0", - "@aws-lambda-powertools/tracer": "^2.4.0", - "@aws-sdk/client-appconfigdata": "^3.613.0", - "@aws-sdk/client-dynamodb": "^3.613.0", - "@aws-sdk/client-secrets-manager": "^3.613.0", - "@aws-sdk/client-ssm": "^3.613.0", - "@aws-sdk/util-dynamodb": "^3.613.0", + "@aws-lambda-powertools/batch": "^2.5.0", + "@aws-lambda-powertools/idempotency": "^2.5.0", + "@aws-lambda-powertools/jmespath": "^2.5.0", + "@aws-lambda-powertools/logger": "^2.5.0", + "@aws-lambda-powertools/metrics": "^2.5.0", + "@aws-lambda-powertools/parameters": "^2.5.0", + "@aws-lambda-powertools/parser": "^2.5.0", + "@aws-lambda-powertools/tracer": "^2.5.0", + "@aws-sdk/client-appconfigdata": "^3.614.0", + "@aws-sdk/client-dynamodb": "^3.614.0", + "@aws-sdk/client-secrets-manager": "^3.614.0", + "@aws-sdk/client-ssm": "^3.614.0", + "@aws-sdk/util-dynamodb": "^3.614.0", "@middy/core": "^4.7.0", "aws-sdk": "^2.1657.0", "aws-sdk-client-mock": "^4.0.1", @@ -135,7 +135,7 @@ } }, "layers": { - "version": "2.4.0", + "version": "2.5.0", "license": "MIT-0", "dependencies": { "aws-cdk": "^2.145.0", @@ -382,51 +382,51 @@ "link": true }, "node_modules/@aws-sdk/client-appconfigdata": { - "version": "3.613.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-appconfigdata/-/client-appconfigdata-3.613.0.tgz", - "integrity": "sha512-g7Bi4cACgPLVFv/ooFuz2nBcdzsjDvfcVja7b9sTVkGb94ToN5moyWfTDVGyk9Qm72KwvycFWNKslfu0uwdYcg==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-appconfigdata/-/client-appconfigdata-3.614.0.tgz", + "integrity": "sha512-g50ssdFGR9HY1LFL53qffhGKDAc5PC01tFWuho8xVeRHyzZC6IYCTnIo0p+p9D5tOQJhiejIAH2yQMjPUPYomw==", "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.613.0", - "@aws-sdk/client-sts": "3.613.0", - "@aws-sdk/core": "3.609.0", - "@aws-sdk/credential-provider-node": "3.613.0", + "@aws-sdk/client-sso-oidc": "3.614.0", + "@aws-sdk/client-sts": "3.614.0", + "@aws-sdk/core": "3.614.0", + "@aws-sdk/credential-provider-node": "3.614.0", "@aws-sdk/middleware-host-header": "3.609.0", "@aws-sdk/middleware-logger": "3.609.0", "@aws-sdk/middleware-recursion-detection": "3.609.0", - "@aws-sdk/middleware-user-agent": "3.609.0", - "@aws-sdk/region-config-resolver": "3.609.0", + "@aws-sdk/middleware-user-agent": "3.614.0", + "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.609.0", - "@smithy/config-resolver": "^3.0.4", - "@smithy/core": "^2.2.4", - "@smithy/fetch-http-handler": "^3.2.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.2.6", + "@smithy/fetch-http-handler": "^3.2.1", "@smithy/hash-node": "^3.0.3", "@smithy/invalid-dependency": "^3.0.3", "@smithy/middleware-content-length": "^3.0.3", - "@smithy/middleware-endpoint": "^3.0.4", - "@smithy/middleware-retry": "^3.0.7", + "@smithy/middleware-endpoint": "^3.0.5", + "@smithy/middleware-retry": "^3.0.9", "@smithy/middleware-serde": "^3.0.3", "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.3", - "@smithy/node-http-handler": "^3.1.1", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.2", "@smithy/protocol-http": "^4.0.3", - "@smithy/smithy-client": "^3.1.5", + "@smithy/smithy-client": "^3.1.7", "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.7", - "@smithy/util-defaults-mode-node": "^3.0.7", - "@smithy/util-endpoints": "^2.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.9", + "@smithy/util-defaults-mode-node": "^3.0.9", + "@smithy/util-endpoints": "^2.0.5", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", - "@smithy/util-stream": "^3.0.5", + "@smithy/util-stream": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -435,49 +435,49 @@ } }, "node_modules/@aws-sdk/client-cloudwatch": { - "version": "3.613.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch/-/client-cloudwatch-3.613.0.tgz", - "integrity": "sha512-ceM12+L+0G1UCezgqsNWMKkwZeGIaGNS3MQ1ovtfKKCPxHrxpglQHO+/gQqecbfE2VgL7LnW088frwHIYyOs4w==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch/-/client-cloudwatch-3.614.0.tgz", + "integrity": "sha512-76rLu29Jr2x1Fy5+aCqYbKQfDokOBB1R/Z2NKFQwln5Q3DCCbAm2HE+MM+FameYJqpL9WGEkWFuxAOWjvfYTTA==", "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.613.0", - "@aws-sdk/client-sts": "3.613.0", - "@aws-sdk/core": "3.609.0", - "@aws-sdk/credential-provider-node": "3.613.0", + "@aws-sdk/client-sso-oidc": "3.614.0", + "@aws-sdk/client-sts": "3.614.0", + "@aws-sdk/core": "3.614.0", + "@aws-sdk/credential-provider-node": "3.614.0", "@aws-sdk/middleware-host-header": "3.609.0", "@aws-sdk/middleware-logger": "3.609.0", "@aws-sdk/middleware-recursion-detection": "3.609.0", - "@aws-sdk/middleware-user-agent": "3.609.0", - "@aws-sdk/region-config-resolver": "3.609.0", + "@aws-sdk/middleware-user-agent": "3.614.0", + "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.609.0", - "@smithy/config-resolver": "^3.0.4", - "@smithy/core": "^2.2.4", - "@smithy/fetch-http-handler": "^3.2.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.2.6", + "@smithy/fetch-http-handler": "^3.2.1", "@smithy/hash-node": "^3.0.3", "@smithy/invalid-dependency": "^3.0.3", - "@smithy/middleware-compression": "^3.0.4", + "@smithy/middleware-compression": "^3.0.5", "@smithy/middleware-content-length": "^3.0.3", - "@smithy/middleware-endpoint": "^3.0.4", - "@smithy/middleware-retry": "^3.0.7", + "@smithy/middleware-endpoint": "^3.0.5", + "@smithy/middleware-retry": "^3.0.9", "@smithy/middleware-serde": "^3.0.3", "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.3", - "@smithy/node-http-handler": "^3.1.1", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.2", "@smithy/protocol-http": "^4.0.3", - "@smithy/smithy-client": "^3.1.5", + "@smithy/smithy-client": "^3.1.7", "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.7", - "@smithy/util-defaults-mode-node": "^3.0.7", - "@smithy/util-endpoints": "^2.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.9", + "@smithy/util-defaults-mode-node": "^3.0.9", + "@smithy/util-endpoints": "^2.0.5", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", @@ -489,48 +489,48 @@ } }, "node_modules/@aws-sdk/client-dynamodb": { - "version": "3.613.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.613.0.tgz", - "integrity": "sha512-ewWv52AZKvAp0kJgnoAa3uRbXnqDRGVT30VQhbkE2uInEZWZODBCuXKBc6xTuc/Rh+WnQbhPf4RzFCfjMK5UyQ==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.614.0.tgz", + "integrity": "sha512-/Qhpim9Y6GfsZ4tcHgXo+YrBR44WGU6ON1PuT8X8D31aIb1mmtcHCF1c86QQ97sGkgmnCcaTWhQYjLNiJOZkbA==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.613.0", - "@aws-sdk/client-sts": "3.613.0", - "@aws-sdk/core": "3.609.0", - "@aws-sdk/credential-provider-node": "3.613.0", - "@aws-sdk/middleware-endpoint-discovery": "3.609.0", + "@aws-sdk/client-sso-oidc": "3.614.0", + "@aws-sdk/client-sts": "3.614.0", + "@aws-sdk/core": "3.614.0", + "@aws-sdk/credential-provider-node": "3.614.0", + "@aws-sdk/middleware-endpoint-discovery": "3.614.0", "@aws-sdk/middleware-host-header": "3.609.0", "@aws-sdk/middleware-logger": "3.609.0", "@aws-sdk/middleware-recursion-detection": "3.609.0", - "@aws-sdk/middleware-user-agent": "3.609.0", - "@aws-sdk/region-config-resolver": "3.609.0", + "@aws-sdk/middleware-user-agent": "3.614.0", + "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.609.0", - "@smithy/config-resolver": "^3.0.4", - "@smithy/core": "^2.2.4", - "@smithy/fetch-http-handler": "^3.2.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.2.6", + "@smithy/fetch-http-handler": "^3.2.1", "@smithy/hash-node": "^3.0.3", "@smithy/invalid-dependency": "^3.0.3", "@smithy/middleware-content-length": "^3.0.3", - "@smithy/middleware-endpoint": "^3.0.4", - "@smithy/middleware-retry": "^3.0.7", + "@smithy/middleware-endpoint": "^3.0.5", + "@smithy/middleware-retry": "^3.0.9", "@smithy/middleware-serde": "^3.0.3", "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.3", - "@smithy/node-http-handler": "^3.1.1", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.2", "@smithy/protocol-http": "^4.0.3", - "@smithy/smithy-client": "^3.1.5", + "@smithy/smithy-client": "^3.1.7", "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.7", - "@smithy/util-defaults-mode-node": "^3.0.7", - "@smithy/util-endpoints": "^2.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.9", + "@smithy/util-defaults-mode-node": "^3.0.9", + "@smithy/util-endpoints": "^2.0.5", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", @@ -543,53 +543,53 @@ } }, "node_modules/@aws-sdk/client-lambda": { - "version": "3.613.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.613.0.tgz", - "integrity": "sha512-pZbgXRL66oi5UUE73Ms1Ewk67qipgc9L1VhHLkf80CC1R119bCs2lFfQoaDt6VJsKlt1qyOdCYva7VrMgisdIQ==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.614.0.tgz", + "integrity": "sha512-p+4jU1zQEQghvZlQOBN+P3P2no4/xloqjd+D2qETKmb+dl2bhdKpLc42Mfv8H+vJ9QffhRwq+UCNOEzTiN89vg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.613.0", - "@aws-sdk/client-sts": "3.613.0", - "@aws-sdk/core": "3.609.0", - "@aws-sdk/credential-provider-node": "3.613.0", + "@aws-sdk/client-sso-oidc": "3.614.0", + "@aws-sdk/client-sts": "3.614.0", + "@aws-sdk/core": "3.614.0", + "@aws-sdk/credential-provider-node": "3.614.0", "@aws-sdk/middleware-host-header": "3.609.0", "@aws-sdk/middleware-logger": "3.609.0", "@aws-sdk/middleware-recursion-detection": "3.609.0", - "@aws-sdk/middleware-user-agent": "3.609.0", - "@aws-sdk/region-config-resolver": "3.609.0", + "@aws-sdk/middleware-user-agent": "3.614.0", + "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.609.0", - "@smithy/config-resolver": "^3.0.4", - "@smithy/core": "^2.2.4", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.2.6", "@smithy/eventstream-serde-browser": "^3.0.4", "@smithy/eventstream-serde-config-resolver": "^3.0.3", "@smithy/eventstream-serde-node": "^3.0.4", - "@smithy/fetch-http-handler": "^3.2.0", + "@smithy/fetch-http-handler": "^3.2.1", "@smithy/hash-node": "^3.0.3", "@smithy/invalid-dependency": "^3.0.3", "@smithy/middleware-content-length": "^3.0.3", - "@smithy/middleware-endpoint": "^3.0.4", - "@smithy/middleware-retry": "^3.0.7", + "@smithy/middleware-endpoint": "^3.0.5", + "@smithy/middleware-retry": "^3.0.9", "@smithy/middleware-serde": "^3.0.3", "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.3", - "@smithy/node-http-handler": "^3.1.1", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.2", "@smithy/protocol-http": "^4.0.3", - "@smithy/smithy-client": "^3.1.5", + "@smithy/smithy-client": "^3.1.7", "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.7", - "@smithy/util-defaults-mode-node": "^3.0.7", - "@smithy/util-endpoints": "^2.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.9", + "@smithy/util-defaults-mode-node": "^3.0.9", + "@smithy/util-endpoints": "^2.0.5", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", - "@smithy/util-stream": "^3.0.5", + "@smithy/util-stream": "^3.0.6", "@smithy/util-utf8": "^3.0.0", "@smithy/util-waiter": "^3.1.2", "tslib": "^2.6.2" @@ -599,48 +599,48 @@ } }, "node_modules/@aws-sdk/client-secrets-manager": { - "version": "3.613.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.613.0.tgz", - "integrity": "sha512-fv1ZXze94MNxqr5nev1Sy7R71Qj1navnW4d7bREM4hGIuWlAdELgx6kOdYPLuvvPsuYtw2v7UwufyRzeEPdcYA==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.614.0.tgz", + "integrity": "sha512-gxCYaRYF78R5xBxXoKdF+xiWiElIJqOTSNxjt28ch+GEn9TNAYwpQcTxejBZ5VxeDwbmBjRaB9Vpx9FPeImTMw==", "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.613.0", - "@aws-sdk/client-sts": "3.613.0", - "@aws-sdk/core": "3.609.0", - "@aws-sdk/credential-provider-node": "3.613.0", + "@aws-sdk/client-sso-oidc": "3.614.0", + "@aws-sdk/client-sts": "3.614.0", + "@aws-sdk/core": "3.614.0", + "@aws-sdk/credential-provider-node": "3.614.0", "@aws-sdk/middleware-host-header": "3.609.0", "@aws-sdk/middleware-logger": "3.609.0", "@aws-sdk/middleware-recursion-detection": "3.609.0", - "@aws-sdk/middleware-user-agent": "3.609.0", - "@aws-sdk/region-config-resolver": "3.609.0", + "@aws-sdk/middleware-user-agent": "3.614.0", + "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.609.0", - "@smithy/config-resolver": "^3.0.4", - "@smithy/core": "^2.2.4", - "@smithy/fetch-http-handler": "^3.2.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.2.6", + "@smithy/fetch-http-handler": "^3.2.1", "@smithy/hash-node": "^3.0.3", "@smithy/invalid-dependency": "^3.0.3", "@smithy/middleware-content-length": "^3.0.3", - "@smithy/middleware-endpoint": "^3.0.4", - "@smithy/middleware-retry": "^3.0.7", + "@smithy/middleware-endpoint": "^3.0.5", + "@smithy/middleware-retry": "^3.0.9", "@smithy/middleware-serde": "^3.0.3", "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.3", - "@smithy/node-http-handler": "^3.1.1", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.2", "@smithy/protocol-http": "^4.0.3", - "@smithy/smithy-client": "^3.1.5", + "@smithy/smithy-client": "^3.1.7", "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.7", - "@smithy/util-defaults-mode-node": "^3.0.7", - "@smithy/util-endpoints": "^2.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.9", + "@smithy/util-defaults-mode-node": "^3.0.9", + "@smithy/util-endpoints": "^2.0.5", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", @@ -652,47 +652,47 @@ } }, "node_modules/@aws-sdk/client-ssm": { - "version": "3.613.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.613.0.tgz", - "integrity": "sha512-hUf1IgYZQxxCC1AS2HiHn4MZjfAepBn9Mj/oOt/yIEakrGiRYNuDcNpYN4RFPR0A8qC6BhFGtxHP99i1rgSDOA==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.614.0.tgz", + "integrity": "sha512-1gYlzKEkPjRFM7SZRQo2ApsHz0GEPftHcnXaqKHshtJlfwLEihZrRsUbRqwN4/ipFL39XiHBoMqWvsU1tawwCg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.613.0", - "@aws-sdk/client-sts": "3.613.0", - "@aws-sdk/core": "3.609.0", - "@aws-sdk/credential-provider-node": "3.613.0", + "@aws-sdk/client-sso-oidc": "3.614.0", + "@aws-sdk/client-sts": "3.614.0", + "@aws-sdk/core": "3.614.0", + "@aws-sdk/credential-provider-node": "3.614.0", "@aws-sdk/middleware-host-header": "3.609.0", "@aws-sdk/middleware-logger": "3.609.0", "@aws-sdk/middleware-recursion-detection": "3.609.0", - "@aws-sdk/middleware-user-agent": "3.609.0", - "@aws-sdk/region-config-resolver": "3.609.0", + "@aws-sdk/middleware-user-agent": "3.614.0", + "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.609.0", - "@smithy/config-resolver": "^3.0.4", - "@smithy/core": "^2.2.4", - "@smithy/fetch-http-handler": "^3.2.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.2.6", + "@smithy/fetch-http-handler": "^3.2.1", "@smithy/hash-node": "^3.0.3", "@smithy/invalid-dependency": "^3.0.3", "@smithy/middleware-content-length": "^3.0.3", - "@smithy/middleware-endpoint": "^3.0.4", - "@smithy/middleware-retry": "^3.0.7", + "@smithy/middleware-endpoint": "^3.0.5", + "@smithy/middleware-retry": "^3.0.9", "@smithy/middleware-serde": "^3.0.3", "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.3", - "@smithy/node-http-handler": "^3.1.1", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.2", "@smithy/protocol-http": "^4.0.3", - "@smithy/smithy-client": "^3.1.5", + "@smithy/smithy-client": "^3.1.7", "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.7", - "@smithy/util-defaults-mode-node": "^3.0.7", - "@smithy/util-endpoints": "^2.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.9", + "@smithy/util-defaults-mode-node": "^3.0.9", + "@smithy/util-endpoints": "^2.0.5", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", @@ -705,44 +705,44 @@ } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.609.0.tgz", - "integrity": "sha512-gqXGFDkIpKHCKAbeJK4aIDt3tiwJ26Rf5Tqw9JS6BYXsdMeOB8FTzqD9R+Yc1epHd8s5L94sdqXT5PapgxFZrg==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.614.0.tgz", + "integrity": "sha512-p5pyYaxRzBttjBkqfc8i3K7DzBdTg3ECdVgBo6INIUxfvDy0J8QUE8vNtCgvFIkq+uPw/8M+Eo4zzln7anuO0Q==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.609.0", + "@aws-sdk/core": "3.614.0", "@aws-sdk/middleware-host-header": "3.609.0", "@aws-sdk/middleware-logger": "3.609.0", "@aws-sdk/middleware-recursion-detection": "3.609.0", - "@aws-sdk/middleware-user-agent": "3.609.0", - "@aws-sdk/region-config-resolver": "3.609.0", + "@aws-sdk/middleware-user-agent": "3.614.0", + "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.609.0", - "@smithy/config-resolver": "^3.0.4", - "@smithy/core": "^2.2.4", - "@smithy/fetch-http-handler": "^3.2.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.2.6", + "@smithy/fetch-http-handler": "^3.2.1", "@smithy/hash-node": "^3.0.3", "@smithy/invalid-dependency": "^3.0.3", "@smithy/middleware-content-length": "^3.0.3", - "@smithy/middleware-endpoint": "^3.0.4", - "@smithy/middleware-retry": "^3.0.7", + "@smithy/middleware-endpoint": "^3.0.5", + "@smithy/middleware-retry": "^3.0.9", "@smithy/middleware-serde": "^3.0.3", "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.3", - "@smithy/node-http-handler": "^3.1.1", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.2", "@smithy/protocol-http": "^4.0.3", - "@smithy/smithy-client": "^3.1.5", + "@smithy/smithy-client": "^3.1.7", "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.7", - "@smithy/util-defaults-mode-node": "^3.0.7", - "@smithy/util-endpoints": "^2.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.9", + "@smithy/util-defaults-mode-node": "^3.0.9", + "@smithy/util-endpoints": "^2.0.5", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", @@ -753,45 +753,45 @@ } }, "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.613.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.613.0.tgz", - "integrity": "sha512-VINgHA30f6Itjtj6ZAxkx86XhyFYa7UBfv2Ju+9QGcAr2Y3HU+Mh9g6QaTwDqIM5QG6Pgss24NaAItWGJHFf5A==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.614.0.tgz", + "integrity": "sha512-BI1NWcpppbHg/28zbUg54dZeckork8BItZIcjls12vxasy+p3iEzrJVG60jcbUTTsk3Qc1tyxNfrdcVqx0y7Ww==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.609.0", - "@aws-sdk/credential-provider-node": "3.613.0", + "@aws-sdk/core": "3.614.0", + "@aws-sdk/credential-provider-node": "3.614.0", "@aws-sdk/middleware-host-header": "3.609.0", "@aws-sdk/middleware-logger": "3.609.0", "@aws-sdk/middleware-recursion-detection": "3.609.0", - "@aws-sdk/middleware-user-agent": "3.609.0", - "@aws-sdk/region-config-resolver": "3.609.0", + "@aws-sdk/middleware-user-agent": "3.614.0", + "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.609.0", - "@smithy/config-resolver": "^3.0.4", - "@smithy/core": "^2.2.4", - "@smithy/fetch-http-handler": "^3.2.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.2.6", + "@smithy/fetch-http-handler": "^3.2.1", "@smithy/hash-node": "^3.0.3", "@smithy/invalid-dependency": "^3.0.3", "@smithy/middleware-content-length": "^3.0.3", - "@smithy/middleware-endpoint": "^3.0.4", - "@smithy/middleware-retry": "^3.0.7", + "@smithy/middleware-endpoint": "^3.0.5", + "@smithy/middleware-retry": "^3.0.9", "@smithy/middleware-serde": "^3.0.3", "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.3", - "@smithy/node-http-handler": "^3.1.1", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.2", "@smithy/protocol-http": "^4.0.3", - "@smithy/smithy-client": "^3.1.5", + "@smithy/smithy-client": "^3.1.7", "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.7", - "@smithy/util-defaults-mode-node": "^3.0.7", - "@smithy/util-endpoints": "^2.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.9", + "@smithy/util-defaults-mode-node": "^3.0.9", + "@smithy/util-endpoints": "^2.0.5", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", @@ -801,50 +801,50 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.613.0" + "@aws-sdk/client-sts": "^3.614.0" } }, "node_modules/@aws-sdk/client-sts": { - "version": "3.613.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.613.0.tgz", - "integrity": "sha512-S+KvQI4XEivY3vyIY+IPY7Fw8vFvX/q3pkNC9qEhnAs+/w7vT6vhVBHsaugYVlsMuNtNvmyc8P+Q/gzOEtLCTw==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.614.0.tgz", + "integrity": "sha512-i6QmaVA1KHHYNnI2VYQy/sc31rLm4+jSp8b/YbQpFnD0w3aXsrEEHHlxek45uSkHb4Nrj1omFBVy/xp1WVYx2Q==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.613.0", - "@aws-sdk/core": "3.609.0", - "@aws-sdk/credential-provider-node": "3.613.0", + "@aws-sdk/client-sso-oidc": "3.614.0", + "@aws-sdk/core": "3.614.0", + "@aws-sdk/credential-provider-node": "3.614.0", "@aws-sdk/middleware-host-header": "3.609.0", "@aws-sdk/middleware-logger": "3.609.0", "@aws-sdk/middleware-recursion-detection": "3.609.0", - "@aws-sdk/middleware-user-agent": "3.609.0", - "@aws-sdk/region-config-resolver": "3.609.0", + "@aws-sdk/middleware-user-agent": "3.614.0", + "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.609.0", - "@smithy/config-resolver": "^3.0.4", - "@smithy/core": "^2.2.4", - "@smithy/fetch-http-handler": "^3.2.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.2.6", + "@smithy/fetch-http-handler": "^3.2.1", "@smithy/hash-node": "^3.0.3", "@smithy/invalid-dependency": "^3.0.3", "@smithy/middleware-content-length": "^3.0.3", - "@smithy/middleware-endpoint": "^3.0.4", - "@smithy/middleware-retry": "^3.0.7", + "@smithy/middleware-endpoint": "^3.0.5", + "@smithy/middleware-retry": "^3.0.9", "@smithy/middleware-serde": "^3.0.3", "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.3", - "@smithy/node-http-handler": "^3.1.1", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.2", "@smithy/protocol-http": "^4.0.3", - "@smithy/smithy-client": "^3.1.5", + "@smithy/smithy-client": "^3.1.7", "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.7", - "@smithy/util-defaults-mode-node": "^3.0.7", - "@smithy/util-endpoints": "^2.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.9", + "@smithy/util-defaults-mode-node": "^3.0.9", + "@smithy/util-endpoints": "^2.0.5", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", @@ -855,48 +855,48 @@ } }, "node_modules/@aws-sdk/client-xray": { - "version": "3.613.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-xray/-/client-xray-3.613.0.tgz", - "integrity": "sha512-PxY5g+6u2Cs0TLlFpH1d63D2fcdowBI0CB0WKMbvEQEDNP4hfq+TSADOHnxJmT9z/o1JIknWei8WmBWvOTbnYQ==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-xray/-/client-xray-3.614.0.tgz", + "integrity": "sha512-J50AbaPjXfaA1Evk2gYMgrVWJaRXwjLwjTytJyn+thWPRxXMD3LSPrL4aIBvAb9TUddvMJqqU8VppaQuougD9Q==", "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.613.0", - "@aws-sdk/client-sts": "3.613.0", - "@aws-sdk/core": "3.609.0", - "@aws-sdk/credential-provider-node": "3.613.0", + "@aws-sdk/client-sso-oidc": "3.614.0", + "@aws-sdk/client-sts": "3.614.0", + "@aws-sdk/core": "3.614.0", + "@aws-sdk/credential-provider-node": "3.614.0", "@aws-sdk/middleware-host-header": "3.609.0", "@aws-sdk/middleware-logger": "3.609.0", "@aws-sdk/middleware-recursion-detection": "3.609.0", - "@aws-sdk/middleware-user-agent": "3.609.0", - "@aws-sdk/region-config-resolver": "3.609.0", + "@aws-sdk/middleware-user-agent": "3.614.0", + "@aws-sdk/region-config-resolver": "3.614.0", "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", "@aws-sdk/util-user-agent-browser": "3.609.0", - "@aws-sdk/util-user-agent-node": "3.609.0", - "@smithy/config-resolver": "^3.0.4", - "@smithy/core": "^2.2.4", - "@smithy/fetch-http-handler": "^3.2.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.2.6", + "@smithy/fetch-http-handler": "^3.2.1", "@smithy/hash-node": "^3.0.3", "@smithy/invalid-dependency": "^3.0.3", "@smithy/middleware-content-length": "^3.0.3", - "@smithy/middleware-endpoint": "^3.0.4", - "@smithy/middleware-retry": "^3.0.7", + "@smithy/middleware-endpoint": "^3.0.5", + "@smithy/middleware-retry": "^3.0.9", "@smithy/middleware-serde": "^3.0.3", "@smithy/middleware-stack": "^3.0.3", - "@smithy/node-config-provider": "^3.1.3", - "@smithy/node-http-handler": "^3.1.1", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.2", "@smithy/protocol-http": "^4.0.3", - "@smithy/smithy-client": "^3.1.5", + "@smithy/smithy-client": "^3.1.7", "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.7", - "@smithy/util-defaults-mode-node": "^3.0.7", - "@smithy/util-endpoints": "^2.0.4", + "@smithy/util-defaults-mode-browser": "^3.0.9", + "@smithy/util-defaults-mode-node": "^3.0.9", + "@smithy/util-endpoints": "^2.0.5", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", @@ -907,14 +907,14 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.609.0.tgz", - "integrity": "sha512-ptqw+DTxLr01+pKjDUuo53SEDzI+7nFM3WfQaEo0yhDg8vWw8PER4sWj1Ysx67ksctnZesPUjqxd5SHbtdBxiA==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.614.0.tgz", + "integrity": "sha512-BUuS5/1YkgmKc4J0bg83XEtMyDHVyqG2QDzfmhYe8gbOIZabUl1FlrFVwhCAthtrrI6MPGTQcERB4BtJKUSplw==", "dependencies": { - "@smithy/core": "^2.2.4", + "@smithy/core": "^2.2.6", "@smithy/protocol-http": "^4.0.3", "@smithy/signature-v4": "^3.1.2", - "@smithy/smithy-client": "^3.1.5", + "@smithy/smithy-client": "^3.1.7", "@smithy/types": "^3.3.0", "fast-xml-parser": "4.2.5", "tslib": "^2.6.2" @@ -938,18 +938,18 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.613.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.613.0.tgz", - "integrity": "sha512-MCiUFxowFzprzIXFXsqbp/3DViJ7nFmBW+XJkoRQWqNmThbkz/E8sb40WmL9UFdZHJph2KDjzABKYH5f0lHZaA==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.614.0.tgz", + "integrity": "sha512-YIEjlNUKb3Vo/iTnGAPdsiDC3FUUnNoex2OwU8LmR7AkYZiWdB8nx99DfgkkY+OFMUpw7nKD2PCOtuFONelfGA==", "dependencies": { "@aws-sdk/types": "3.609.0", - "@smithy/fetch-http-handler": "^3.2.0", - "@smithy/node-http-handler": "^3.1.1", + "@smithy/fetch-http-handler": "^3.2.1", + "@smithy/node-http-handler": "^3.1.2", "@smithy/property-provider": "^3.1.3", "@smithy/protocol-http": "^4.0.3", - "@smithy/smithy-client": "^3.1.5", + "@smithy/smithy-client": "^3.1.7", "@smithy/types": "^3.3.0", - "@smithy/util-stream": "^3.0.5", + "@smithy/util-stream": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -957,19 +957,19 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.613.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.613.0.tgz", - "integrity": "sha512-scHV7K0YpllYMWxPnqxssWU+7S3WNXH1m5Rw8Ax96pfcfnaoatiWXps2XSSdGlChdF9gNVnewjRKFOTLyyzdAw==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.614.0.tgz", + "integrity": "sha512-KfLuLFGwlvFSZ2MuzYwWGPb1y5TeiwX5okIDe0aQ1h10oD3924FXbN+mabOnUHQ8EFcGAtCaWbrC86mI7ktC6A==", "dependencies": { "@aws-sdk/credential-provider-env": "3.609.0", - "@aws-sdk/credential-provider-http": "3.613.0", - "@aws-sdk/credential-provider-process": "3.609.0", - "@aws-sdk/credential-provider-sso": "3.609.0", + "@aws-sdk/credential-provider-http": "3.614.0", + "@aws-sdk/credential-provider-process": "3.614.0", + "@aws-sdk/credential-provider-sso": "3.614.0", "@aws-sdk/credential-provider-web-identity": "3.609.0", "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.1.3", + "@smithy/credential-provider-imds": "^3.1.4", "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, @@ -977,24 +977,24 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.613.0" + "@aws-sdk/client-sts": "^3.614.0" } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.613.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.613.0.tgz", - "integrity": "sha512-n3yd0CDuUKcQFhjRLAQfQpZyZ2ddrHC7QOKQqE+Fkx+Fs5zoG+NRLK1EBkBW/G9zk8Ck4+rG3OOI3CuNpJ2PCw==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.614.0.tgz", + "integrity": "sha512-4J6gPEuFZP0mkWq5E//oMS1vrmMM88iNNcv7TEljYnsc6JTAlKejCyFwx6CN+nkIhmIZsl06SXIhBemzBdBPfg==", "dependencies": { "@aws-sdk/credential-provider-env": "3.609.0", - "@aws-sdk/credential-provider-http": "3.613.0", - "@aws-sdk/credential-provider-ini": "3.613.0", - "@aws-sdk/credential-provider-process": "3.609.0", - "@aws-sdk/credential-provider-sso": "3.609.0", + "@aws-sdk/credential-provider-http": "3.614.0", + "@aws-sdk/credential-provider-ini": "3.614.0", + "@aws-sdk/credential-provider-process": "3.614.0", + "@aws-sdk/credential-provider-sso": "3.614.0", "@aws-sdk/credential-provider-web-identity": "3.609.0", "@aws-sdk/types": "3.609.0", - "@smithy/credential-provider-imds": "^3.1.3", + "@smithy/credential-provider-imds": "^3.1.4", "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, @@ -1003,13 +1003,13 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.609.0.tgz", - "integrity": "sha512-Ux35nGOSJKZWUIM3Ny0ROZ8cqPRUEkh+tR3X2o9ydEbFiLq3eMMyEnHJqx4EeUjLRchidlm4CCid9GxMe5/gdw==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.614.0.tgz", + "integrity": "sha512-Q0SI0sTRwi8iNODLs5+bbv8vgz8Qy2QdxbCHnPk/6Cx6LMf7i3dqmWquFbspqFRd8QiqxStrblwxrUYZi09tkA==", "dependencies": { "@aws-sdk/types": "3.609.0", "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, @@ -1018,15 +1018,15 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.609.0.tgz", - "integrity": "sha512-oQPGDKMMIxjvTcm86g07RPYeC7mCNk+29dPpY15ZAPRpAF7F0tircsC3wT9fHzNaKShEyK5LuI5Kg/uxsdy+Iw==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.614.0.tgz", + "integrity": "sha512-55+gp0JY4451cWI1qXmVMFM0GQaBKiQpXv2P0xmd9P3qLDyeFUSEW8XPh0d2lb1ICr6x4s47ynXVdGCIv2mXMg==", "dependencies": { - "@aws-sdk/client-sso": "3.609.0", - "@aws-sdk/token-providers": "3.609.0", + "@aws-sdk/client-sso": "3.614.0", + "@aws-sdk/token-providers": "3.614.0", "@aws-sdk/types": "3.609.0", "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, @@ -1064,12 +1064,12 @@ } }, "node_modules/@aws-sdk/lib-dynamodb": { - "version": "3.613.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.613.0.tgz", - "integrity": "sha512-/mf0eyzExCJfsS38b5nNcK8gkq12CZ8zeOGsgRqmx0YUxet7WIk3q6xaj97zBmTSdEwtKwmt+VS5pSF4PgUpSA==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.614.0.tgz", + "integrity": "sha512-hHbw4f4ZBmsoyRGmyVsjXe/I3F4ewzw5zZSgKZcmGTgPt1fm8WKAA18YPh8K3CScGWerHFY3w2ilPNHDr+xpsg==", "dependencies": { - "@aws-sdk/util-dynamodb": "3.613.0", - "@smithy/smithy-client": "^3.1.5", + "@aws-sdk/util-dynamodb": "3.614.0", + "@smithy/smithy-client": "^3.1.7", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, @@ -1077,17 +1077,17 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-dynamodb": "^3.613.0" + "@aws-sdk/client-dynamodb": "^3.614.0" } }, "node_modules/@aws-sdk/middleware-endpoint-discovery": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.609.0.tgz", - "integrity": "sha512-HnjoduqkbsU+x7V+SF/h0/fxBKzG9ABlYteR2yiZEVyY70o2Wtt7fh4mZoVvpyuDEFCsYnLk9Ve0+7mNo7+pWA==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.614.0.tgz", + "integrity": "sha512-xEe9a3aaAzzo5RlRz4SSsGYpYiju29SdYDQYsm1v3syWGOqNzFlJE7aFuSP0/WYgdwB6svILLdAeZs8w2fj3GQ==", "dependencies": { "@aws-sdk/endpoint-cache": "3.572.0", "@aws-sdk/types": "3.609.0", - "@smithy/node-config-provider": "^3.1.3", + "@smithy/node-config-provider": "^3.1.4", "@smithy/protocol-http": "^4.0.3", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" @@ -1138,12 +1138,12 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.609.0.tgz", - "integrity": "sha512-nbq7MXRmeXm4IDqh+sJRAxGPAq0OfGmGIwKvJcw66hLoG8CmhhVMZmIAEBDFr57S+YajGwnLLRt+eMI05MMeVA==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.614.0.tgz", + "integrity": "sha512-xUxh0UPQiMTG6E31Yvu6zVYlikrIcFDKljM11CaatInzvZubGTGiX0DjpqRlfGzUNsuPc/zNrKwRP2+wypgqIw==", "dependencies": { "@aws-sdk/types": "3.609.0", - "@aws-sdk/util-endpoints": "3.609.0", + "@aws-sdk/util-endpoints": "3.614.0", "@smithy/protocol-http": "^4.0.3", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" @@ -1153,12 +1153,12 @@ } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.609.0.tgz", - "integrity": "sha512-lMHBG8zg9GWYBc9/XVPKyuAUd7iKqfPP7z04zGta2kGNOKbUTeqmAdc1gJGku75p4kglIPlGBorOxti8DhRmKw==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz", + "integrity": "sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g==", "dependencies": { "@aws-sdk/types": "3.609.0", - "@smithy/node-config-provider": "^3.1.3", + "@smithy/node-config-provider": "^3.1.4", "@smithy/types": "^3.3.0", "@smithy/util-config-provider": "^3.0.0", "@smithy/util-middleware": "^3.0.3", @@ -1169,13 +1169,13 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.609.0.tgz", - "integrity": "sha512-WvhW/7XSf+H7YmtiIigQxfDVZVZI7mbKikQ09YpzN7FeN3TmYib1+0tB+EE9TbICkwssjiFc71FEBEh4K9grKQ==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz", + "integrity": "sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw==", "dependencies": { "@aws-sdk/types": "3.609.0", "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, @@ -1183,7 +1183,7 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sso-oidc": "^3.609.0" + "@aws-sdk/client-sso-oidc": "^3.614.0" } }, "node_modules/@aws-sdk/types": { @@ -1199,9 +1199,9 @@ } }, "node_modules/@aws-sdk/util-dynamodb": { - "version": "3.613.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-dynamodb/-/util-dynamodb-3.613.0.tgz", - "integrity": "sha512-E73IxiovW3svCavyFBRuuQpifWg2IH48U4KWElKRKLGyKjD7wifO6OfcDkqLGHt3HSutrxDnky9a895NE+aGwg==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-dynamodb/-/util-dynamodb-3.614.0.tgz", + "integrity": "sha512-ce0HZGiM2KxG5Wa07ykxZt4iQCUAj/n/ZhnXKo7ZUU1T2qPZVl65zAnCgF7VXH/l3CO638ENWHG25aXEYfM5Bg==", "dependencies": { "tslib": "^2.6.2" }, @@ -1209,17 +1209,17 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-dynamodb": "^3.613.0" + "@aws-sdk/client-dynamodb": "^3.614.0" } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.609.0.tgz", - "integrity": "sha512-Rh+3V8dOvEeE1aQmUy904DYWtLUEJ7Vf5XBPlQ6At3pBhp+zpXbsnpZzVL33c8lW1xfj6YPwtO6gOeEsl1juCQ==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.614.0.tgz", + "integrity": "sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw==", "dependencies": { "@aws-sdk/types": "3.609.0", "@smithy/types": "^3.3.0", - "@smithy/util-endpoints": "^2.0.4", + "@smithy/util-endpoints": "^2.0.5", "tslib": "^2.6.2" }, "engines": { @@ -1249,12 +1249,12 @@ } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.609.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.609.0.tgz", - "integrity": "sha512-DlZBwQ/HkZyf3pOWc7+wjJRk5R7x9YxHhs2szHwtv1IW30KMabjjjX0GMlGJ9LLkBHkbaaEY/w9Tkj12XRLhRg==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz", + "integrity": "sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA==", "dependencies": { "@aws-sdk/types": "3.609.0", - "@smithy/node-config-provider": "^3.1.3", + "@smithy/node-config-provider": "^3.1.4", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, @@ -4258,11 +4258,11 @@ } }, "node_modules/@smithy/config-resolver": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.4.tgz", - "integrity": "sha512-VwiOk7TwXoE7NlNguV/aPq1hFH72tqkHCw8eWXbr2xHspRyyv9DLpLXhq+Ieje+NwoqXrY0xyQjPXdOE6cGcHA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.5.tgz", + "integrity": "sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA==", "dependencies": { - "@smithy/node-config-provider": "^3.1.3", + "@smithy/node-config-provider": "^3.1.4", "@smithy/types": "^3.3.0", "@smithy/util-config-provider": "^3.0.0", "@smithy/util-middleware": "^3.0.3", @@ -4273,15 +4273,15 @@ } }, "node_modules/@smithy/core": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.2.4.tgz", - "integrity": "sha512-qdY3LpMOUyLM/gfjjMQZui+UTNS7kBRDWlvyIhVOql5dn2J3isk9qUTBtQ1CbDH8MTugHis1zu3h4rH+Qmmh4g==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.2.6.tgz", + "integrity": "sha512-tBbVIv/ui7/lLTKayYJJvi8JLVL2SwOQTbNFEOrvzSE3ktByvsa1erwBOnAMo8N5Vu30g7lN4lLStrU75oDGuw==", "dependencies": { - "@smithy/middleware-endpoint": "^3.0.4", - "@smithy/middleware-retry": "^3.0.7", + "@smithy/middleware-endpoint": "^3.0.5", + "@smithy/middleware-retry": "^3.0.9", "@smithy/middleware-serde": "^3.0.3", "@smithy/protocol-http": "^4.0.3", - "@smithy/smithy-client": "^3.1.5", + "@smithy/smithy-client": "^3.1.7", "@smithy/types": "^3.3.0", "@smithy/util-middleware": "^3.0.3", "tslib": "^2.6.2" @@ -4291,11 +4291,11 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.1.3.tgz", - "integrity": "sha512-U1Yrv6hx/mRK6k8AncuI6jLUx9rn0VVSd9NPEX6pyYFBfkSkChOc/n4zUb8alHUVg83TbI4OdZVo1X0Zfj3ijA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.1.4.tgz", + "integrity": "sha512-NKyH01m97Xa5xf3pB2QOF3lnuE8RIK0hTVNU5zvZAwZU8uspYO4DHQVlK+Y5gwSrujTfHvbfd1D9UFJAc0iYKQ==", "dependencies": { - "@smithy/node-config-provider": "^3.1.3", + "@smithy/node-config-provider": "^3.1.4", "@smithy/property-provider": "^3.1.3", "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", @@ -4368,9 +4368,9 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.0.tgz", - "integrity": "sha512-vFvDxMrc6sO5Atec8PaISckMcAwsCrRhYxwUylg97bRT2KZoumOF7qk5+6EVUtuM1IG9AJV5aqXnHln9ZdXHpg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.1.tgz", + "integrity": "sha512-0w0bgUvZmfa0vHN8a+moByhCJT07WN6AHKEhFSOLsDpnszm+5dLVv5utGaqbhOrZ/aF5x3xuPMs/oMCd+4O5xg==", "dependencies": { "@smithy/protocol-http": "^4.0.3", "@smithy/querystring-builder": "^3.0.3", @@ -4414,13 +4414,13 @@ } }, "node_modules/@smithy/middleware-compression": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@smithy/middleware-compression/-/middleware-compression-3.0.4.tgz", - "integrity": "sha512-wxqn17tgnepjqmt0OyQA/cJnQYY2SpTx2kSKxMo71vVhomIUFPOVkwYSJY27OQWomPWy5E8va2kLfwi8Ap9wKQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-compression/-/middleware-compression-3.0.5.tgz", + "integrity": "sha512-vad+m+GGm73Y3x9DUVEZRLlfswH5CxcyTEbgYu6hVyLCRU/qw1+xChAwtiT3sHTlG/21Rybb1FwZgGGnhm3cnw==", "dev": true, "dependencies": { "@smithy/is-array-buffer": "^3.0.0", - "@smithy/node-config-provider": "^3.1.3", + "@smithy/node-config-provider": "^3.1.4", "@smithy/protocol-http": "^4.0.3", "@smithy/types": "^3.3.0", "@smithy/util-config-provider": "^3.0.0", @@ -4447,13 +4447,13 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.0.4.tgz", - "integrity": "sha512-whUJMEPwl3ANIbXjBXZVdJNgfV2ZU8ayln7xUM47rXL2txuenI7jQ/VFFwCzy5lCmXScjp6zYtptW5Evud8e9g==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.0.5.tgz", + "integrity": "sha512-V4acqqrh5tDxUEGVTOgf2lYMZqPQsoGntCrjrJZEeBzEzDry2d2vcI1QCXhGltXPPY+BMc6eksZMguA9fIY8vA==", "dependencies": { "@smithy/middleware-serde": "^3.0.3", - "@smithy/node-config-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/shared-ini-file-loader": "^3.1.4", "@smithy/types": "^3.3.0", "@smithy/url-parser": "^3.0.3", "@smithy/util-middleware": "^3.0.3", @@ -4464,14 +4464,14 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.7.tgz", - "integrity": "sha512-f5q7Y09G+2h5ivkSx5CHvlAT4qRR3jBFEsfXyQ9nFNiWQlr8c48blnu5cmbTQ+p1xmIO14UXzKoF8d7Tm0Gsjw==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.9.tgz", + "integrity": "sha512-Mrv9omExU1gA7Y0VEJG2LieGfPYtwwcEiOnVGZ54a37NEMr66TJ0glFslOJFuKWG6izg5DpKIUmDV9rRxjm47Q==", "dependencies": { - "@smithy/node-config-provider": "^3.1.3", + "@smithy/node-config-provider": "^3.1.4", "@smithy/protocol-http": "^4.0.3", "@smithy/service-error-classification": "^3.0.3", - "@smithy/smithy-client": "^3.1.5", + "@smithy/smithy-client": "^3.1.7", "@smithy/types": "^3.3.0", "@smithy/util-middleware": "^3.0.3", "@smithy/util-retry": "^3.0.3", @@ -4507,12 +4507,12 @@ } }, "node_modules/@smithy/node-config-provider": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.3.tgz", - "integrity": "sha512-rxdpAZczzholz6CYZxtqDu/aKTxATD5DAUDVj7HoEulq+pDSQVWzbg0btZDlxeFfa6bb2b5tUvgdX5+k8jUqcg==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz", + "integrity": "sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ==", "dependencies": { "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, @@ -4521,9 +4521,9 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.1.1.tgz", - "integrity": "sha512-L71NLyPeP450r2J/mfu1jMc//Z1YnqJt2eSNw7uhiItaONnBLDA68J5jgxq8+MBDsYnFwNAIc7dBG1ImiWBiwg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.1.2.tgz", + "integrity": "sha512-Td3rUNI7qqtoSLTsJBtsyfoG4cF/XMFmJr6Z2dX8QNzIi6tIW6YmuyFml8mJ2cNpyWNqITKbROMOFrvQjmsOvw==", "dependencies": { "@smithy/abort-controller": "^3.1.1", "@smithy/protocol-http": "^4.0.3", @@ -4596,9 +4596,9 @@ } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.3.tgz", - "integrity": "sha512-Z8Y3+08vgoDgl4HENqNnnzSISAaGrF2RoKupoC47u2wiMp+Z8P/8mDh1CL8+8ujfi2U5naNvopSBmP/BUj8b5w==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz", + "integrity": "sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ==", "dependencies": { "@smithy/types": "^3.3.0", "tslib": "^2.6.2" @@ -4625,15 +4625,15 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.1.5.tgz", - "integrity": "sha512-x9bL9Mx2CT2P1OiUlHM+ZNpbVU6TgT32f9CmTRzqIHA7M4vYrROCWEoC3o4xHNJASoGd4Opos3cXYPgh+/m4Ww==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.1.7.tgz", + "integrity": "sha512-nZbJZB0XI3YnaFBWGDBr7kjaew6O0oNYNmopyIz6gKZEbxzrtH7rwvU1GcVxcSFoOwWecLJEe79fxEMljHopFQ==", "dependencies": { - "@smithy/middleware-endpoint": "^3.0.4", + "@smithy/middleware-endpoint": "^3.0.5", "@smithy/middleware-stack": "^3.0.3", "@smithy/protocol-http": "^4.0.3", "@smithy/types": "^3.3.0", - "@smithy/util-stream": "^3.0.5", + "@smithy/util-stream": "^3.0.6", "tslib": "^2.6.2" }, "engines": { @@ -4717,12 +4717,12 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.7.tgz", - "integrity": "sha512-Q2txLyvQyGfmjsaDbVV7Sg8psefpFcrnlGapDzXGFRPFKRBeEg6OvFK8FljqjeHSaCZ6/UuzQExUPqBR/2qlDA==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.9.tgz", + "integrity": "sha512-WKPcElz92MAQG09miBdb0GxEH/MwD5GfE8g07WokITq5g6J1ROQfYCKC1wNnkqAGfrSywT7L0rdvvqlBplqiyA==", "dependencies": { "@smithy/property-provider": "^3.1.3", - "@smithy/smithy-client": "^3.1.5", + "@smithy/smithy-client": "^3.1.7", "@smithy/types": "^3.3.0", "bowser": "^2.11.0", "tslib": "^2.6.2" @@ -4732,15 +4732,15 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.7.tgz", - "integrity": "sha512-F4Qcj1fG6MGi2BSWCslfsMSwllws/WzYONBGtLybyY+halAcXdWhcew+mej8M5SKd5hqPYp4f7b+ABQEaeytgg==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.9.tgz", + "integrity": "sha512-dQLrUqFxqpf0GvEKEuFdgXcdZwz6oFm752h4d6C7lQz+RLddf761L2r7dSwGWzESMMB3wKj0jL+skRhEGlecjw==", "dependencies": { - "@smithy/config-resolver": "^3.0.4", - "@smithy/credential-provider-imds": "^3.1.3", - "@smithy/node-config-provider": "^3.1.3", + "@smithy/config-resolver": "^3.0.5", + "@smithy/credential-provider-imds": "^3.1.4", + "@smithy/node-config-provider": "^3.1.4", "@smithy/property-provider": "^3.1.3", - "@smithy/smithy-client": "^3.1.5", + "@smithy/smithy-client": "^3.1.7", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, @@ -4749,11 +4749,11 @@ } }, "node_modules/@smithy/util-endpoints": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.4.tgz", - "integrity": "sha512-ZAtNf+vXAsgzgRutDDiklU09ZzZiiV/nATyqde4Um4priTmasDH+eLpp3tspL0hS2dEootyFMhu1Y6Y+tzpWBQ==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz", + "integrity": "sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg==", "dependencies": { - "@smithy/node-config-provider": "^3.1.3", + "@smithy/node-config-provider": "^3.1.4", "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, @@ -4798,12 +4798,12 @@ } }, "node_modules/@smithy/util-stream": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.0.5.tgz", - "integrity": "sha512-xC3L5PKMAT/Bh8fmHNXP9sdQ4+4aKVUU3EEJ2CF/lLk7R+wtMJM+v/1B4en7jO++Wa5spGzFDBCl0QxgbUc5Ug==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.0.6.tgz", + "integrity": "sha512-w9i//7egejAIvplX821rPWWgaiY1dxsQUw0hXX7qwa/uZ9U3zplqTQ871jWadkcVB9gFDhkPWYVZf4yfFbZ0xA==", "dependencies": { - "@smithy/fetch-http-handler": "^3.2.0", - "@smithy/node-http-handler": "^3.1.1", + "@smithy/fetch-http-handler": "^3.2.1", + "@smithy/node-http-handler": "^3.1.2", "@smithy/types": "^3.3.0", "@smithy/util-base64": "^3.0.0", "@smithy/util-buffer-from": "^3.0.0", @@ -4903,9 +4903,9 @@ } }, "node_modules/@types/aws-lambda": { - "version": "8.10.140", - "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.140.tgz", - "integrity": "sha512-4Dh3dk2TUcbdfHrX0Al90mNGJDvA9NBiTQPzbrjGi/dLxzKCGOYgT8YQ47jUKNFALkAJAadifq0pzyjIUlhVhg==", + "version": "8.10.141", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.141.tgz", + "integrity": "sha512-SMWlRBukG9KV8ZNjwemp2AzDibp/czIAeKKTw09nCPbWxVskIxactCJCGOp4y6I1hCMY7T7UGfySvBLXNeUbEw==", "dev": true }, "node_modules/@types/babel__core": { @@ -5040,9 +5040,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.14.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", - "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", + "version": "20.14.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", + "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", "dependencies": { "undici-types": "~5.26.4" } @@ -17546,9 +17546,9 @@ "dev": true }, "node_modules/typedoc": { - "version": "0.26.3", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.26.3.tgz", - "integrity": "sha512-6d2Sw9disvvpdk4K7VNjKr5/3hzijtfQVHRthhDqJgnhMHy1wQz4yPMJVKXElvnZhFr0nkzo+GzjXDTRV5yLpg==", + "version": "0.26.4", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.26.4.tgz", + "integrity": "sha512-FlW6HpvULDKgc3rK04V+nbFyXogPV88hurarDPOjuuB5HAwuAlrCMQ5NeH7Zt68a/ikOKu6Z/0hFXAeC9xPccQ==", "dev": true, "dependencies": { "lunr": "^2.3.9", @@ -18196,7 +18196,7 @@ }, "packages/batch": { "name": "@aws-lambda-powertools/batch", - "version": "2.4.0", + "version": "2.5.0", "license": "MIT-0", "devDependencies": { "@aws-lambda-powertools/testing-utils": "file:../testing" @@ -18204,7 +18204,7 @@ }, "packages/commons": { "name": "@aws-lambda-powertools/commons", - "version": "2.4.0", + "version": "2.5.0", "license": "MIT-0", "devDependencies": { "@aws-lambda-powertools/testing-utils": "file:../testing" @@ -18212,16 +18212,16 @@ }, "packages/idempotency": { "name": "@aws-lambda-powertools/idempotency", - "version": "2.4.0", + "version": "2.5.0", "license": "MIT-0", "dependencies": { - "@aws-lambda-powertools/commons": "^2.4.0", - "@aws-lambda-powertools/jmespath": "^2.4.0" + "@aws-lambda-powertools/commons": "^2.5.0", + "@aws-lambda-powertools/jmespath": "^2.5.0" }, "devDependencies": { "@aws-lambda-powertools/testing-utils": "file:../testing", - "@aws-sdk/client-dynamodb": "^3.613.0", - "@aws-sdk/lib-dynamodb": "^3.613.0", + "@aws-sdk/client-dynamodb": "^3.614.0", + "@aws-sdk/lib-dynamodb": "^3.614.0", "aws-sdk-client-mock": "^4.0.1", "aws-sdk-client-mock-jest": "^4.0.1" }, @@ -18244,18 +18244,18 @@ }, "packages/jmespath": { "name": "@aws-lambda-powertools/jmespath", - "version": "2.4.0", + "version": "2.5.0", "license": "MIT-0", "dependencies": { - "@aws-lambda-powertools/commons": "^2.4.0" + "@aws-lambda-powertools/commons": "^2.5.0" } }, "packages/logger": { "name": "@aws-lambda-powertools/logger", - "version": "2.4.0", + "version": "2.5.0", "license": "MIT-0", "dependencies": { - "@aws-lambda-powertools/commons": "^2.4.0", + "@aws-lambda-powertools/commons": "^2.5.0", "lodash.merge": "^4.6.2" }, "devDependencies": { @@ -18273,14 +18273,14 @@ }, "packages/metrics": { "name": "@aws-lambda-powertools/metrics", - "version": "2.4.0", + "version": "2.5.0", "license": "MIT-0", "dependencies": { - "@aws-lambda-powertools/commons": "^2.4.0" + "@aws-lambda-powertools/commons": "^2.5.0" }, "devDependencies": { "@aws-lambda-powertools/testing-utils": "file:../testing", - "@aws-sdk/client-cloudwatch": "^3.613.0", + "@aws-sdk/client-cloudwatch": "^3.614.0", "@types/promise-retry": "^1.1.3", "promise-retry": "^2.0.1" }, @@ -18295,18 +18295,18 @@ }, "packages/parameters": { "name": "@aws-lambda-powertools/parameters", - "version": "2.4.0", + "version": "2.5.0", "license": "MIT-0", "dependencies": { - "@aws-lambda-powertools/commons": "^2.4.0" + "@aws-lambda-powertools/commons": "^2.5.0" }, "devDependencies": { "@aws-lambda-powertools/testing-utils": "file:../testing", - "@aws-sdk/client-appconfigdata": "^3.613.0", - "@aws-sdk/client-dynamodb": "^3.613.0", - "@aws-sdk/client-secrets-manager": "^3.613.0", - "@aws-sdk/client-ssm": "^3.613.0", - "@aws-sdk/util-dynamodb": "^3.613.0", + "@aws-sdk/client-appconfigdata": "^3.614.0", + "@aws-sdk/client-dynamodb": "^3.614.0", + "@aws-sdk/client-secrets-manager": "^3.614.0", + "@aws-sdk/client-ssm": "^3.614.0", + "@aws-sdk/util-dynamodb": "^3.614.0", "@smithy/util-base64": "^3.0.0", "aws-sdk-client-mock": "^4.0.1", "aws-sdk-client-mock-jest": "^4.0.1" @@ -18342,7 +18342,7 @@ }, "packages/parser": { "name": "@aws-lambda-powertools/parser", - "version": "2.4.0", + "version": "2.5.0", "license": "MIT-0", "devDependencies": { "@anatine/zod-mock": "^3.13.3", @@ -18363,11 +18363,11 @@ }, "packages/testing": { "name": "@aws-lambda-powertools/testing-utils", - "version": "2.4.0", + "version": "2.5.0", "license": "MIT-0", "dependencies": { "@aws-cdk/cli-lib-alpha": "^2.121.1-alpha.0", - "@aws-sdk/client-lambda": "^3.613.0", + "@aws-sdk/client-lambda": "^3.614.0", "@smithy/util-utf8": "^3.0.0", "aws-cdk-lib": "^2.145.0", "esbuild": "^0.23.0" @@ -18375,16 +18375,16 @@ }, "packages/tracer": { "name": "@aws-lambda-powertools/tracer", - "version": "2.4.0", + "version": "2.5.0", "license": "MIT-0", "dependencies": { - "@aws-lambda-powertools/commons": "^2.4.0", + "@aws-lambda-powertools/commons": "^2.5.0", "aws-xray-sdk-core": "^3.9.0" }, "devDependencies": { "@aws-lambda-powertools/testing-utils": "file:../testing", - "@aws-sdk/client-dynamodb": "^3.613.0", - "@aws-sdk/client-xray": "^3.613.0", + "@aws-sdk/client-dynamodb": "^3.614.0", + "@aws-sdk/client-xray": "^3.614.0", "@types/promise-retry": "^1.1.6", "aws-sdk": "^2.1657.0", "promise-retry": "^2.0.1" diff --git a/package.json b/package.json index 08211ed8bc..66fcd8ef7d 100644 --- a/package.json +++ b/package.json @@ -49,9 +49,9 @@ }, "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript#readme", "devDependencies": { - "@types/aws-lambda": "^8.10.140", + "@types/aws-lambda": "^8.10.141", "@types/jest": "^29.5.12", - "@types/node": "^20.14.9", + "@types/node": "^20.14.10", "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", "eslint": "^8.57.0", @@ -71,7 +71,7 @@ "prettier": "^3.3.2", "ts-jest": "^29.1.5", "ts-node": "^10.9.2", - "typedoc": "^0.26.3", + "typedoc": "^0.26.4", "typedoc-plugin-missing-exports": "^3.0.0", "typedoc-plugin-zod": "^1.2.0", "typescript": "^5.4.5" diff --git a/packages/batch/CHANGELOG.md b/packages/batch/CHANGELOG.md index e2935a0312..76e9c01fa2 100644 --- a/packages/batch/CHANGELOG.md +++ b/packages/batch/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.5.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.4.0...v2.5.0) (2024-07-15) + +**Note:** Version bump only for package @aws-lambda-powertools/batch + + + + + # [2.4.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.3.0...v2.4.0) (2024-07-10) diff --git a/packages/batch/package.json b/packages/batch/package.json index 40bcb16db0..9ec5a21271 100644 --- a/packages/batch/package.json +++ b/packages/batch/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/batch", - "version": "2.4.0", + "version": "2.5.0", "description": "The batch processing package for the Powertools for AWS Lambda (TypeScript) library.", "author": { "name": "Amazon Web Services", diff --git a/packages/commons/CHANGELOG.md b/packages/commons/CHANGELOG.md index 177c247011..e3afdb29f9 100644 --- a/packages/commons/CHANGELOG.md +++ b/packages/commons/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.5.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.4.0...v2.5.0) (2024-07-15) + +**Note:** Version bump only for package @aws-lambda-powertools/commons + + + + + # [2.4.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.3.0...v2.4.0) (2024-07-10) diff --git a/packages/commons/package.json b/packages/commons/package.json index 71b477e4d8..e94dc64d63 100644 --- a/packages/commons/package.json +++ b/packages/commons/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/commons", - "version": "2.4.0", + "version": "2.5.0", "description": "A shared utility package for Powertools for AWS Lambda (TypeScript) libraries", "author": { "name": "Amazon Web Services", diff --git a/packages/commons/src/version.ts b/packages/commons/src/version.ts index 75666959bd..c61f501e4c 100644 --- a/packages/commons/src/version.ts +++ b/packages/commons/src/version.ts @@ -1,2 +1,2 @@ // this file is auto generated, do not modify -export const PT_VERSION = '2.4.0'; +export const PT_VERSION = '2.5.0'; diff --git a/packages/idempotency/CHANGELOG.md b/packages/idempotency/CHANGELOG.md index 47ec68c2aa..b2a9bbe1ee 100644 --- a/packages/idempotency/CHANGELOG.md +++ b/packages/idempotency/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.5.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.4.0...v2.5.0) (2024-07-15) + +**Note:** Version bump only for package @aws-lambda-powertools/idempotency + + + + + # [2.4.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.3.0...v2.4.0) (2024-07-10) diff --git a/packages/idempotency/package.json b/packages/idempotency/package.json index 1c083d7cfa..cdf519798a 100644 --- a/packages/idempotency/package.json +++ b/packages/idempotency/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/idempotency", - "version": "2.4.0", + "version": "2.5.0", "description": "The idempotency package for the Powertools for AWS Lambda (TypeScript) library. It provides options to make your Lambda functions idempotent and safe to retry.", "author": { "name": "Amazon Web Services", @@ -96,8 +96,8 @@ "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" }, "dependencies": { - "@aws-lambda-powertools/commons": "^2.4.0", - "@aws-lambda-powertools/jmespath": "^2.4.0" + "@aws-lambda-powertools/commons": "^2.5.0", + "@aws-lambda-powertools/jmespath": "^2.5.0" }, "peerDependencies": { "@aws-sdk/client-dynamodb": ">=3.x", @@ -125,8 +125,8 @@ ], "devDependencies": { "@aws-lambda-powertools/testing-utils": "file:../testing", - "@aws-sdk/client-dynamodb": "^3.613.0", - "@aws-sdk/lib-dynamodb": "^3.613.0", + "@aws-sdk/client-dynamodb": "^3.614.0", + "@aws-sdk/lib-dynamodb": "^3.614.0", "aws-sdk-client-mock": "^4.0.1", "aws-sdk-client-mock-jest": "^4.0.1" } diff --git a/packages/jmespath/CHANGELOG.md b/packages/jmespath/CHANGELOG.md index 09bc0f181b..db06615064 100644 --- a/packages/jmespath/CHANGELOG.md +++ b/packages/jmespath/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.5.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.4.0...v2.5.0) (2024-07-15) + +**Note:** Version bump only for package @aws-lambda-powertools/jmespath + + + + + # [2.4.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.3.0...v2.4.0) (2024-07-10) diff --git a/packages/jmespath/package.json b/packages/jmespath/package.json index d37b71620b..a4a9651f4e 100644 --- a/packages/jmespath/package.json +++ b/packages/jmespath/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/jmespath", - "version": "2.4.0", + "version": "2.5.0", "description": "A type safe and modern jmespath module to parse and extract data from JSON documents using JMESPath", "author": { "name": "Amazon Web Services", @@ -71,7 +71,7 @@ "lib" ], "dependencies": { - "@aws-lambda-powertools/commons": "^2.4.0" + "@aws-lambda-powertools/commons": "^2.5.0" }, "repository": { "type": "git", diff --git a/packages/logger/CHANGELOG.md b/packages/logger/CHANGELOG.md index ff8d24fc3a..a7c81c0aef 100644 --- a/packages/logger/CHANGELOG.md +++ b/packages/logger/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.5.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.4.0...v2.5.0) (2024-07-15) + + +### Features + +* **logger:** custom function for unserializable values (JSON replacer) ([#2739](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2739)) ([fbc8688](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fbc86889f88203945a4201c6a6c403b3a257d54f)) + + + + + # [2.4.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.3.0...v2.4.0) (2024-07-10) diff --git a/packages/logger/package.json b/packages/logger/package.json index 4f07819942..e110072cab 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/logger", - "version": "2.4.0", + "version": "2.5.0", "description": "The logging package for the Powertools for AWS Lambda (TypeScript) library", "author": { "name": "Amazon Web Services", @@ -84,7 +84,7 @@ "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" }, "dependencies": { - "@aws-lambda-powertools/commons": "^2.4.0", + "@aws-lambda-powertools/commons": "^2.5.0", "lodash.merge": "^4.6.2" }, "keywords": [ diff --git a/packages/logger/src/Logger.ts b/packages/logger/src/Logger.ts index 6c0c37e740..d97e6c2177 100644 --- a/packages/logger/src/Logger.ts +++ b/packages/logger/src/Logger.ts @@ -24,6 +24,7 @@ import type { LogItemMessage, LoggerInterface, PowertoolsLogData, + CustomJsonReplacerFn, } from './types/Logger.js'; /** @@ -200,6 +201,10 @@ class Logger extends Utility implements LoggerInterface { * We keep this value to be able to reset the log level to the initial value when the sample rate is refreshed. */ #initialLogLevel = 12; + /** + * Replacer function used to serialize the log items. + */ + #jsonReplacerFn?: CustomJsonReplacerFn; /** * Log level used by the current instance of Logger. @@ -309,6 +314,7 @@ class Logger extends Utility implements LoggerInterface { environment: this.powertoolsLogData.environment, persistentLogAttributes: this.persistentLogAttributes, temporaryLogAttributes: this.temporaryLogAttributes, + jsonReplacerFn: this.#jsonReplacerFn, }, options ) @@ -674,6 +680,42 @@ class Logger extends Utility implements LoggerInterface { return new Logger(options); } + /** + * A custom JSON replacer function that is used to serialize the log items. + * + * By default, we already extend the default serialization behavior to handle `BigInt` and `Error` objects, as well as remove circular references. + * When a custom JSON replacer function is passed to the Logger constructor, it will be called **before** our custom rules for each key-value pair in the object being stringified. + * + * This allows you to customize the serialization while still benefiting from the default behavior. + * + * @see {@link ConstructorOptions.jsonReplacerFn} + * + * @param key - The key of the value being stringified. + * @param value - The value being stringified. + */ + protected getJsonReplacer(): (key: string, value: unknown) => void { + const references = new WeakSet(); + + return (key, value) => { + if (this.#jsonReplacerFn) value = this.#jsonReplacerFn?.(key, value); + + if (value instanceof Error) { + value = this.getLogFormatter().formatError(value); + } + if (typeof value === 'bigint') { + return value.toString(); + } + if (typeof value === 'object' && value !== null) { + if (references.has(value)) { + return; + } + references.add(value); + } + + return value; + }; + } + /** * It stores information that is printed in all log items. * @@ -835,40 +877,6 @@ class Logger extends Utility implements LoggerInterface { return this.powertoolsLogData; } - /** - * When the data added in the log item contains object references or BigInt values, - * `JSON.stringify()` can't handle them and instead throws errors: - * `TypeError: cyclic object value` or `TypeError: Do not know how to serialize a BigInt`. - * To mitigate these issues, this method will find and remove all cyclic references and convert BigInt values to strings. - * - * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#exceptions - * @private - */ - private getReplacer(): ( - key: string, - value: LogAttributes | Error | bigint - ) => void { - const references = new WeakSet(); - - return (key, value) => { - let item = value; - if (item instanceof Error) { - item = this.getLogFormatter().formatError(item); - } - if (typeof item === 'bigint') { - return item.toString(); - } - if (typeof item === 'object' && value !== null) { - if (references.has(item)) { - return; - } - references.add(item); - } - - return item; - }; - } - /** * It returns true and type guards the log level if a given log level is valid. * @@ -920,7 +928,7 @@ class Logger extends Utility implements LoggerInterface { this.console[consoleMethod]( JSON.stringify( log.getAttributes(), - this.getReplacer(), + this.getJsonReplacer(), this.logIndentation ) ); @@ -1119,6 +1127,7 @@ class Logger extends Utility implements LoggerInterface { persistentKeys, persistentLogAttributes, // deprecated in favor of persistentKeys environment, + jsonReplacerFn, } = options; if (persistentLogAttributes && persistentKeys) { @@ -1143,6 +1152,7 @@ class Logger extends Utility implements LoggerInterface { this.setLogFormatter(logFormatter); this.setConsole(); this.setLogIndentation(); + this.#jsonReplacerFn = jsonReplacerFn; return this; } diff --git a/packages/logger/src/types/Logger.ts b/packages/logger/src/types/Logger.ts index e662669fe3..51585188d0 100644 --- a/packages/logger/src/types/Logger.ts +++ b/packages/logger/src/types/Logger.ts @@ -28,6 +28,19 @@ type InjectLambdaContextOptions = { resetKeys?: boolean; }; +/** + * A custom JSON replacer function that can be passed to the Logger constructor to extend the default serialization behavior. + * + * By default, we already extend the default serialization behavior to handle `BigInt` and `Error` objects, as well as remove circular references. + * When a custom JSON replacer function is passed to the Logger constructor, it will be called **before** our custom rules for each key-value pair in the object being stringified. + * + * This allows you to customize the serialization while still benefiting from the default behavior. + * + * @param key - The key of the value being stringified. + * @param value - The value being stringified. + */ +type CustomJsonReplacerFn = (key: string, value: unknown) => unknown; + type BaseConstructorOptions = { logLevel?: LogLevel; serviceName?: string; @@ -35,6 +48,15 @@ type BaseConstructorOptions = { logFormatter?: LogFormatterInterface; customConfigService?: ConfigServiceInterface; environment?: Environment; + /** + * A custom JSON replacer function that can be passed to the Logger constructor to extend the default serialization behavior. + * + * By default, we already extend the default serialization behavior to handle `BigInt` and `Error` objects, as well as remove circular references. + * When a custom JSON replacer function is passed to the Logger constructor, it will be called **before** our custom rules for each key-value pair in the object being stringified. + * + * This allows you to customize the serialization while still benefiting from the default behavior. + */ + jsonReplacerFn?: CustomJsonReplacerFn; }; type PersistentKeysOption = { @@ -139,4 +161,5 @@ export type { PowertoolsLogData, ConstructorOptions, InjectLambdaContextOptions, + CustomJsonReplacerFn, }; diff --git a/packages/logger/src/types/index.ts b/packages/logger/src/types/index.ts index e18a8806e0..6d472920b8 100644 --- a/packages/logger/src/types/index.ts +++ b/packages/logger/src/types/index.ts @@ -14,4 +14,5 @@ export type { PowertoolsLogData, ConstructorOptions, InjectLambdaContextOptions, + CustomJsonReplacerFn, } from './Logger.js'; diff --git a/packages/logger/tests/unit/Logger.test.ts b/packages/logger/tests/unit/Logger.test.ts index dd275a9be3..1cb720e9db 100644 --- a/packages/logger/tests/unit/Logger.test.ts +++ b/packages/logger/tests/unit/Logger.test.ts @@ -10,9 +10,10 @@ import { ConfigServiceInterface } from '../../src/types/ConfigServiceInterface.j import { EnvironmentVariablesService } from '../../src/config/EnvironmentVariablesService.js'; import { PowertoolsLogFormatter } from '../../src/formatter/PowertoolsLogFormatter.js'; import { LogLevelThresholds, LogLevel } from '../../src/types/Log.js'; -import type { - LogFunction, - ConstructorOptions, +import { + type LogFunction, + type ConstructorOptions, + type CustomJsonReplacerFn, } from '../../src/types/Logger.js'; import { LogJsonIndent } from '../../src/constants.js'; import type { Context } from 'aws-lambda'; @@ -1190,7 +1191,7 @@ describe('Class: Logger', () => { }); }); - describe('Feature: handle safely unexpected errors', () => { + describe('Feature: custom JSON replacer function', () => { test('when a logged item references itself, the logger ignores the keys that cause a circular reference', () => { // Prepare const logger = new Logger({ @@ -1312,6 +1313,100 @@ describe('Class: Logger', () => { }) ); }); + + it('should correctly serialize custom values using the provided jsonReplacerFn', () => { + // Prepare + const jsonReplacerFn: CustomJsonReplacerFn = ( + _: string, + value: unknown + ) => (value instanceof Set ? [...value] : value); + + const logger = new Logger({ jsonReplacerFn }); + const consoleSpy = jest.spyOn( + logger['console'], + getConsoleMethod(methodOfLogger) + ); + const message = `This is an ${methodOfLogger} log with Set value`; + + const logItem = { value: new Set([1, 2]) }; + + // Act + logger[methodOfLogger](message, logItem); + + // Assess + expect(consoleSpy).toHaveBeenCalledTimes(1); + expect(consoleSpy).toHaveBeenNthCalledWith( + 1, + JSON.stringify({ + level: methodOfLogger.toUpperCase(), + message: message, + sampling_rate: 0, + service: 'hello-world', + timestamp: '2016-06-20T12:08:10.000Z', + xray_trace_id: '1-5759e988-bd862e3fe1be46a994272793', + value: [1, 2], + }) + ); + }); + + it('should serialize using both the existing replacer and the customer-provided one', () => { + // Prepare + const jsonReplacerFn: CustomJsonReplacerFn = ( + _: string, + value: unknown + ) => { + if (value instanceof Set || value instanceof Map) { + return [...value]; + } + + return value; + }; + + const logger = new Logger({ jsonReplacerFn }); + const consoleSpy = jest.spyOn( + logger['console'], + getConsoleMethod(methodOfLogger) + ); + + const message = `This is an ${methodOfLogger} log with Set value`; + const logItem = { value: new Set([1, 2]), number: BigInt(42) }; + + // Act + logger[methodOfLogger](message, logItem); + + // Assess + expect(consoleSpy).toHaveBeenCalledTimes(1); + expect(consoleSpy).toHaveBeenNthCalledWith( + 1, + JSON.stringify({ + level: methodOfLogger.toUpperCase(), + message: message, + sampling_rate: 0, + service: 'hello-world', + timestamp: '2016-06-20T12:08:10.000Z', + xray_trace_id: '1-5759e988-bd862e3fe1be46a994272793', + value: [1, 2], + number: '42', + }) + ); + }); + + it('should pass the JSON customer-provided replacer function to child loggers', () => { + // Prepare + const jsonReplacerFn: CustomJsonReplacerFn = ( + _: string, + value: unknown + ) => (value instanceof Set ? [...value] : value); + const logger = new Logger({ jsonReplacerFn }); + + // Act + const childLogger = logger.createChild(); + + // Assess + expect(() => + childLogger.info('foo', { foo: new Set([1, 2]) }) + ).not.toThrow(); + }); }); } ); diff --git a/packages/metrics/CHANGELOG.md b/packages/metrics/CHANGELOG.md index b9f35b07db..cfe701e79b 100644 --- a/packages/metrics/CHANGELOG.md +++ b/packages/metrics/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.5.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.4.0...v2.5.0) (2024-07-15) + +**Note:** Version bump only for package @aws-lambda-powertools/metrics + + + + + # [2.4.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.3.0...v2.4.0) (2024-07-10) diff --git a/packages/metrics/package.json b/packages/metrics/package.json index 07b57ca4a3..f71576a7dc 100644 --- a/packages/metrics/package.json +++ b/packages/metrics/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/metrics", - "version": "2.4.0", + "version": "2.5.0", "description": "The metrics package for the Powertools for AWS Lambda (TypeScript) library", "author": { "name": "Amazon Web Services", @@ -62,7 +62,7 @@ "main": "./lib/cjs/index.js", "devDependencies": { "@aws-lambda-powertools/testing-utils": "file:../testing", - "@aws-sdk/client-cloudwatch": "^3.613.0", + "@aws-sdk/client-cloudwatch": "^3.614.0", "@types/promise-retry": "^1.1.3", "promise-retry": "^2.0.1" }, @@ -85,7 +85,7 @@ "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" }, "dependencies": { - "@aws-lambda-powertools/commons": "^2.4.0" + "@aws-lambda-powertools/commons": "^2.5.0" }, "keywords": [ "aws", diff --git a/packages/parameters/CHANGELOG.md b/packages/parameters/CHANGELOG.md index a62d8fdb0b..913b6af67f 100644 --- a/packages/parameters/CHANGELOG.md +++ b/packages/parameters/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.5.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.4.0...v2.5.0) (2024-07-15) + +**Note:** Version bump only for package @aws-lambda-powertools/parameters + + + + + # [2.4.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.3.0...v2.4.0) (2024-07-10) diff --git a/packages/parameters/package.json b/packages/parameters/package.json index f95b47b784..d42f9b7823 100644 --- a/packages/parameters/package.json +++ b/packages/parameters/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/parameters", - "version": "2.4.0", + "version": "2.5.0", "description": "The parameters package for the Powertools for AWS Lambda (TypeScript) library", "author": { "name": "Amazon Web Services", @@ -154,17 +154,17 @@ ], "devDependencies": { "@aws-lambda-powertools/testing-utils": "file:../testing", - "@aws-sdk/client-appconfigdata": "^3.613.0", - "@aws-sdk/client-dynamodb": "^3.613.0", - "@aws-sdk/client-secrets-manager": "^3.613.0", - "@aws-sdk/client-ssm": "^3.613.0", - "@aws-sdk/util-dynamodb": "^3.613.0", + "@aws-sdk/client-appconfigdata": "^3.614.0", + "@aws-sdk/client-dynamodb": "^3.614.0", + "@aws-sdk/client-secrets-manager": "^3.614.0", + "@aws-sdk/client-ssm": "^3.614.0", + "@aws-sdk/util-dynamodb": "^3.614.0", "@smithy/util-base64": "^3.0.0", "aws-sdk-client-mock": "^4.0.1", "aws-sdk-client-mock-jest": "^4.0.1" }, "dependencies": { - "@aws-lambda-powertools/commons": "^2.4.0" + "@aws-lambda-powertools/commons": "^2.5.0" }, "peerDependencies": { "@aws-sdk/client-appconfigdata": ">=3.x", diff --git a/packages/parser/CHANGELOG.md b/packages/parser/CHANGELOG.md index 8b404a2292..beeee6da0b 100644 --- a/packages/parser/CHANGELOG.md +++ b/packages/parser/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.5.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.4.0...v2.5.0) (2024-07-15) + + +### Bug Fixes + +* **parser:** include error cause in ParseError ([#2774](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2774)) ([34d0b55](https://github.com/aws-powertools/powertools-lambda-typescript/commit/34d0b5500ca67a6df0703be66031d1aee61a09fa)) + + + + + # [2.4.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.3.0...v2.4.0) (2024-07-10) diff --git a/packages/parser/package.json b/packages/parser/package.json index be67447756..cd0d856527 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/parser", - "version": "2.4.0", + "version": "2.5.0", "description": "The parser package for the Powertools for AWS Lambda (TypeScript) library.", "author": { "name": "Amazon Web Services", diff --git a/packages/parser/src/errors.ts b/packages/parser/src/errors.ts index c5dc0ebd0b..c3068a731d 100644 --- a/packages/parser/src/errors.ts +++ b/packages/parser/src/errors.ts @@ -7,7 +7,7 @@ class ParseError extends Error { const errorMessage = options?.cause ? `${message}. This error was caused by: ${options?.cause.message}.` : message; - super(errorMessage); + super(errorMessage, options); this.name = 'ParseError'; } } diff --git a/packages/parser/tests/unit/envelope.test.ts b/packages/parser/tests/unit/envelope.test.ts index 8d7778bc25..96450ddddc 100644 --- a/packages/parser/tests/unit/envelope.test.ts +++ b/packages/parser/tests/unit/envelope.test.ts @@ -1,4 +1,10 @@ -import { z } from 'zod'; +/** + * Test decorator parser + * + * @group unit/parser + */ + +import { z, ZodError } from 'zod'; import { Envelope } from '../../src/envelopes/envelope.js'; import { ParseError } from '../../src/errors.js'; @@ -74,5 +80,12 @@ describe('envelope: ', () => { Envelope.parse({ name: 123 }, z.object({ name: z.string() })) ).toThrow(); }); + it('includes the ZodError as the cause of the ParseError', () => { + try { + Envelope.parse('{"name": "John"}', z.object({ name: z.number() })); + } catch (error) { + expect((error as Error).cause).toBeInstanceOf(ZodError); + } + }); }); }); diff --git a/packages/testing/CHANGELOG.md b/packages/testing/CHANGELOG.md index 96f5e9d499..42b0fc85dc 100644 --- a/packages/testing/CHANGELOG.md +++ b/packages/testing/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.5.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.4.0...v2.5.0) (2024-07-15) + +**Note:** Version bump only for package @aws-lambda-powertools/testing-utils + + + + + # [2.4.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.3.0...v2.4.0) (2024-07-10) diff --git a/packages/testing/package.json b/packages/testing/package.json index 488a8ec235..6a3d7bff4c 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/testing-utils", - "version": "2.4.0", + "version": "2.5.0", "description": "A package containing utilities to test your serverless workloads", "author": { "name": "Amazon Web Services", @@ -92,7 +92,7 @@ "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/testing#readme", "dependencies": { "@aws-cdk/cli-lib-alpha": "^2.121.1-alpha.0", - "@aws-sdk/client-lambda": "^3.613.0", + "@aws-sdk/client-lambda": "^3.614.0", "@smithy/util-utf8": "^3.0.0", "aws-cdk-lib": "^2.145.0", "esbuild": "^0.23.0" diff --git a/packages/tracer/CHANGELOG.md b/packages/tracer/CHANGELOG.md index fc80bfb9b6..461e23506c 100644 --- a/packages/tracer/CHANGELOG.md +++ b/packages/tracer/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.5.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.4.0...v2.5.0) (2024-07-15) + +**Note:** Version bump only for package @aws-lambda-powertools/tracer + + + + + # [2.4.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.3.0...v2.4.0) (2024-07-10) diff --git a/packages/tracer/package.json b/packages/tracer/package.json index 41bd64de8b..ee80d3740f 100644 --- a/packages/tracer/package.json +++ b/packages/tracer/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/tracer", - "version": "2.4.0", + "version": "2.5.0", "description": "The tracer package for the Powertools for AWS Lambda (TypeScript) library", "author": { "name": "Amazon Web Services", @@ -28,8 +28,8 @@ "license": "MIT-0", "devDependencies": { "@aws-lambda-powertools/testing-utils": "file:../testing", - "@aws-sdk/client-dynamodb": "^3.613.0", - "@aws-sdk/client-xray": "^3.613.0", + "@aws-sdk/client-dynamodb": "^3.614.0", + "@aws-sdk/client-xray": "^3.614.0", "@types/promise-retry": "^1.1.6", "aws-sdk": "^2.1657.0", "promise-retry": "^2.0.1" @@ -88,7 +88,7 @@ "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" }, "dependencies": { - "@aws-lambda-powertools/commons": "^2.4.0", + "@aws-lambda-powertools/commons": "^2.5.0", "aws-xray-sdk-core": "^3.9.0" }, "keywords": [