diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 723b346435..6ebc037cbf 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:0d29e5fdc64f8397cd502223e0c4679f1e60877ca0fd2db4f2e2e0028e4271af +FROM mcr.microsoft.com/vscode/devcontainers/javascript-node@sha256:eac37fbeb0dd1ded8ae31a93f1f3e0defc413715e7541e2ba5a5c10079777f62 # Install fnm to manage Node.js versions RUN curl -fsSL https://fnm.vercel.app/install -o /tmp/install \ diff --git a/.github/scripts/constants.js b/.github/scripts/constants.js index 1a3d2c0d14..5caca61ba6 100644 --- a/.github/scripts/constants.js +++ b/.github/scripts/constants.js @@ -1,41 +1,42 @@ module.exports = Object.freeze({ /** @type {string} */ // Values: https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request - "PR_ACTION": process.env.PR_ACTION?.replace(/"/g, '') || "", + PR_ACTION: process.env.PR_ACTION?.replace(/"/g, '') || '', /** @type {string} */ - "PR_AUTHOR": process.env.PR_AUTHOR?.replace(/"/g, '') || "", + PR_AUTHOR: process.env.PR_AUTHOR?.replace(/"/g, '') || '', /** @type {string} */ - "PR_BODY": process.env.PR_BODY || "", + PR_BODY: process.env.PR_BODY || '', /** @type {string} */ - "PR_TITLE": process.env.PR_TITLE || "", + PR_TITLE: process.env.PR_TITLE || '', /** @type {number} */ - "PR_NUMBER": process.env.PR_NUMBER || 0, + PR_NUMBER: process.env.PR_NUMBER || 0, /** @type {string} */ - "PR_IS_MERGED": process.env.PR_IS_MERGED || "false", + PR_IS_MERGED: process.env.PR_IS_MERGED || 'false', /** @type {string} */ - "LABEL_BLOCK": "do-not-merge", + LABEL_BLOCK: 'do-not-merge', /** @type {string} */ - "LABEL_BLOCK_REASON": "need-issue", + LABEL_BLOCK_REASON: 'need-issue', /** @type {string} */ - "LABEL_PENDING_RELEASE": "pending-release", - + LABEL_PENDING_RELEASE: 'pending-release', + /** @type {string} */ - "LABEL_RELEASED": "completed", + LABEL_RELEASED: 'completed', /** @type {string} */ - "HANDLE_MAINTAINERS_TEAM": "@aws-powertools/lambda-typescript", + HANDLE_MAINTAINERS_TEAM: '@aws-powertools/lambda-typescript', /** @type {string[]} */ - "IGNORE_AUTHORS": ["dependabot[bot]"], + IGNORE_AUTHORS: ['dependabot[bot]'], /** @type {RegExp} */ - "RELATED_ISSUE_REGEX": /\b\*{0,2}[iI]ssue [nN]umber\*{0,2}:\*{0,2}\s*(?closes?|closed|fix|fixes?|fixed|resolves?|resolved)?\s*#(?\d+)\b/ -}); \ No newline at end of file + RELATED_ISSUE_REGEX: + /\b\*{0,2}[iI]ssue [nN]umber\*{0,2}:\*{0,2}\s*(?closes?|closed|fix|fixes?|fixed|resolves?|resolved)?\s*#(?\d+)\b/, +}); diff --git a/.github/scripts/download_pr_artifact.js b/.github/scripts/download_pr_artifact.js index de089a00d2..dc02a88dff 100644 --- a/.github/scripts/download_pr_artifact.js +++ b/.github/scripts/download_pr_artifact.js @@ -1,6 +1,6 @@ -module.exports = async ({github, context, core}) => { - const fs = require('fs'); +const fs = require('node:fs'); +module.exports = async ({ github, context, core }) => { const workflowRunId = process.env.WORKFLOW_ID; core.info(`Listing artifacts for workflow run ${workflowRunId}`); @@ -10,7 +10,9 @@ module.exports = async ({github, context, core}) => { run_id: workflowRunId, }); - const matchArtifact = artifacts.data.artifacts.filter(artifact => artifact.name == "pr")[0]; + const matchArtifact = artifacts.data.artifacts.filter( + (artifact) => artifact.name === 'pr' + )[0]; core.info(`Downloading artifacts for workflow run ${workflowRunId}`); const artifact = await github.rest.actions.downloadArtifact({ @@ -20,7 +22,7 @@ module.exports = async ({github, context, core}) => { archive_format: 'zip', }); - core.info("Saving artifact found", artifact); + core.info('Saving artifact found', artifact); fs.writeFileSync('pr.zip', Buffer.from(artifact.data)); -} \ No newline at end of file +}; diff --git a/.github/scripts/label_pr_based_on_title.js b/.github/scripts/label_pr_based_on_title.js index f3188c9532..45a1932599 100644 --- a/.github/scripts/label_pr_based_on_title.js +++ b/.github/scripts/label_pr_based_on_title.js @@ -30,13 +30,12 @@ module.exports = async ({ github, context, core }) => { }); return; - } else { - core.debug(`'${PR_TITLE}' didn't match '${label}' semantic.`); - miss += 1; } + core.debug(`'${PR_TITLE}' didn't match '${label}' semantic.`); + miss += 1; } } finally { - if (miss == Object.keys(labels).length) { + if (miss === Object.keys(labels).length) { core.notice( `PR ${PR_NUMBER} title '${PR_TITLE}' contain any of the release-related types; skipping...` ); diff --git a/.github/scripts/label_related_issue.js b/.github/scripts/label_related_issue.js index e353e923fe..8b7db0052f 100644 --- a/.github/scripts/label_related_issue.js +++ b/.github/scripts/label_related_issue.js @@ -15,7 +15,7 @@ module.exports = async ({ github, context, core }) => { return core.notice('Author in IGNORE_AUTHORS list; skipping...'); } - if (PR_IS_MERGED == 'false') { + if (PR_IS_MERGED === 'false') { return core.notice('Only merged PRs to avoid spam; skipping'); } diff --git a/.github/scripts/package.json b/.github/scripts/package.json index c9a4422614..5bbefffbab 100644 --- a/.github/scripts/package.json +++ b/.github/scripts/package.json @@ -1,3 +1,3 @@ { "type": "commonjs" -} \ No newline at end of file +} diff --git a/.github/scripts/post_release.js b/.github/scripts/post_release.js index 3af2dccdc3..e2270d6f57 100644 --- a/.github/scripts/post_release.js +++ b/.github/scripts/post_release.js @@ -28,7 +28,7 @@ const fetchIssues = async ({ }); return issues.filter( - (issue) => Object(issue).hasOwnProperty('pull_request') === false + (issue) => Object.hasOwn(Object(issue), 'pull_request') === false ); } catch (error) { core.setFailed(error); @@ -84,7 +84,7 @@ const notifyRelease = async ({ // Remove staged label; keep existing ones const labels = issue.labels - .filter((label) => label.name != LABEL_PENDING_RELEASE) + .filter((label) => label.name !== LABEL_PENDING_RELEASE) .map((label) => label.name); // Update labels including the released one diff --git a/.github/scripts/save_pr_details.js b/.github/scripts/save_pr_details.js index c8954fa474..9c92ff00fc 100644 --- a/.github/scripts/save_pr_details.js +++ b/.github/scripts/save_pr_details.js @@ -1,13 +1,13 @@ -module.exports = async ({context, core}) => { - const fs = require('fs'); - const filename = "pr.txt"; +const fs = require('node:fs'); +module.exports = async ({ context, core }) => { + const filename = 'pr.txt'; try { - fs.writeFileSync(`./${filename}`, JSON.stringify(context.payload)); + fs.writeFileSync(`./${filename}`, JSON.stringify(context.payload)); - return `PR successfully saved ${filename}`; + return `PR successfully saved ${filename}`; } catch (err) { - core.setFailed("Failed to save PR details"); - console.error(err); + core.setFailed('Failed to save PR details'); + console.error(err); } -} \ No newline at end of file +}; diff --git a/.github/workflows/layers_partition_verify.yml b/.github/workflows/layers_partition_verify.yml index f27c676d1a..1c974f387b 100644 --- a/.github/workflows/layers_partition_verify.yml +++ b/.github/workflows/layers_partition_verify.yml @@ -1,6 +1,6 @@ -# Parition Layer Verification +# Partition Layer Verification # --- -# This workflow queries the Parition layer info in production only +# This workflow queries the Partition layer info in production only on: workflow_dispatch: @@ -51,11 +51,11 @@ jobs: runs-on: ubuntu-latest outputs: regions: ${{ format('{0}{1}', steps.regions_china.outputs.regions, steps.regions_govcloud.outputs.regions) }} - parition: ${{ format('{0}{1}', steps.regions_china.outputs.partition, steps.regions_govcloud.outputs.parition) }} + partition: ${{ format('{0}{1}', steps.regions_china.outputs.partition, steps.regions_govcloud.outputs.partition) }} aud: ${{ format('{0}{1}', steps.regions_china.outputs.aud, steps.regions_govcloud.outputs.aud) }} steps: - id: regions_china - name: Parition (China) + name: Partition (China) if: ${{ inputs.partition == 'China' }} run: | echo regions='["cn-north-1"]'>> "$GITHUB_OUTPUT" @@ -129,7 +129,7 @@ jobs: - name: Verify Layer run: | export layer_output='AWSLambdaPowertoolsTypeScriptV2-${{matrix.region}}.json' - aws --region ${{ matrix.region}} lambda get-layer-version-by-arn --arn "arn:${{ needs.setup.outputs.parition }}:lambda:${{ matrix.region}}:${{ secrets[format('AWS_ACCOUNT_{0}', steps.transform.outputs.CONVERTED_REGION)] }}:layer:AWSLambdaPowertoolsTypeScriptV2:${{ steps.partition_version.outputs.partition_version }}" > $layer_output + aws --region ${{ matrix.region}} lambda get-layer-version-by-arn --arn "arn:${{ needs.setup.outputs.partition }}:lambda:${{ matrix.region}}:${{ secrets[format('AWS_ACCOUNT_{0}', steps.transform.outputs.CONVERTED_REGION)] }}:layer:AWSLambdaPowertoolsTypeScriptV2:${{ steps.partition_version.outputs.partition_version }}" > $layer_output REMOTE_SHA=$(jq -r '.Content.CodeSha256' $layer_output) LOCAL_SHA=$(jq -r '.Content.CodeSha256' AWSLambdaPowertoolsTypeScriptV2.json) test "$REMOTE_SHA" == "$LOCAL_SHA" && echo "SHA OK: ${LOCAL_SHA}" || exit 1 diff --git a/.github/workflows/layers_partitions.yml b/.github/workflows/layers_partitions.yml index 2fe2c46bf9..f9433495e5 100644 --- a/.github/workflows/layers_partitions.yml +++ b/.github/workflows/layers_partitions.yml @@ -48,11 +48,11 @@ jobs: runs-on: ubuntu-latest outputs: regions: ${{ format('{0}{1}', steps.regions_china.outputs.regions, steps.regions_govcloud.outputs.regions) }} - parition: ${{ format('{0}{1}', steps.regions_china.outputs.partition, steps.regions_govcloud.outputs.parition) }} + partition: ${{ format('{0}{1}', steps.regions_china.outputs.partition, steps.regions_govcloud.outputs.partition) }} aud: ${{ format('{0}{1}', steps.regions_china.outputs.aud, steps.regions_govcloud.outputs.aud) }} steps: - id: regions_china - name: Parition (China) + name: Partition (China) if: ${{ inputs.partition == 'China' }} run: | echo regions='["cn-north-1"]'>> "$GITHUB_OUTPUT" @@ -158,7 +158,7 @@ jobs: LAYER_VERSION: ${{ steps.create-layer.outputs.LAYER_VERSION }} run: | export layer_output='AWSLambdaPowertoolsTypeScriptV2-${{matrix.region}}.json' - aws --region ${{ matrix.region}} lambda get-layer-version-by-arn --arn 'arn:${{ needs.setup.outputs.parition }}:lambda:${{ matrix.region}}:${{ secrets[format('AWS_ACCOUNT_{0}', steps.transform.outputs.CONVERTED_REGION)] }}:layer:AWSLambdaPowertoolsTypeScriptV2:${{ env.LAYER_VERSION }}' > $layer_output + aws --region ${{ matrix.region}} lambda get-layer-version-by-arn --arn 'arn:${{ needs.setup.outputs.partition }}:lambda:${{ matrix.region}}:${{ secrets[format('AWS_ACCOUNT_{0}', steps.transform.outputs.CONVERTED_REGION)] }}:layer:AWSLambdaPowertoolsTypeScriptV2:${{ env.LAYER_VERSION }}' > $layer_output REMOTE_SHA=$(jq -r '.Content.CodeSha256' $layer_output) LOCAL_SHA=$(jq -r '.Content.CodeSha256' AWSLambdaPowertoolsTypeScriptV2.json) test "$REMOTE_SHA" == "$LOCAL_SHA" && echo "SHA OK: ${LOCAL_SHA}" || exit 1 diff --git a/.gitignore b/.gitignore index f2108821c4..038e7f616d 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,7 @@ tmp # TS build files tsconfig.tsbuildinfo .tsbuildinfo + +# LLMs +.claude +.amazonq \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index d2bfddad97..a6505acc9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,29 @@ # Change Log -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.24.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.23.0...v2.24.0) (2025-07-15) + +### Improvements + +- **metrics** optimize `addDimensions` method to avoid O(n²) complexity ([#4156](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4156)) ([3982b4a](https://github.com/aws-powertools/powertools-lambda-typescript/commit/3982b4a6b25e82fa1b5001c73d238cf62eda1137)) +- **tracer** replace class-based env access with functional helpers ([#4146](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4146)) ([51d9b98](https://github.com/aws-powertools/powertools-lambda-typescript/commit/51d9b988488aee01de337669dbfc68d0ab7af9dd)) + +### Bug Fixes + +- **metrics** addDimensions() documentation and tests ([#3964](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3964)) ([a801636](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a80163614e4a0ef7106beaa5cf91161d50a09fea)) +- **tracer** skip tracing CONNECT requests ([#4148](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4148)) ([a147c3b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a147c3b46ff975ed3e94722e21e79e65ae2bbc78)) +- **parser** remove nullable from md5OfMessageAttributes in SqsRecordSchema ([#4165](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4165)) ([d6cbde0](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d6cbde0fe977bb1ce011a80f31369e5f7161df08)) + +### Maintenance + +- **batch** exclude deprecated code from coverage ([#4152](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4152)) ([30bbf5a](https://github.com/aws-powertools/powertools-lambda-typescript/commit/30bbf5af3ae78fdb4b837ad9b4322a9e90f15f57)) +- **parser** remove deprecated parser type ([#4154](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4154)) ([a59db36](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a59db36e7816d8587b91acf282582204ccc78845)) + +### Features + +- **parser** support Standard Schema and upgrade to Zod v4 ([#4164](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4164)) ([67549f6](https://github.com/aws-powertools/powertools-lambda-typescript/commit/67549f61cd77e23a66e3338576efc96839833329)) -# [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) +# [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) ### Bug Fixes @@ -12,25 +31,18 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline * **logger:** reset keys on error in middleware ([#4122](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4122)) ([e310c50](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e310c50fe12463a5e3759ee1ecd61e0467fbc6a4)) * **logger:** set `hourCycle` to h23 when tz is not UTC ([#4102](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4102)) ([54b0863](https://github.com/aws-powertools/powertools-lambda-typescript/commit/54b08636474f11fefcb295cd04511d3f46be4382)) - ### Features * **event-handler:** add single resolver functionality for AppSync GraphQL API ([#3999](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3999)) ([b91383f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/b91383f6ec82cff9196ccc4e0c9e88d285eb567d)) * **event-handler:** expose event & context as object ([#4113](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4113)) ([7e74c9e](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7e74c9e356d97372c4f1ee5ca83d16dfefea42f4)) * **event-handler:** support `onQuery` and `onMutation` handlers ([#4111](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4111)) ([263db2d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/263db2d74e558adb9b088174a5500de6c29488d0)) - - - - # [2.22.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.21.0...v2.22.0) (2025-06-20) - ### Bug Fixes * **event-handler:** fix decorated scope in appsync events ([#3974](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3974)) ([e539719](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e5397199133da265f593c5feed0178c0ebe1e7c2)) - ### Features * **kafka:** add logic to handle delimited protobufs ([#4071](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4071)) ([db9ec0c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/db9ec0c4af668c002460f8dc9171c7d4bfc155b2)) @@ -38,84 +50,52 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline * **kafka:** new kafka utility ([#4058](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4058)) ([006f27b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/006f27bd9909e2da548cff9dbdcc1944ba76dbd1)) * **layers:** add parameterised layer deployment and verification ([#4033](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4033)) ([2214ba7](https://github.com/aws-powertools/powertools-lambda-typescript/commit/2214ba74301da31908b2fe717ec893a570efd6f7)) - - - - # [2.21.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.20.0...v2.21.0) (2025-06-03) - ### Bug Fixes * **parameters:** preserve original stack trace on transform failures … ([#3982](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3982)) ([583e3ae](https://github.com/aws-powertools/powertools-lambda-typescript/commit/583e3ae9a5095a1185b2bd9dff31e6f3f50ff577)) - ### Features * **commons:** environment variable helpers ([#3945](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3945)) ([7cfcd85](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7cfcd8517a0578e248ead1e2e0261fe7ba405e14)) * **event-handler:** add Amazon Bedrock Agents Functions Resolver ([#3957](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3957)) ([720ddcb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/720ddcb974bd044fccd54d4cf5e46a1576f487a7)) - - - - # [2.20.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.1...v2.20.0) (2025-05-20) - ### Features * **idempotency:** support for Valkey- and Redis OSS-compatible cache ([#3896](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3896)) ([3352b90](https://github.com/aws-powertools/powertools-lambda-typescript/commit/3352b909cf06f435fe876adba8f2c9f6e5ba11b0)) * **parser:** add schemas for AppSync Events ([#3907](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3907)) ([2554800](https://github.com/aws-powertools/powertools-lambda-typescript/commit/2554800b6905811e1fb9ca254196a67138e765bc)) * **parser:** add support for tumbling windows in Kinesis and DynamoDB events ([#3931](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3931)) ([0205a87](https://github.com/aws-powertools/powertools-lambda-typescript/commit/0205a87f6f4c8d597e27684b224c3b3a37887987)) - - - - ## [2.19.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.0...v2.19.1) (2025-05-05) - ### Bug Fixes * **event-handler:** ignore return type from onSubscribe handler ([#3888](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3888)) ([02b3cda](https://github.com/aws-powertools/powertools-lambda-typescript/commit/02b3cda9fd10c4e757dee321749d484c9ac542ee)) - - - - # [2.19.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.18.0...v2.19.0) (2025-04-24) - ### Bug Fixes * **logger:** warn customers when the ALC log level is less verbose than log buffer ([#3834](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3834)) ([04f64ce](https://github.com/aws-powertools/powertools-lambda-typescript/commit/04f64ce23716037d6684fd4f6859bb8df8743911)) * **logger:** warn only once on ALC log level mismatch ([#3816](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3816)) ([1e330b3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1e330b3f96f0ae9f18dd09e2856658b22dbfd930)) * **parser:** Make Kafka key property optional ([#3855](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3855)) ([68fa1eb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/68fa1eb66abf4ccdb2b4f3789862e2380b8340aa)) - ### Features * **event-handler:** AppSync Events resolver ([#3858](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3858)) ([01f8a68](https://github.com/aws-powertools/powertools-lambda-typescript/commit/01f8a687a0c033cdc5d55c50bc7e6d0566f485cb)) - - - - # [2.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.17.0...v2.18.0) (2025-04-07) - ### Features * **parser:** add Cognito pre-signup trigger schema ([#3729](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3729)) ([4116f65](https://github.com/aws-powertools/powertools-lambda-typescript/commit/4116f65dda099a38b780ce26e005ccea90abdd7b)) * **parser:** add schema support for API Gateway WebSocket events ([#3807](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3807)) ([663d328](https://github.com/aws-powertools/powertools-lambda-typescript/commit/663d32866cdbf1225260fbf1372e126c42a962e1)) - - - - # [2.17.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.16.0...v2.17.0) (2025-03-25) - ### Bug Fixes * **ci:** Remove --compatible-architectures from workflow ([#3752](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3752)) ([dafa496](https://github.com/aws-powertools/powertools-lambda-typescript/commit/dafa49602ea45227384b63bff4d3f39d69e982d8)) @@ -123,20 +103,14 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline * **logger:** correctly refresh sample rate ([#3722](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3722)) ([2692ca4](https://github.com/aws-powertools/powertools-lambda-typescript/commit/2692ca4d1b15763936659b05e1830d998a4d2020)) * **parser:** ddb base schema + other exports ([#3741](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3741)) ([51a3410](https://github.com/aws-powertools/powertools-lambda-typescript/commit/51a3410be8502496362d5ed13a64fe55691604ba)) - ### Features * **commons:** make utilities aware of provisioned concurrency ([#3724](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3724)) ([c28e45e](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c28e45ecba315bac8fbc7744dbe21a3461747d44)) * **logger:** set correlation ID in logs ([#3726](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3726)) ([aa74fc8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/aa74fc8548ccb8cb313ffd1742184c66e8d6c22c)) * **metrics:** allow setting functionName via constructor parameter and environment variable ([#3696](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3696)) ([3176fa0](https://github.com/aws-powertools/powertools-lambda-typescript/commit/3176fa08e1886d5c86e7b327134cc988b82cf8d8)) - - - - # [2.16.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.15.0...v2.16.0) (2025-03-07) - ### Bug Fixes * **batch:** clear message group references after request ([#3674](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3674)) ([270115e](https://github.com/aws-powertools/powertools-lambda-typescript/commit/270115e288a552bdb32083f04f23530725a86243)) @@ -144,7 +118,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline * **parser:** envelope sub-path exports regression ([#3667](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3667)) ([beac102](https://github.com/aws-powertools/powertools-lambda-typescript/commit/beac1021107f4c117a561829b3b9ab1f404a4e14)) * **parser:** update S3 Event Schema ([#3671](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3671)) ([c14c7b3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c14c7b3e7e1366379cd5062c91e09a62ddf7a42a)) - ### Features * **logger:** Enable log buffering feature ([#3641](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3641)) ([8203016](https://github.com/aws-powertools/powertools-lambda-typescript/commit/82030167abe3797392b919db2b4a006ae47e0ef7)) @@ -155,20 +128,14 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline * **validation:** Add Middy.js middleware for JSON Schema validation ([#3694](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3694)) ([443202b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/443202bad2672ff26cc8237f417b8bf14bbd02d9)) * **validation:** implement validate function ([#3662](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3662)) ([f55127b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/f55127b7f894b5c673e739da06cbaabe12d0d1ca)) - - - - # [2.15.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.14.0...v2.15.0) (2025-02-25) - ### Bug Fixes * **ci:** Add permissions to jobs ([#3586](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3586)) ([90c93ea](https://github.com/aws-powertools/powertools-lambda-typescript/commit/90c93eac603b9a496aac1aee8e010fbc983aabdc)) * **ci:** fix path for latest SSM param ([#3585](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3585)) ([e34952d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e34952dacf0b55219f57aaf32a5422bd2595d7a9)) * **logger:** handle illegal `null`/`undefined` as extra args ([#3614](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3614)) ([6f99073](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6f99073cf61d2e49b01d8f7dcc9b4edf36166ad9)) - ### Features * **idempotency:** add support for custom key prefix ([#3532](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3532)) ([7be7a83](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7be7a83a07e86927221ba34ec1dbae7e73cf6e32)) @@ -178,32 +145,21 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline * **logger:** refresh sample rate calculation per invocation ([#3644](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3644)) ([1d66a2a](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1d66a2a0d0af36d6c8aa86b0c559f8489fe9ef77)) * **parser:** provide sub-path exports ([#3598](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3598)) ([09f0aaa](https://github.com/aws-powertools/powertools-lambda-typescript/commit/09f0aaaf92233d326acd9e5fbd21a5c241cdbfe7)) - - - - # [2.14.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.1...v2.14.0) (2025-02-10) - ### Bug Fixes * **logger:** prevent overwriting standard keys ([#3553](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3553)) ([f0bdf3c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/f0bdf3cdb1fe25ff7baea352215f41501ca6c5c2)) * **parser:** parse sqs record body field as JSON and S3Schema in S3SqsEventNoificationRecordSchema ([#3529](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3529)) ([bcd4b9f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/bcd4b9f7864543b25c57143c2903ed68c16d3987)) - ### Features * **ci:** Add advanced automation ([#3438](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3438)) ([4e9ff07](https://github.com/aws-powertools/powertools-lambda-typescript/commit/4e9ff0717223f8305eda684608ce1435489b9749)) * **parser:** add TransferFamilySchema for AWS Transfer Family events ([#3575](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3575)) ([2c27c5e](https://github.com/aws-powertools/powertools-lambda-typescript/commit/2c27c5e717ff6a8f9b54148dbde3ab7dc83b5baf)) * **parser:** simplify `ParseResult` and `parse` inference ([#3568](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3568)) ([95762ad](https://github.com/aws-powertools/powertools-lambda-typescript/commit/95762ade4b51fc40860302dd77a97819dac44a98)) - - - - ## [2.13.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.0...v2.13.1) (2025-01-28) - ### Bug Fixes * **parser:** allow Kinesis envelopes to handle non-JSON strings ([#3531](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3531)) ([d18e03d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d18e03d06e4fa4970aa24c4c041793d58a7cde79)) @@ -221,34 +177,22 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline * **parser:** set min length of 1 to s3 event lists ([#3524](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3524)) ([937be64](https://github.com/aws-powertools/powertools-lambda-typescript/commit/937be641b3ee82748fc1bdec0291abe5ef0e7a97)) * **parser:** SNS Envelope handles non-JSON ([#3506](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3506)) ([4d7f05f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/4d7f05f7415cc52fae42de643ceaffcf764c2472)) - - - - # [2.13.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.12.0...v2.13.0) (2025-01-14) - ### Bug Fixes * **tracer:** forward `X-Amzn-Trace-Id` header when instrumenting fetch ([#3470](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3470)) ([4eb3e2d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/4eb3e2d4e0ccbfb0f99c215c61d2b9263ee10870)) - ### Features * **parser:** `DynamoDBMarshalled` helper to parse DynamoDB data structure ([#3442](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3442)) ([e154e58](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e154e58986187d8210d18f6ca79d8b710d87d600)) - - - - # [2.12.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.11.0...v2.12.0) (2024-12-17) - ### Bug Fixes * **parser:** make SNS subject field nullish ([#3415](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3415)) ([0da9cea](https://github.com/aws-powertools/powertools-lambda-typescript/commit/0da9ceaeccd088af09963690959871a2ca165729)) - ### Features * **logger:** change selected method visibility to protected ([#3377](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3377)) ([93a19a5](https://github.com/aws-powertools/powertools-lambda-typescript/commit/93a19a5181b6875d57a589e17c620b7a4631c085)) @@ -257,13 +201,8 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline * **parser:** Add appsync resolver event Zod schemas ([#3301](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3301)) ([318f34b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/318f34b40331df7665939f92370797feb7b22dd0)) * **parser:** add schema for DynamoDB - Kinesis Stream event ([#3328](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3328)) ([a8dfa74](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a8dfa74bff22dcde273f11295c1defcc904e98d3)) - - - - # [2.11.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.10.0...v2.11.0) (2024-11-20) - ### Bug Fixes * **metrics:** skip empty string dimension values ([#3319](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3319)) ([924d49d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/924d49dcac8cc999782db51e61d8e854b752cd5c)) @@ -271,113 +210,73 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline * **parser:** event type literal for selfManagedKafka ([#3325](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3325)) ([5350afe](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5350afed92d02b7b8d47f387705f70c59deeeb65)) * **parser:** fix cause errors nested structure ([#3250](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3250)) ([1ff97cb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1ff97cb758b2e44a76ce108d8e54c9335088abba)) - ### Features * **batch:** Async Processing of Records for for SQS Fifo ([#3160](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3160)) ([e73b575](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e73b575b784b7a59ca8cde02d4ca51ec97789d19)) * **metrics:** ability to set custom timestamp with `setTimestamp` for metrics ([#3310](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3310)) ([0fb94c3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/0fb94c38cbead6333ff4a17354c81ce73fe51afd)) * **metrics:** add ability to pass custom logger ([#3057](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3057)) ([a531b90](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a531b90031826970673eb8bfad78dee6edd0a359)) - - - - # [2.10.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.9.0...v2.10.0) (2024-10-22) - ### Features * **logger:** include enumerable properties in formatted errors ([#3195](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3195)) ([4b80d9f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/4b80d9ff77a638d2290411764a1b9dc2dc9d8cbd)) - - - - # [2.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.8.0...v2.9.0) (2024-10-07) - ### Features * **batch:** sequential async processing of records for `BatchProcessor` ([#3109](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3109)) ([e31279a](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e31279af90446050a7974fbe25c34758f64915f9)) * **idempotency:** ability to specify JMESPath custom functions ([#3150](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3150)) ([869b6fc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/869b6fced659ad820ffe79a0b905022061570974)) * **idempotency:** manipulate idempotent response via response hook ([#3071](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3071)) ([f7c1769](https://github.com/aws-powertools/powertools-lambda-typescript/commit/f7c176901a36698f591d897c2abde54cf30c9ea9)) - - - - # [2.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.7.0...v2.8.0) (2024-09-16) - ### Bug Fixes * **idempotency:** include cause in idempotency persistence layer error ([#2916](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2916)) ([47f0161](https://github.com/aws-powertools/powertools-lambda-typescript/commit/47f016188e5d36611c10466a4755d1228a6e14e1)) * **tracer:** include request pathname in trace data ([#2955](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2955)) ([6864e53](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6864e53d73f49b15fd88ab35a4f6d22263d0c9fd)) - ### Features * **logger:** introduce log key reordering functionality ([#2736](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2736)) ([9677258](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9677258f3c872400fca89b625760b7a45f923212)) * **logger:** introduce loglevel trace [#1589](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1589) ([#2902](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2902)) ([650252c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/650252c6863d95d53ed182888200db314a199b09)) * **parameters:** adds setParameter function to store SSM parameters ([#3020](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3020)) ([8fd5479](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8fd5479c6da2d60921df92fe7e5e72a0e03d5745)) - - - - # [2.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.6.0...v2.7.0) (2024-08-08) - ### Bug Fixes * **logger:** invalid time zone environment variables leads to error ([#2865](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2865)) ([d55465f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d55465f937390f4511e837033db0dab582cf4e14)) - ### Features * **metrics:** add unit None for CloudWatch EMF Metrics ([#2904](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2904)) ([fa27cba](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fa27cba5ffdb9d123b25d206c189ad17eeb8b44b)) * **parser:** add helper function to handle JSON stringified fields ([#2901](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2901)) ([806b884](https://github.com/aws-powertools/powertools-lambda-typescript/commit/806b884f51684fa4654d357fafdf8ebeda4de01b)) - - - - # [2.6.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.5.0...v2.6.0) (2024-07-25) - ### Features * **logger:** introduce loglevel constant ([#2787](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2787)) ([e75f593](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e75f5933602342a45fbeaa7a459452387e43c492)) * **parser:** allow parser set event type of handler with middy ([#2786](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2786)) ([9973f09](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9973f09da260305ce8fd18780a9a474f3404ca1a)) - - - - # [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) - ### Bug Fixes * **idempotency:** check error identity via names ([#2747](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2747)) ([55c3878](https://github.com/aws-powertools/powertools-lambda-typescript/commit/55c387816baee98829441526a0de001044d67344)) - ### Features * **batch:** add option to not throw `FullBatchFailureError` when the entire batch fails ([#2711](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2711)) ([74198ef](https://github.com/aws-powertools/powertools-lambda-typescript/commit/74198ef1ec1d11267813d2f4b6dd5f4c5692f7d4)) @@ -386,74 +285,47 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline * **logger:** time zone aware timestamp in Logger ([#2710](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2710)) ([9fe4c75](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9fe4c754960a07aad008ff4ada63cf68aa9ba89a)) * **maintenance:** drop support for Node.js 16.x ([#2717](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2717)) ([e4eee73](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e4eee73770ffccead9212a566335ec256a31af7d)) - - - - # [2.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.2.0...v2.3.0) (2024-06-27) - ### Bug Fixes * **idempotency:** preserve scope of decorated class ([#2693](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2693)) ([22ec1f0](https://github.com/aws-powertools/powertools-lambda-typescript/commit/22ec1f005ae334577a2ee878a454527ad16a56d9)) * **logger:** reset log level after sampling refresh ([#2673](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2673)) ([618faec](https://github.com/aws-powertools/powertools-lambda-typescript/commit/618faeca7a2fff1d8570bd46832da65129196220)) - ### Features * **logger:** add `clearState()` method ([#2408](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2408)) ([f55e2d0](https://github.com/aws-powertools/powertools-lambda-typescript/commit/f55e2d019f8693ca79753eb56ba951b0fd33101b)) * **parser:** enhance API Gateway schemas ([#2665](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2665)) ([b3bc1f0](https://github.com/aws-powertools/powertools-lambda-typescript/commit/b3bc1f0a173233fdcf50f2573949b17a312813b4)) - - - - # [2.2.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.1...v2.2.0) (2024-06-13) - ### Bug Fixes * **idempotency:** deep sort payload during hashing ([#2570](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2570)) ([6765f35](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6765f35e98e2d8267d2672c12ba387a9af62a4b5)) * **parser:** handle API Gateway Test UI sourceIp ([#2531](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2531)) ([cd6c512](https://github.com/aws-powertools/powertools-lambda-typescript/commit/cd6c512c3a3b799debdafabac1558c8d40c8dc93)) - ### Features * **batch:** add option to continue processing other group IDs on failure in `SqsFifoPartialProcessor` ([#2590](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2590)) ([a615c24](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a615c24108c4653be4c62d8488092fc08a4a3cc3)) - - - - ## [2.1.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.0...v2.1.1) (2024-05-14) - ### Bug Fixes * **parser:** lambda function url cognitoIdentity and principalOrgId nullable ([#2430](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2430)) ([3c3e393](https://github.com/aws-powertools/powertools-lambda-typescript/commit/3c3e393df47d28a6bddb2a9d01cd6fefea3db15e)) * **parser:** set APIGatewayProxyEventSchema body and query string keys to be nullable ([#2465](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2465)) ([7ce5b3c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7ce5b3cff88b6eadeda1041b4eb076af2ebd848d)) * **parser:** set etag optional for delete object notifications ([#2429](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2429)) ([100e223](https://github.com/aws-powertools/powertools-lambda-typescript/commit/100e2238b45e224a369cc7a349f78cafda3f94b7)) - - - - # [2.1.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.0.4...v2.1.0) (2024-04-17) - ### Bug Fixes * **jmespath:** refactor custom function introspection to work with minification ([#2384](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2384)) ([21ecc4f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/21ecc4f736ccba85c276889163860a98613174cc)) - ### Features * **idempotency:** add custom JMESPath functions ([#2364](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2364)) ([9721e7c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9721e7c01fc010944eb477bdbc24b9e06a5c4571)) - - - - ## 2.0.4 (2024-04-10) ### Bug Fixes @@ -480,39 +352,22 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ## 2.0.2 (2024-03-05) - ### Bug Fixes * **tracer:** modify aws-xray-sdk-core import for js ([#2164](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2164)) ([29630b5](https://github.com/aws-powertools/powertools-lambda-typescript/commit/29630b5b68915ccca1324f3e7ce3e95b85a616be)) - - - - ## 2.0.1 (2024-03-04) **Note:** Version bump only for package aws-lambda-powertools-typescript - - - - # [2.0.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.18.1...v2.0.0) (2024-03-04) **Note:** Version bump only for package aws-lambda-powertools-typescript - - - - ## 1.18.1 (2024-02-20) **Note:** Version bump only for package aws-lambda-powertools-typescript - - - - ## [1.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.17.0...v1.18.0) (2024-01-26) ### Features @@ -527,20 +382,20 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **logger:** add support for `AWS_LAMBDA_LOG_LEVEL` and `POWERTOOLS_LOG_LEVEL` ([#1795](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1795)) ([e69abfb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e69abfb5f1b5d3bf993ac2fe66fae85a85af9905)) +* **logger:** add support for `AWS_LAMBDA_LOG_LEVEL` and `POWERTOOLS_LOG_LEVEL` ([#1795](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1795)) ([e69abfb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e69abfb5f1b5d3bf993ac2fe66fae85a85af9905)) # [1.15.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.14.2...v1.15.0) (2023-11-14) ### Features -- **maintenance:** add support for nodejs20.x runtime ([#1790](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1790)) ([6b9b1bc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b9b1bcb9baf4b3d8e0e5ec6709594aca09bb033)) -- **metrics:** log directly to stdout ([#1786](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1786)) ([75dc5b1](https://github.com/aws-powertools/powertools-lambda-typescript/commit/75dc5b1e16944416a287628c50ec4a0cf82c3023)) +* **maintenance:** add support for nodejs20.x runtime ([#1790](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1790)) ([6b9b1bc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b9b1bcb9baf4b3d8e0e5ec6709594aca09bb033)) +* **metrics:** log directly to stdout ([#1786](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1786)) ([75dc5b1](https://github.com/aws-powertools/powertools-lambda-typescript/commit/75dc5b1e16944416a287628c50ec4a0cf82c3023)) ## [1.14.2](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.14.1...v1.14.2) (2023-11-03) ### Bug Fixes -- **metrics:** deduplicate dimensions when serialising ([#1780](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1780)) ([8181b48](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8181b481ba96fa7a91959ff2d40bdedfe80b451b)) +* **metrics:** deduplicate dimensions when serialising ([#1780](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1780)) ([8181b48](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8181b481ba96fa7a91959ff2d40bdedfe80b451b)) ## [1.14.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.14.0...v1.14.1) (2023-10-31) @@ -550,27 +405,27 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **idempotency:** add idempotency decorator ([#1723](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1723)) ([d138673](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d138673a33ff31f40b225dc046b2ff8258d0a97d)) -- **layers:** add `arm64` to integration test matrix ([#1720](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1720)) ([61ad5ac](https://github.com/aws-powertools/powertools-lambda-typescript/commit/61ad5ac3bcf7742684aeec28553ec294696f3301)) -- **tracer:** add try/catch logic to decorator and middleware close ([#1716](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1716)) ([be16b59](https://github.com/aws-powertools/powertools-lambda-typescript/commit/be16b599b8023f95572234fb222ea70aea5b3f17)) +* **idempotency:** add idempotency decorator ([#1723](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1723)) ([d138673](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d138673a33ff31f40b225dc046b2ff8258d0a97d)) +* **layers:** add `arm64` to integration test matrix ([#1720](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1720)) ([61ad5ac](https://github.com/aws-powertools/powertools-lambda-typescript/commit/61ad5ac3bcf7742684aeec28553ec294696f3301)) +* **tracer:** add try/catch logic to decorator and middleware close ([#1716](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1716)) ([be16b59](https://github.com/aws-powertools/powertools-lambda-typescript/commit/be16b599b8023f95572234fb222ea70aea5b3f17)) ## [1.13.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.13.0...v1.13.1) (2023-09-21) ### Bug Fixes -- **maintenance:** remove upper peer dependency Middy ([#1705](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1705)) ([df21ec8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/df21ec8761b1be511c13c28fedd41bf0e2851061)) +* **maintenance:** remove upper peer dependency Middy ([#1705](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1705)) ([df21ec8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/df21ec8761b1be511c13c28fedd41bf0e2851061)) # [1.13.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.12.1...v1.13.0) (2023-09-18) ### Bug Fixes -- **batch:** Update processor to pass only context to handler ([#1637](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1637)) ([6fa09b2](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6fa09b2638bf247fd595db51ac3d1aa1252d3379)) -- **docs:** update versions.json jq query ([4e6f662](https://github.com/aws-powertools/powertools-lambda-typescript/commit/4e6f662b244a941a911c1ed5973bef11d7610093)) -- **parameters:** return type when options without transform is used ([#1671](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1671)) ([b2fe341](https://github.com/aws-powertools/powertools-lambda-typescript/commit/b2fe34150a0d896f1755ca30cbe89175cdb66ff2)) +* **batch:** Update processor to pass only context to handler ([#1637](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1637)) ([6fa09b2](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6fa09b2638bf247fd595db51ac3d1aa1252d3379)) +* **docs:** update versions.json jq query ([4e6f662](https://github.com/aws-powertools/powertools-lambda-typescript/commit/4e6f662b244a941a911c1ed5973bef11d7610093)) +* **parameters:** return type when options without transform is used ([#1671](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1671)) ([b2fe341](https://github.com/aws-powertools/powertools-lambda-typescript/commit/b2fe34150a0d896f1755ca30cbe89175cdb66ff2)) ### Features -- **batch:** rename AsyncBatchProcessor to default BatchProcessor ([#1683](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1683)) ([e253755](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e253755d09f50a75cde805168845f52d8b85af28)) +* **batch:** rename AsyncBatchProcessor to default BatchProcessor ([#1683](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1683)) ([e253755](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e253755d09f50a75cde805168845f52d8b85af28)) ## [1.12.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.12.0...v1.12.1) (2023-07-25) @@ -580,163 +435,163 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **batch:** add batch processing utility ([#1625](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1625)) ([c4e6b19](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c4e6b192c3658cbcc3f458a579a0752153e3c201)), closes [#1588](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1588) [#1591](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1591) [#1593](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1593) [#1592](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1592) [#1594](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1594) -- **logger:** add cause to formatted error ([#1617](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1617)) ([6a14595](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6a145959249db6eeb89fdfe3ed4c6e30ab155f9c)) +* **batch:** add batch processing utility ([#1625](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1625)) ([c4e6b19](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c4e6b192c3658cbcc3f458a579a0752153e3c201)), closes [#1588](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1588) [#1591](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1591) [#1593](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1593) [#1592](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1592) [#1594](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1594) +* **logger:** add cause to formatted error ([#1617](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1617)) ([6a14595](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6a145959249db6eeb89fdfe3ed4c6e30ab155f9c)) ## [1.11.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.11.0...v1.11.1) (2023-07-11) ### Bug Fixes -- **docs:** fix alias in versions.json ([#1576](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1576)) ([7198cbc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7198cbca28962e07486b90ecb4f265cafe28bf73)) -- **idempotency:** types, docs, and `makeIdempotent` function wrapper ([#1579](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1579)) ([bba1c01](https://github.com/aws-powertools/powertools-lambda-typescript/commit/bba1c01a0b3f08e962568e1d0eb44d486829657b)) +* **docs:** fix alias in versions.json ([#1576](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1576)) ([7198cbc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7198cbca28962e07486b90ecb4f265cafe28bf73)) +* **idempotency:** types, docs, and `makeIdempotent` function wrapper ([#1579](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1579)) ([bba1c01](https://github.com/aws-powertools/powertools-lambda-typescript/commit/bba1c01a0b3f08e962568e1d0eb44d486829657b)) # [1.11.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.10.0...v1.11.0) (2023-06-29) ### Features -- **idempotency:** preserve original error when wrapping into `IdempotencyPersistenceLayerError` ([#1552](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1552)) ([866837d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/866837daf34563698709612351c45769e02daf16)) +* **idempotency:** preserve original error when wrapping into `IdempotencyPersistenceLayerError` ([#1552](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1552)) ([866837d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/866837daf34563698709612351c45769e02daf16)) # [1.10.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.9.0...v1.10.0) (2023-06-23) ### Bug Fixes -- **ci:** change how versions and aliases are inserted into versions.json ([#1549](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1549)) ([9e1d19a](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9e1d19a9bc89d31bef851a615860c3b01bd9d77f)) -- **idempotency:** pass lambda context remaining time to save inprogress ([#1540](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1540)) ([d47c3ec](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d47c3ec64d926d49f3799f361d54a11627d16cc1)) -- **idempotency:** record validation not using hash ([#1502](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1502)) ([f475bd0](https://github.com/aws-powertools/powertools-lambda-typescript/commit/f475bd097b64f009c329c023a2dd7c7e9371270a)) -- **idempotency:** skip persistence for optional idempotency key ([#1507](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1507)) ([b9fcef6](https://github.com/aws-powertools/powertools-lambda-typescript/commit/b9fcef66eb4bd9a7ad1eeac5f5db2cdbccc70c71)) -- **metrics:** flush metrics when data points array reaches max size ([#1548](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1548)) ([24c247c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/24c247c39c0ac29774ac3fcf09902916f3936e1e)) -- missing quotes ([67f5f14](https://github.com/aws-powertools/powertools-lambda-typescript/commit/67f5f14e612a56d94923aa3b33df7d2e6b46cc06)) -- missing quotes ([349e612](https://github.com/aws-powertools/powertools-lambda-typescript/commit/349e612e1a46646ef05b11e0478094bf7f74a5cd)) -- update reference in workflow ([#1518](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1518)) ([9c75f9a](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9c75f9a8a0b2fc4b24bbd37fdb00620d06903283)) +* **ci:** change how versions and aliases are inserted into versions.json ([#1549](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1549)) ([9e1d19a](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9e1d19a9bc89d31bef851a615860c3b01bd9d77f)) +* **idempotency:** pass lambda context remaining time to save inprogress ([#1540](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1540)) ([d47c3ec](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d47c3ec64d926d49f3799f361d54a11627d16cc1)) +* **idempotency:** record validation not using hash ([#1502](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1502)) ([f475bd0](https://github.com/aws-powertools/powertools-lambda-typescript/commit/f475bd097b64f009c329c023a2dd7c7e9371270a)) +* **idempotency:** skip persistence for optional idempotency key ([#1507](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1507)) ([b9fcef6](https://github.com/aws-powertools/powertools-lambda-typescript/commit/b9fcef66eb4bd9a7ad1eeac5f5db2cdbccc70c71)) +* **metrics:** flush metrics when data points array reaches max size ([#1548](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1548)) ([24c247c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/24c247c39c0ac29774ac3fcf09902916f3936e1e)) +* missing quotes ([67f5f14](https://github.com/aws-powertools/powertools-lambda-typescript/commit/67f5f14e612a56d94923aa3b33df7d2e6b46cc06)) +* missing quotes ([349e612](https://github.com/aws-powertools/powertools-lambda-typescript/commit/349e612e1a46646ef05b11e0478094bf7f74a5cd)) +* update reference in workflow ([#1518](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1518)) ([9c75f9a](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9c75f9a8a0b2fc4b24bbd37fdb00620d06903283)) ### Features -- **logger:** clear state when other middlewares return early ([#1544](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1544)) ([d5f3f13](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d5f3f13ccd7aae1bbc59431741e8aaf042dd2a73)) -- **metrics:** publish metrics when other middlewares return early ([#1546](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1546)) ([58b0877](https://github.com/aws-powertools/powertools-lambda-typescript/commit/58b087713814f1c5f56a86aa815d04372e98ebd0)) -- **parameters:** review types and exports ([#1528](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1528)) ([6f96711](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6f96711625e212898b1c227c651beba7e709c9d1)) -- **tracer:** close & restore segments when other middlewares return ([#1545](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1545)) ([74ddb09](https://github.com/aws-powertools/powertools-lambda-typescript/commit/74ddb09a3107d9f45f34ccda1e691a9504578c2d)) +* **logger:** clear state when other middlewares return early ([#1544](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1544)) ([d5f3f13](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d5f3f13ccd7aae1bbc59431741e8aaf042dd2a73)) +* **metrics:** publish metrics when other middlewares return early ([#1546](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1546)) ([58b0877](https://github.com/aws-powertools/powertools-lambda-typescript/commit/58b087713814f1c5f56a86aa815d04372e98ebd0)) +* **parameters:** review types and exports ([#1528](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1528)) ([6f96711](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6f96711625e212898b1c227c651beba7e709c9d1)) +* **tracer:** close & restore segments when other middlewares return ([#1545](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1545)) ([74ddb09](https://github.com/aws-powertools/powertools-lambda-typescript/commit/74ddb09a3107d9f45f34ccda1e691a9504578c2d)) # [1.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.8.0...v1.9.0) (2023-06-09) ### Features -- **commons:** add `cleanupPowertools` function ([#1473](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1473)) ([5bd0166](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5bd01665699ae2f026d845477e648d325f20a855)) -- **idempotency:** `makeHandlerIdempotent` middy middleware ([#1474](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1474)) ([a558f10](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a558f100209978a075e98a8c8a3763c4145c8a94)) -- **idempotency:** add package exports ([#1483](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1483)) ([faa9307](https://github.com/aws-powertools/powertools-lambda-typescript/commit/faa9307a4bd42e3acdab5dc68ddd57ab5c61964c)) -- **idempotency:** idempotency middleware & types exports ([#1487](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1487)) ([d947db9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d947db9d2f99b7c4da0a3618e967db9e77728805)) -- **idempotency:** implement IdempotencyHandler ([#1416](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1416)) ([f2ebf08](https://github.com/aws-powertools/powertools-lambda-typescript/commit/f2ebf08607f5bb41a96f2b713973f4635d9d6f9d)) -- **logger:** enhance log level handling ([#1476](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1476)) ([0021536](https://github.com/aws-powertools/powertools-lambda-typescript/commit/0021536e35ba7046226155055f9ab6b5f988f71f)) -- **parameters:** add adaptive types to SecretsProvider ([#1411](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1411)) ([5c6d527](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5c6d527b0ad983e893ba07f8a334b4085b6ae6a7)) -- **tracer:** add isTraceSampled method ([#1435](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1435)) ([194bbd3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/194bbd366b726a477523225f446add054c20566e)) +* **commons:** add `cleanupPowertools` function ([#1473](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1473)) ([5bd0166](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5bd01665699ae2f026d845477e648d325f20a855)) +* **idempotency:** `makeHandlerIdempotent` middy middleware ([#1474](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1474)) ([a558f10](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a558f100209978a075e98a8c8a3763c4145c8a94)) +* **idempotency:** add package exports ([#1483](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1483)) ([faa9307](https://github.com/aws-powertools/powertools-lambda-typescript/commit/faa9307a4bd42e3acdab5dc68ddd57ab5c61964c)) +* **idempotency:** idempotency middleware & types exports ([#1487](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1487)) ([d947db9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d947db9d2f99b7c4da0a3618e967db9e77728805)) +* **idempotency:** implement IdempotencyHandler ([#1416](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1416)) ([f2ebf08](https://github.com/aws-powertools/powertools-lambda-typescript/commit/f2ebf08607f5bb41a96f2b713973f4635d9d6f9d)) +* **logger:** enhance log level handling ([#1476](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1476)) ([0021536](https://github.com/aws-powertools/powertools-lambda-typescript/commit/0021536e35ba7046226155055f9ab6b5f988f71f)) +* **parameters:** add adaptive types to SecretsProvider ([#1411](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1411)) ([5c6d527](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5c6d527b0ad983e893ba07f8a334b4085b6ae6a7)) +* **tracer:** add isTraceSampled method ([#1435](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1435)) ([194bbd3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/194bbd366b726a477523225f446add054c20566e)) # [1.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.7.0...v1.8.0) (2023-04-07) ### Bug Fixes -- **parameters:** type import path in AppConfigProvider ([#1388](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1388)) ([40a1a24](https://github.com/aws-powertools/powertools-lambda-typescript/commit/40a1a24de50ee086f76ab9c78d5fc03e5e7945cf)) +* **parameters:** type import path in AppConfigProvider ([#1388](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1388)) ([40a1a24](https://github.com/aws-powertools/powertools-lambda-typescript/commit/40a1a24de50ee086f76ab9c78d5fc03e5e7945cf)) ### Features -- **idempotency:** add local cache to `BasePersistenceLayer` ([#1396](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1396)) ([2013ff2](https://github.com/aws-powertools/powertools-lambda-typescript/commit/2013ff250afa3f1a26a7610694fe881b232b976f)) -- **idempotency:** BasePersistenceLayer, DynamoDBPersistenceLayer and configs ([#1376](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1376)) ([f05cba8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/f05cba8802551f160d630d3ef2b7e741f0de9158)) -- **logger:** add `CRITICAL` log level ([#1399](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1399)) ([a248ff0](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a248ff0a584bac5a97fe300f3addbb9c3a50b555)) -- **metrics:** log warning on empty metrics ([#1397](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1397)) ([31ae936](https://github.com/aws-powertools/powertools-lambda-typescript/commit/31ae936831177f58edff43ce3850ed13c964fc87)) -- **parameters:** ability to set `maxAge` and `decrypt` via environment variables ([#1384](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1384)) ([dcf6620](https://github.com/aws-powertools/powertools-lambda-typescript/commit/dcf6620f55004b69186cd69b0c42b1cdd9fd1ce4)) -- **parameters:** add `clearCaches` function ([#1382](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1382)) ([ec49023](https://github.com/aws-powertools/powertools-lambda-typescript/commit/ec49023c44c3873ba5396a45ee9b2a8ee031e84b)) -- **parameters:** stronger types for SSM getParameter ([#1387](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1387)) ([9d53942](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9d53942fdd272213cf39c7fa87ffa78513dff37d)) +* **idempotency:** add local cache to `BasePersistenceLayer` ([#1396](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1396)) ([2013ff2](https://github.com/aws-powertools/powertools-lambda-typescript/commit/2013ff250afa3f1a26a7610694fe881b232b976f)) +* **idempotency:** BasePersistenceLayer, DynamoDBPersistenceLayer and configs ([#1376](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1376)) ([f05cba8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/f05cba8802551f160d630d3ef2b7e741f0de9158)) +* **logger:** add `CRITICAL` log level ([#1399](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1399)) ([a248ff0](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a248ff0a584bac5a97fe300f3addbb9c3a50b555)) +* **metrics:** log warning on empty metrics ([#1397](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1397)) ([31ae936](https://github.com/aws-powertools/powertools-lambda-typescript/commit/31ae936831177f58edff43ce3850ed13c964fc87)) +* **parameters:** ability to set `maxAge` and `decrypt` via environment variables ([#1384](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1384)) ([dcf6620](https://github.com/aws-powertools/powertools-lambda-typescript/commit/dcf6620f55004b69186cd69b0c42b1cdd9fd1ce4)) +* **parameters:** add `clearCaches` function ([#1382](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1382)) ([ec49023](https://github.com/aws-powertools/powertools-lambda-typescript/commit/ec49023c44c3873ba5396a45ee9b2a8ee031e84b)) +* **parameters:** stronger types for SSM getParameter ([#1387](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1387)) ([9d53942](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9d53942fdd272213cf39c7fa87ffa78513dff37d)) # [1.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.6.0...v1.7.0) (2023-03-20) ### Bug Fixes -- **docs:** typo in layer arn ([bc5f7c9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/bc5f7c99e02396223e726962432fc3856a68a29d)) +* **docs:** typo in layer arn ([bc5f7c9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/bc5f7c99e02396223e726962432fc3856a68a29d)) ### Features -- **logger:** add silent log level to suppress the emission of all logs ([#1347](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1347)) ([c82939e](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c82939ebdb82ae596cbad07be397794ee4b69fe5)) -- **metrics:** support high resolution metrics ([#1369](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1369)) ([79a321b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/79a321b199ef51a024dc25b83673baf2eb03de69)) -- **parameters:** AppConfigProvider to return the last valid value when the API returns empty value on subsequent calls ([#1365](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1365)) ([97339d9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/97339d9336ec67568e9e7fd079b3cfe006da1bba)) +* **logger:** add silent log level to suppress the emission of all logs ([#1347](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1347)) ([c82939e](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c82939ebdb82ae596cbad07be397794ee4b69fe5)) +* **metrics:** support high resolution metrics ([#1369](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1369)) ([79a321b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/79a321b199ef51a024dc25b83673baf2eb03de69)) +* **parameters:** AppConfigProvider to return the last valid value when the API returns empty value on subsequent calls ([#1365](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1365)) ([97339d9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/97339d9336ec67568e9e7fd079b3cfe006da1bba)) # [1.6.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.5.1...v1.6.0) (2023-03-02) ### Bug Fixes -- **docs:** logger bringYourOwnFormatter snippet [#1253](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1253) ([#1254](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1254)) ([fdbba32](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fdbba32d8b3545730d242ac4fd1ef2d83cdbccce)) -- hardcoded cdk version in `publish_layer.yaml` ([#1232](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1232)) ([63a3909](https://github.com/aws-powertools/powertools-lambda-typescript/commit/63a3909063637ca2306a718a10e35e54881f570e)) -- **logger:** createChild not passing all parent's attributes ([#1267](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1267)) ([84ab4b9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/84ab4b911d17d687bdbe60ded31f1e2b6860feb3)) -- **logger:** middleware stores initial persistent attributes correctly ([#1329](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1329)) ([6b32304](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b3230489895dc1abdfc6ad56daeeb555fda529f)) -- **parameters:** handle base64/binaries in transformer ([#1326](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1326)) ([bb50c04](https://github.com/aws-powertools/powertools-lambda-typescript/commit/bb50c04f5b2e6a144295b453577a7ea1a15ac011)) -- **parameters:** Tokenize attribute names in `DynamoDBProvider` ([#1239](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1239)) ([f3e5ed7](https://github.com/aws-powertools/powertools-lambda-typescript/commit/f3e5ed70c7e5baa3f3aa15428e8d6cb56b096f26)) +* **docs:** logger bringYourOwnFormatter snippet [#1253](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1253) ([#1254](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1254)) ([fdbba32](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fdbba32d8b3545730d242ac4fd1ef2d83cdbccce)) +* hardcoded cdk version in `publish_layer.yaml` ([#1232](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1232)) ([63a3909](https://github.com/aws-powertools/powertools-lambda-typescript/commit/63a3909063637ca2306a718a10e35e54881f570e)) +* **logger:** createChild not passing all parent's attributes ([#1267](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1267)) ([84ab4b9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/84ab4b911d17d687bdbe60ded31f1e2b6860feb3)) +* **logger:** middleware stores initial persistent attributes correctly ([#1329](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1329)) ([6b32304](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b3230489895dc1abdfc6ad56daeeb555fda529f)) +* **parameters:** handle base64/binaries in transformer ([#1326](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1326)) ([bb50c04](https://github.com/aws-powertools/powertools-lambda-typescript/commit/bb50c04f5b2e6a144295b453577a7ea1a15ac011)) +* **parameters:** Tokenize attribute names in `DynamoDBProvider` ([#1239](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1239)) ([f3e5ed7](https://github.com/aws-powertools/powertools-lambda-typescript/commit/f3e5ed70c7e5baa3f3aa15428e8d6cb56b096f26)) ### Features -- **idempotency:** Add function wrapper and decorator ([#1262](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1262)) ([eacb1d9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/eacb1d9f59a82ad34234f51198ed215c41a64b41)) -- **layers:** add new regions ([#1322](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1322)) ([618613b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/618613b9a69166553dd9ef8d5b92f89e1cdf79d0)) -- **logger:** make loglevel types stricter ([#1313](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1313)) ([5af51d3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5af51d319dee68d7a7ba832721580d7a6e655249)) -- **parameters:** add support for custom AWS SDK v3 clients for providers ([#1260](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1260)) ([3a8cfa0](https://github.com/aws-powertools/powertools-lambda-typescript/commit/3a8cfa0d6e5aaa5c2c36d97d7835dbf5287b7110)) +* **idempotency:** Add function wrapper and decorator ([#1262](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1262)) ([eacb1d9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/eacb1d9f59a82ad34234f51198ed215c41a64b41)) +* **layers:** add new regions ([#1322](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1322)) ([618613b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/618613b9a69166553dd9ef8d5b92f89e1cdf79d0)) +* **logger:** make loglevel types stricter ([#1313](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1313)) ([5af51d3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5af51d319dee68d7a7ba832721580d7a6e655249)) +* **parameters:** add support for custom AWS SDK v3 clients for providers ([#1260](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1260)) ([3a8cfa0](https://github.com/aws-powertools/powertools-lambda-typescript/commit/3a8cfa0d6e5aaa5c2c36d97d7835dbf5287b7110)) ## [1.5.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.5.0...v1.5.1) (2023-01-13) ### Bug Fixes -- **logger:** logger throws TypeError when log item has BigInt value ([#1201](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1201)) ([a09e4df](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a09e4dfbb2cef062c1178de3e3dbc2583aef7a91)) -- **parameters:** types in BaseProvider + added getMultiple alias to SecretsProvider ([#1214](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1214)) ([32bd7e8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/32bd7e8694fa74a63993eded236af8d84c2dc752)) +* **logger:** logger throws TypeError when log item has BigInt value ([#1201](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1201)) ([a09e4df](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a09e4dfbb2cef062c1178de3e3dbc2583aef7a91)) +* **parameters:** types in BaseProvider + added getMultiple alias to SecretsProvider ([#1214](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1214)) ([32bd7e8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/32bd7e8694fa74a63993eded236af8d84c2dc752)) ### Features -- **parameters:** AppConfigProvider ([#1200](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1200)) ([fecedb9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fecedb9e8446a008dca2927ba7aec16d54b34685)) -- **parameters:** DynamoDBProvider support ([#1202](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1202)) ([db94850](https://github.com/aws-powertools/powertools-lambda-typescript/commit/db94850b536dc92fcd11ce2a5f68412bed9c1feb)) -- **parameters:** SecretsProvider support ([#1206](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1206)) ([02516b7](https://github.com/aws-powertools/powertools-lambda-typescript/commit/02516b7315c3c6df7bed51768381313e7942b215)) -- **parameters:** SSMProvider support ([#1187](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1187)) ([2e4bb76](https://github.com/aws-powertools/powertools-lambda-typescript/commit/2e4bb76773222ecbe44ec22633445e06199fc8b1)) +* **parameters:** AppConfigProvider ([#1200](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1200)) ([fecedb9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fecedb9e8446a008dca2927ba7aec16d54b34685)) +* **parameters:** DynamoDBProvider support ([#1202](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1202)) ([db94850](https://github.com/aws-powertools/powertools-lambda-typescript/commit/db94850b536dc92fcd11ce2a5f68412bed9c1feb)) +* **parameters:** SecretsProvider support ([#1206](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1206)) ([02516b7](https://github.com/aws-powertools/powertools-lambda-typescript/commit/02516b7315c3c6df7bed51768381313e7942b215)) +* **parameters:** SSMProvider support ([#1187](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1187)) ([2e4bb76](https://github.com/aws-powertools/powertools-lambda-typescript/commit/2e4bb76773222ecbe44ec22633445e06199fc8b1)) # [1.5.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.4.1...v1.5.0) (2022-11-25) ### Bug Fixes -- **logger:** merge child logger options correctly ([#1178](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1178)) ([cb91374](https://github.com/aws-powertools/powertools-lambda-typescript/commit/cb9137436cc3a10d6c869506ddd07e35963ba8b2)) +* **logger:** merge child logger options correctly ([#1178](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1178)) ([cb91374](https://github.com/aws-powertools/powertools-lambda-typescript/commit/cb9137436cc3a10d6c869506ddd07e35963ba8b2)) ### Features -- **idempotency:** Add persistence layer and DynamoDB implementation ([#1110](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1110)) ([0a6676a](https://github.com/aws-powertools/powertools-lambda-typescript/commit/0a6676ac24abdadaaff2d95fc8d75d3a7137a00b)) -- **logger:** disable logs while testing with `jest --silent` in dev env ([#1165](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1165)) ([6f0c307](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6f0c30728f31d60433b3afb6983c64110c28d27e)) -- **logger:** pretty printing logs in local and non-prod environment ([#1141](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1141)) ([8d52660](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8d52660eb6b8324e284421c2484c45d9a0839346)) -- **parameters:** added `BaseProvider` class ([#1168](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1168)) ([d717a26](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d717a26bba086be4c01f1458422662f8bfba09a9)) +* **idempotency:** Add persistence layer and DynamoDB implementation ([#1110](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1110)) ([0a6676a](https://github.com/aws-powertools/powertools-lambda-typescript/commit/0a6676ac24abdadaaff2d95fc8d75d3a7137a00b)) +* **logger:** disable logs while testing with `jest --silent` in dev env ([#1165](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1165)) ([6f0c307](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6f0c30728f31d60433b3afb6983c64110c28d27e)) +* **logger:** pretty printing logs in local and non-prod environment ([#1141](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1141)) ([8d52660](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8d52660eb6b8324e284421c2484c45d9a0839346)) +* **parameters:** added `BaseProvider` class ([#1168](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1168)) ([d717a26](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d717a26bba086be4c01f1458422662f8bfba09a9)) ## [1.4.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.4.0...v1.4.1) (2022-11-09) ### Bug Fixes -- **metrics:** store service name in defaultDimensions to avoid clearing it ([#1146](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1146)) ([a979202](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a979202ae0563f8ce00dee98bbf15d0bcfcfd3cc)) +* **metrics:** store service name in defaultDimensions to avoid clearing it ([#1146](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1146)) ([a979202](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a979202ae0563f8ce00dee98bbf15d0bcfcfd3cc)) # [1.4.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.3.0...v1.4.0) (2022-10-27) ### Bug Fixes -- **metrics:** metadata and dimensions not cleared on publish ([#1129](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1129)) ([b209c30](https://github.com/aws-powertools/powertools-lambda-typescript/commit/b209c30df92da07875f204f7f211294feea729db)) +* **metrics:** metadata and dimensions not cleared on publish ([#1129](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1129)) ([b209c30](https://github.com/aws-powertools/powertools-lambda-typescript/commit/b209c30df92da07875f204f7f211294feea729db)) ### Features -- **all:** moved EnvService to commons + exposed getXrayTraceId in tracer ([#1123](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1123)) ([c8e3c15](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c8e3c15b64142ebe6f43835a5917ecba26293a32)) +* **all:** moved EnvService to commons + exposed getXrayTraceId in tracer ([#1123](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1123)) ([c8e3c15](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c8e3c15b64142ebe6f43835a5917ecba26293a32)) # [1.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.2.1...v1.3.0) (2022-10-17) ### Bug Fixes -- **all:** update version command to use lint-fix ([#1119](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1119)) ([6f14fb3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6f14fb3229882b1dd0c20d18c87a542993432da9)) -- captureColdStartMetric and throwOnEmptyMetrics when set to false was interpreted as true ([#1090](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1090)) ([127aad4](https://github.com/aws-powertools/powertools-lambda-typescript/commit/127aad4698412d72368c093812dd4034839119ca)) -- captureMethod correctly detect method name when used with external decorators ([#1109](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1109)) ([a574406](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a574406134b65c17f56dfb3d3130aa237ece4160)) -- **logger:** wait for decorated method return before clearing out state ([#1087](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1087)) ([133ed3c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/133ed3c31ce1d99eb8f427f54721896781438ef7)) -- ts-node version for layer-publisher ([#1112](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1112)) ([ee243de](https://github.com/aws-powertools/powertools-lambda-typescript/commit/ee243dea0b9268ed793df19f0b04e680f68e41a6)) +* **all:** update version command to use lint-fix ([#1119](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1119)) ([6f14fb3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6f14fb3229882b1dd0c20d18c87a542993432da9)) +* captureColdStartMetric and throwOnEmptyMetrics when set to false was interpreted as true ([#1090](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1090)) ([127aad4](https://github.com/aws-powertools/powertools-lambda-typescript/commit/127aad4698412d72368c093812dd4034839119ca)) +* captureMethod correctly detect method name when used with external decorators ([#1109](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1109)) ([a574406](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a574406134b65c17f56dfb3d3130aa237ece4160)) +* **logger:** wait for decorated method return before clearing out state ([#1087](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1087)) ([133ed3c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/133ed3c31ce1d99eb8f427f54721896781438ef7)) +* ts-node version for layer-publisher ([#1112](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1112)) ([ee243de](https://github.com/aws-powertools/powertools-lambda-typescript/commit/ee243dea0b9268ed793df19f0b04e680f68e41a6)) ### Features -- **idempotency:** create initial class structure for function idempotency ([#1086](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1086)) ([06fbaae](https://github.com/aws-powertools/powertools-lambda-typescript/commit/06fbaae4db3825557aa84d40372a53422e42840d)) -- publish lib as Lambda Layer ([#1095](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1095)) ([83f6efb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/83f6efba1db32ba2dc8fff026e258b5de66783e0)) -- **tracer:** specify subsegment name when capturing class method ([#1092](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1092)) ([d4174eb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d4174eb7a894215e2d37f306016429de3bde8029)) +* **idempotency:** create initial class structure for function idempotency ([#1086](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1086)) ([06fbaae](https://github.com/aws-powertools/powertools-lambda-typescript/commit/06fbaae4db3825557aa84d40372a53422e42840d)) +* publish lib as Lambda Layer ([#1095](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1095)) ([83f6efb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/83f6efba1db32ba2dc8fff026e258b5de66783e0)) +* **tracer:** specify subsegment name when capturing class method ([#1092](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1092)) ([d4174eb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d4174eb7a894215e2d37f306016429de3bde8029)) ### Reverts -- Revert "chore(release): v1.3.0 [skip ci]" ([237b99f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/237b99f9f6eff5e6e26d779603cf13cd4422c156)) +* Revert "chore(release): v1.3.0 [skip ci]" ([237b99f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/237b99f9f6eff5e6e26d779603cf13cd4422c156)) ## [1.2.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.2.0...v1.2.1) (2022-08-25) @@ -746,32 +601,32 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- **docs:** docs published with incorrect version number + api docs missing after release ([#1066](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1066)) ([8b8b25c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8b8b25c97d84f7a518a463e2a30406c31e44e587)) +* **docs:** docs published with incorrect version number + api docs missing after release ([#1066](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1066)) ([8b8b25c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8b8b25c97d84f7a518a463e2a30406c31e44e587)) ### Features -- **metrics:** increase maximum dimensions to 29 ([#1072](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1072)) ([7b9a027](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7b9a0278ccf801a521cab3f74372a4748231fd11)) -- **tracer:** allow disabling result capture for decorators and middleware ([#1065](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1065)) ([c3b9a37](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c3b9a37b6d5885f1750da4f0b226a18734ff0c29)) +* **metrics:** increase maximum dimensions to 29 ([#1072](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1072)) ([7b9a027](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7b9a0278ccf801a521cab3f74372a4748231fd11)) +* **tracer:** allow disabling result capture for decorators and middleware ([#1065](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1065)) ([c3b9a37](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c3b9a37b6d5885f1750da4f0b226a18734ff0c29)) ## [1.1.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.1.0...v1.1.1) (2022-08-18) ### Bug Fixes -- **logger:** decorated class methods cannot access `this` ([#1060](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1060)) ([73990bb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/73990bbcbbd9d5a6d6f55f553e4fd8f038654fa9)) -- **tracer:** decorated class methods cannot access `this` ([#1055](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1055)) ([107fa04](https://github.com/aws-powertools/powertools-lambda-typescript/commit/107fa04148ec86c8a0c0a29b5b2d35a62fe2b4e6)) -- workflow concurrency + leftover needs ([#1054](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1054)) ([9ce180a](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9ce180a3b70a86af5e6cc94f51ecf4a0b6a7a96e)) +* **logger:** decorated class methods cannot access `this` ([#1060](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1060)) ([73990bb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/73990bbcbbd9d5a6d6f55f553e4fd8f038654fa9)) +* **tracer:** decorated class methods cannot access `this` ([#1055](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1055)) ([107fa04](https://github.com/aws-powertools/powertools-lambda-typescript/commit/107fa04148ec86c8a0c0a29b5b2d35a62fe2b4e6)) +* workflow concurrency + leftover needs ([#1054](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1054)) ([9ce180a](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9ce180a3b70a86af5e6cc94f51ecf4a0b6a7a96e)) # [1.1.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.0.2...v1.1.0) (2022-08-12) ### Bug Fixes -- **layers:** release process + remove duplicate code ([#1052](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1052)) ([f653c06](https://github.com/aws-powertools/powertools-lambda-typescript/commit/f653c065bd5586785e482d61d2738549d8ac9fd9)) -- **logger:** fix clearstate bug when lambda handler throws ([#1045](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1045)) ([5ebd1cf](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5ebd1cf44a2a3b6d99923e5bb942af3327325241)) -- wrong scope in captureMethod ([#1026](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1026)) ([1a06fed](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1a06fed74db02741c58bc05d8d5fce2e688d7879)) +* **layers:** release process + remove duplicate code ([#1052](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1052)) ([f653c06](https://github.com/aws-powertools/powertools-lambda-typescript/commit/f653c065bd5586785e482d61d2738549d8ac9fd9)) +* **logger:** fix clearstate bug when lambda handler throws ([#1045](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1045)) ([5ebd1cf](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5ebd1cf44a2a3b6d99923e5bb942af3327325241)) +* wrong scope in captureMethod ([#1026](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1026)) ([1a06fed](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1a06fed74db02741c58bc05d8d5fce2e688d7879)) ### Features -- **build:** publish lib as a Lambda Layer ([#884](https://github.com/aws-powertools/powertools-lambda-typescript/issues/884)) ([c3a20c6](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c3a20c61380a6b6944807f5abf12c9cafb254325)), closes [#1031](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1031) +* **build:** publish lib as a Lambda Layer ([#884](https://github.com/aws-powertools/powertools-lambda-typescript/issues/884)) ([c3a20c6](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c3a20c61380a6b6944807f5abf12c9cafb254325)), closes [#1031](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1031) ## [1.0.2](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.0.1...v1.0.2) (2022-07-19) @@ -785,23 +640,23 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Reverts -- Revert "build: bump lerna (#1014)" (#1018) ([623e12d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/623e12de4c6c1dbc93d285e7d03426bff0802b38)), closes [#1014](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1014) [#1018](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1018) +* Revert "build: bump lerna (#1014)" (#1018) ([623e12d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/623e12de4c6c1dbc93d285e7d03426bff0802b38)), closes [#1014](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1014) [#1018](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1018) # [0.12.0-rc.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.11.1-rc.0...v0.12.0-rc.0) (2022-07-14) ### Bug Fixes -- **logger:** POWERTOOLS_LOGGER_LOG_EVENT precedence is respected ([#1015](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1015)) ([1cbb4db](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1cbb4db4daf776e12f7dc2b383ac7fa561b7bada)) -- **tracer:** capture method throws errors correctly ([#1016](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1016)) ([fb85238](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fb8523868e8d5e31c00a017ae1102ed31a0a4245)) +* **logger:** POWERTOOLS_LOGGER_LOG_EVENT precedence is respected ([#1015](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1015)) ([1cbb4db](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1cbb4db4daf776e12f7dc2b383ac7fa561b7bada)) +* **tracer:** capture method throws errors correctly ([#1016](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1016)) ([fb85238](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fb8523868e8d5e31c00a017ae1102ed31a0a4245)) ### Features -- **tracer:** auto disable when running inside amplify mock ([#1010](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1010)) ([024d628](https://github.com/aws-powertools/powertools-lambda-typescript/commit/024d6286f9b9273becce825b5c6ca0db87d4c63a)) +* **tracer:** auto disable when running inside amplify mock ([#1010](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1010)) ([024d628](https://github.com/aws-powertools/powertools-lambda-typescript/commit/024d6286f9b9273becce825b5c6ca0db87d4c63a)) ### Reverts -- Revert "chore(release): v0.12.0-rc.0 [skip ci]" ([9397f1d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9397f1d3624eb0bfbeb5e4c2702ae51e558a5b4a)) -- Revert "chore(release): v0.12.0-rc.0 [skip ci]" (#1017) ([51c18da](https://github.com/aws-powertools/powertools-lambda-typescript/commit/51c18da20db434f8b12f320e5074e3e0a146046e)), closes [#1017](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1017) +* Revert "chore(release): v0.12.0-rc.0 [skip ci]" ([9397f1d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9397f1d3624eb0bfbeb5e4c2702ae51e558a5b4a)) +* Revert "chore(release): v0.12.0-rc.0 [skip ci]" (#1017) ([51c18da](https://github.com/aws-powertools/powertools-lambda-typescript/commit/51c18da20db434f8b12f320e5074e3e0a146046e)), closes [#1017](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1017) ## [0.11.1-rc.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.11.0...v0.11.1-rc.0) (2022-06-24) @@ -811,49 +666,49 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **logger:** add clear state functionality ([#902](https://github.com/aws-powertools/powertools-lambda-typescript/issues/902)) ([fa1dacb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fa1dacb001503a0a607e0951499119a1a9c61545)) +* **logger:** add clear state functionality ([#902](https://github.com/aws-powertools/powertools-lambda-typescript/issues/902)) ([fa1dacb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fa1dacb001503a0a607e0951499119a1a9c61545)) # [0.10.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.9.1...v0.10.0) (2022-06-02) ### Bug Fixes -- **commons:** rename tests subfolder to samples to avoid being deleted by tools such as node-prune ([#882](https://github.com/aws-powertools/powertools-lambda-typescript/issues/882)) ([74ef816](https://github.com/aws-powertools/powertools-lambda-typescript/commit/74ef816830eca897d59881b1d260a146a2c9a47c)) +* **commons:** rename tests subfolder to samples to avoid being deleted by tools such as node-prune ([#882](https://github.com/aws-powertools/powertools-lambda-typescript/issues/882)) ([74ef816](https://github.com/aws-powertools/powertools-lambda-typescript/commit/74ef816830eca897d59881b1d260a146a2c9a47c)) ### Features -- **all:** nodejs16x support ([#877](https://github.com/aws-powertools/powertools-lambda-typescript/issues/877)) ([d2b13c9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d2b13c945adb1a74b7c5f76d45f28a6979ce6429)) -- **logger:** add removeKeys functionality ([#901](https://github.com/aws-powertools/powertools-lambda-typescript/issues/901)) ([a0f72c2](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a0f72c275270db33d382bff357f6054f552197e6)) +* **all:** nodejs16x support ([#877](https://github.com/aws-powertools/powertools-lambda-typescript/issues/877)) ([d2b13c9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d2b13c945adb1a74b7c5f76d45f28a6979ce6429)) +* **logger:** add removeKeys functionality ([#901](https://github.com/aws-powertools/powertools-lambda-typescript/issues/901)) ([a0f72c2](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a0f72c275270db33d382bff357f6054f552197e6)) ## [0.9.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.9.0...v0.9.1) (2022-05-24) ### Bug Fixes -- **logger:** enable logging of arbitrary objects ([#883](https://github.com/aws-powertools/powertools-lambda-typescript/issues/883)) ([5d34854](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5d348543d3fbb48a98a9b2c34a1e8fa56b037adb)) +* **logger:** enable logging of arbitrary objects ([#883](https://github.com/aws-powertools/powertools-lambda-typescript/issues/883)) ([5d34854](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5d348543d3fbb48a98a9b2c34a1e8fa56b037adb)) # [0.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.8.1...v0.9.0) (2022-05-16) ### Bug Fixes -- added back fetch-depth: 0 ([#812](https://github.com/aws-powertools/powertools-lambda-typescript/issues/812)) ([494c742](https://github.com/aws-powertools/powertools-lambda-typescript/commit/494c742aefc9355ee431f433655ddd3fd7efebcf)) -- **logger:** add xray_trace_id to every log ([#776](https://github.com/aws-powertools/powertools-lambda-typescript/issues/776)) ([11af21a](https://github.com/aws-powertools/powertools-lambda-typescript/commit/11af21ae236140e85d1503d355074c9ec254d90b)) -- reintroduce token while checking out ([#848](https://github.com/aws-powertools/powertools-lambda-typescript/issues/848)) ([cabef3e](https://github.com/aws-powertools/powertools-lambda-typescript/commit/cabef3e515c9074dc178efca76de7c72c70370e3)) -- removed token from remaining actions ([#805](https://github.com/aws-powertools/powertools-lambda-typescript/issues/805)) ([4fd9ecb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/4fd9ecbde412f640deaeb17a997aae8a9f5841c0)) +* added back fetch-depth: 0 ([#812](https://github.com/aws-powertools/powertools-lambda-typescript/issues/812)) ([494c742](https://github.com/aws-powertools/powertools-lambda-typescript/commit/494c742aefc9355ee431f433655ddd3fd7efebcf)) +* **logger:** add xray_trace_id to every log ([#776](https://github.com/aws-powertools/powertools-lambda-typescript/issues/776)) ([11af21a](https://github.com/aws-powertools/powertools-lambda-typescript/commit/11af21ae236140e85d1503d355074c9ec254d90b)) +* reintroduce token while checking out ([#848](https://github.com/aws-powertools/powertools-lambda-typescript/issues/848)) ([cabef3e](https://github.com/aws-powertools/powertools-lambda-typescript/commit/cabef3e515c9074dc178efca76de7c72c70370e3)) +* removed token from remaining actions ([#805](https://github.com/aws-powertools/powertools-lambda-typescript/issues/805)) ([4fd9ecb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/4fd9ecbde412f640deaeb17a997aae8a9f5841c0)) ### Features -- **examples:** added sam example to workflows ([#849](https://github.com/aws-powertools/powertools-lambda-typescript/issues/849)) ([93f1c7b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/93f1c7b55cb159dfcbbcb41149ccec7fd5db1660)) +* **examples:** added sam example to workflows ([#849](https://github.com/aws-powertools/powertools-lambda-typescript/issues/849)) ([93f1c7b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/93f1c7b55cb159dfcbbcb41149ccec7fd5db1660)) ## [0.8.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.8.0...v0.8.1) (2022-04-14) ### Bug Fixes -- **logger:** change logging to use stdout ([#748](https://github.com/aws-powertools/powertools-lambda-typescript/issues/748)) ([0781a47](https://github.com/aws-powertools/powertools-lambda-typescript/commit/0781a479a6ae3c794f94c72b59cd0920073159a2)) +* **logger:** change logging to use stdout ([#748](https://github.com/aws-powertools/powertools-lambda-typescript/issues/748)) ([0781a47](https://github.com/aws-powertools/powertools-lambda-typescript/commit/0781a479a6ae3c794f94c72b59cd0920073159a2)) # [0.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.7.2...v0.8.0) (2022-04-08) ### Features -- added captureHTTPsRequest feature ([#677](https://github.com/aws-powertools/powertools-lambda-typescript/issues/677)) ([5a36723](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5a367233b3284c4b1c0c18caffd00e585afc9f55)) +* added captureHTTPsRequest feature ([#677](https://github.com/aws-powertools/powertools-lambda-typescript/issues/677)) ([5a36723](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5a367233b3284c4b1c0c18caffd00e585afc9f55)) ## [0.7.2](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.7.1...v0.7.2) (2022-04-01) @@ -863,336 +718,336 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- **logger:** enable sequential invocation in e2e test ([#658](https://github.com/aws-powertools/powertools-lambda-typescript/issues/658)) ([800424b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/800424bc77223682ad6cdcc9f35080aff30ba91e)) -- **logger:** fix handling of additional log keys ([#614](https://github.com/aws-powertools/powertools-lambda-typescript/issues/614)) ([8aab299](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8aab29900c5fac8eb625eb747acbc23ceac8f6ba)) -- **tracer, metrics:** use polling instead of fixed wait in e2e tests ([#654](https://github.com/aws-powertools/powertools-lambda-typescript/issues/654)) ([6d4ab75](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6d4ab751bc98eb823d2a68b4973fa9f8405971a2)) +* **logger:** enable sequential invocation in e2e test ([#658](https://github.com/aws-powertools/powertools-lambda-typescript/issues/658)) ([800424b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/800424bc77223682ad6cdcc9f35080aff30ba91e)) +* **logger:** fix handling of additional log keys ([#614](https://github.com/aws-powertools/powertools-lambda-typescript/issues/614)) ([8aab299](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8aab29900c5fac8eb625eb747acbc23ceac8f6ba)) +* **tracer, metrics:** use polling instead of fixed wait in e2e tests ([#654](https://github.com/aws-powertools/powertools-lambda-typescript/issues/654)) ([6d4ab75](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6d4ab751bc98eb823d2a68b4973fa9f8405971a2)) # [0.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.6.0...v0.7.0) (2022-03-08) ### Features -- **logger:** adopted Utility class & updated unit tests ([#550](https://github.com/aws-powertools/powertools-lambda-typescript/issues/550)) ([48f3487](https://github.com/aws-powertools/powertools-lambda-typescript/commit/48f34870d5bc3a5affcb70c8927859c56da6c5ff)) -- **metrics:** adopted Utility class ([#548](https://github.com/aws-powertools/powertools-lambda-typescript/issues/548)) ([672e6a8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/672e6a82a2c66f99153c63a53e9d31481afd897a)) -- **tracer:** adopted Utility class & updated unit tests ([#549](https://github.com/aws-powertools/powertools-lambda-typescript/issues/549)) ([3769a69](https://github.com/aws-powertools/powertools-lambda-typescript/commit/3769a694725cc2a3fe6fb5f90fb045f73ea32a7c)) +* **logger:** adopted Utility class & updated unit tests ([#550](https://github.com/aws-powertools/powertools-lambda-typescript/issues/550)) ([48f3487](https://github.com/aws-powertools/powertools-lambda-typescript/commit/48f34870d5bc3a5affcb70c8927859c56da6c5ff)) +* **metrics:** adopted Utility class ([#548](https://github.com/aws-powertools/powertools-lambda-typescript/issues/548)) ([672e6a8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/672e6a82a2c66f99153c63a53e9d31481afd897a)) +* **tracer:** adopted Utility class & updated unit tests ([#549](https://github.com/aws-powertools/powertools-lambda-typescript/issues/549)) ([3769a69](https://github.com/aws-powertools/powertools-lambda-typescript/commit/3769a694725cc2a3fe6fb5f90fb045f73ea32a7c)) # [0.6.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.5.1...v0.6.0) (2022-02-17) ### Bug Fixes -- **logger:** fix logger attribute merging ([#535](https://github.com/aws-powertools/powertools-lambda-typescript/issues/535)) ([8180be1](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8180be1ceb3f75bb7a35a7905cca867fb5eaa970)) +* **logger:** fix logger attribute merging ([#535](https://github.com/aws-powertools/powertools-lambda-typescript/issues/535)) ([8180be1](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8180be1ceb3f75bb7a35a7905cca867fb5eaa970)) ### Features -- **commons:** centralize cold start heuristic ([#547](https://github.com/aws-powertools/powertools-lambda-typescript/issues/547)) ([4e4091f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/4e4091f7b853c56a8dfd28829f09a066cc8e2ee7)) -- **logger:** add e2e tests for logger ([#529](https://github.com/aws-powertools/powertools-lambda-typescript/issues/529)) ([e736b65](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e736b652c112b1c24c29eca8b1edfd87a79d1b2e)) +* **commons:** centralize cold start heuristic ([#547](https://github.com/aws-powertools/powertools-lambda-typescript/issues/547)) ([4e4091f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/4e4091f7b853c56a8dfd28829f09a066cc8e2ee7)) +* **logger:** add e2e tests for logger ([#529](https://github.com/aws-powertools/powertools-lambda-typescript/issues/529)) ([e736b65](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e736b652c112b1c24c29eca8b1edfd87a79d1b2e)) ## [0.5.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.5.0...v0.5.1) (2022-02-09) ### Bug Fixes -- **tracer:** properly return DynamoDB.DocumentClient ([#528](https://github.com/aws-powertools/powertools-lambda-typescript/issues/528)) ([3559e7b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/3559e7b19339a4649f235fb4af41c6b182da3df1)) +* **tracer:** properly return DynamoDB.DocumentClient ([#528](https://github.com/aws-powertools/powertools-lambda-typescript/issues/528)) ([3559e7b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/3559e7b19339a4649f235fb4af41c6b182da3df1)) ### Reverts -- Revert "build(deps-dev): bump aws-cdk from 1.139.0 to 1.143.0 (#532)" (#544) ([e96c9ba](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e96c9ba5bd4f738e5ed7c5850e06856a8c69bff1)), closes [#532](https://github.com/aws-powertools/powertools-lambda-typescript/issues/532) [#544](https://github.com/aws-powertools/powertools-lambda-typescript/issues/544) -- Revert "build(deps-dev): bump @aws-cdk/aws-lambda-nodejs from 1.139.0 to 1.143.0 (#531)" (#545) ([7dffbd8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7dffbd8708555fcc9817ea4373ccf71b0aea3c89)), closes [#531](https://github.com/aws-powertools/powertools-lambda-typescript/issues/531) [#545](https://github.com/aws-powertools/powertools-lambda-typescript/issues/545) +* Revert "build(deps-dev): bump aws-cdk from 1.139.0 to 1.143.0 (#532)" (#544) ([e96c9ba](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e96c9ba5bd4f738e5ed7c5850e06856a8c69bff1)), closes [#532](https://github.com/aws-powertools/powertools-lambda-typescript/issues/532) [#544](https://github.com/aws-powertools/powertools-lambda-typescript/issues/544) +* Revert "build(deps-dev): bump @aws-cdk/aws-lambda-nodejs from 1.139.0 to 1.143.0 (#531)" (#545) ([7dffbd8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7dffbd8708555fcc9817ea4373ccf71b0aea3c89)), closes [#531](https://github.com/aws-powertools/powertools-lambda-typescript/issues/531) [#545](https://github.com/aws-powertools/powertools-lambda-typescript/issues/545) # [0.5.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.4.0...v0.5.0) (2022-01-26) ### Bug Fixes -- **examples:** fix errors in logger and metrics examples ([#509](https://github.com/aws-powertools/powertools-lambda-typescript/issues/509)) ([c19b47c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c19b47cb4cdb71e0ae404e9302226256d02fb7d5)) -- **logger|metrics:** properly return decorated class ([#489](https://github.com/aws-powertools/powertools-lambda-typescript/issues/489)) ([014c5bd](https://github.com/aws-powertools/powertools-lambda-typescript/commit/014c5bd7d5c807064af8f04c16d297a8fe3bc0d9)) +* **examples:** fix errors in logger and metrics examples ([#509](https://github.com/aws-powertools/powertools-lambda-typescript/issues/509)) ([c19b47c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c19b47cb4cdb71e0ae404e9302226256d02fb7d5)) +* **logger|metrics:** properly return decorated class ([#489](https://github.com/aws-powertools/powertools-lambda-typescript/issues/489)) ([014c5bd](https://github.com/aws-powertools/powertools-lambda-typescript/commit/014c5bd7d5c807064af8f04c16d297a8fe3bc0d9)) ### Features -- Add codespaces/gitpod support ([#485](https://github.com/aws-powertools/powertools-lambda-typescript/issues/485)) ([ed6f258](https://github.com/aws-powertools/powertools-lambda-typescript/commit/ed6f258d6f8025bcfa9db3ea3d6a05a1338802e3)) -- **all:** make `@middy/core` optional ([#511](https://github.com/aws-powertools/powertools-lambda-typescript/issues/511)) ([1107f96](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1107f96e9b4c678d34ee36757366f150d99be4dc)) -- **tracer:** add support for capturing DynamoDB DocumentClient ([#450](https://github.com/aws-powertools/powertools-lambda-typescript/issues/450)) ([621ae50](https://github.com/aws-powertools/powertools-lambda-typescript/commit/621ae50430e4459f90eaaa135eb0ed674b95e108)) +* Add codespaces/gitpod support ([#485](https://github.com/aws-powertools/powertools-lambda-typescript/issues/485)) ([ed6f258](https://github.com/aws-powertools/powertools-lambda-typescript/commit/ed6f258d6f8025bcfa9db3ea3d6a05a1338802e3)) +* **all:** make `@middy/core` optional ([#511](https://github.com/aws-powertools/powertools-lambda-typescript/issues/511)) ([1107f96](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1107f96e9b4c678d34ee36757366f150d99be4dc)) +* **tracer:** add support for capturing DynamoDB DocumentClient ([#450](https://github.com/aws-powertools/powertools-lambda-typescript/issues/450)) ([621ae50](https://github.com/aws-powertools/powertools-lambda-typescript/commit/621ae50430e4459f90eaaa135eb0ed674b95e108)) # [0.4.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.3.3...v0.4.0) (2022-01-20) ### Features -- **logger:** JSDOCS support ([#491](https://github.com/aws-powertools/powertools-lambda-typescript/issues/491)) ([cd2c2d9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/cd2c2d93a5822e26d3113a042be1dd0473aa6b2a)) +* **logger:** JSDOCS support ([#491](https://github.com/aws-powertools/powertools-lambda-typescript/issues/491)) ([cd2c2d9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/cd2c2d93a5822e26d3113a042be1dd0473aa6b2a)) ## [0.3.3](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.3.2...v0.3.3) (2022-01-17) ### Bug Fixes -- lerna version not publishing all packages ([#480](https://github.com/aws-powertools/powertools-lambda-typescript/issues/480)) ([0cabc3f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/0cabc3ff7b29fae8a01aeae56450d19737af3bba)) +* lerna version not publishing all packages ([#480](https://github.com/aws-powertools/powertools-lambda-typescript/issues/480)) ([0cabc3f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/0cabc3ff7b29fae8a01aeae56450d19737af3bba)) ## [0.3.2](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.3.1...v0.3.2) (2022-01-17) ### Bug Fixes -- export LogFormatter + update docs ([#479](https://github.com/aws-powertools/powertools-lambda-typescript/issues/479)) ([7f91566](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7f91566d4ff34887914009e2424df7c39a96cd71)) -- updated CDK examples to remove old references & improve comments ([#439](https://github.com/aws-powertools/powertools-lambda-typescript/issues/439)) ([4cdaaea](https://github.com/aws-powertools/powertools-lambda-typescript/commit/4cdaaeaf7fbb24571b194c0e82338fbd216d2dcd)) +* export LogFormatter + update docs ([#479](https://github.com/aws-powertools/powertools-lambda-typescript/issues/479)) ([7f91566](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7f91566d4ff34887914009e2424df7c39a96cd71)) +* updated CDK examples to remove old references & improve comments ([#439](https://github.com/aws-powertools/powertools-lambda-typescript/issues/439)) ([4cdaaea](https://github.com/aws-powertools/powertools-lambda-typescript/commit/4cdaaeaf7fbb24571b194c0e82338fbd216d2dcd)) ## [0.3.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.3.0...v0.3.1) (2022-01-14) ### Bug Fixes -- **all:** fix latest release broken by change of npm pack result on common ([#470](https://github.com/aws-powertools/powertools-lambda-typescript/issues/470)) ([2c3df93](https://github.com/aws-powertools/powertools-lambda-typescript/commit/2c3df9378ac191f6da6cb5f458f6227d6466cafa)), closes [#417](https://github.com/aws-powertools/powertools-lambda-typescript/issues/417) +* **all:** fix latest release broken by change of npm pack result on common ([#470](https://github.com/aws-powertools/powertools-lambda-typescript/issues/470)) ([2c3df93](https://github.com/aws-powertools/powertools-lambda-typescript/commit/2c3df9378ac191f6da6cb5f458f6227d6466cafa)), closes [#417](https://github.com/aws-powertools/powertools-lambda-typescript/issues/417) # [0.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.2.0...v0.3.0) (2022-01-14) ### Bug Fixes -- **build:** Fix linting issue and add linting to the pre-push hook ([#440](https://github.com/aws-powertools/powertools-lambda-typescript/issues/440)) ([e7bc53c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e7bc53c38b2a906c6952a83c5262db521ea468fb)) -- **build:** Update contributing.md and fix npm ci ([#417](https://github.com/aws-powertools/powertools-lambda-typescript/issues/417)) ([279ad98](https://github.com/aws-powertools/powertools-lambda-typescript/commit/279ad984f71d5b157a13cffeab52602f2c09c1f8)), closes [#415](https://github.com/aws-powertools/powertools-lambda-typescript/issues/415) [#415](https://github.com/aws-powertools/powertools-lambda-typescript/issues/415) -- **metrics:** Rename purgeStoredMetrics() function usage in CDK example ([#424](https://github.com/aws-powertools/powertools-lambda-typescript/issues/424)) ([02f0eae](https://github.com/aws-powertools/powertools-lambda-typescript/commit/02f0eae2c378bd5562facf032fb94a25c69f66df)) -- **tracer:** avoid throwing errors in manual instrumentation when running outside of AWS Lambda ([#442](https://github.com/aws-powertools/powertools-lambda-typescript/issues/442)) ([fd02acb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fd02acbbe7de1cd0d1b00ae1cca68148a5114cbf)) +* **build:** Fix linting issue and add linting to the pre-push hook ([#440](https://github.com/aws-powertools/powertools-lambda-typescript/issues/440)) ([e7bc53c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e7bc53c38b2a906c6952a83c5262db521ea468fb)) +* **build:** Update contributing.md and fix npm ci ([#417](https://github.com/aws-powertools/powertools-lambda-typescript/issues/417)) ([279ad98](https://github.com/aws-powertools/powertools-lambda-typescript/commit/279ad984f71d5b157a13cffeab52602f2c09c1f8)), closes [#415](https://github.com/aws-powertools/powertools-lambda-typescript/issues/415) [#415](https://github.com/aws-powertools/powertools-lambda-typescript/issues/415) +* **metrics:** Rename purgeStoredMetrics() function usage in CDK example ([#424](https://github.com/aws-powertools/powertools-lambda-typescript/issues/424)) ([02f0eae](https://github.com/aws-powertools/powertools-lambda-typescript/commit/02f0eae2c378bd5562facf032fb94a25c69f66df)) +* **tracer:** avoid throwing errors in manual instrumentation when running outside of AWS Lambda ([#442](https://github.com/aws-powertools/powertools-lambda-typescript/issues/442)) ([fd02acb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fd02acbbe7de1cd0d1b00ae1cca68148a5114cbf)) ### Features -- **all:** Update to examples use released version (0.2.0) ([#405](https://github.com/aws-powertools/powertools-lambda-typescript/issues/405)) ([d5e0620](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d5e0620473f31d0839c027a76a88dcdcb98c84de)) +* **all:** Update to examples use released version (0.2.0) ([#405](https://github.com/aws-powertools/powertools-lambda-typescript/issues/405)) ([d5e0620](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d5e0620473f31d0839c027a76a88dcdcb98c84de)) # 0.2.0 (2022-01-05) ### Features -- _tracer:_ beta release (#91 (https://github.com/aws-powertools/powertools-lambda-python/issues/91)) -- _logger:_ beta release (#24 (https://github.com/aws-powertools/powertools-lambda-python/issues/24)) -- _metrics:_ beta release (#25 (https://github.com/aws-powertools/powertools-lambda-python/issues/25)) +* _tracer:_ beta release (#91 ()) +* _logger:_ beta release (#24 ()) +* _metrics:_ beta release (#25 ()) ### Contributions -- chore(ci): auto-label PR on semantic title (#403) by @heitorlessa -- fix: documentation generation on on-release.yml workflow (#368) by @ijemmy -- fix: Remove publishing doc on develop version and fix missing leading 0 in version (#356) by @ijemmy -- feat: generate new version of doc for each release (#355) by @ijemmy -- chore(cicd): cdk examples and e2e tests for metrics (#326) by @flochaz -- fix(cicd): skip ci on bump commit (#339) by @flochaz -- chore(cicd): fix publish (#336) by @flochaz -- chore(cicd): Add release workflow (#260) by @flochaz -- chore(commons): Create a common package (#314) by @flochaz -- feat: Auto publish docs to version "develop" (#269) by @ijemmy -- fix(metrics): publish metrics even if handler throw (#249) by @flochaz -- chore: fix linting (#247) by @flochaz -- chore(all): npm libraries bump and breaking changes fixes (#215) by @saragerion -- chore: Enable auto-merge for dependabot PRs (#169) by @dreamorosi -- feat: add metrics (#102) by @alan-churley -- chore: Add commit hooks for testing and linting (#149) by @bahrmichael -- chore: Removed assignees from issue templates (#146) by @dreamorosi -- chore: Disabled auto-assign-issues integration (#144) by @dreamorosi -- feat: Adding sample automation for PR (#121) by @alan-churley -- test(logger): add unit tests with most important scenarios and features (#52) by @saragerion -- chore: increase version of WS dependancy (#71) by @alan-churley -- chore: dependancies upgrade (#70) by @alan-churley -- build(github-actions): fix YAML of closed issues message (#23) by @saragerion -- improv: repository documentation, metadata, github actions, dot files (#17) by @saragerion -- refactor(logger): overall improvements - DX, examples, business logic (#16) by @saragerion -- chore: updating path for coverage (#12) by @alan-churley -- feat(logger): add context decorator functionality (#13) by @saragerion -- test(all): add mock Lambda events payloads generated by other AWS services (#10) by @saragerion -- feat(logger): basic logger logic (#9) by @saragerion -- revert: Remove CodeQL analysis (#2) by @alan-churley -- feat(metrics): rename method purgeStoredMetrics to publishStoredMetrics (#377) by @flochaz - -- fix(metrics): use same naming for serviceName (#401) by @flochaz -- feat(commons): update types to have optional callback (#394) by @flochaz -- feat(metrics): logMetrics middleware (#338) by @saragerion -- chore(tracer): quality of life improvements (#337) by @dreamorosi -- feat(tracer): middy middleware (#324) by @dreamorosi -- feat(logger): middy middleware (#313) by @saragerion -- chore(ALL): fix packaging (#316) by @flochaz -- feat: add tracer (#107) by @dreamorosi -- feat(logger): documentation, examples, business logic changes (#293) by @saragerion -- feat(metric): bring feature parity between decorator and utility function (#291) by @flochaz -- docs(all): make docs more coherent (#387) by @dreamorosi -- docs(logger): improve mkdocs and examples of sample rate feature (#389) by @saragerion -- docs(all): clarifications & fixes (#370) by @dreamorosi -- chore(tracer): cdk examples + e2e tests (#347) by @dreamorosi -- docs(all): getting started section, beta release warning (#351) by @saragerion -- chore(docs): Tracer docs (#274) by @dreamorosi -- chore(docs): Add credits section to README (#305) by @dreamorosi -- chore(metrics): Add typeDoc (#285) by @flochaz -- feat(logger): documentation, examples, business logic changes (#293) by @saragerion -- chore(metrics): github page doc (#284) by @flochaz -- feat: generate api docs (#277) by @ijemmy -- docs: base documentation (#250) by @dreamorosi -- docs: updating readme and package.json to work with lerna (#11) by @alan-churley -- fix(metrics): Support multiple addMetric() call with the same metric name (#390) by @ijemmy -- fix(logger): display correct log level in cloudwatch (#386) by @saragerion -- fix(metrics): expose logMetrics middleware (#380) by @flochaz -- chore: change license (#117) by @dreamorosi -- chore: don't bump version for merge to main (#404) by @flochaz -- feat(ALL): Use optional callback LambdaInterface for decorator (#397) by @flochaz -- chore(ci): add release drafter workflow (#382) by @heitorlessa -- build(deps): bump e2e dependencies metrics (#371) by @dreamorosi -- build(deps-dev): bump @aws-cdk/aws-lambda from 1.136.0 to 1.137.0 (#340) by @dependabot -- chore(commons): Remove eslint from commons pkg (#352) by @dreamorosi -- build(deps-dev): bump @types/lodash from 4.14.177 to 4.14.178 (#335) by @dependabot -- build(deps-dev): bump @types/node from 16.11.11 to 17.0.0 (#325) by @dependabot -- build(deps-dev): bump @types/lodash from 4.14.177 to 4.14.178 (#318) by @dependabot -- build(deps-dev): bump ts-jest from 27.0.7 to 27.1.1 (#317) by @dependabot -- build(deps-dev): bump jest from 27.4.3 to 27.4.5 (#310) by @dependabot -- build(deps): bump @types/aws-lambda from 8.10.85 to 8.10.88 (#312) by @dependabot -- build(deps-dev): bump typescript from 4.5.2 to 4.5.4 (#311) by @dependabot -- build(deps-dev): bump @typescript-eslint/parser from 5.5.0 to 5.7.0 (#308) by @dependabot -- build(deps-dev): bump @typescript-eslint/eslint-plugin from 5.5.0 to 5.7.0 (#309) by @dependabot -- build(deps): bump aws-xray-sdk-core from 3.3.3 to 3.3.4 (#307) by @dependabot -- build(deps-dev): bump @typescript-eslint/eslint-plugin from 5.5.0 to 5.6.0 (#297) by @dependabot -- build(deps): bump @types/aws-lambda from 8.10.85 to 8.10.87 (#299) by @dependabot -- build(deps-dev): bump jest from 27.4.3 to 27.4.4 (#300) by @dependabot -- build(deps-dev): bump @typescript-eslint/parser from 5.5.0 to 5.6.0 (#298) by @dependabot -- build(deps-dev): bump ts-jest from 27.0.7 to 27.1.1 (#296) by @dependabot -- build(deps-dev): bump typescript from 4.5.2 to 4.5.3 (#287) by @dependabot -- build(deps-dev): bump jest from 27.4.3 to 27.4.4 (#288) by @dependabot -- build(deps-dev): bump @types/lodash from 4.14.177 to 4.14.178 (#283) by @dependabot -- build(deps): bump @types/aws-lambda from 8.10.85 to 8.10.86 (#272) by @dependabot -- build(deps-dev): bump ts-jest from 27.0.7 to 27.1.1 (#271) by @dependabot -- build(deps-dev): bump @types/node from 16.11.11 to 16.11.12 (#270) by @dependabot -- build(deps-dev): bump @typescript-eslint/eslint-plugin from 5.5.0 to 5.6.0 (#273) by @dependabot -- build(deps-dev): bump @typescript-eslint/parser from 5.5.0 to 5.6.0 (#268) by @dependabot -- build(deps-dev): bump @types/node from 16.11.11 to 16.11.12 (#267) by @dependabot -- build(deps-dev): bump eslint from 8.3.0 to 8.4.1 (#266) by @dependabot -- build(deps-dev): bump @typescript-eslint/eslint-plugin from 5.5.0 to 5.6.0 (#265) by @dependabot -- build(deps-dev): bump ts-jest from 27.0.7 to 27.1.0 (#264) by @dependabot -- build(deps): bump @types/aws-lambda from 8.10.85 to 8.10.86 (#263) by @dependabot -- build(deps): bump romeovs/lcov-reporter-action from 0.2.21 to 0.3.1 (#261) by @dependabot -- build(deps-dev): bump @types/jest from 27.0.2 to 27.0.3 (#258) by @dependabot -- build(deps-dev): bump @types/node from 16.11.6 to 16.11.11 (#257) by @dependabot -- build(deps-dev): bump @typescript-eslint/parser from 4.33.0 to 5.5.0 (#256) by @dependabot -- build(deps-dev): bump @types/lodash from 4.14.175 to 4.14.177 (#255) by @dependabot -- build(deps): bump @types/aws-lambda from 8.10.84 to 8.10.85 (#252) by @dependabot -- build(deps-dev): bump jest from 27.3.1 to 27.4.3 (#251) by @dependabot -- build(deps-dev): bump husky from 7.0.2 to 7.0.4 (#243) by @dependabot -- build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.33.0 to 5.5.0 (#253) by @dependabot -- build(deps-dev): bump eslint from 8.1.0 to 8.3.0 (#254) by @dependabot -- build(deps-dev): bump typescript from 4.4.3 to 4.5.2 (#245) by @dependabot -- build(deps-dev): bump ts-node from 10.3.0 to 10.4.0 (#242) by @dependabot -- build(deps-dev): bump ts-jest from 27.0.5 to 27.0.7 (#234) by @dependabot -- build(deps-dev): bump @commitlint/cli from 13.2.1 to 15.0.0 (#244) by @dependabot -- build(deps-dev): bump jest from 27.2.5 to 27.3.1 (#235) by @dependabot -- build(deps-dev): bump eslint from 7.32.0 to 8.1.0 (#239) by @dependabot -- build(deps-dev): bump @types/node from 16.10.3 to 16.11.6 (#240) by @dependabot -- build(deps-dev): bump ts-node from 10.2.1 to 10.3.0 (#226) by @dependabot -- build(deps-dev): bump jest from 27.2.4 to 27.2.5 (#225) by @dependabot -- build(deps-dev): bump @types/aws-lambda from 8.10.83 to 8.10.84 (#223) by @dependabot -- build(deps-dev): bump @commitlint/cli from 13.2.0 to 13.2.1 (#222) by @dependabot -- build(deps-dev): bump jest from 27.2.2 to 27.2.4 (#217) by @dependabot -- build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.32.0 to 4.33.0 (#219) by @dependabot -- build(deps-dev): bump @typescript-eslint/parser from 4.32.0 to 4.33.0 (#220) by @dependabot -- build(deps-dev): bump @types/node from 16.10.1 to 16.10.3 (#221) by @dependabot -- build(deps-dev): bump jest from 27.0.6 to 27.2.2 (#212) by @dependabot -- build(deps-dev): bump ts-jest from 27.0.4 to 27.0.5 (#181) by @dependabot -- build(deps): bump actions/github-script from 4.1 to 5 (#211) by @dependabot -- build(deps-dev): bump typescript from 4.3.5 to 4.4.3 (#199) by @dependabot -- build(deps-dev): bump @types/node from 16.9.6 to 16.10.1 (#213) by @dependabot -- build(deps-dev): bump @types/lodash from 4.14.173 to 4.14.174 (#214) by @dependabot -- build(deps-dev): bump @types/node from 16.9.4 to 16.9.6 (#210) by @dependabot -- build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.30.0 to 4.31.2 (#209) by @dependabot -- build(deps-dev): bump @types/jest from 27.0.1 to 27.0.2 (#208) by @dependabot -- build(deps-dev): bump @types/node from 16.9.2 to 16.9.4 (#205) by @dependabot -- build(deps-dev): bump @typescript-eslint/parser from 4.31.1 to 4.31.2 (#206) by @dependabot -- build(deps-dev): bump @types/node from 16.9.1 to 16.9.2 (#204) by @dependabot -- build(deps-dev): bump @types/lodash from 4.14.172 to 4.14.173 (#203) by @dependabot -- build(deps-dev): bump @types/node from 16.7.2 to 16.9.1 (#202) by @dependabot -- build(deps-dev): bump husky from 7.0.1 to 7.0.2 (#191) by @dependabot -- build(deps-dev): bump @typescript-eslint/parser from 4.29.2 to 4.31.1 (#200) by @dependabot -- build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.29.2 to 4.30.0 (#194) by @dependabot -- build(deps-dev): bump @types/node from 16.6.2 to 16.7.2 (#190) by @dependabot -- build(deps): bump actions/github-script from 4.0.2 to 4.1 (#187) by @dependabot -- build(deps-dev): bump @types/aws-lambda from 8.10.82 to 8.10.83 (#186) by @dependabot -- build(deps): bump actions/github-script from 3.1.0 to 4.0.2 (#179) by @dependabot -- build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.29.1 to 4.29.2 (#180) by @dependabot -- build(deps-dev): bump @types/node from 16.6.1 to 16.6.2 (#184) by @dependabot -- build(deps-dev): bump ts-node from 10.2.0 to 10.2.1 (#183) by @dependabot -- build(deps-dev): bump @typescript-eslint/parser from 4.29.1 to 4.29.2 (#182) by @dependabot -- build(deps-dev): bump @types/jest from 27.0.0 to 27.0.1 (#177) by @dependabot -- build(deps-dev): bump @types/node from 16.6.0 to 16.6.1 (#176) by @dependabot -- build(deps-dev): bump @types/node from 16.4.13 to 16.6.0 (#174) by @dependabot -- build(deps-dev): bump @commitlint/cli from 12.1.4 to 13.1.0 (#172) by @dependabot -- build(deps-dev): bump @types/jest from 26.0.24 to 27.0.0 (#171) by @dependabot -- build(deps-dev): bump @types/aws-lambda from 8.10.81 to 8.10.82 (#170) by @dependabot -- build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.29.0 to 4.29.1 (#167) by @dependabot -- build(deps-dev): bump @typescript-eslint/parser from 4.29.0 to 4.29.1 (#166) by @dependabot -- improv: Use lodash.merge & lodash.clonedeed instead of full lodash in Logger (#159) by @dreamorosi -- build(deps-dev): bump ts-node from 10.1.0 to 10.2.0 (#164) by @dependabot -- build(deps-dev): bump @types/node from 16.4.10 to 16.4.13 (#162) by @dependabot -- build(deps-dev): bump @typescript-eslint/parser from 4.28.5 to 4.29.0 (#156) by @dependabot -- build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.28.5 to 4.29.0 (#157) by @dependabot -- build(deps-dev): bump @types/lodash from 4.14.171 to 4.14.172 (#158) by @dependabot -- build(deps-dev): bump eslint from 7.31.0 to 7.32.0 (#155) by @dependabot -- build(deps-dev): bump @types/node from 16.4.7 to 16.4.10 (#154) by @dependabot -- build(deps-dev): bump @types/node from 16.4.6 to 16.4.7 (#150) by @dependabot -- build(deps-dev): bump @types/node from 16.4.5 to 16.4.6 (#148) by @dependabot -- build(deps-dev): bump @types/node from 16.4.3 to 16.4.5 (#145) by @dependabot -- build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.28.4 to 4.28.5 (#138) by @dependabot -- build(deps-dev): bump @typescript-eslint/parser from 4.28.4 to 4.28.5 (#137) by @dependabot -- build(deps-dev): bump @types/aws-lambda from 8.10.80 to 8.10.81 (#135) by @dependabot -- build(deps-dev): bump @types/node from 16.4.1 to 16.4.3 (#134) by @dependabot -- build(deps-dev): bump @types/node from 16.4.0 to 16.4.1 (#132) by @dependabot -- build(deps-dev): bump @types/aws-lambda from 8.10.79 to 8.10.80 (#128) by @dependabot -- build(deps-dev): bump ts-jest from 27.0.3 to 27.0.4 (#127) by @dependabot -- build(deps-dev): bump @types/node from 16.3.3 to 16.4.0 (#124) by @dependabot -- build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.28.3 to 4.28.4 (#122) by @dependabot -- build(deps-dev): bump @typescript-eslint/parser from 4.28.3 to 4.28.4 (#123) by @dependabot -- build(deps-dev): bump eslint from 7.30.0 to 7.31.0 (#118) by @dependabot -- build(deps-dev): bump @types/node from 16.3.2 to 16.3.3 (#119) by @dependabot -- build(deps-dev): bump @types/aws-lambda from 8.10.78 to 8.10.79 (#114) by @dependabot -- build(deps-dev): bump @types/node from 16.0.0 to 16.3.2 (#113) by @dependabot -- build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.28.2 to 4.28.3 (#112) by @dependabot -- build(deps-dev): bump @typescript-eslint/parser from 4.28.2 to 4.28.3 (#111) by @dependabot -- build(deps-dev): bump ts-node from 10.0.0 to 10.1.0 (#110) by @dependabot -- build(deps-dev): bump @types/lodash from 4.14.170 to 4.14.171 (#105) by @dependabot -- build(deps-dev): bump @types/jest from 26.0.23 to 26.0.24 (#104) by @dependabot -- build(deps-dev): bump @types/aws-lambda from 8.10.77 to 8.10.78 (#103) by @dependabot -- build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.28.1 to 4.28.2 (#100) by @dependabot -- build(deps-dev): bump @typescript-eslint/parser from 4.28.1 to 4.28.2 (#101) by @dependabot -- build(deps-dev): bump @types/node from 15.14.0 to 16.0.0 (#98) by @dependabot -- build(deps-dev): bump eslint from 7.29.0 to 7.30.0 (#99) by @dependabot -- build(deps-dev): bump typescript from 4.3.4 to 4.3.5 (#97) by @dependabot -- build(deps-dev): bump @types/node from 15.12.3 to 15.14.0 (#96) by @dependabot -- build(deps-dev): bump @typescript-eslint/parser from 4.27.0 to 4.28.1 (#94) by @dependabot -- build(deps-dev): bump eslint from 7.28.0 to 7.29.0 (#86) by @dependabot -- build(deps-dev): bump @types/node from 15.12.3 to 15.12.5 (#92) by @dependabot -- build(deps-dev): bump jest from 27.0.4 to 27.0.6 (#93) by @dependabot -- build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.27.0 to 4.28.1 (#95) by @dependabot -- build(deps-dev): bump typescript from 4.3.2 to 4.3.4 (#84) by @dependabot -- build(deps-dev): bump @types/node from 15.12.2 to 15.12.3 (#85) by @dependabot -- build(deps-dev): bump @typescript-eslint/parser from 4.26.1 to 4.27.0 (#81) by @dependabot -- build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.26.1 to 4.27.0 (#82) by @dependabot -- build(deps-dev): bump @typescript-eslint/parser from 4.26.0 to 4.26.1 (#80) by @dependabot -- build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.26.0 to 4.26.1 (#78) by @dependabot -- build(deps-dev): bump @types/node from 15.12.1 to 15.12.2 (#79) by @dependabot -- build(deps-dev): bump jest from 26.6.3 to 27.0.4 (#73) by @dependabot -- build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.25.0 to 4.26.0 (#69) by @dependabot -- build(deps-dev): bump @typescript-eslint/parser from 4.25.0 to 4.26.0 (#68) by @dependabot -- build(deps-dev): bump typescript from 4.2.4 to 4.3.2 (#66) by @dependabot -- build(deps-dev): bump @types/node from 15.3.1 to 15.6.1 (#61) by @dependabot -- build(deps-dev): bump @typescript-eslint/parser from 4.24.0 to 4.25.0 (#62) by @dependabot -- build(deps-dev): bump @types/lodash from 4.14.169 to 4.14.170 (#60) by @dependabot -- build(deps-dev): bump ts-node from 9.1.1 to 10.0.0 (#58) by @dependabot -- build(deps-dev): bump eslint from 7.26.0 to 7.27.0 (#57) by @dependabot -- build(deps-dev): bump @types/node from 15.3.0 to 15.3.1 (#56) by @dependabot -- build(deps-dev): bump @typescript-eslint/parser from 4.23.0 to 4.24.0 (#55) by @dependabot -- build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.23.0 to 4.24.0 (#54) by @dependabot -- build(deps-dev): bump @types/node from 15.0.3 to 15.3.0 (#53) by @dependabot -- build(deps-dev): bump @types/node from 14.14.37 to 15.0.3 (#50) by @dependabot -- build(deps-dev): bump lerna from 3.22.1 to 4.0.0 (#29) by @dependabot -- build(deps-dev): bump @typescript-eslint/parser from 4.21.0 to 4.22.0 (#37) by @dependabot -- build(deps-dev): bump eslint from 7.23.0 to 7.24.0 (#35) by @dependabot -- build(deps): bump romeovs/lcov-reporter-action from v0.2.11 to v0.2.21 (#34) by @dependabot -- build(deps-dev): bump @commitlint/cli from 11.0.0 to 12.1.1 (#33) by @dependabot -- build(deps-dev): bump @types/aws-lambda from 8.10.72 to 8.10.75 (#32) by @dependabot -- build(deps-dev): bump @types/node from 14.14.20 to 14.14.37 (#31) by @dependabot -- build(deps-dev): bump husky from 4.3.7 to 6.0.0 (#30) by @dependabot -- build(deps-dev): bump typescript from 4.1.3 to 4.2.4 (#28) by @dependabot -- build(deps-dev): bump ts-jest from 26.4.4 to 26.5.4 (#27) by @dependabot -- build(deps-dev): bump eslint from 7.17.0 to 7.23.0 (#21) by @dependabot -- build(deps-dev): bump @types/jest from 26.0.20 to 26.0.22 (#22) by @dependabot -- build(deps-dev): bump @typescript-eslint/parser from 4.13.0 to 4.21.0 (#20) by @dependabot -- build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.13.0 to 4.21.0 (#18) by @dependabot -- build(deps-dev): bump @commitlint/config-conventional from 11.0.0 to 12.1.1 (#19) by @dependabot -- docs: updating readme and package.json to work with lerna (#11) by @alan-churley -- chore: lerna downstream dependancy security issues (#15) by @alan-churley -- build(deps): bump ini from 1.3.5 to 1.3.8 (#5) by @dependabot -- build(deps): bump ini from 1.3.5 to 1.3.8 in /packages/logging (#4) by @dependabot -- build(deps): bump ini from 1.3.5 to 1.3.8 in /docs (#3) by @dependabot - -### Contributor List: +* chore(ci): auto-label PR on semantic title (#403) by @heitorlessa +* fix: documentation generation on on-release.yml workflow (#368) by @ijemmy +* fix: Remove publishing doc on develop version and fix missing leading 0 in version (#356) by @ijemmy +* feat: generate new version of doc for each release (#355) by @ijemmy +* chore(cicd): cdk examples and e2e tests for metrics (#326) by @flochaz +* fix(cicd): skip ci on bump commit (#339) by @flochaz +* chore(cicd): fix publish (#336) by @flochaz +* chore(cicd): Add release workflow (#260) by @flochaz +* chore(commons): Create a common package (#314) by @flochaz +* feat: Auto publish docs to version "develop" (#269) by @ijemmy +* fix(metrics): publish metrics even if handler throw (#249) by @flochaz +* chore: fix linting (#247) by @flochaz +* chore(all): npm libraries bump and breaking changes fixes (#215) by @saragerion +* chore: Enable auto-merge for dependabot PRs (#169) by @dreamorosi +* feat: add metrics (#102) by @alan-churley +* chore: Add commit hooks for testing and linting (#149) by @bahrmichael +* chore: Removed assignees from issue templates (#146) by @dreamorosi +* chore: Disabled auto-assign-issues integration (#144) by @dreamorosi +* feat: Adding sample automation for PR (#121) by @alan-churley +* test(logger): add unit tests with most important scenarios and features (#52) by @saragerion +* chore: increase version of WS dependancy (#71) by @alan-churley +* chore: dependancies upgrade (#70) by @alan-churley +* build(github-actions): fix YAML of closed issues message (#23) by @saragerion +* improv: repository documentation, metadata, github actions, dot files (#17) by @saragerion +* refactor(logger): overall improvements - DX, examples, business logic (#16) by @saragerion +* chore: updating path for coverage (#12) by @alan-churley +* feat(logger): add context decorator functionality (#13) by @saragerion +* test(all): add mock Lambda events payloads generated by other AWS services (#10) by @saragerion +* feat(logger): basic logger logic (#9) by @saragerion +* revert: Remove CodeQL analysis (#2) by @alan-churley +* feat(metrics): rename method purgeStoredMetrics to publishStoredMetrics (#377) by @flochaz + +* fix(metrics): use same naming for serviceName (#401) by @flochaz +* feat(commons): update types to have optional callback (#394) by @flochaz +* feat(metrics): logMetrics middleware (#338) by @saragerion +* chore(tracer): quality of life improvements (#337) by @dreamorosi +* feat(tracer): middy middleware (#324) by @dreamorosi +* feat(logger): middy middleware (#313) by @saragerion +* chore(ALL): fix packaging (#316) by @flochaz +* feat: add tracer (#107) by @dreamorosi +* feat(logger): documentation, examples, business logic changes (#293) by @saragerion +* feat(metric): bring feature parity between decorator and utility function (#291) by @flochaz +* docs(all): make docs more coherent (#387) by @dreamorosi +* docs(logger): improve mkdocs and examples of sample rate feature (#389) by @saragerion +* docs(all): clarifications & fixes (#370) by @dreamorosi +* chore(tracer): cdk examples + e2e tests (#347) by @dreamorosi +* docs(all): getting started section, beta release warning (#351) by @saragerion +* chore(docs): Tracer docs (#274) by @dreamorosi +* chore(docs): Add credits section to README (#305) by @dreamorosi +* chore(metrics): Add typeDoc (#285) by @flochaz +* feat(logger): documentation, examples, business logic changes (#293) by @saragerion +* chore(metrics): github page doc (#284) by @flochaz +* feat: generate api docs (#277) by @ijemmy +* docs: base documentation (#250) by @dreamorosi +* docs: updating readme and package.json to work with lerna (#11) by @alan-churley +* fix(metrics): Support multiple addMetric() call with the same metric name (#390) by @ijemmy +* fix(logger): display correct log level in cloudwatch (#386) by @saragerion +* fix(metrics): expose logMetrics middleware (#380) by @flochaz +* chore: change license (#117) by @dreamorosi +* chore: don't bump version for merge to main (#404) by @flochaz +* feat(ALL): Use optional callback LambdaInterface for decorator (#397) by @flochaz +* chore(ci): add release drafter workflow (#382) by @heitorlessa +* build(deps): bump e2e dependencies metrics (#371) by @dreamorosi +* build(deps-dev): bump @aws-cdk/aws-lambda from 1.136.0 to 1.137.0 (#340) by @dependabot +* chore(commons): Remove eslint from commons pkg (#352) by @dreamorosi +* build(deps-dev): bump @types/lodash from 4.14.177 to 4.14.178 (#335) by @dependabot +* build(deps-dev): bump @types/node from 16.11.11 to 17.0.0 (#325) by @dependabot +* build(deps-dev): bump @types/lodash from 4.14.177 to 4.14.178 (#318) by @dependabot +* build(deps-dev): bump ts-jest from 27.0.7 to 27.1.1 (#317) by @dependabot +* build(deps-dev): bump jest from 27.4.3 to 27.4.5 (#310) by @dependabot +* build(deps): bump @types/aws-lambda from 8.10.85 to 8.10.88 (#312) by @dependabot +* build(deps-dev): bump typescript from 4.5.2 to 4.5.4 (#311) by @dependabot +* build(deps-dev): bump @typescript-eslint/parser from 5.5.0 to 5.7.0 (#308) by @dependabot +* build(deps-dev): bump @typescript-eslint/eslint-plugin from 5.5.0 to 5.7.0 (#309) by @dependabot +* build(deps): bump aws-xray-sdk-core from 3.3.3 to 3.3.4 (#307) by @dependabot +* build(deps-dev): bump @typescript-eslint/eslint-plugin from 5.5.0 to 5.6.0 (#297) by @dependabot +* build(deps): bump @types/aws-lambda from 8.10.85 to 8.10.87 (#299) by @dependabot +* build(deps-dev): bump jest from 27.4.3 to 27.4.4 (#300) by @dependabot +* build(deps-dev): bump @typescript-eslint/parser from 5.5.0 to 5.6.0 (#298) by @dependabot +* build(deps-dev): bump ts-jest from 27.0.7 to 27.1.1 (#296) by @dependabot +* build(deps-dev): bump typescript from 4.5.2 to 4.5.3 (#287) by @dependabot +* build(deps-dev): bump jest from 27.4.3 to 27.4.4 (#288) by @dependabot +* build(deps-dev): bump @types/lodash from 4.14.177 to 4.14.178 (#283) by @dependabot +* build(deps): bump @types/aws-lambda from 8.10.85 to 8.10.86 (#272) by @dependabot +* build(deps-dev): bump ts-jest from 27.0.7 to 27.1.1 (#271) by @dependabot +* build(deps-dev): bump @types/node from 16.11.11 to 16.11.12 (#270) by @dependabot +* build(deps-dev): bump @typescript-eslint/eslint-plugin from 5.5.0 to 5.6.0 (#273) by @dependabot +* build(deps-dev): bump @typescript-eslint/parser from 5.5.0 to 5.6.0 (#268) by @dependabot +* build(deps-dev): bump @types/node from 16.11.11 to 16.11.12 (#267) by @dependabot +* build(deps-dev): bump eslint from 8.3.0 to 8.4.1 (#266) by @dependabot +* build(deps-dev): bump @typescript-eslint/eslint-plugin from 5.5.0 to 5.6.0 (#265) by @dependabot +* build(deps-dev): bump ts-jest from 27.0.7 to 27.1.0 (#264) by @dependabot +* build(deps): bump @types/aws-lambda from 8.10.85 to 8.10.86 (#263) by @dependabot +* build(deps): bump romeovs/lcov-reporter-action from 0.2.21 to 0.3.1 (#261) by @dependabot +* build(deps-dev): bump @types/jest from 27.0.2 to 27.0.3 (#258) by @dependabot +* build(deps-dev): bump @types/node from 16.11.6 to 16.11.11 (#257) by @dependabot +* build(deps-dev): bump @typescript-eslint/parser from 4.33.0 to 5.5.0 (#256) by @dependabot +* build(deps-dev): bump @types/lodash from 4.14.175 to 4.14.177 (#255) by @dependabot +* build(deps): bump @types/aws-lambda from 8.10.84 to 8.10.85 (#252) by @dependabot +* build(deps-dev): bump jest from 27.3.1 to 27.4.3 (#251) by @dependabot +* build(deps-dev): bump husky from 7.0.2 to 7.0.4 (#243) by @dependabot +* build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.33.0 to 5.5.0 (#253) by @dependabot +* build(deps-dev): bump eslint from 8.1.0 to 8.3.0 (#254) by @dependabot +* build(deps-dev): bump typescript from 4.4.3 to 4.5.2 (#245) by @dependabot +* build(deps-dev): bump ts-node from 10.3.0 to 10.4.0 (#242) by @dependabot +* build(deps-dev): bump ts-jest from 27.0.5 to 27.0.7 (#234) by @dependabot +* build(deps-dev): bump @commitlint/cli from 13.2.1 to 15.0.0 (#244) by @dependabot +* build(deps-dev): bump jest from 27.2.5 to 27.3.1 (#235) by @dependabot +* build(deps-dev): bump eslint from 7.32.0 to 8.1.0 (#239) by @dependabot +* build(deps-dev): bump @types/node from 16.10.3 to 16.11.6 (#240) by @dependabot +* build(deps-dev): bump ts-node from 10.2.1 to 10.3.0 (#226) by @dependabot +* build(deps-dev): bump jest from 27.2.4 to 27.2.5 (#225) by @dependabot +* build(deps-dev): bump @types/aws-lambda from 8.10.83 to 8.10.84 (#223) by @dependabot +* build(deps-dev): bump @commitlint/cli from 13.2.0 to 13.2.1 (#222) by @dependabot +* build(deps-dev): bump jest from 27.2.2 to 27.2.4 (#217) by @dependabot +* build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.32.0 to 4.33.0 (#219) by @dependabot +* build(deps-dev): bump @typescript-eslint/parser from 4.32.0 to 4.33.0 (#220) by @dependabot +* build(deps-dev): bump @types/node from 16.10.1 to 16.10.3 (#221) by @dependabot +* build(deps-dev): bump jest from 27.0.6 to 27.2.2 (#212) by @dependabot +* build(deps-dev): bump ts-jest from 27.0.4 to 27.0.5 (#181) by @dependabot +* build(deps): bump actions/github-script from 4.1 to 5 (#211) by @dependabot +* build(deps-dev): bump typescript from 4.3.5 to 4.4.3 (#199) by @dependabot +* build(deps-dev): bump @types/node from 16.9.6 to 16.10.1 (#213) by @dependabot +* build(deps-dev): bump @types/lodash from 4.14.173 to 4.14.174 (#214) by @dependabot +* build(deps-dev): bump @types/node from 16.9.4 to 16.9.6 (#210) by @dependabot +* build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.30.0 to 4.31.2 (#209) by @dependabot +* build(deps-dev): bump @types/jest from 27.0.1 to 27.0.2 (#208) by @dependabot +* build(deps-dev): bump @types/node from 16.9.2 to 16.9.4 (#205) by @dependabot +* build(deps-dev): bump @typescript-eslint/parser from 4.31.1 to 4.31.2 (#206) by @dependabot +* build(deps-dev): bump @types/node from 16.9.1 to 16.9.2 (#204) by @dependabot +* build(deps-dev): bump @types/lodash from 4.14.172 to 4.14.173 (#203) by @dependabot +* build(deps-dev): bump @types/node from 16.7.2 to 16.9.1 (#202) by @dependabot +* build(deps-dev): bump husky from 7.0.1 to 7.0.2 (#191) by @dependabot +* build(deps-dev): bump @typescript-eslint/parser from 4.29.2 to 4.31.1 (#200) by @dependabot +* build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.29.2 to 4.30.0 (#194) by @dependabot +* build(deps-dev): bump @types/node from 16.6.2 to 16.7.2 (#190) by @dependabot +* build(deps): bump actions/github-script from 4.0.2 to 4.1 (#187) by @dependabot +* build(deps-dev): bump @types/aws-lambda from 8.10.82 to 8.10.83 (#186) by @dependabot +* build(deps): bump actions/github-script from 3.1.0 to 4.0.2 (#179) by @dependabot +* build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.29.1 to 4.29.2 (#180) by @dependabot +* build(deps-dev): bump @types/node from 16.6.1 to 16.6.2 (#184) by @dependabot +* build(deps-dev): bump ts-node from 10.2.0 to 10.2.1 (#183) by @dependabot +* build(deps-dev): bump @typescript-eslint/parser from 4.29.1 to 4.29.2 (#182) by @dependabot +* build(deps-dev): bump @types/jest from 27.0.0 to 27.0.1 (#177) by @dependabot +* build(deps-dev): bump @types/node from 16.6.0 to 16.6.1 (#176) by @dependabot +* build(deps-dev): bump @types/node from 16.4.13 to 16.6.0 (#174) by @dependabot +* build(deps-dev): bump @commitlint/cli from 12.1.4 to 13.1.0 (#172) by @dependabot +* build(deps-dev): bump @types/jest from 26.0.24 to 27.0.0 (#171) by @dependabot +* build(deps-dev): bump @types/aws-lambda from 8.10.81 to 8.10.82 (#170) by @dependabot +* build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.29.0 to 4.29.1 (#167) by @dependabot +* build(deps-dev): bump @typescript-eslint/parser from 4.29.0 to 4.29.1 (#166) by @dependabot +* improv: Use lodash.merge & lodash.clonedeed instead of full lodash in Logger (#159) by @dreamorosi +* build(deps-dev): bump ts-node from 10.1.0 to 10.2.0 (#164) by @dependabot +* build(deps-dev): bump @types/node from 16.4.10 to 16.4.13 (#162) by @dependabot +* build(deps-dev): bump @typescript-eslint/parser from 4.28.5 to 4.29.0 (#156) by @dependabot +* build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.28.5 to 4.29.0 (#157) by @dependabot +* build(deps-dev): bump @types/lodash from 4.14.171 to 4.14.172 (#158) by @dependabot +* build(deps-dev): bump eslint from 7.31.0 to 7.32.0 (#155) by @dependabot +* build(deps-dev): bump @types/node from 16.4.7 to 16.4.10 (#154) by @dependabot +* build(deps-dev): bump @types/node from 16.4.6 to 16.4.7 (#150) by @dependabot +* build(deps-dev): bump @types/node from 16.4.5 to 16.4.6 (#148) by @dependabot +* build(deps-dev): bump @types/node from 16.4.3 to 16.4.5 (#145) by @dependabot +* build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.28.4 to 4.28.5 (#138) by @dependabot +* build(deps-dev): bump @typescript-eslint/parser from 4.28.4 to 4.28.5 (#137) by @dependabot +* build(deps-dev): bump @types/aws-lambda from 8.10.80 to 8.10.81 (#135) by @dependabot +* build(deps-dev): bump @types/node from 16.4.1 to 16.4.3 (#134) by @dependabot +* build(deps-dev): bump @types/node from 16.4.0 to 16.4.1 (#132) by @dependabot +* build(deps-dev): bump @types/aws-lambda from 8.10.79 to 8.10.80 (#128) by @dependabot +* build(deps-dev): bump ts-jest from 27.0.3 to 27.0.4 (#127) by @dependabot +* build(deps-dev): bump @types/node from 16.3.3 to 16.4.0 (#124) by @dependabot +* build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.28.3 to 4.28.4 (#122) by @dependabot +* build(deps-dev): bump @typescript-eslint/parser from 4.28.3 to 4.28.4 (#123) by @dependabot +* build(deps-dev): bump eslint from 7.30.0 to 7.31.0 (#118) by @dependabot +* build(deps-dev): bump @types/node from 16.3.2 to 16.3.3 (#119) by @dependabot +* build(deps-dev): bump @types/aws-lambda from 8.10.78 to 8.10.79 (#114) by @dependabot +* build(deps-dev): bump @types/node from 16.0.0 to 16.3.2 (#113) by @dependabot +* build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.28.2 to 4.28.3 (#112) by @dependabot +* build(deps-dev): bump @typescript-eslint/parser from 4.28.2 to 4.28.3 (#111) by @dependabot +* build(deps-dev): bump ts-node from 10.0.0 to 10.1.0 (#110) by @dependabot +* build(deps-dev): bump @types/lodash from 4.14.170 to 4.14.171 (#105) by @dependabot +* build(deps-dev): bump @types/jest from 26.0.23 to 26.0.24 (#104) by @dependabot +* build(deps-dev): bump @types/aws-lambda from 8.10.77 to 8.10.78 (#103) by @dependabot +* build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.28.1 to 4.28.2 (#100) by @dependabot +* build(deps-dev): bump @typescript-eslint/parser from 4.28.1 to 4.28.2 (#101) by @dependabot +* build(deps-dev): bump @types/node from 15.14.0 to 16.0.0 (#98) by @dependabot +* build(deps-dev): bump eslint from 7.29.0 to 7.30.0 (#99) by @dependabot +* build(deps-dev): bump typescript from 4.3.4 to 4.3.5 (#97) by @dependabot +* build(deps-dev): bump @types/node from 15.12.3 to 15.14.0 (#96) by @dependabot +* build(deps-dev): bump @typescript-eslint/parser from 4.27.0 to 4.28.1 (#94) by @dependabot +* build(deps-dev): bump eslint from 7.28.0 to 7.29.0 (#86) by @dependabot +* build(deps-dev): bump @types/node from 15.12.3 to 15.12.5 (#92) by @dependabot +* build(deps-dev): bump jest from 27.0.4 to 27.0.6 (#93) by @dependabot +* build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.27.0 to 4.28.1 (#95) by @dependabot +* build(deps-dev): bump typescript from 4.3.2 to 4.3.4 (#84) by @dependabot +* build(deps-dev): bump @types/node from 15.12.2 to 15.12.3 (#85) by @dependabot +* build(deps-dev): bump @typescript-eslint/parser from 4.26.1 to 4.27.0 (#81) by @dependabot +* build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.26.1 to 4.27.0 (#82) by @dependabot +* build(deps-dev): bump @typescript-eslint/parser from 4.26.0 to 4.26.1 (#80) by @dependabot +* build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.26.0 to 4.26.1 (#78) by @dependabot +* build(deps-dev): bump @types/node from 15.12.1 to 15.12.2 (#79) by @dependabot +* build(deps-dev): bump jest from 26.6.3 to 27.0.4 (#73) by @dependabot +* build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.25.0 to 4.26.0 (#69) by @dependabot +* build(deps-dev): bump @typescript-eslint/parser from 4.25.0 to 4.26.0 (#68) by @dependabot +* build(deps-dev): bump typescript from 4.2.4 to 4.3.2 (#66) by @dependabot +* build(deps-dev): bump @types/node from 15.3.1 to 15.6.1 (#61) by @dependabot +* build(deps-dev): bump @typescript-eslint/parser from 4.24.0 to 4.25.0 (#62) by @dependabot +* build(deps-dev): bump @types/lodash from 4.14.169 to 4.14.170 (#60) by @dependabot +* build(deps-dev): bump ts-node from 9.1.1 to 10.0.0 (#58) by @dependabot +* build(deps-dev): bump eslint from 7.26.0 to 7.27.0 (#57) by @dependabot +* build(deps-dev): bump @types/node from 15.3.0 to 15.3.1 (#56) by @dependabot +* build(deps-dev): bump @typescript-eslint/parser from 4.23.0 to 4.24.0 (#55) by @dependabot +* build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.23.0 to 4.24.0 (#54) by @dependabot +* build(deps-dev): bump @types/node from 15.0.3 to 15.3.0 (#53) by @dependabot +* build(deps-dev): bump @types/node from 14.14.37 to 15.0.3 (#50) by @dependabot +* build(deps-dev): bump lerna from 3.22.1 to 4.0.0 (#29) by @dependabot +* build(deps-dev): bump @typescript-eslint/parser from 4.21.0 to 4.22.0 (#37) by @dependabot +* build(deps-dev): bump eslint from 7.23.0 to 7.24.0 (#35) by @dependabot +* build(deps): bump romeovs/lcov-reporter-action from v0.2.11 to v0.2.21 (#34) by @dependabot +* build(deps-dev): bump @commitlint/cli from 11.0.0 to 12.1.1 (#33) by @dependabot +* build(deps-dev): bump @types/aws-lambda from 8.10.72 to 8.10.75 (#32) by @dependabot +* build(deps-dev): bump @types/node from 14.14.20 to 14.14.37 (#31) by @dependabot +* build(deps-dev): bump husky from 4.3.7 to 6.0.0 (#30) by @dependabot +* build(deps-dev): bump typescript from 4.1.3 to 4.2.4 (#28) by @dependabot +* build(deps-dev): bump ts-jest from 26.4.4 to 26.5.4 (#27) by @dependabot +* build(deps-dev): bump eslint from 7.17.0 to 7.23.0 (#21) by @dependabot +* build(deps-dev): bump @types/jest from 26.0.20 to 26.0.22 (#22) by @dependabot +* build(deps-dev): bump @typescript-eslint/parser from 4.13.0 to 4.21.0 (#20) by @dependabot +* build(deps-dev): bump @typescript-eslint/eslint-plugin from 4.13.0 to 4.21.0 (#18) by @dependabot +* build(deps-dev): bump @commitlint/config-conventional from 11.0.0 to 12.1.1 (#19) by @dependabot +* docs: updating readme and package.json to work with lerna (#11) by @alan-churley +* chore: lerna downstream dependancy security issues (#15) by @alan-churley +* build(deps): bump ini from 1.3.5 to 1.3.8 (#5) by @dependabot +* build(deps): bump ini from 1.3.5 to 1.3.8 in /packages/logging (#4) by @dependabot +* build(deps): bump ini from 1.3.5 to 1.3.8 in /docs (#3) by @dependabot + +### Contributor List @alan-churley, @bahrmichael, @dreamorosi, @flochaz, @heitorlessa, @ijemmy and @saragerion diff --git a/README.md b/README.md index bde02352be..1fb031b86d 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ # Powertools for AWS Lambda (TypeScript) -![NodeSupport](https://img.shields.io/static/v1?label=node&message=%2018|%2020|%2022&color=green?style=flat-square&logo=node) -![GitHub Release](https://img.shields.io/github/v/release/aws-powertools/powertools-lambda-typescript?style=flat-square) +![NodeSupport](https://img.shields.io/static/v1?label=node&message=%2018|%2020|%2022&style=flat&logo=nodedotjs) +![GitHub Release](https://img.shields.io/github/v/release/aws-powertools/powertools-lambda-typescript?style=flat) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=aws-powertools_powertools-lambda-typescript&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=aws-powertools_powertools-lambda-typescript) [![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=aws-powertools_powertools-lambda-typescript&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=aws-powertools_powertools-lambda-typescript) [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/aws-powertools/powertools-lambda-typescript/badge)](https://api.securityscorecards.dev/projects/github.com/aws-powertools/powertools-lambda-typescript) -[![Join our Discord](https://dcbadge.vercel.app/api/server/B8zZKbbyET?style=flat-square)](https://discord.gg/B8zZKbbyET) +[![Discord](https://img.shields.io/badge/Discord-Join_Community-7289da.svg)](https://discord.gg/B8zZKbbyET) Powertools for AWS Lambda (TypeScript) is a developer toolkit to implement Serverless [best practices and increase developer velocity](https://docs.powertools.aws.dev/lambda/typescript/latest/#features). diff --git a/biome.json b/biome.json index 7d582f3a49..c675fdbf3b 100644 --- a/biome.json +++ b/biome.json @@ -1,12 +1,28 @@ { - "$schema": "https://biomejs.dev/schemas/1.8.3/schema.json", - "organizeImports": { - "enabled": true + "$schema": "https://biomejs.dev/schemas/2.0.6/schema.json", + "assist": { + "actions": { + "source": { + "organizeImports": "on" + } + } }, "linter": { "enabled": true, "rules": { - "recommended": true + "recommended": true, + "style": { + "noParameterAssign": "error", + "useAsConstAssertion": "error", + "useDefaultParameterLast": "error", + "useEnumInitializers": "error", + "useSelfClosingElements": "error", + "useSingleVarDeclarator": "error", + "noUnusedTemplateLiteral": "error", + "useNumberNamespace": "error", + "noInferrableTypes": "error", + "noUselessElse": "error" + } } }, "formatter": { @@ -25,15 +41,24 @@ } }, "files": { - "ignore": [ - "node_modules", - "coverage", - "lib", - "cdk.out", - "site", - ".aws-sam", - "**/*.generated.js", - "**/*.generated.d.ts" + "includes": [ + "**", + "!**/.cache", + "!**/.claude", + "!**/.vscode", + "!**/.amazonq", + "!**/api", + "!**/site", + "!**/.devcontainer", + "!**/node_modules", + "!**/.tsbuildinfo", + "!**/coverage", + "!**/lib", + "!**/cdk.out", + "!**/site", + "!**/.aws-sam", + "!**/*.generated.js", + "!**/*.generated.d.ts" ] } } diff --git a/docs/features/batch.md b/docs/features/batch.md index f1dd9a5da8..ab0d81b568 100644 --- a/docs/features/batch.md +++ b/docs/features/batch.md @@ -108,7 +108,7 @@ Processing batches from SQS works in three stages: 3. Use **`processPartialResponse`** to kick off processing !!! note - By default, the batch processor will process messages in parallel, which does not guarantee the order of processing. If you need to process messages in order, set the [`processInParallel` option to `false`](#sequential-async-processing), or use [`SqsFifoPartialProcessor` for SQS FIFO queues](#fifo-queues). + By default, the batch processor will process messages in parallel, which does not guarantee the order of processing. If you need to process messages in order, set the [`processInParallel` option to `false`](#sequential-processing), or use [`SqsFifoPartialProcessor` for SQS FIFO queues](#fifo-queues). === "index.ts" @@ -235,7 +235,7 @@ By default, we catch any exception raised by your record handler function. This --8<-- ``` - 1. Any exception works here. See [extending BatchProcessorSync section, if you want to override this behavior.](#extending-batchprocessor) + 1. Any exception works here. See [extending `BatchProcessor` section, if you want to override this behavior.](#extending-batchprocessor) 2. Exceptions raised in `recordHandler` will propagate to `process_partial_response`.

We catch them and include each failed batch item identifier in the response dictionary (see `Sample response` tab). @@ -411,7 +411,7 @@ Use the `BatchProcessor` directly in your function to access a list of all retur Within your `recordHandler` function, you might need access to the Lambda context to determine how much time you have left before your function times out. -We can automatically inject the [Lambda context](https://docs.aws.amazon.com/lambda/latest/dg/typescript-context.html){target="_blank"} into your `recordHandler` as optional second argument if you register it when using `BatchProcessorSync` or the `processPartialResponseSync` function. +We can automatically inject the [Lambda context](https://docs.aws.amazon.com/lambda/latest/dg/typescript-context.html){target="_blank"} into your `recordHandler` as optional second argument if you pass it to the `processPartialResponse` function. ```typescript hl_lines="12 27" --8<-- "examples/snippets/batch/accessLambdaContext.ts" @@ -444,7 +444,7 @@ Let's suppose you'd like to add a metric named `BatchRecordFailures` for each ba --8<-- "examples/snippets/batch/extendingFailure.ts" ``` -### Sequential async processing +### Sequential processing By default, the `BatchProcessor` processes records in parallel using `Promise.all()`. However, if you need to preserve the order of records, you can set the `processInParallel` option to `false` to process records sequentially. @@ -452,7 +452,7 @@ By default, the `BatchProcessor` processes records in parallel using `Promise.al When processing records from SQS FIFO queues, we recommend using the [`SqsFifoPartialProcessor`](#fifo-queues) class, which guarantees ordering of records and implements a short-circuit mechanism to skip processing records from a different message group ID. -```typescript hl_lines="8 17" title="Sequential async processing" +```typescript hl_lines="8 17" title="Sequential processing" --8<-- "examples/snippets/batch/sequentialAsyncProcessing.ts" ``` @@ -487,7 +487,7 @@ classDiagram * **`processRecord()`** – If you need to implement asynchronous logic, use this method, otherwise define it in your class with empty logic * **`processRecordSync()`** – handles all processing logic for each individual message of a batch, including calling the `recordHandler` (`this.handler`) -You can then use this class as a context manager, or pass it to `processPartialResponseSync` to process the records in your Lambda handler function. +You can then pass this class to `processPartialResponse` to process the records in your Lambda handler function. ```typescript hl_lines="21 35 55 60 72 85" title="Creating a custom batch processor" --8<-- "examples/snippets/batch/customPartialProcessor.ts" @@ -507,7 +507,7 @@ You can use Tracer to create subsegments for each batch record processed. To do ## Testing your code -As there is no external calls, you can unit test your code with `BatchProcessorSync` quite easily. +As there is no external calls, you can unit test your code with `BatchProcessor` quite easily. **Example**: diff --git a/docs/features/idempotency.md b/docs/features/idempotency.md index 811a409672..9e107738e4 100644 --- a/docs/features/idempotency.md +++ b/docs/features/idempotency.md @@ -144,7 +144,7 @@ You can quickly start by initializing the `DynamoDBPersistenceLayer` class and u === "index.ts" - ```typescript hl_lines="2-3 21 35-38" + ```typescript hl_lines="2-3 21 31-33" --8<-- "examples/snippets/idempotency/makeIdempotentBase.ts" ``` @@ -206,7 +206,7 @@ Similar to the `makeIdempotent` function wrapper, you can quickly make your Lamb === "index.ts" - ```typescript hl_lines="22 36-40" + ```typescript hl_lines="22 33-35" --8<-- "examples/snippets/idempotency/makeHandlerIdempotent.ts" ``` @@ -237,7 +237,7 @@ Imagine the function executes successfully, but the client never receives the re === "index.ts" - ```typescript hl_lines="4 27 49" + ```typescript hl_lines="4 27" --8<-- "examples/snippets/idempotency/makeIdempotentJmes.ts" ``` @@ -304,7 +304,7 @@ If an error is thrown _outside_ the scope of the decorated function and after yo === "Handling exceptions" - ```typescript hl_lines="39-40 47-48" + ```typescript --8<-- "examples/snippets/idempotency/workingWithExceptions.ts" ``` @@ -774,7 +774,7 @@ You can use the `keyPrefix` parameter in any of the idempotency configurations t === "Using a custom prefix with function wrapper" - ```typescript hl_lines="25" + ```typescript hl_lines="21" --8<-- "examples/snippets/idempotency/customKeyPrefixFnWrapper.ts" ``` @@ -864,7 +864,7 @@ Below an example implementation of a custom persistence layer backed by a generi === "CustomPersistenceLayer" - ```typescript hl_lines="9 19 28 35 52 95" + ```typescript hl_lines="9 19 28 35 54 97" --8<-- "examples/snippets/idempotency/advancedBringYourOwnPersistenceLayer.ts" ``` @@ -891,7 +891,7 @@ You can set up a `responseHook` in the `IdempotentConfig` class to manipulate th === "Using an Idempotent Response Hook" - ```typescript hl_lines="16 19 27 56" + ```typescript hl_lines="16 19 27" --8<-- "examples/snippets/idempotency/workingWithResponseHook.ts" ``` diff --git a/docs/features/kafka.md b/docs/features/kafka.md index 25e2428dea..4f288c70cd 100644 --- a/docs/features/kafka.md +++ b/docs/features/kafka.md @@ -333,8 +333,8 @@ When processing large Kafka messages in Lambda, be mindful of memory limitations === "Handling Large Messages" - ```typescript hl_lines="18-20" - --8<-- "examples/snippets/kafka/advancedHandlingLargeMessages.ts:6" + ```typescript hl_lines="22-23" + --8<-- "examples/snippets/kafka/advancedHandlingLargeMessages.ts:9" ``` For large messages, consider these proven approaches: diff --git a/docs/features/metrics.md b/docs/features/metrics.md index e47c6fc791..0af3209add 100644 --- a/docs/features/metrics.md +++ b/docs/features/metrics.md @@ -119,6 +119,18 @@ You can create metrics using the `addMetric` method, and you can create dimensio --8<-- "examples/snippets/metrics/customDimensions.ts" ``` +### Creating dimension sets + +You can create separate dimension sets for your metrics using the `addDimensions` method. This allows you to group metrics by different dimension combinations. + +When you call `addDimensions()`, it creates a new dimension set rather than adding to the existing dimensions. This is useful when you want to track the same metric across different dimension combinations. + +=== "handler.ts" + + ```typescript hl_lines="9 12-15 18-21" + --8<-- "examples/snippets/metrics/dimensionSets.ts" + ``` + !!! tip "Autocomplete Metric Units" Use the `MetricUnit` enum to easily find a supported metric unit by CloudWatch. Alternatively, you can pass the value as a string if you already know them e.g. "Count". diff --git a/docs/features/parser.md b/docs/features/parser.md index b60feed4da..59f961258f 100644 --- a/docs/features/parser.md +++ b/docs/features/parser.md @@ -1,63 +1,57 @@ --- -title: Parser (Zod) +title: Parser (Standard Schema) descrition: Utility --- -This utility provides data validation and parsing using [Zod](https://zod.dev){target="_blank"}, a TypeScript-first schema declaration and validation library. +This utility provides data validation and parsing for [Standard Schema](https://github.com/standard-schema/standard-schema){target="_blank"}, together with a collection of built-in [Zod](https://zod.dev){target="_blank"} schemas and envelopes to parse and unwrap popular AWS event sources payloads. ## Key features -* Define data schema as Zod schema, then parse, validate and extract only what you want -* Built-in envelopes to unwrap and validate popular AWS event sources payloads -* Extend and customize envelopes to fit your needs -* Safe parsing option to avoid throwing errors and custom error handling -* Available for Middy.js middleware and TypeScript method decorators +* Accept a [Standard Schema](https://github.com/standard-schema/standard-schema) and parse incoming payloads +* Built-in Zod schemas and envelopes to unwrap and validate popular AWS event sources payloads +* Extend and customize built-in Zod schemas to fit your needs +* Safe parsing option to avoid throwing errors and allow custom error handling +* Available as Middy.js middleware and TypeScript class method decorator ## Getting started ```bash -npm install @aws-lambda-powertools/parser zod@~3 +npm install @aws-lambda-powertools/parser zod ``` -!!! warning "Zod version" - The package is compatible with Zod v3 only.
- We're considering Zod v4 support and we'd love to hear your feedback. Please [leave a comment here](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3951) to let us know your thoughts. - -## Define schema - -You can define your schema using Zod: - -```typescript title="schema.ts" ---8<-- "examples/snippets/parser/schema.ts" -``` - -This is a schema for `Order` object using Zod. -You can create complex schemas by using nested objects, arrays, unions, and other types, see [Zod documentation](https://zod.dev) for more details. - ## Parse events You can parse inbound events using `parser` decorator, Middy.js middleware, or [manually](#manual-parsing) using built-in envelopes and schemas. -Both are also able to parse either an object or JSON string as an input. -???+ warning - The decorator and middleware will replace the event object with the parsed schema if successful. - Be cautious when using multiple decorators that expect event to have a specific structure, the order of evaluation for decorators is from bottom to top. +When using the decorator or middleware, you can specify a schema to parse the event, this can be a [built-in Zod schema](#built-in-schemas) or a custom schema you defined. Custom schemas can be defined using Zod or any other [Standard Schema compatible library](https://standardschema.dev/#what-schema-libraries-implement-the-spec){target="_blank"}. -=== "Middy middleware" +=== "Middy.js middleware with Zod schema" ```typescript hl_lines="22" --8<-- "examples/snippets/parser/middy.ts" ``` +=== "Middy.js middleware with Valibot schema" + ```typescript hl_lines="30" + --8<-- "examples/snippets/parser/middyValibot.ts" + ``` + === "Decorator" + !!! warning + The decorator and middleware will replace the event object with the parsed schema if successful. + Be cautious when using multiple decorators that expect an event to have a specific structure, the order of evaluation for decorators is from the inner to the outermost decorator. + ```typescript hl_lines="25" --8<-- "examples/snippets/parser/decorator.ts" ``` ## Built-in schemas -**Parser** comes with the following built-in schemas: +**Parser** comes with the following built-in Zod schemas: + +!!! note "Looking for other libraries?" + The built-in schemas are defined using Zod, if you would like us to support other libraries like [valibot](https://valibot.dev){target="_blank"} please [open an issue](https://github.com/aws-powertools/powertools-lambda-typescript/issues/new?template=feature_request.yml){target="_blank"} and we will consider it based on the community's feedback. | Model name | Description | | -------------------------------------------- | ------------------------------------------------------------------------------------- | @@ -198,7 +192,7 @@ This can become difficult quite quickly. Parser simplifies the development throu Envelopes can be used via envelope parameter available in middy and decorator. Here's an example of parsing a custom schema in an event coming from EventBridge, where all you want is what's inside the detail key. -=== "Middy middleware" +=== "Middy.js middleware" ```typescript hl_lines="23" --8<-- "examples/snippets/parser/envelopeMiddy.ts" ``` @@ -221,24 +215,27 @@ We have also complex envelopes that parse the payload from a string, decode base ### Built-in envelopes -Parser comes with the following built-in envelopes: +Parser comes with the following built-in Zod envelopes: + +!!! note "Looking for other libraries?" + The built-in schemas are defined using Zod, if you would like us to support other libraries like [valibot](https://valibot.dev){target="_blank"} please [open an issue](https://github.com/aws-powertools/powertools-lambda-typescript/issues/new?template=feature_request.yml){target="_blank"} and we will consider it based on the community's feedback. | Envelope name | Behaviour | | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **apiGatewayEnvelope** | 1. Parses data using `APIGatewayProxyEventSchema`.
2. Parses `body` key using your schema and returns it. | -| **apiGatewayV2Envelope** | 1. Parses data using `APIGatewayProxyEventV2Schema`.
2. Parses `body` key using your schema and returns it. | -| **cloudWatchEnvelope** | 1. Parses data using `CloudwatchLogsSchema` which will base64 decode and decompress it.
2. Parses records in `message` key using your schema and return them in a list. | -| **dynamoDBStreamEnvelope** | 1. Parses data using `DynamoDBStreamSchema`.
2. Parses records in `NewImage` and `OldImage` keys using your schema.
3. Returns a list with a dictionary containing `NewImage` and `OldImage` keys | -| **eventBridgeEnvelope** | 1. Parses data using `EventBridgeSchema`.
2. Parses `detail` key using your schema and returns it. | -| **kafkaEnvelope** | 1. Parses data using `KafkaRecordSchema`.
2. Parses `value` key using your schema and returns it. | -| **kinesisEnvelope** | 1. Parses data using `KinesisDataStreamSchema` which will base64 decode it.
2. Parses records in `Records` key using your schema and returns them in a list. | -| **kinesisFirehoseEnvelope** | 1. Parses data using `KinesisFirehoseSchema` which will base64 decode it.
2. Parses records in `Records` key using your schema and returns them in a list. | -| **lambdaFunctionUrlEnvelope** | 1. Parses data using `LambdaFunctionUrlSchema`.
2. Parses `body` key using your schema and returns it. | -| **snsEnvelope** | 1. Parses data using `SnsSchema`.
2. Parses records in `body` key using your schema and return them in a list. | -| **snsSqsEnvelope** | 1. Parses data using `SqsSchema`.
2. Parses SNS records in `body` key using `SnsNotificationSchema`.
3. Parses data in `Message` key using your schema and return them in a list. | -| **sqsEnvelope** | 1. Parses data using `SqsSchema`.
2. Parses records in `body` key using your schema and return them in a list. | -| **vpcLatticeEnvelope** | 1. Parses data using `VpcLatticeSchema`.
2. Parses `value` key using your schema and returns it. | -| **vpcLatticeV2Envelope** | 1. Parses data using `VpcLatticeSchema`.
2. Parses `value` key using your schema and returns it. | +| **ApiGatewayEnvelope** | 1. Parses data using `APIGatewayProxyEventSchema`.
2. Parses `body` key using your schema and returns it. | +| **ApiGatewayV2Envelope** | 1. Parses data using `APIGatewayProxyEventV2Schema`.
2. Parses `body` key using your schema and returns it. | +| **CloudWatchEnvelope** | 1. Parses data using `CloudwatchLogsSchema` which will base64 decode and decompress it.
2. Parses records in `message` key using your schema and return them in a list. | +| **DynamoDBStreamEnvelope** | 1. Parses data using `DynamoDBStreamSchema`.
2. Parses records in `NewImage` and `OldImage` keys using your schema.
3. Returns a list with a dictionary containing `NewImage` and `OldImage` keys | +| **EventBridgeEnvelope** | 1. Parses data using `EventBridgeSchema`.
2. Parses `detail` key using your schema and returns it. | +| **KafkaEnvelope** | 1. Parses data using `KafkaRecordSchema`.
2. Parses `value` key using your schema and returns it. | +| **KinesisEnvelope** | 1. Parses data using `KinesisDataStreamSchema` which will base64 decode it.
2. Parses records in `Records` key using your schema and returns them in a list. | +| **KinesisFirehoseEnvelope** | 1. Parses data using `KinesisFirehoseSchema` which will base64 decode it.
2. Parses records in `Records` key using your schema and returns them in a list. | +| **LambdaFunctionUrlEnvelope** | 1. Parses data using `LambdaFunctionUrlSchema`.
2. Parses `body` key using your schema and returns it. | +| **SnsEnvelope** | 1. Parses data using `SnsSchema`.
2. Parses records in `body` key using your schema and return them in a list. | +| **SnsSqsEnvelope** | 1. Parses data using `SqsSchema`.
2. Parses SNS records in `body` key using `SnsNotificationSchema`.
3. Parses data in `Message` key using your schema and return them in a list. | +| **SnsEnvelope** | 1. Parses data using `SqsSchema`.
2. Parses records in `body` key using your schema and return them in a list. | +| **VpcLatticeEnvelope** | 1. Parses data using `VpcLatticeSchema`.
2. Parses `value` key using your schema and returns it. | +| **VpcLatticeV2Envelope** | 1. Parses data using `VpcLatticeSchema`.
2. Parses `value` key using your schema and returns it. | ## Safe parsing @@ -248,7 +245,7 @@ The handler `event` object will be replaced with `ParsedResult The `ParsedResult` object will have `success`, `data`, or `error` and `originalEvent` fields, depending on the outcome. If the parsing is successful, the `data` field will contain the parsed event, otherwise you can access the `error` field and the `originalEvent` to handle the error and recover the original event. -=== "Middy middleware" +=== "Middy.js middleware" ```typescript hl_lines="23 28 32-33" --8<-- "examples/snippets/parser/safeParseMiddy.ts" ``` @@ -320,10 +317,11 @@ Use `z.infer` to extract the type of the schema, so you can use types during dev ### Compatibility with `@types/aws-lambda` -The package `@types/aws-lambda` is a popular project that contains type definitions for many AWS service event invocations. -Powertools parser utility also bring AWS Lambda event types based on the built-in schema definitions. +The package `@types/aws-lambda` is a popular project that contains type definitions for many AWS service event invocations, support for these types is provided on a best effort basis. + +We recommend using the types provided by the Parser utility under `@aws-powertools/parser/types` when using the built-in schemas and envelopes, as they are inferred directly from the Zod schemas and are more accurate. -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). +If you encounter any type compatibility issues with `@types/aws-lambda`, please [submit an issue](https://github.com/aws-powertools/powertools-lambda-typescript/issues/new/choose). ## Testing your code diff --git a/docs/features/tracer.md b/docs/features/tracer.md index b30e1080b1..94c1081dd2 100644 --- a/docs/features/tracer.md +++ b/docs/features/tracer.md @@ -363,7 +363,7 @@ Tracer exposes a `getRootXrayTraceId()` method that allows you to retrieve the [ === "index.ts" - ```typescript hl_lines="9" + ```typescript hl_lines="13" --8<-- "examples/snippets/tracer/accessRootTraceId.ts" ``` diff --git a/docs/getting-started/lambda-layers.md b/docs/getting-started/lambda-layers.md index fb2fe8439b..dd23d2e620 100644 --- a/docs/getting-started/lambda-layers.md +++ b/docs/getting-started/lambda-layers.md @@ -19,41 +19,41 @@ We publish the Lambda Layer for Powertools for AWS Lambda in all commercial regi | Region | Layer ARN | | ---------------- | ---------------------------------------------------------------------------------------------------------- | -| `us-east-1` | [arn:aws:lambda:us-east-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `us-east-2` | [arn:aws:lambda:us-east-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `us-west-1` | [arn:aws:lambda:us-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `us-west-2` | [arn:aws:lambda:us-west-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `ap-south-1` | [arn:aws:lambda:ap-south-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `ap-south-2` | [arn:aws:lambda:ap-south-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `ap-east-1` | [arn:aws:lambda:ap-east-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `ap-northeast-1` | [arn:aws:lambda:ap-northeast-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `ap-northeast-2` | [arn:aws:lambda:ap-northeast-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `ap-northeast-3` | [arn:aws:lambda:ap-northeast-3:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `ap-southeast-1` | [arn:aws:lambda:ap-southeast-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `ap-southeast-2` | [arn:aws:lambda:ap-southeast-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `ap-southeast-3` | [arn:aws:lambda:ap-southeast-3:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `ap-southeast-4` | [arn:aws:lambda:ap-southeast-4:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `ap-southeast-5` | [arn:aws:lambda:ap-southeast-5:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `ap-southeast-7` | [arn:aws:lambda:ap-southeast-7:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `eu-central-1` | [arn:aws:lambda:eu-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `eu-central-2` | [arn:aws:lambda:eu-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `eu-west-1` | [arn:aws:lambda:eu-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `eu-west-2` | [arn:aws:lambda:eu-west-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `eu-west-3` | [arn:aws:lambda:eu-west-3:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `eu-north-1` | [arn:aws:lambda:eu-north-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `eu-south-1` | [arn:aws:lambda:eu-south-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `eu-south-2` | [arn:aws:lambda:eu-south-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `ca-central-1` | [arn:aws:lambda:ca-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `ca-west-1` | [arn:aws:lambda:ca-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `sa-east-1` | [arn:aws:lambda:sa-east-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `af-south-1` | [arn:aws:lambda:af-south-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `me-south-1` | [arn:aws:lambda:me-south-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `me-central-1` | [arn:aws:lambda:me-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `il-central-1` | [arn:aws:lambda:il-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `mx-central-1` | [arn:aws:lambda:mx-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `us-gov-west-1` | [arn:aws-us-gov:lambda:us-gov-west-1:165093116878:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `us-gov-east-1` | [arn:aws-us-gov:lambda:us-gov-east-1:165087284144:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | -| `cn-north-1` | [arn:aws-aws-cn:lambda:cn-north-1:498634801083:layer:AWSLambdaPowertoolsTypeScriptV2:29](#){: .copyMe} | +| `us-east-1` | [arn:aws:lambda:us-east-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `us-east-2` | [arn:aws:lambda:us-east-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `us-west-1` | [arn:aws:lambda:us-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `us-west-2` | [arn:aws:lambda:us-west-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `ap-south-1` | [arn:aws:lambda:ap-south-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `ap-south-2` | [arn:aws:lambda:ap-south-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `ap-east-1` | [arn:aws:lambda:ap-east-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `ap-northeast-1` | [arn:aws:lambda:ap-northeast-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `ap-northeast-2` | [arn:aws:lambda:ap-northeast-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `ap-northeast-3` | [arn:aws:lambda:ap-northeast-3:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `ap-southeast-1` | [arn:aws:lambda:ap-southeast-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `ap-southeast-2` | [arn:aws:lambda:ap-southeast-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `ap-southeast-3` | [arn:aws:lambda:ap-southeast-3:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `ap-southeast-4` | [arn:aws:lambda:ap-southeast-4:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `ap-southeast-5` | [arn:aws:lambda:ap-southeast-5:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `ap-southeast-7` | [arn:aws:lambda:ap-southeast-7:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `eu-central-1` | [arn:aws:lambda:eu-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `eu-central-2` | [arn:aws:lambda:eu-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `eu-west-1` | [arn:aws:lambda:eu-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `eu-west-2` | [arn:aws:lambda:eu-west-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `eu-west-3` | [arn:aws:lambda:eu-west-3:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `eu-north-1` | [arn:aws:lambda:eu-north-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `eu-south-1` | [arn:aws:lambda:eu-south-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `eu-south-2` | [arn:aws:lambda:eu-south-2:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `ca-central-1` | [arn:aws:lambda:ca-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `ca-west-1` | [arn:aws:lambda:ca-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `sa-east-1` | [arn:aws:lambda:sa-east-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `af-south-1` | [arn:aws:lambda:af-south-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `me-south-1` | [arn:aws:lambda:me-south-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `me-central-1` | [arn:aws:lambda:me-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `il-central-1` | [arn:aws:lambda:il-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `mx-central-1` | [arn:aws:lambda:mx-central-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `us-gov-west-1` | [arn:aws-us-gov:lambda:us-gov-west-1:165093116878:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `us-gov-east-1` | [arn:aws-us-gov:lambda:us-gov-east-1:165087284144:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | +| `cn-north-1` | [arn:aws-aws-cn:lambda:cn-north-1:498634801083:layer:AWSLambdaPowertoolsTypeScriptV2:30](#){: .copyMe} | ### Lookup Layer ARN via AWS SSM Parameter Store @@ -71,7 +71,7 @@ Parameter: LastModifiedDate: '2025-02-11T11:08:45.070000+01:00' Name: /aws/service/powertools/typescript/generic/all/2.14.0 Type: String - Value: arn:aws:lambda:eu-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29 + Value: arn:aws:lambda:eu-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30 Version: 1 ``` @@ -91,7 +91,7 @@ Change `{aws::region}` to your AWS region, e.g. `eu-west-1`, and run the followi === "AWS CLI command to download Lambda Layer content" ```bash - aws lambda get-layer-version-by-arn --arn arn:aws:lambda:{aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29 --region {aws::region} + aws lambda get-layer-version-by-arn --arn arn:aws:lambda:{aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30 --region {aws::region} ``` === "AWS CLI output" @@ -104,7 +104,7 @@ Change `{aws::region}` to your AWS region, e.g. `eu-west-1`, and run the followi "CodeSize": 3548324 }, "LayerArn": "arn:aws:lambda:eu-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2", - "LayerVersionArn": "arn:aws:lambda:eu-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29", + "LayerVersionArn": "arn:aws:lambda:eu-west-1:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30", "Description": "Powertools for AWS Lambda (TypeScript) version 2.18.0", "CreatedDate": "2025-04-08T07:38:30.424+0000", "Version": 24, @@ -139,7 +139,7 @@ Change `{aws::region}` to your AWS region, e.g. `eu-west-1`, and run the followi const powertoolsLayer = LayerVersion.fromLayerVersionArn( this, 'PowertoolsLayer', - `arn:aws:lambda:${Stack.of(this).region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29` + `arn:aws:lambda:${Stack.of(this).region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30` ); new NodejsFunction(this, 'Function', { @@ -209,7 +209,7 @@ Change `{aws::region}` to your AWS region, e.g. `eu-west-1`, and run the followi Type: AWS::Serverless::Function Properties: Layers: - - !Sub arn:aws:lambda:${AWS::Region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29 + - !Sub arn:aws:lambda:${AWS::Region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30 ``` You can also use AWS SSM Parameter Store to dynamically add Powertools for AWS Lambda and resolve the Layer ARN from SSM Parameter Store in your code, allowing you to pin to `latest` or a specific Powertools for AWS Lambda version. @@ -248,7 +248,7 @@ Change `{aws::region}` to your AWS region, e.g. `eu-west-1`, and run the followi hello: handler: lambda_function.lambda_handler layers: - - arn:aws:lambda:${aws:region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29 + - arn:aws:lambda:${aws:region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30 ``` 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: @@ -283,7 +283,7 @@ Change `{aws::region}` to your AWS region, e.g. `eu-west-1`, and run the followi role = ... handler = "index.handler" runtime = "nodejs22.x" - layers = ["arn:aws:lambda:{aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29"] + layers = ["arn:aws:lambda:{aws::region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30"] source_code_hash = filebase64sha256("lambda_function_payload.zip") } ``` @@ -318,7 +318,7 @@ Change `{aws::region}` to your AWS region, e.g. `eu-west-1`, and run the followi const lambdaFunction = new aws.lambda.Function('function', { layers: [ - pulumi.interpolate`arn:aws:lambda:${aws.getRegionOutput().name}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29` + pulumi.interpolate`arn:aws:lambda:${aws.getRegionOutput().name}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30` ], code: new pulumi.asset.FileArchive('lambda_function_payload.zip'), tracingConfig: { @@ -342,7 +342,7 @@ Change `{aws::region}` to your AWS region, e.g. `eu-west-1`, and run the followi name: "my-function", layers: { "@aws-lambda-powertools/*": - "arn:aws:lambda:${AWS::Region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:29", + "arn:aws:lambda:${AWS::Region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:30", }, }); ``` diff --git a/docs/javascript/extra.js b/docs/javascript/extra.js index 5cbe967089..a7b76cf2b1 100644 --- a/docs/javascript/extra.js +++ b/docs/javascript/extra.js @@ -1,91 +1,94 @@ -const Amplify = window.aws_amplify.Amplify -const Analytics = Amplify.Analytics -const KinesisFirehoseProvider = window.aws_amplify.AWSKinesisFirehoseProvider +const Amplify = window.aws_amplify.Amplify; +const Analytics = Amplify.Analytics; +const KinesisFirehoseProvider = window.aws_amplify.AWSKinesisFirehoseProvider; const awsconfig = { - "aws_project_region": "eu-west-1", - "aws_cognito_identity_pool_id": "eu-west-1:3df3caec-4bb6-4891-b154-ee940c8264b8", - "aws_cognito_region": "eu-west-1", - "aws_kinesis_firehose_stream_name": "ClickStreamKinesisFirehose-OGX7PQdrynUo", + aws_project_region: 'eu-west-1', + aws_cognito_identity_pool_id: + 'eu-west-1:3df3caec-4bb6-4891-b154-ee940c8264b8', + aws_cognito_region: 'eu-west-1', + aws_kinesis_firehose_stream_name: 'ClickStreamKinesisFirehose-OGX7PQdrynUo', }; -const RUNTIME = "typescript" -const BASE_ORIGIN = "docs.powertools.aws.dev" +const RUNTIME = 'typescript'; +const BASE_ORIGIN = 'docs.powertools.aws.dev'; function copyToClipboard(e) { - e.preventDefault() - navigator.clipboard.writeText(e.target.textContent) - alert$.next("Copied to clipboard") + e.preventDefault(); + navigator.clipboard.writeText(e.target.textContent); + alert$.next('Copied to clipboard'); } function enableSearchOnBlurElement() { - if (document.location.hostname != BASE_ORIGIN) return // prevent unnecessary data - /* Register handler to log search on blur */ - document.addEventListener("DOMContentLoaded", function () { - recordPageView({ - prevLocation: document.referrer - }) - if (document.forms.search) { - let query = document.forms.search.query - query.addEventListener("blur", function () { - // If Search result is ever actionable - // we should populate `value` - if (this.value) { - let path = document.location.pathname; - console.info(`Search value: ${this.value}`) - recordPageView({ - searchPattern: this.value - }) - } - }) - } - }) + if (document.location.hostname !== BASE_ORIGIN) return; // prevent unnecessary data + /* Register handler to log search on blur */ + document.addEventListener('DOMContentLoaded', () => { + recordPageView({ + prevLocation: document.referrer, + }); + if (document.forms.search) { + const query = document.forms.search.query; + query.addEventListener('blur', function () { + // If Search result is ever actionable + // we should populate `value` + if (this.value) { + console.info(`Search value: ${this.value}`); + recordPageView({ + searchPattern: this.value, + }); + } + }); + } + }); - // Register handler for page sections when browser history is changed - window.onpopstate = function (event) { - recordPageView({ - prevLocation: document.referrer - }) - }; + // Register handler for page sections when browser history is changed + window.onpopstate = () => { + recordPageView({ + prevLocation: document.referrer, + }); + }; } function enableClipboardElements() { - let copyElements = document.querySelectorAll('.copyMe'); - copyElements.forEach(element => { - element.addEventListener('click', copyToClipboard); - }) + const copyElements = document.querySelectorAll('.copyMe'); + copyElements.forEach((element) => { + element.addEventListener('click', copyToClipboard); + }); } const attachListeners = () => { - enableSearchOnBlurElement() - enableClipboardElements() -} + enableSearchOnBlurElement(); + enableClipboardElements(); +}; const init = () => { - Analytics.addPluggable(new KinesisFirehoseProvider()) - Amplify.configure(awsconfig); + Analytics.addPluggable(new KinesisFirehoseProvider()); + Amplify.configure(awsconfig); - Analytics.configure({ - AWSKinesisFirehose: { - region: awsconfig.aws_project_region - } - }) + Analytics.configure({ + AWSKinesisFirehose: { + region: awsconfig.aws_project_region, + }, + }); - attachListeners() -} + attachListeners(); +}; -const recordPageView = ({prevLocation, searchPattern}) => { - Analytics.record({ - data: { - // Do not count page view for search - url: searchPattern ? null : window.location.href, - section: searchPattern ? null : location.pathname, - previous: prevLocation || null, - search: searchPattern || null, - language: RUNTIME - }, - streamName: awsconfig.aws_kinesis_firehose_stream_name - }, 'AWSKinesisFirehose') -} +const recordPageView = ({ prevLocation, searchPattern }) => { + Analytics.record( + { + data: { + // Do not count page view for search + url: searchPattern ? null : window.location.href, + section: searchPattern ? null : location.pathname, + previous: prevLocation || null, + search: searchPattern || null, + language: RUNTIME, + }, + streamName: awsconfig.aws_kinesis_firehose_stream_name, + }, + 'AWSKinesisFirehose' + ); +}; -init() +init(); diff --git a/docs/media/join-discord.svg b/docs/media/join-discord.svg new file mode 100644 index 0000000000..4073abc271 --- /dev/null +++ b/docs/media/join-discord.svg @@ -0,0 +1,20 @@ + + Discord: Join Community + + + + + + + + + + + + + + Discord + + Join Community + + \ No newline at end of file diff --git a/docs/roadmap.md b/docs/roadmap.md index 97a56ab973..5c78cb940c 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -54,10 +54,11 @@ To close the gap between Powertools for AWS Lambda (Python) and Powertools for A In addition to the Event Handler REST feature mentioned above, we will also be working on the following: -- [ ] [Implement resolver for Amazon Bedrock Agents Functions](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3710){target="_blank"} +- [x] [Implement resolver for Amazon Bedrock Agents Functions](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3710){target="_blank"} - [x] [Implement resolver for AWS AppSync Events API](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3857){target="_blank"} - [ ] Implement resolver for Amazon Bedrock Agents OpenAPI - [x] [Create RFC for AppSync GraphQL resolver](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3885){target="_blank"} +- [x] [Implement resolver for AWS AppSync GraphQL API](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1166){target="_blank"} ##### Validation @@ -77,7 +78,7 @@ For the Validation utility, we'll experiment with a community-driven approach to To streghten our offering for more advanced customers as well as enterprises, we will be working on a set of activities that will help us better support their needs and practices. These include: - [x] [Publish Lambda layers to GovCloud](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3423){target="_blank"} -- [ ] [Publish Lambda layers to China regions](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3920){target="_blank"} +- [x] [Publish Lambda layers to China regions](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3920){target="_blank"} - [ ] Improve OSS supply chain posture (Q2) by making sure we're auditing our dependencies for compatible licenses and include NOTICE files in our Lambda layers - [ ] Create a new "Advanced Use Cases" section in the docs - to help customers with more complex use cases, such as running Powertools for AWS Lambda in container environments - [ ] Set up CI/CD for performance testing @@ -99,7 +100,7 @@ To ensure we are attracting tomorrow's customers as well as new contributors to You can help us prioritize by [upvoting existing feature requests](https://github.com/aws-powertools/powertools-lambda-typescript/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc++label%3Atype%2Ffeature-request+), leaving a comment on what use cases it could unblock for you, and by joining our discussions on Discord. -[![Join our Discord](https://dcbadge.vercel.app/api/server/B8zZKbbyET)](https://discord.gg/B8zZKbbyET){target="_blank"} +[![Discord](./media/join-discord.svg)](https://discord.gg/B8zZKbbyET) ### Roadmap status definition diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index a31caef5de..4901162e1a 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -1,55 +1,56 @@ .md-grid { - max-width: 90vw + max-width: 90vw; } .highlight .hll { - [data-md-color-scheme="default"] { - background-color: lavender; - } + [data-md-color-scheme="default"] { + background-color: lavender; + } } .md-typeset table:not([class]) { - font-size: 0.75rem + font-size: 0.75rem; } .md-typeset a { - border-bottom: 0.1px dashed black + border-bottom: 0.1px dashed black; } .md-typeset table:not([class]) { - font-size: 0.75rem + font-size: 0.75rem; } .md-tabs__link { - font-size: 0.8rem + font-size: 0.8rem; } .md-tabs__link--active { - border-bottom: 6px solid white + border-bottom: 6px solid white; } .md-nav__link--active { - font-weight: bold + font-weight: bold; } -.md-typeset .admonition, .md-typeset details { - font-size: 0.70rem +.md-typeset .admonition, +.md-typeset details { + font-size: 0.7rem; } [data-md-color-scheme="slate"] { - --md-typeset-a-color: rgb(28, 152, 152) + --md-typeset-a-color: rgb(28, 152, 152); } .copyMe { - cursor: pointer; - border-bottom: 0.1px dashed black; + cursor: pointer; + border-bottom: 0.1px dashed black; } .copyMe::after { - content: ' 📋'; + content: " 📋"; } p > code, li > code { - font-weight: bold -} \ No newline at end of file + font-weight: bold; +} diff --git a/examples/app/CHANGELOG.md b/examples/app/CHANGELOG.md index c32caf4e91..d277585a6e 100644 --- a/examples/app/CHANGELOG.md +++ b/examples/app/CHANGELOG.md @@ -1,256 +1,133 @@ # Change Log -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.24.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.23.0...v2.24.0) (2025-07-15) + +**Note:** Version bump only for this package # [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) **Note:** Version bump only for package powertools-sample-app - - - - # [2.22.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.21.0...v2.22.0) (2025-06-20) **Note:** Version bump only for package powertools-sample-app - - - - # [2.21.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.20.0...v2.21.0) (2025-06-03) **Note:** Version bump only for package powertools-sample-app - - - - # [2.20.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.1...v2.20.0) (2025-05-20) **Note:** Version bump only for package powertools-sample-app - - - - ## [2.19.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.0...v2.19.1) (2025-05-05) **Note:** Version bump only for package powertools-sample-app - - - - # [2.19.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.18.0...v2.19.0) (2025-04-24) **Note:** Version bump only for package powertools-sample-app - - - - # [2.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.17.0...v2.18.0) (2025-04-07) **Note:** Version bump only for package powertools-sample-app - - - - # [2.17.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.16.0...v2.17.0) (2025-03-25) **Note:** Version bump only for package powertools-sample-app - - - - # [2.16.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.15.0...v2.16.0) (2025-03-07) **Note:** Version bump only for package powertools-sample-app - - - - # [2.15.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.14.0...v2.15.0) (2025-02-25) **Note:** Version bump only for package powertools-sample-app - - - - # [2.14.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.1...v2.14.0) (2025-02-10) **Note:** Version bump only for package powertools-sample-app - - - - ## [2.13.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.0...v2.13.1) (2025-01-28) **Note:** Version bump only for package powertools-sample-app - - - - # [2.13.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.12.0...v2.13.0) (2025-01-14) **Note:** Version bump only for package powertools-sample-app - - - - # [2.12.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.11.0...v2.12.0) (2024-12-17) **Note:** Version bump only for package powertools-sample-app - - - - # [2.11.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.10.0...v2.11.0) (2024-11-20) **Note:** Version bump only for package powertools-sample-app - - - - # [2.10.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.9.0...v2.10.0) (2024-10-22) **Note:** Version bump only for package powertools-sample-app - - - - # [2.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.8.0...v2.9.0) (2024-10-07) **Note:** Version bump only for package powertools-sample-app - - - - # [2.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.7.0...v2.8.0) (2024-09-16) **Note:** Version bump only for package powertools-sample-app - - - - # [2.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.6.0...v2.7.0) (2024-08-08) **Note:** Version bump only for package powertools-sample-app - - - - # [2.6.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.5.0...v2.6.0) (2024-07-25) **Note:** Version bump only for package powertools-sample-app - - - - # [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 - - - - # [2.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.2.0...v2.3.0) (2024-06-27) **Note:** Version bump only for package powertools-sample-app - - - - # [2.2.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.1...v2.2.0) (2024-06-13) **Note:** Version bump only for package powertools-sample-app - - - - ## [2.1.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.0...v2.1.1) (2024-05-14) **Note:** Version bump only for package powertools-sample-app - - - - # [2.1.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.0.4...v2.1.0) (2024-04-17) **Note:** Version bump only for package powertools-sample-app - - - - ## 2.0.4 (2024-04-10) **Note:** Version bump only for package powertools-sample-app - - - - ## 2.0.3 (2024-03-15) **Note:** Version bump only for package cdk-sample - - - - ## 2.0.2 (2024-03-05) **Note:** Version bump only for package cdk-sample - - - - ## 2.0.1 (2024-03-04) **Note:** Version bump only for package cdk-sample - - - - # [2.0.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.18.1...v2.0.0) (2024-03-04) **Note:** Version bump only for package cdk-sample - - - - ## 1.18.1 (2024-02-20) **Note:** Version bump only for package cdk-sample diff --git a/examples/app/cdk.json b/examples/app/cdk.json index 35c81a9ac2..de10882522 100644 --- a/examples/app/cdk.json +++ b/examples/app/cdk.json @@ -1,9 +1,7 @@ { "app": "tsx cdk/example-app.ts", "watch": { - "include": [ - "**" - ], + "include": ["**"], "exclude": [ "README.md", "cdk*.json", diff --git a/examples/app/functions/commons/powertools/logger.ts b/examples/app/functions/commons/powertools/logger.ts index be5ac19db6..fb93b347f5 100644 --- a/examples/app/functions/commons/powertools/logger.ts +++ b/examples/app/functions/commons/powertools/logger.ts @@ -1,6 +1,6 @@ -import { Logger } from '@aws-lambda-powertools/logger'; import { PT_VERSION as version } from '@aws-lambda-powertools/commons'; -import { serviceName, defaultValues } from './constants.js'; +import { Logger } from '@aws-lambda-powertools/logger'; +import { defaultValues, serviceName } from './constants.js'; /** * Create logger instance with centralized configuration so that diff --git a/examples/app/functions/commons/powertools/metrics.ts b/examples/app/functions/commons/powertools/metrics.ts index 76196508a1..77dcbf1240 100644 --- a/examples/app/functions/commons/powertools/metrics.ts +++ b/examples/app/functions/commons/powertools/metrics.ts @@ -1,5 +1,5 @@ import { Metrics } from '@aws-lambda-powertools/metrics'; -import { serviceName, metricsNamespace, defaultValues } from './constants.js'; +import { defaultValues, metricsNamespace, serviceName } from './constants.js'; /** * Create metrics instance with centralized configuration so that diff --git a/examples/app/functions/get-all-items.ts b/examples/app/functions/get-all-items.ts index 2e1d169ff3..d662dc9460 100644 --- a/examples/app/functions/get-all-items.ts +++ b/examples/app/functions/get-all-items.ts @@ -1,6 +1,3 @@ -import { scanItemsDynamoDB } from '#helpers/scan-items'; -import { assertIsError } from '#helpers/utils'; -import { logger, metrics, tracer } from '#powertools'; import { injectLambdaContext } from '@aws-lambda-powertools/logger/middleware'; import { logMetrics } from '@aws-lambda-powertools/metrics/middleware'; import { captureLambdaHandler } from '@aws-lambda-powertools/tracer/middleware'; @@ -10,6 +7,9 @@ import type { APIGatewayProxyResult, Context, } from 'aws-lambda'; +import { scanItemsDynamoDB } from '#helpers/scan-items'; +import { assertIsError } from '#helpers/utils'; +import { logger, metrics, tracer } from '#powertools'; /* * diff --git a/examples/app/functions/get-by-id.ts b/examples/app/functions/get-by-id.ts index 3ee5fb9cd2..5ecb975019 100644 --- a/examples/app/functions/get-by-id.ts +++ b/examples/app/functions/get-by-id.ts @@ -1,13 +1,13 @@ -import { ItemNotFound } from '#errors'; -import { getItemDynamoDB } from '#helpers/get-item'; -import { assertIsError } from '#helpers/utils'; -import { logger, metrics, tracer } from '#powertools'; import type { LambdaInterface } from '@aws-lambda-powertools/commons/types'; import type { APIGatewayProxyEvent, APIGatewayProxyResult, Context, } from 'aws-lambda'; +import { ItemNotFound } from '#errors'; +import { getItemDynamoDB } from '#helpers/get-item'; +import { assertIsError } from '#helpers/utils'; +import { logger, metrics, tracer } from '#powertools'; /* * diff --git a/examples/app/functions/process-items-stream.ts b/examples/app/functions/process-items-stream.ts index 83b89b419e..a8610f75ab 100644 --- a/examples/app/functions/process-items-stream.ts +++ b/examples/app/functions/process-items-stream.ts @@ -1,6 +1,4 @@ -import { assertIsError } from '#helpers/utils'; -import { logger } from '#powertools/logger'; -import { tracer } from '#powertools/tracer'; +import { equal } from 'node:assert/strict'; import { BatchProcessor, EventType, @@ -14,7 +12,9 @@ import type { DynamoDBRecord, DynamoDBStreamEvent, } from 'aws-lambda'; -import { equal } from 'node:assert/strict'; +import { assertIsError } from '#helpers/utils'; +import { logger } from '#powertools/logger'; +import { tracer } from '#powertools/tracer'; const processor = new BatchProcessor(EventType.DynamoDBStreams); diff --git a/examples/app/functions/put-item.ts b/examples/app/functions/put-item.ts index aed36c92c4..df0a044264 100644 --- a/examples/app/functions/put-item.ts +++ b/examples/app/functions/put-item.ts @@ -1,8 +1,3 @@ -import { ddbClient } from '#clients/dynamodb'; -import { getSSMStringParameter } from '#helpers/get-string-param'; -import { putItemInDynamoDB } from '#helpers/put-item'; -import { assertIsError, getStringFromEnv } from '#helpers/utils'; -import { logger, metrics, tracer } from '#powertools'; import { IdempotencyConfig, makeIdempotent, @@ -15,6 +10,11 @@ import type { Context, } from 'aws-lambda'; import type { Subsegment } from 'aws-xray-sdk-core'; +import { ddbClient } from '#clients/dynamodb'; +import { getSSMStringParameter } from '#helpers/get-string-param'; +import { putItemInDynamoDB } from '#helpers/put-item'; +import { assertIsError, getStringFromEnv } from '#helpers/utils'; +import { logger, metrics, tracer } from '#powertools'; // Initialize the persistence store for idempotency const ssmParameterName = getStringFromEnv('SSM_PARAMETER_NAME'); diff --git a/examples/app/package.json b/examples/app/package.json index 76ebfff1d2..7bbbbee069 100644 --- a/examples/app/package.json +++ b/examples/app/package.json @@ -1,6 +1,6 @@ { "name": "powertools-sample-app", - "version": "2.23.0", + "version": "2.24.0", "author": { "name": "Amazon Web Services", "url": "https://aws.amazon.com" @@ -29,8 +29,8 @@ }, "devDependencies": { "@types/aws-lambda": "^8.10.150", - "@types/node": "24.0.8", - "aws-cdk-lib": "^2.202.0", + "@types/node": "24.0.13", + "aws-cdk-lib": "^2.204.0", "constructs": "^10.4.2", "source-map-support": "^0.5.21", "tsx": "^4.20.3", @@ -38,20 +38,20 @@ "vitest": "^3.0.5" }, "dependencies": { - "@aws-lambda-powertools/batch": "^2.23.0", - "@aws-lambda-powertools/idempotency": "^2.23.0", - "@aws-lambda-powertools/logger": "^2.23.0", - "@aws-lambda-powertools/metrics": "^2.23.0", - "@aws-lambda-powertools/parameters": "^2.23.0", - "@aws-lambda-powertools/tracer": "^2.23.0", - "@aws-sdk/client-ssm": "^3.840.0", - "@aws-sdk/lib-dynamodb": "^3.840.0", + "@aws-lambda-powertools/batch": "^2.24.0", + "@aws-lambda-powertools/idempotency": "^2.24.0", + "@aws-lambda-powertools/logger": "^2.24.0", + "@aws-lambda-powertools/metrics": "^2.24.0", + "@aws-lambda-powertools/parameters": "^2.24.0", + "@aws-lambda-powertools/tracer": "^2.24.0", + "@aws-sdk/client-ssm": "^3.844.0", + "@aws-sdk/lib-dynamodb": "^3.844.0", "@middy/core": "^4.7.0", "@types/aws-lambda": "^8.10.150", - "@types/node": "24.0.8", - "aws-cdk": "^2.1020.0", + "@types/node": "24.0.13", + "aws-cdk": "^2.1020.2", "constructs": "^10.4.2", - "esbuild": "^0.25.5", + "esbuild": "^0.25.6", "typescript": "^5.8.3" } } diff --git a/examples/app/tests/tsconfig.json b/examples/app/tests/tsconfig.json index 03963f6b04..45ba862a85 100644 --- a/examples/app/tests/tsconfig.json +++ b/examples/app/tests/tsconfig.json @@ -4,8 +4,5 @@ "rootDir": "../", "noEmit": true }, - "include": [ - "../src/**/*", - "./**/*", - ] -} \ No newline at end of file + "include": ["../src/**/*", "./**/*"] +} diff --git a/examples/app/tsconfig.json b/examples/app/tsconfig.json index 635d0bf5a5..68d5df7bdf 100644 --- a/examples/app/tsconfig.json +++ b/examples/app/tsconfig.json @@ -1,42 +1,31 @@ { - "$schema": "https://json.schemastore.org/tsconfig", - "compilerOptions": { - "esModuleInterop": true, - "skipLibCheck": true, - "target": "es2022", - "moduleDetection": "force", - "isolatedModules": true, - "strict": true, - "noUncheckedIndexedAccess": true, - "moduleResolution": "NodeNext", - "module": "NodeNext", - "outDir": "lib/esm", - "sourceMap": true, - "experimentalDecorators": true, - "declaration": true, - "declarationMap": true, - "removeComments": false, - "pretty": true, - "lib": [ - "ES2022" - ], - "rootDir": "." - }, - "include": [ - "functions/**/*", - "cdk/**/*", - "test/**/*", - "bin/**/*", - ], - "exclude": [ - "./node_modules" - ], - "watchOptions": { - "watchFile": "useFsEvents", - "watchDirectory": "useFsEvents", - "fallbackPolling": "dynamicPriority" - }, - "types": [ - "node" - ] -} \ No newline at end of file + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "esModuleInterop": true, + "skipLibCheck": true, + "target": "es2022", + "moduleDetection": "force", + "isolatedModules": true, + "strict": true, + "noUncheckedIndexedAccess": true, + "moduleResolution": "NodeNext", + "module": "NodeNext", + "outDir": "lib/esm", + "sourceMap": true, + "experimentalDecorators": true, + "declaration": true, + "declarationMap": true, + "removeComments": false, + "pretty": true, + "lib": ["ES2022"], + "rootDir": "." + }, + "include": ["functions/**/*", "cdk/**/*", "test/**/*", "bin/**/*"], + "exclude": ["./node_modules"], + "watchOptions": { + "watchFile": "useFsEvents", + "watchDirectory": "useFsEvents", + "fallbackPolling": "dynamicPriority" + }, + "types": ["node"] +} diff --git a/examples/snippets/CHANGELOG.md b/examples/snippets/CHANGELOG.md index 883d23af6e..d62144b4d0 100644 --- a/examples/snippets/CHANGELOG.md +++ b/examples/snippets/CHANGELOG.md @@ -1,299 +1,166 @@ # Change Log -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.24.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.23.0...v2.24.0) (2025-07-15) + +**Note:** Version bump only for this package # [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) **Note:** Version bump only for package code-snippets - - - - # [2.22.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.21.0...v2.22.0) (2025-06-20) **Note:** Version bump only for package code-snippets - - - - # [2.21.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.20.0...v2.21.0) (2025-06-03) **Note:** Version bump only for package code-snippets - - - - # [2.20.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.1...v2.20.0) (2025-05-20) **Note:** Version bump only for package code-snippets - - - - ## [2.19.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.0...v2.19.1) (2025-05-05) **Note:** Version bump only for package code-snippets - - - - # [2.19.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.18.0...v2.19.0) (2025-04-24) - ### Features * **event-handler:** AppSync Events resolver ([#3858](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3858)) ([01f8a68](https://github.com/aws-powertools/powertools-lambda-typescript/commit/01f8a687a0c033cdc5d55c50bc7e6d0566f485cb)) - - - - # [2.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.17.0...v2.18.0) (2025-04-07) **Note:** Version bump only for package code-snippets - - - - # [2.17.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.16.0...v2.17.0) (2025-03-25) - ### Bug Fixes * **logger:** correctly refresh sample rate ([#3722](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3722)) ([2692ca4](https://github.com/aws-powertools/powertools-lambda-typescript/commit/2692ca4d1b15763936659b05e1830d998a4d2020)) * **parser:** ddb base schema + other exports ([#3741](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3741)) ([51a3410](https://github.com/aws-powertools/powertools-lambda-typescript/commit/51a3410be8502496362d5ed13a64fe55691604ba)) - ### Features * **logger:** set correlation ID in logs ([#3726](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3726)) ([aa74fc8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/aa74fc8548ccb8cb313ffd1742184c66e8d6c22c)) * **metrics:** allow setting functionName via constructor parameter and environment variable ([#3696](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3696)) ([3176fa0](https://github.com/aws-powertools/powertools-lambda-typescript/commit/3176fa08e1886d5c86e7b327134cc988b82cf8d8)) - - - - # [2.16.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.15.0...v2.16.0) (2025-03-07) - ### Features * **logger:** refresh sample rate calculation before each invocation ([#3672](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3672)) ([8c8d6b2](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8c8d6b2ea4ccd473f56b05913169cc5995765562)) - - - - # [2.15.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.14.0...v2.15.0) (2025-02-25) - ### Features * **logger:** refresh sample rate calculation per invocation ([#3644](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3644)) ([1d66a2a](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1d66a2a0d0af36d6c8aa86b0c559f8489fe9ef77)) - - - - # [2.14.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.1...v2.14.0) (2025-02-10) **Note:** Version bump only for package code-snippets - - - - ## [2.13.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.0...v2.13.1) (2025-01-28) **Note:** Version bump only for package code-snippets - - - - # [2.13.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.12.0...v2.13.0) (2025-01-14) - ### Features * **parser:** `DynamoDBMarshalled` helper to parse DynamoDB data structure ([#3442](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3442)) ([e154e58](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e154e58986187d8210d18f6ca79d8b710d87d600)) - - - - # [2.12.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.11.0...v2.12.0) (2024-12-17) **Note:** Version bump only for package code-snippets - - - - # [2.11.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.10.0...v2.11.0) (2024-11-20) - ### Features * **batch:** Async Processing of Records for for SQS Fifo ([#3160](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3160)) ([e73b575](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e73b575b784b7a59ca8cde02d4ca51ec97789d19)) * **metrics:** ability to set custom timestamp with `setTimestamp` for metrics ([#3310](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3310)) ([0fb94c3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/0fb94c38cbead6333ff4a17354c81ce73fe51afd)) - - - - # [2.10.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.9.0...v2.10.0) (2024-10-22) **Note:** Version bump only for package code-snippets - - - - # [2.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.8.0...v2.9.0) (2024-10-07) - ### Features * **batch:** sequential async processing of records for `BatchProcessor` ([#3109](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3109)) ([e31279a](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e31279af90446050a7974fbe25c34758f64915f9)) * **idempotency:** ability to specify JMESPath custom functions ([#3150](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3150)) ([869b6fc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/869b6fced659ad820ffe79a0b905022061570974)) * **idempotency:** manipulate idempotent response via response hook ([#3071](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3071)) ([f7c1769](https://github.com/aws-powertools/powertools-lambda-typescript/commit/f7c176901a36698f591d897c2abde54cf30c9ea9)) - - - - # [2.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.7.0...v2.8.0) (2024-09-16) - ### Features * **logger:** introduce log key reordering functionality ([#2736](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2736)) ([9677258](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9677258f3c872400fca89b625760b7a45f923212)) * **parameters:** adds setParameter function to store SSM parameters ([#3020](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3020)) ([8fd5479](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8fd5479c6da2d60921df92fe7e5e72a0e03d5745)) - - - - # [2.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.6.0...v2.7.0) (2024-08-08) - ### Features * **parser:** add helper function to handle JSON stringified fields ([#2901](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2901)) ([806b884](https://github.com/aws-powertools/powertools-lambda-typescript/commit/806b884f51684fa4654d357fafdf8ebeda4de01b)) - - - - # [2.6.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.5.0...v2.6.0) (2024-07-25) **Note:** Version bump only for package code-snippets - - - - # [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) - ### Features * **batch:** add option to not throw `FullBatchFailureError` when the entire batch fails ([#2711](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2711)) ([74198ef](https://github.com/aws-powertools/powertools-lambda-typescript/commit/74198ef1ec1d11267813d2f4b6dd5f4c5692f7d4)) * **logger:** time zone aware timestamp in Logger ([#2710](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2710)) ([9fe4c75](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9fe4c754960a07aad008ff4ada63cf68aa9ba89a)) - - - - # [2.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.2.0...v2.3.0) (2024-06-27) **Note:** Version bump only for package code-snippets - - - - # [2.2.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.1...v2.2.0) (2024-06-13) - ### Features * **batch:** add option to continue processing other group IDs on failure in `SqsFifoPartialProcessor` ([#2590](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2590)) ([a615c24](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a615c24108c4653be4c62d8488092fc08a4a3cc3)) - - - - ## [2.1.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.0...v2.1.1) (2024-05-14) **Note:** Version bump only for package code-snippets - - - - # [2.1.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.0.4...v2.1.0) (2024-04-17) - ### Features * **idempotency:** add custom JMESPath functions ([#2364](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2364)) ([9721e7c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9721e7c01fc010944eb477bdbc24b9e06a5c4571)) - - - - ## 2.0.4 (2024-04-10) **Note:** Version bump only for package docs - - - - ## 2.0.3 (2024-03-15) **Note:** Version bump only for package docs - - - - ## 2.0.2 (2024-03-05) **Note:** Version bump only for package docs - - - - ## 2.0.1 (2024-03-04) **Note:** Version bump only for package docs - - - - # [2.0.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.18.1...v2.0.0) (2024-03-04) **Note:** Version bump only for package docs diff --git a/examples/snippets/batch/extendingFailure.ts b/examples/snippets/batch/extendingFailure.ts index 7db64cc1b3..a40900abbc 100644 --- a/examples/snippets/batch/extendingFailure.ts +++ b/examples/snippets/batch/extendingFailure.ts @@ -8,7 +8,7 @@ import type { FailureResponse, } from '@aws-lambda-powertools/batch/types'; import { Logger } from '@aws-lambda-powertools/logger'; -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; import type { SQSHandler, SQSRecord } from 'aws-lambda'; class MyProcessor extends BatchProcessor { diff --git a/examples/snippets/batch/gettingStartedSQSFifo.ts b/examples/snippets/batch/gettingStartedSQSFifo.ts index 5920480cf6..ab320087ed 100644 --- a/examples/snippets/batch/gettingStartedSQSFifo.ts +++ b/examples/snippets/batch/gettingStartedSQSFifo.ts @@ -1,6 +1,6 @@ import { - SqsFifoPartialProcessorAsync, processPartialResponse, + SqsFifoPartialProcessorAsync, } from '@aws-lambda-powertools/batch'; import { Logger } from '@aws-lambda-powertools/logger'; import type { SQSHandler, SQSRecord } from 'aws-lambda'; diff --git a/examples/snippets/batch/gettingStartedSQSFifoSkipGroupOnError.ts b/examples/snippets/batch/gettingStartedSQSFifoSkipGroupOnError.ts index d772ef83e0..8ce1bf6440 100644 --- a/examples/snippets/batch/gettingStartedSQSFifoSkipGroupOnError.ts +++ b/examples/snippets/batch/gettingStartedSQSFifoSkipGroupOnError.ts @@ -1,6 +1,6 @@ import { - SqsFifoPartialProcessorAsync, processPartialResponse, + SqsFifoPartialProcessorAsync, } from '@aws-lambda-powertools/batch'; import { Logger } from '@aws-lambda-powertools/logger'; import type { diff --git a/examples/snippets/event-handler/appsync-events/gettingStartedOnSubscribe.ts b/examples/snippets/event-handler/appsync-events/gettingStartedOnSubscribe.ts index abd8ba8ec4..ee98e1c839 100644 --- a/examples/snippets/event-handler/appsync-events/gettingStartedOnSubscribe.ts +++ b/examples/snippets/event-handler/appsync-events/gettingStartedOnSubscribe.ts @@ -1,5 +1,5 @@ import { AppSyncEventsResolver } from '@aws-lambda-powertools/event-handler/appsync-events'; -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; import type { Context } from 'aws-lambda'; const metrics = new Metrics({ diff --git a/examples/snippets/event-handler/appsync-events/gettingStartedOnSubscribeDecorator.ts b/examples/snippets/event-handler/appsync-events/gettingStartedOnSubscribeDecorator.ts index bbcc0b81bd..51789b43ec 100644 --- a/examples/snippets/event-handler/appsync-events/gettingStartedOnSubscribeDecorator.ts +++ b/examples/snippets/event-handler/appsync-events/gettingStartedOnSubscribeDecorator.ts @@ -1,6 +1,6 @@ import { AppSyncEventsResolver } from '@aws-lambda-powertools/event-handler/appsync-events'; import type { AppSyncEventsSubscribeEvent } from '@aws-lambda-powertools/event-handler/types'; -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; import type { Context } from 'aws-lambda'; const metrics = new Metrics({ diff --git a/examples/snippets/event-handler/appsync-events/samples/allOrNothingErrorResponse.json b/examples/snippets/event-handler/appsync-events/samples/allOrNothingErrorResponse.json index 18742c255b..2989c70159 100644 --- a/examples/snippets/event-handler/appsync-events/samples/allOrNothingErrorResponse.json +++ b/examples/snippets/event-handler/appsync-events/samples/allOrNothingErrorResponse.json @@ -1,3 +1,3 @@ { "error": "Error - An unexpected error occurred" -} \ No newline at end of file +} diff --git a/examples/snippets/event-handler/appsync-events/samples/debugLogExcerpt.json b/examples/snippets/event-handler/appsync-events/samples/debugLogExcerpt.json index b667127c10..f1cec02089 100644 --- a/examples/snippets/event-handler/appsync-events/samples/debugLogExcerpt.json +++ b/examples/snippets/event-handler/appsync-events/samples/debugLogExcerpt.json @@ -14,4 +14,4 @@ "sampling_rate": 0, "xray_trace_id": "1-68079892-6a1723770bc0b1f348d9a7ad" } -] \ No newline at end of file +] diff --git a/examples/snippets/event-handler/appsync-events/samples/errorHandlingWithAggregateResponse.json b/examples/snippets/event-handler/appsync-events/samples/errorHandlingWithAggregateResponse.json index 51396a3d0a..3807e5e18e 100644 --- a/examples/snippets/event-handler/appsync-events/samples/errorHandlingWithAggregateResponse.json +++ b/examples/snippets/event-handler/appsync-events/samples/errorHandlingWithAggregateResponse.json @@ -14,4 +14,4 @@ "id": "2" } ] -} \ No newline at end of file +} diff --git a/examples/snippets/event-handler/appsync-events/samples/errorHandlingWithIndividualItemsResponse.json b/examples/snippets/event-handler/appsync-events/samples/errorHandlingWithIndividualItemsResponse.json index e35b577092..d2033f18d5 100644 --- a/examples/snippets/event-handler/appsync-events/samples/errorHandlingWithIndividualItemsResponse.json +++ b/examples/snippets/event-handler/appsync-events/samples/errorHandlingWithIndividualItemsResponse.json @@ -11,4 +11,4 @@ "id": "2" } ] -} \ No newline at end of file +} diff --git a/examples/snippets/event-handler/appsync-events/samples/gettingStartedRequest.json b/examples/snippets/event-handler/appsync-events/samples/gettingStartedRequest.json index 9e009f51ba..29ce168d24 100644 --- a/examples/snippets/event-handler/appsync-events/samples/gettingStartedRequest.json +++ b/examples/snippets/event-handler/appsync-events/samples/gettingStartedRequest.json @@ -11,10 +11,7 @@ "info": { "channel": { "path": "/default/channel", - "segments": [ - "default", - "channel" - ] + "segments": ["default", "channel"] }, "channelNamespace": { "name": "default" @@ -39,4 +36,4 @@ "id": "2" } ] -} \ No newline at end of file +} diff --git a/examples/snippets/event-handler/appsync-events/samples/gettingStartedResponse.json b/examples/snippets/event-handler/appsync-events/samples/gettingStartedResponse.json index e3b94c060c..53e1e4d76d 100644 --- a/examples/snippets/event-handler/appsync-events/samples/gettingStartedResponse.json +++ b/examples/snippets/event-handler/appsync-events/samples/gettingStartedResponse.json @@ -13,4 +13,4 @@ "id": "2" } ] -} \ No newline at end of file +} diff --git a/examples/snippets/event-handler/appsync-events/samples/gettingStartedResponseWithError.json b/examples/snippets/event-handler/appsync-events/samples/gettingStartedResponseWithError.json index e35b577092..d2033f18d5 100644 --- a/examples/snippets/event-handler/appsync-events/samples/gettingStartedResponseWithError.json +++ b/examples/snippets/event-handler/appsync-events/samples/gettingStartedResponseWithError.json @@ -11,4 +11,4 @@ "id": "2" } ] -} \ No newline at end of file +} diff --git a/examples/snippets/event-handler/appsync-events/samples/onPublishEvent.json b/examples/snippets/event-handler/appsync-events/samples/onPublishEvent.json index 1d92f612dc..7d048d2e72 100644 --- a/examples/snippets/event-handler/appsync-events/samples/onPublishEvent.json +++ b/examples/snippets/event-handler/appsync-events/samples/onPublishEvent.json @@ -10,10 +10,7 @@ "info": { "channel": { "path": "/default/foo", - "segments": [ - "default", - "foo" - ] + "segments": ["default", "foo"] }, "channelNamespace": { "name": "default" @@ -44,4 +41,4 @@ "id": "8bb2983a-0967-45a0-8243-0aeb8c83d80e" } ] -} \ No newline at end of file +} diff --git a/examples/snippets/event-handler/appsync-events/samples/onSubscribeEvent.json b/examples/snippets/event-handler/appsync-events/samples/onSubscribeEvent.json index 509f4b838a..4cbc418808 100644 --- a/examples/snippets/event-handler/appsync-events/samples/onSubscribeEvent.json +++ b/examples/snippets/event-handler/appsync-events/samples/onSubscribeEvent.json @@ -10,10 +10,7 @@ "info": { "channel": { "path": "/default/bar", - "segments": [ - "default", - "bar" - ] + "segments": ["default", "bar"] }, "channelNamespace": { "name": "default" @@ -25,4 +22,4 @@ "stash": {}, "outErrors": [], "events": null -} \ No newline at end of file +} diff --git a/examples/snippets/event-handler/appsync-graphql/samples/debugLogExcerpt.json b/examples/snippets/event-handler/appsync-graphql/samples/debugLogExcerpt.json index 79a5d8ae06..f958aea649 100644 --- a/examples/snippets/event-handler/appsync-graphql/samples/debugLogExcerpt.json +++ b/examples/snippets/event-handler/appsync-graphql/samples/debugLogExcerpt.json @@ -25,4 +25,4 @@ "correlation_id": "Root=1-68653697-3623822a02e171272e2ecfe4", "id": "42" } -] \ No newline at end of file +] diff --git a/examples/snippets/event-handler/appsync-graphql/templates/advancedNestedMappingsSchema.graphql b/examples/snippets/event-handler/appsync-graphql/templates/advancedNestedMappingsSchema.graphql index a72ae629b4..911ab46bb6 100644 --- a/examples/snippets/event-handler/appsync-graphql/templates/advancedNestedMappingsSchema.graphql +++ b/examples/snippets/event-handler/appsync-graphql/templates/advancedNestedMappingsSchema.graphql @@ -18,4 +18,4 @@ type Merchant { name: String! description: String locations: [Location] -} \ No newline at end of file +} diff --git a/examples/snippets/event-handler/appsync-graphql/templates/gettingStartedSchema.graphql b/examples/snippets/event-handler/appsync-graphql/templates/gettingStartedSchema.graphql index 803b02969a..6f1306c513 100644 --- a/examples/snippets/event-handler/appsync-graphql/templates/gettingStartedSchema.graphql +++ b/examples/snippets/event-handler/appsync-graphql/templates/gettingStartedSchema.graphql @@ -18,4 +18,4 @@ type Todo { userId: String title: String completed: Boolean -} \ No newline at end of file +} diff --git a/examples/snippets/event-handler/bedrock-agents/stopConversation.ts b/examples/snippets/event-handler/bedrock-agents/stopConversation.ts index 0dbdd6fb59..446520628a 100644 --- a/examples/snippets/event-handler/bedrock-agents/stopConversation.ts +++ b/examples/snippets/event-handler/bedrock-agents/stopConversation.ts @@ -10,7 +10,7 @@ app.tool<{ city: string }>( async ({ city }, { event }) => { try { throw new Error('Simulated error for demonstration purposes'); - } catch (error) { + } catch { const { sessionAttributes, promptSessionAttributes, diff --git a/examples/snippets/getting-started/patterns-middyjs.ts b/examples/snippets/getting-started/patterns-middyjs.ts index ece2f97266..d83ae6cb3e 100644 --- a/examples/snippets/getting-started/patterns-middyjs.ts +++ b/examples/snippets/getting-started/patterns-middyjs.ts @@ -14,6 +14,6 @@ export const handler = middy() .use(captureLambdaHandler(tracer)) .use(injectLambdaContext(logger)) .use(logMetrics(metrics)) - .handler(async (event: unknown) => { + .handler(async (_event: unknown) => { // Your business logic here }); diff --git a/examples/snippets/idempotency/advancedBringYourOwnPersistenceLayer.ts b/examples/snippets/idempotency/advancedBringYourOwnPersistenceLayer.ts index 5b27814a72..025ebdf884 100644 --- a/examples/snippets/idempotency/advancedBringYourOwnPersistenceLayer.ts +++ b/examples/snippets/idempotency/advancedBringYourOwnPersistenceLayer.ts @@ -45,7 +45,9 @@ class CustomPersistenceLayer extends BasePersistenceLayer { ...(item as unknown as IdempotencyRecordOptions), }); } catch (error) { - throw new IdempotencyItemNotFoundError(); + throw new IdempotencyItemNotFoundError('Item not found in store', { + cause: error, + }); } } @@ -64,7 +66,7 @@ class CustomPersistenceLayer extends BasePersistenceLayer { const ttl = record.expiryTimestamp ? Math.floor(new Date(record.expiryTimestamp * 1000).getTime() / 1000) - - Math.floor(new Date().getTime() / 1000) + Math.floor(Date.now() / 1000) : this.getExpiresAfterSeconds(); let existingItem: ProviderItem | undefined; diff --git a/examples/snippets/idempotency/advancedBringYourOwnPersistenceLayerUsage.ts b/examples/snippets/idempotency/advancedBringYourOwnPersistenceLayerUsage.ts index d85d4e70c4..ab0edb8196 100644 --- a/examples/snippets/idempotency/advancedBringYourOwnPersistenceLayerUsage.ts +++ b/examples/snippets/idempotency/advancedBringYourOwnPersistenceLayerUsage.ts @@ -38,16 +38,12 @@ export const handler = async ( ): Promise => { config.registerLambdaContext(context); - try { - const transactionId = randomUUID(); - const payment = await createSubscriptionPayment(transactionId, event); + const transactionId = randomUUID(); + const payment = await createSubscriptionPayment(transactionId, event); - return { - paymentId: payment.id, - message: 'success', - statusCode: 200, - }; - } catch (error) { - throw new Error('Error creating payment'); - } + return { + paymentId: payment.id, + message: 'success', + statusCode: 200, + }; }; diff --git a/examples/snippets/idempotency/customKeyPrefixDecorator.ts b/examples/snippets/idempotency/customKeyPrefixDecorator.ts index 407e328ade..e83a64331a 100644 --- a/examples/snippets/idempotency/customKeyPrefixDecorator.ts +++ b/examples/snippets/idempotency/customKeyPrefixDecorator.ts @@ -12,18 +12,14 @@ class Lambda { persistenceStore, keyPrefix: 'createSubscriptionPayment', }) - async handler(event: unknown, context: Context) { - try { - // ... create payment + async handler(_event: unknown, _context: Context) { + // ... create payment - return { - paymentId: randomUUID(), - message: 'success', - statusCode: 200, - }; - } catch (error) { - throw new Error('Error creating payment'); - } + return { + paymentId: randomUUID(), + message: 'success', + statusCode: 200, + }; } } diff --git a/examples/snippets/idempotency/customKeyPrefixFnWrapper.ts b/examples/snippets/idempotency/customKeyPrefixFnWrapper.ts index 0395ff3e9f..75bbea4f99 100644 --- a/examples/snippets/idempotency/customKeyPrefixFnWrapper.ts +++ b/examples/snippets/idempotency/customKeyPrefixFnWrapper.ts @@ -8,17 +8,13 @@ const persistenceStore = new DynamoDBPersistenceLayer({ export const handler = makeIdempotent( async () => { - try { - // ... create payment + // ... create payment - return { - paymentId: randomUUID(), - message: 'success', - statusCode: 200, - }; - } catch (error) { - throw new Error('Error creating payment'); - } + return { + paymentId: randomUUID(), + message: 'success', + statusCode: 200, + }; }, { persistenceStore, diff --git a/examples/snippets/idempotency/customKeyPrefixMiddleware.ts b/examples/snippets/idempotency/customKeyPrefixMiddleware.ts index 9505ec75ea..f93a2df657 100644 --- a/examples/snippets/idempotency/customKeyPrefixMiddleware.ts +++ b/examples/snippets/idempotency/customKeyPrefixMiddleware.ts @@ -15,15 +15,11 @@ export const handler = middy() }) ) .handler(async () => { - try { - // ... create payment + // ... create payment - return { - paymentId: randomUUID(), - message: 'success', - statusCode: 200, - }; - } catch (error) { - throw new Error('Error creating payment'); - } + return { + paymentId: randomUUID(), + message: 'success', + statusCode: 200, + }; }); diff --git a/examples/snippets/idempotency/customizePersistenceLayer.ts b/examples/snippets/idempotency/customizePersistenceLayer.ts index 7d5d6010d9..effbc7f06a 100644 --- a/examples/snippets/idempotency/customizePersistenceLayer.ts +++ b/examples/snippets/idempotency/customizePersistenceLayer.ts @@ -16,17 +16,13 @@ const persistenceStore = new DynamoDBPersistenceLayer({ export const handler = middy( async (_event: Request, _context: Context): Promise => { - try { - // ... create payment + // ... create payment - return { - paymentId: '1234567890', - message: 'success', - statusCode: 200, - }; - } catch (error) { - throw new Error('Error creating payment'); - } + return { + paymentId: '1234567890', + message: 'success', + statusCode: 200, + }; } ).use( makeHandlerIdempotent({ diff --git a/examples/snippets/idempotency/makeHandlerIdempotent.ts b/examples/snippets/idempotency/makeHandlerIdempotent.ts index 6336d3a1ed..07dea5402b 100644 --- a/examples/snippets/idempotency/makeHandlerIdempotent.ts +++ b/examples/snippets/idempotency/makeHandlerIdempotent.ts @@ -21,17 +21,13 @@ const createSubscriptionPayment = async ( export const handler = middy( async (event: Request, _context: Context): Promise => { - try { - const payment = await createSubscriptionPayment(event); + const payment = await createSubscriptionPayment(event); - return { - paymentId: payment.id, - message: 'success', - statusCode: 200, - }; - } catch (error) { - throw new Error('Error creating payment'); - } + return { + paymentId: payment.id, + message: 'success', + statusCode: 200, + }; } ).use( makeHandlerIdempotent({ diff --git a/examples/snippets/idempotency/makeIdempotentAnyFunction.ts b/examples/snippets/idempotency/makeIdempotentAnyFunction.ts index bb93d4bb20..a54304c9bd 100644 --- a/examples/snippets/idempotency/makeIdempotentAnyFunction.ts +++ b/examples/snippets/idempotency/makeIdempotentAnyFunction.ts @@ -42,18 +42,15 @@ export const handler = async ( context: Context ): Promise => { config.registerLambdaContext(context); - try { - const transactionId = randomUUID(); - const payment = await createSubscriptionPayment(transactionId, event); - await reportSubscriptionMetrics(transactionId, event.user); + const transactionId = randomUUID(); + const payment = await createSubscriptionPayment(transactionId, event); - return { - paymentId: payment.id, - message: 'success', - statusCode: 200, - }; - } catch (error) { - throw new Error('Error creating payment'); - } + await reportSubscriptionMetrics(transactionId, event.user); + + return { + paymentId: payment.id, + message: 'success', + statusCode: 200, + }; }; diff --git a/examples/snippets/idempotency/makeIdempotentBase.ts b/examples/snippets/idempotency/makeIdempotentBase.ts index 1aa8ae451a..7a40118b9f 100644 --- a/examples/snippets/idempotency/makeIdempotentBase.ts +++ b/examples/snippets/idempotency/makeIdempotentBase.ts @@ -20,17 +20,13 @@ const createSubscriptionPayment = async ( export const handler = makeIdempotent( async (event: Request, _context: Context): Promise => { - try { - const payment = await createSubscriptionPayment(event); + const payment = await createSubscriptionPayment(event); - return { - paymentId: payment.id, - message: 'success', - statusCode: 200, - }; - } catch (error) { - throw new Error('Error creating payment'); - } + return { + paymentId: payment.id, + message: 'success', + statusCode: 200, + }; }, { persistenceStore, diff --git a/examples/snippets/idempotency/makeIdempotentJmes.ts b/examples/snippets/idempotency/makeIdempotentJmes.ts index 17072ea0d8..c3a569cfe7 100644 --- a/examples/snippets/idempotency/makeIdempotentJmes.ts +++ b/examples/snippets/idempotency/makeIdempotentJmes.ts @@ -29,20 +29,16 @@ const config = new IdempotencyConfig({ export const handler = makeIdempotent( async (event: Request, _context: Context): Promise => { - try { - const payment = await createSubscriptionPayment( - event.user, - event.productId - ); + const payment = await createSubscriptionPayment( + event.user, + event.productId + ); - return { - paymentId: payment.id, - message: 'success', - statusCode: 200, - }; - } catch (error) { - throw new Error('Error creating payment'); - } + return { + paymentId: payment.id, + message: 'success', + statusCode: 200, + }; }, { persistenceStore, diff --git a/examples/snippets/idempotency/makeIdempotentLambdaContext.ts b/examples/snippets/idempotency/makeIdempotentLambdaContext.ts index 0b92dfc21f..a2de43f6a8 100644 --- a/examples/snippets/idempotency/makeIdempotentLambdaContext.ts +++ b/examples/snippets/idempotency/makeIdempotentLambdaContext.ts @@ -36,16 +36,13 @@ export const handler = async ( ): Promise => { // Register the Lambda context to the IdempotencyConfig instance config.registerLambdaContext(context); - try { - const transactionId = randomUUID(); - const payment = await createSubscriptionPayment(transactionId, event); - return { - paymentId: payment.id, - message: 'success', - statusCode: 200, - }; - } catch (error) { - throw new Error('Error creating payment'); - } + const transactionId = randomUUID(); + const payment = await createSubscriptionPayment(transactionId, event); + + return { + paymentId: payment.id, + message: 'success', + statusCode: 200, + }; }; diff --git a/examples/snippets/idempotency/samples/workingWithResponseHookIdempotentResponse.json b/examples/snippets/idempotency/samples/workingWithResponseHookIdempotentResponse.json index 0c7e1abdae..15bc5bcd8f 100644 --- a/examples/snippets/idempotency/samples/workingWithResponseHookIdempotentResponse.json +++ b/examples/snippets/idempotency/samples/workingWithResponseHookIdempotentResponse.json @@ -1,8 +1,8 @@ { - "message": "success", - "paymentId": "31a964eb-7477-4fe1-99fe-7f8a6a351a7e", - "statusCode": 200, - "headers": { - "x-idempotency-key": "function-name#mHfGv2vJ8h+ZvLIr/qGBbQ==" - } - } \ No newline at end of file + "message": "success", + "paymentId": "31a964eb-7477-4fe1-99fe-7f8a6a351a7e", + "statusCode": 200, + "headers": { + "x-idempotency-key": "function-name#mHfGv2vJ8h+ZvLIr/qGBbQ==" + } +} diff --git a/examples/snippets/idempotency/samples/workingWithResponseHookSampleEvent.json b/examples/snippets/idempotency/samples/workingWithResponseHookSampleEvent.json index 40a46dcbf4..800542b62a 100644 --- a/examples/snippets/idempotency/samples/workingWithResponseHookSampleEvent.json +++ b/examples/snippets/idempotency/samples/workingWithResponseHookSampleEvent.json @@ -1,4 +1,4 @@ { - "user": "John Doe", - "productId": "123456" -} \ No newline at end of file + "user": "John Doe", + "productId": "123456" +} diff --git a/examples/snippets/idempotency/workingWithCompositeKey.ts b/examples/snippets/idempotency/workingWithCompositeKey.ts index 23d5e255ee..1a2242dc54 100644 --- a/examples/snippets/idempotency/workingWithCompositeKey.ts +++ b/examples/snippets/idempotency/workingWithCompositeKey.ts @@ -11,17 +11,13 @@ const persistenceStore = new DynamoDBPersistenceLayer({ export const handler = middy( async (_event: Request, _context: Context): Promise => { - try { - // ... create payment + // ... create payment - return { - paymentId: '12345', - message: 'success', - statusCode: 200, - }; - } catch (error) { - throw new Error('Error creating payment'); - } + return { + paymentId: '12345', + message: 'success', + statusCode: 200, + }; } ).use( makeHandlerIdempotent({ diff --git a/examples/snippets/idempotency/workingWithCustomClient.ts b/examples/snippets/idempotency/workingWithCustomClient.ts index 8f3720d46e..5e7fe78394 100644 --- a/examples/snippets/idempotency/workingWithCustomClient.ts +++ b/examples/snippets/idempotency/workingWithCustomClient.ts @@ -14,17 +14,13 @@ const persistenceStore = new DynamoDBPersistenceLayer({ export const handler = makeIdempotent( async (_event: Request, _context: Context): Promise => { - try { - // ... create payment + // ... create payment - return { - paymentId: '12345', - message: 'success', - statusCode: 200, - }; - } catch (error) { - throw new Error('Error creating payment'); - } + return { + paymentId: '12345', + message: 'success', + statusCode: 200, + }; }, { persistenceStore, diff --git a/examples/snippets/idempotency/workingWithCustomConfig.ts b/examples/snippets/idempotency/workingWithCustomConfig.ts index 4138825d91..7dfe3a23d7 100644 --- a/examples/snippets/idempotency/workingWithCustomConfig.ts +++ b/examples/snippets/idempotency/workingWithCustomConfig.ts @@ -12,17 +12,13 @@ const persistenceStore = new DynamoDBPersistenceLayer({ export const handler = makeIdempotent( async (_event: Request, _context: Context): Promise => { - try { - // ... create payment + // ... create payment - return { - paymentId: '12345', - message: 'success', - statusCode: 200, - }; - } catch (error) { - throw new Error('Error creating payment'); - } + return { + paymentId: '12345', + message: 'success', + statusCode: 200, + }; }, { persistenceStore, diff --git a/examples/snippets/idempotency/workingWithExceptions.ts b/examples/snippets/idempotency/workingWithExceptions.ts index 2bafa5a243..4d4a966a79 100644 --- a/examples/snippets/idempotency/workingWithExceptions.ts +++ b/examples/snippets/idempotency/workingWithExceptions.ts @@ -54,6 +54,6 @@ export const handler = async ( statusCode: 200, }; } catch (error) { - throw new Error('Error creating payment'); + throw new Error('Error creating payment', { cause: error }); } }; diff --git a/examples/snippets/idempotency/workingWithIdempotencyRequiredKey.ts b/examples/snippets/idempotency/workingWithIdempotencyRequiredKey.ts index e9650cd751..6096ccf3a6 100644 --- a/examples/snippets/idempotency/workingWithIdempotencyRequiredKey.ts +++ b/examples/snippets/idempotency/workingWithIdempotencyRequiredKey.ts @@ -17,17 +17,13 @@ const config = new IdempotencyConfig({ export const handler = makeIdempotent( async (_event: Request, _context: Context): Promise => { - try { - // ... create payment + // ... create payment - return { - paymentId: '12345', - message: 'success', - statusCode: 200, - }; - } catch (error) { - throw new Error('Error creating payment'); - } + return { + paymentId: '12345', + message: 'success', + statusCode: 200, + }; }, { persistenceStore, diff --git a/examples/snippets/idempotency/workingWithLocalCache.ts b/examples/snippets/idempotency/workingWithLocalCache.ts index c02b270a2d..f29e56a578 100644 --- a/examples/snippets/idempotency/workingWithLocalCache.ts +++ b/examples/snippets/idempotency/workingWithLocalCache.ts @@ -15,17 +15,13 @@ const config = new IdempotencyConfig({ export const handler = middy( async (_event: Request, _context: Context): Promise => { - try { - // ... create payment + // ... create payment - return { - paymentId: '1234567890', - message: 'success', - statusCode: 200, - }; - } catch (error) { - throw new Error('Error creating payment'); - } + return { + paymentId: '1234567890', + message: 'success', + statusCode: 200, + }; } ).use( makeHandlerIdempotent({ diff --git a/examples/snippets/idempotency/workingWithLocalDynamoDB.ts b/examples/snippets/idempotency/workingWithLocalDynamoDB.ts index f48430456e..ba8808cf0a 100644 --- a/examples/snippets/idempotency/workingWithLocalDynamoDB.ts +++ b/examples/snippets/idempotency/workingWithLocalDynamoDB.ts @@ -6,7 +6,7 @@ const ddbPersistenceStore = new DynamoDBPersistenceLayer({ tableName: 'IdempotencyTable', }); -const handler = async (event: unknown, context: Context) => { +const handler = async (_event: unknown, _context: Context) => { return { statusCode: 200, body: JSON.stringify({ diff --git a/examples/snippets/idempotency/workingWithPayloadValidation.ts b/examples/snippets/idempotency/workingWithPayloadValidation.ts index af29510a6b..7f7cb4e37d 100644 --- a/examples/snippets/idempotency/workingWithPayloadValidation.ts +++ b/examples/snippets/idempotency/workingWithPayloadValidation.ts @@ -40,19 +40,16 @@ export const handler = async ( context: Context ): Promise => { config.registerLambdaContext(context); - try { - const productAmount = await fetchProductAmount(event.productId); - const payment = await createSubscriptionPayment({ - ...event, - amount: productAmount, - }); - return { - paymentId: payment.id, - message: 'success', - statusCode: 200, - }; - } catch (error) { - throw new Error('Error creating payment'); - } + const productAmount = await fetchProductAmount(event.productId); + const payment = await createSubscriptionPayment({ + ...event, + amount: productAmount, + }); + + return { + paymentId: payment.id, + message: 'success', + statusCode: 200, + }; }; diff --git a/examples/snippets/idempotency/workingWithRecordExpiration.ts b/examples/snippets/idempotency/workingWithRecordExpiration.ts index f2399fddb9..a93cd985db 100644 --- a/examples/snippets/idempotency/workingWithRecordExpiration.ts +++ b/examples/snippets/idempotency/workingWithRecordExpiration.ts @@ -16,17 +16,13 @@ const config = new IdempotencyConfig({ export const handler = makeIdempotent( async (_event: Request, _context: Context): Promise => { - try { - // ... create payment + // ... create payment - return { - paymentId: '12345', - message: 'success', - statusCode: 200, - }; - } catch (error) { - throw new Error('Error creating payment'); - } + return { + paymentId: '12345', + message: 'success', + statusCode: 200, + }; }, { persistenceStore, diff --git a/examples/snippets/idempotency/workingWithResponseHook.ts b/examples/snippets/idempotency/workingWithResponseHook.ts index e24509ba06..59ac14caff 100644 --- a/examples/snippets/idempotency/workingWithResponseHook.ts +++ b/examples/snippets/idempotency/workingWithResponseHook.ts @@ -39,17 +39,13 @@ const createSubscriptionPayment = async ( export const handler = makeIdempotent( async (event: Request, _context: Context): Promise => { - try { - const payment = await createSubscriptionPayment(event); + const payment = await createSubscriptionPayment(event); - return { - paymentId: payment.id, - message: 'success', - statusCode: 200, - }; - } catch (error) { - throw new Error('Error creating payment'); - } + return { + paymentId: payment.id, + message: 'success', + statusCode: 200, + }; }, { persistenceStore, diff --git a/examples/snippets/jmespath/extractDataFromBuiltinEnvelope.ts b/examples/snippets/jmespath/extractDataFromBuiltinEnvelope.ts index 55a4465fe0..6cd3102f7a 100644 --- a/examples/snippets/jmespath/extractDataFromBuiltinEnvelope.ts +++ b/examples/snippets/jmespath/extractDataFromBuiltinEnvelope.ts @@ -1,6 +1,6 @@ import { - SQS, extractDataFromEnvelope, + SQS, } from '@aws-lambda-powertools/jmespath/envelopes'; import { Logger } from '@aws-lambda-powertools/logger'; import type { SQSEvent } from 'aws-lambda'; diff --git a/examples/snippets/kafka/advancedBasicErrorHandling.ts b/examples/snippets/kafka/advancedBasicErrorHandling.ts index afb637b05e..083f21190f 100644 --- a/examples/snippets/kafka/advancedBasicErrorHandling.ts +++ b/examples/snippets/kafka/advancedBasicErrorHandling.ts @@ -1,7 +1,7 @@ declare function processRecord(record: unknown): Promise; import { readFileSync } from 'node:fs'; -import { SchemaType, kafkaConsumer } from '@aws-lambda-powertools/kafka'; +import { kafkaConsumer, SchemaType } from '@aws-lambda-powertools/kafka'; import { KafkaConsumerDeserializationError } from '@aws-lambda-powertools/kafka/errors'; import type { ConsumerRecord, diff --git a/examples/snippets/kafka/advancedHandlingLargeMessages.ts b/examples/snippets/kafka/advancedHandlingLargeMessages.ts index a9ac47909e..49cad466e5 100644 --- a/examples/snippets/kafka/advancedHandlingLargeMessages.ts +++ b/examples/snippets/kafka/advancedHandlingLargeMessages.ts @@ -1,7 +1,10 @@ declare function processRecordFromS3({ key, bucket, -}: { key: string; bucket: string }): Promise; +}: { + key: string; + bucket: string; +}): Promise; import { kafkaConsumer } from '@aws-lambda-powertools/kafka'; import { Logger } from '@aws-lambda-powertools/logger'; diff --git a/examples/snippets/kafka/advancedParserErrorHandling.ts b/examples/snippets/kafka/advancedParserErrorHandling.ts index 3b554c1aa0..d76d771492 100644 --- a/examples/snippets/kafka/advancedParserErrorHandling.ts +++ b/examples/snippets/kafka/advancedParserErrorHandling.ts @@ -1,7 +1,7 @@ declare function processRecord(record: unknown): Promise; import { readFileSync } from 'node:fs'; -import { SchemaType, kafkaConsumer } from '@aws-lambda-powertools/kafka'; +import { kafkaConsumer, SchemaType } from '@aws-lambda-powertools/kafka'; import { KafkaConsumerParserError } from '@aws-lambda-powertools/kafka/errors'; import type { ConsumerRecord, diff --git a/examples/snippets/kafka/advancedWorkingWithArkType.ts b/examples/snippets/kafka/advancedWorkingWithArkType.ts index f0926efad7..77ae727834 100644 --- a/examples/snippets/kafka/advancedWorkingWithArkType.ts +++ b/examples/snippets/kafka/advancedWorkingWithArkType.ts @@ -1,4 +1,4 @@ -import { SchemaType, kafkaConsumer } from '@aws-lambda-powertools/kafka'; +import { kafkaConsumer, SchemaType } from '@aws-lambda-powertools/kafka'; import type { SchemaConfig } from '@aws-lambda-powertools/kafka/types'; import { Logger } from '@aws-lambda-powertools/logger'; import { type } from 'arktype'; diff --git a/examples/snippets/kafka/advancedWorkingWithIdempotency.ts b/examples/snippets/kafka/advancedWorkingWithIdempotency.ts index d6a5292e9e..e51215e32c 100644 --- a/examples/snippets/kafka/advancedWorkingWithIdempotency.ts +++ b/examples/snippets/kafka/advancedWorkingWithIdempotency.ts @@ -3,7 +3,7 @@ import { makeIdempotent, } from '@aws-lambda-powertools/idempotency'; import { DynamoDBPersistenceLayer } from '@aws-lambda-powertools/idempotency/dynamodb'; -import { SchemaType, kafkaConsumer } from '@aws-lambda-powertools/kafka'; +import { kafkaConsumer, SchemaType } from '@aws-lambda-powertools/kafka'; import type { SchemaConfig } from '@aws-lambda-powertools/kafka/types'; import { Logger } from '@aws-lambda-powertools/logger'; import { com } from './samples/user.generated.js'; // protobuf generated class diff --git a/examples/snippets/kafka/advancedWorkingWithRecordMetadata.ts b/examples/snippets/kafka/advancedWorkingWithRecordMetadata.ts index 35974aa359..b78f3e2e00 100644 --- a/examples/snippets/kafka/advancedWorkingWithRecordMetadata.ts +++ b/examples/snippets/kafka/advancedWorkingWithRecordMetadata.ts @@ -1,4 +1,4 @@ -import { SchemaType, kafkaConsumer } from '@aws-lambda-powertools/kafka'; +import { kafkaConsumer, SchemaType } from '@aws-lambda-powertools/kafka'; import { Logger } from '@aws-lambda-powertools/logger'; import { com } from './samples/user.generated.js'; // protobuf generated class diff --git a/examples/snippets/kafka/advancedWorkingWithValibot.ts b/examples/snippets/kafka/advancedWorkingWithValibot.ts index 29c691aa4f..f357aac18b 100644 --- a/examples/snippets/kafka/advancedWorkingWithValibot.ts +++ b/examples/snippets/kafka/advancedWorkingWithValibot.ts @@ -1,4 +1,4 @@ -import { SchemaType, kafkaConsumer } from '@aws-lambda-powertools/kafka'; +import { kafkaConsumer, SchemaType } from '@aws-lambda-powertools/kafka'; import type { SchemaConfig } from '@aws-lambda-powertools/kafka/types'; import { Logger } from '@aws-lambda-powertools/logger'; import * as v from 'valibot'; diff --git a/examples/snippets/kafka/advancedWorkingWithZod.ts b/examples/snippets/kafka/advancedWorkingWithZod.ts index 6bb9240f1d..dc81b479aa 100644 --- a/examples/snippets/kafka/advancedWorkingWithZod.ts +++ b/examples/snippets/kafka/advancedWorkingWithZod.ts @@ -1,4 +1,4 @@ -import { SchemaType, kafkaConsumer } from '@aws-lambda-powertools/kafka'; +import { kafkaConsumer, SchemaType } from '@aws-lambda-powertools/kafka'; import type { SchemaConfig } from '@aws-lambda-powertools/kafka/types'; import { Logger } from '@aws-lambda-powertools/logger'; import { z } from 'zod/v4'; diff --git a/examples/snippets/kafka/gettingStartedAvro.ts b/examples/snippets/kafka/gettingStartedAvro.ts index 2b2ce2066e..a50486febd 100644 --- a/examples/snippets/kafka/gettingStartedAvro.ts +++ b/examples/snippets/kafka/gettingStartedAvro.ts @@ -1,5 +1,5 @@ import { readFileSync } from 'node:fs'; -import { SchemaType, kafkaConsumer } from '@aws-lambda-powertools/kafka'; +import { kafkaConsumer, SchemaType } from '@aws-lambda-powertools/kafka'; import type { SchemaConfig } from '@aws-lambda-powertools/kafka/types'; import { Logger } from '@aws-lambda-powertools/logger'; diff --git a/examples/snippets/kafka/gettingStartedJson.ts b/examples/snippets/kafka/gettingStartedJson.ts index 7030fb7512..b08c29ed38 100644 --- a/examples/snippets/kafka/gettingStartedJson.ts +++ b/examples/snippets/kafka/gettingStartedJson.ts @@ -1,4 +1,4 @@ -import { SchemaType, kafkaConsumer } from '@aws-lambda-powertools/kafka'; +import { kafkaConsumer, SchemaType } from '@aws-lambda-powertools/kafka'; import type { SchemaConfig } from '@aws-lambda-powertools/kafka/types'; import { Logger } from '@aws-lambda-powertools/logger'; diff --git a/examples/snippets/kafka/gettingStartedKeyValue.ts b/examples/snippets/kafka/gettingStartedKeyValue.ts index 3ba56caa78..38b240f038 100644 --- a/examples/snippets/kafka/gettingStartedKeyValue.ts +++ b/examples/snippets/kafka/gettingStartedKeyValue.ts @@ -1,4 +1,4 @@ -const keySchema = ` +const _keySchema = ` { "type": "record", "name": "ProductKey", @@ -8,7 +8,7 @@ const keySchema = ` } `; -const valueSchema = ` +const _valueSchema = ` { "type": "record", "name": "ProductInfo", @@ -37,7 +37,7 @@ type ProductInfo = { // --8<-- [start:func] import { readFileSync } from 'node:fs'; -import { SchemaType, kafkaConsumer } from '@aws-lambda-powertools/kafka'; +import { kafkaConsumer, SchemaType } from '@aws-lambda-powertools/kafka'; import type { SchemaConfig } from '@aws-lambda-powertools/kafka/types'; import { Logger } from '@aws-lambda-powertools/logger'; diff --git a/examples/snippets/kafka/gettingStartedProtobuf.ts b/examples/snippets/kafka/gettingStartedProtobuf.ts index 5e1731f18f..df7e404065 100644 --- a/examples/snippets/kafka/gettingStartedProtobuf.ts +++ b/examples/snippets/kafka/gettingStartedProtobuf.ts @@ -1,4 +1,4 @@ -import { SchemaType, kafkaConsumer } from '@aws-lambda-powertools/kafka'; +import { kafkaConsumer, SchemaType } from '@aws-lambda-powertools/kafka'; import type { SchemaConfig } from '@aws-lambda-powertools/kafka/types'; import { Logger } from '@aws-lambda-powertools/logger'; import { com } from './samples/user.generated.js'; // protobuf generated class diff --git a/examples/snippets/kafka/samples/kafkaEventAvro.json b/examples/snippets/kafka/samples/kafkaEventAvro.json index 73c3f00bdf..5cbbc40d3e 100644 --- a/examples/snippets/kafka/samples/kafkaEventAvro.json +++ b/examples/snippets/kafka/samples/kafkaEventAvro.json @@ -16,4 +16,4 @@ } ] } -} \ No newline at end of file +} diff --git a/examples/snippets/kafka/samples/kafkaEventJson.json b/examples/snippets/kafka/samples/kafkaEventJson.json index 8900f6e15e..62ea9748ab 100644 --- a/examples/snippets/kafka/samples/kafkaEventJson.json +++ b/examples/snippets/kafka/samples/kafkaEventJson.json @@ -16,4 +16,4 @@ } ] } -} \ No newline at end of file +} diff --git a/examples/snippets/kafka/samples/kafkaEventProtobuf.json b/examples/snippets/kafka/samples/kafkaEventProtobuf.json index ba5dc97fd7..1b06a91fbe 100644 --- a/examples/snippets/kafka/samples/kafkaEventProtobuf.json +++ b/examples/snippets/kafka/samples/kafkaEventProtobuf.json @@ -16,4 +16,4 @@ } ] } -} \ No newline at end of file +} diff --git a/examples/snippets/kafka/samples/user.json b/examples/snippets/kafka/samples/user.json index bb2ebdafd8..3ac5301c64 100644 --- a/examples/snippets/kafka/samples/user.json +++ b/examples/snippets/kafka/samples/user.json @@ -1,4 +1,4 @@ { "name": "...", "age": "..." -} \ No newline at end of file +} diff --git a/examples/snippets/logger/correlationIdLogger.ts b/examples/snippets/logger/correlationIdLogger.ts index 3c003fb0a5..83410e528d 100644 --- a/examples/snippets/logger/correlationIdLogger.ts +++ b/examples/snippets/logger/correlationIdLogger.ts @@ -1,6 +1,6 @@ import { Logger } from '@aws-lambda-powertools/logger'; import { search } from '@aws-lambda-powertools/logger/correlationId'; -const logger = new Logger({ +const _logger = new Logger({ correlationIdSearchFn: search, }); diff --git a/examples/snippets/logger/logBufferingFlushOnErrorMiddy.ts b/examples/snippets/logger/logBufferingFlushOnErrorMiddy.ts index 0758375a34..20cbfdfbe5 100644 --- a/examples/snippets/logger/logBufferingFlushOnErrorMiddy.ts +++ b/examples/snippets/logger/logBufferingFlushOnErrorMiddy.ts @@ -9,7 +9,7 @@ const logger = new Logger({ export const handler = middy() .use(injectLambdaContext(logger, { flushBufferOnUncaughtError: true })) - .handler(async (event: unknown) => { + .handler(async (_event: unknown) => { // Both logs below are buffered logger.debug('a debug log'); logger.debug('another debug log'); diff --git a/examples/snippets/logger/samples/debugLogSamplingNotSampled.json b/examples/snippets/logger/samples/debugLogSamplingNotSampled.json index f876f36306..ff90a045c5 100644 --- a/examples/snippets/logger/samples/debugLogSamplingNotSampled.json +++ b/examples/snippets/logger/samples/debugLogSamplingNotSampled.json @@ -5,4 +5,4 @@ "service": "serverlessAirline", "timestamp": "2021-12-12T22:59:06.334Z", "xray_trace_id": "abcdef123456abcdef123456abcdef123456" -} \ No newline at end of file +} diff --git a/examples/snippets/logger/samples/debugLogSamplingSampled.json b/examples/snippets/logger/samples/debugLogSamplingSampled.json index ae95e28aa1..b2fd1f03b0 100644 --- a/examples/snippets/logger/samples/debugLogSamplingSampled.json +++ b/examples/snippets/logger/samples/debugLogSamplingSampled.json @@ -31,4 +31,4 @@ "timestamp": "2021-12-12T22:59:06.338Z", "xray_trace_id": "abcdef123456abcdef123456abcdef123456" } -] \ No newline at end of file +] diff --git a/examples/snippets/logger/samples/logEventInput.json b/examples/snippets/logger/samples/logEventInput.json index b42f309e7a..c8c4105eb5 100644 --- a/examples/snippets/logger/samples/logEventInput.json +++ b/examples/snippets/logger/samples/logEventInput.json @@ -1,3 +1,3 @@ { "foo": "bar" -} \ No newline at end of file +} diff --git a/examples/snippets/logger/samples/logEventOutput.json b/examples/snippets/logger/samples/logEventOutput.json index 31c76da475..66edb136bb 100644 --- a/examples/snippets/logger/samples/logEventOutput.json +++ b/examples/snippets/logger/samples/logEventOutput.json @@ -13,4 +13,4 @@ "event": { "foo": "bar" } -} \ No newline at end of file +} diff --git a/examples/snippets/logger/unitTesting.ts b/examples/snippets/logger/unitTesting.ts index b81c6f02bb..4c431ac2fe 100644 --- a/examples/snippets/logger/unitTesting.ts +++ b/examples/snippets/logger/unitTesting.ts @@ -1,5 +1,6 @@ import type { Context } from 'aws-lambda'; import { describe, expect, it } from 'vitest'; + declare const handler: (event: unknown, context: Context) => Promise; const context = { diff --git a/examples/snippets/logger/unserializableValues.json b/examples/snippets/logger/unserializableValues.json index ffdd1c762e..d08715646b 100644 --- a/examples/snippets/logger/unserializableValues.json +++ b/examples/snippets/logger/unserializableValues.json @@ -5,9 +5,5 @@ "service": "serverlessAirline", "sampling_rate": 0, "xray_trace_id": "1-668a654d-396c646b760ee7d067f32f18", - "serializedValue": [ - 1, - 2, - 3 - ] + "serializedValue": [1, 2, 3] } diff --git a/examples/snippets/metrics/addHighResolutionMetric.ts b/examples/snippets/metrics/addHighResolutionMetric.ts index 5a100997e7..add10f3959 100644 --- a/examples/snippets/metrics/addHighResolutionMetric.ts +++ b/examples/snippets/metrics/addHighResolutionMetric.ts @@ -1,7 +1,7 @@ import { MetricResolution, - MetricUnit, Metrics, + MetricUnit, } from '@aws-lambda-powertools/metrics'; const metrics = new Metrics({ diff --git a/examples/snippets/metrics/addMetadata.ts b/examples/snippets/metrics/addMetadata.ts index e8a06dfe16..9e86310e67 100644 --- a/examples/snippets/metrics/addMetadata.ts +++ b/examples/snippets/metrics/addMetadata.ts @@ -1,4 +1,4 @@ -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; import { logMetrics } from '@aws-lambda-powertools/metrics/middleware'; import middy from '@middy/core'; diff --git a/examples/snippets/metrics/basicUsage.ts b/examples/snippets/metrics/basicUsage.ts index 13dfebf1d8..1deb2285bb 100644 --- a/examples/snippets/metrics/basicUsage.ts +++ b/examples/snippets/metrics/basicUsage.ts @@ -1,4 +1,4 @@ -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; const metrics = new Metrics({ namespace: 'serverlessAirline', diff --git a/examples/snippets/metrics/captureColdStartMetric.ts b/examples/snippets/metrics/captureColdStartMetric.ts index 289934f9a7..dbc1e20c8f 100644 --- a/examples/snippets/metrics/captureColdStartMetric.ts +++ b/examples/snippets/metrics/captureColdStartMetric.ts @@ -1,4 +1,4 @@ -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; const metrics = new Metrics({ namespace: 'serverlessAirline', diff --git a/examples/snippets/metrics/captureColdStartMetricDecorator.ts b/examples/snippets/metrics/captureColdStartMetricDecorator.ts index 3c21cc6513..8230dd8480 100644 --- a/examples/snippets/metrics/captureColdStartMetricDecorator.ts +++ b/examples/snippets/metrics/captureColdStartMetricDecorator.ts @@ -1,5 +1,5 @@ import type { LambdaInterface } from '@aws-lambda-powertools/commons/types'; -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; const metrics = new Metrics({ namespace: 'serverlessAirline', diff --git a/examples/snippets/metrics/captureColdStartMetricMiddy.ts b/examples/snippets/metrics/captureColdStartMetricMiddy.ts index 02131a5c0d..a09ada1939 100644 --- a/examples/snippets/metrics/captureColdStartMetricMiddy.ts +++ b/examples/snippets/metrics/captureColdStartMetricMiddy.ts @@ -1,4 +1,4 @@ -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; import { logMetrics } from '@aws-lambda-powertools/metrics/middleware'; import middy from '@middy/core'; diff --git a/examples/snippets/metrics/createMetrics.ts b/examples/snippets/metrics/createMetrics.ts index 472f93d7c4..9a66a1bbb3 100644 --- a/examples/snippets/metrics/createMetrics.ts +++ b/examples/snippets/metrics/createMetrics.ts @@ -1,4 +1,4 @@ -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; const metrics = new Metrics({ namespace: 'serverlessAirline', diff --git a/examples/snippets/metrics/customDimensions.ts b/examples/snippets/metrics/customDimensions.ts index fc5c3d3013..a36473571c 100644 --- a/examples/snippets/metrics/customDimensions.ts +++ b/examples/snippets/metrics/customDimensions.ts @@ -1,4 +1,4 @@ -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; const metrics = new Metrics({ namespace: 'serverlessAirline', diff --git a/examples/snippets/metrics/customLogger.ts b/examples/snippets/metrics/customLogger.ts index 16acf4f9ab..0bdc47be5d 100644 --- a/examples/snippets/metrics/customLogger.ts +++ b/examples/snippets/metrics/customLogger.ts @@ -1,5 +1,5 @@ -import { LogLevel, Logger } from '@aws-lambda-powertools/logger'; -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Logger, LogLevel } from '@aws-lambda-powertools/logger'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; const logger = new Logger({ logLevel: LogLevel.CRITICAL }); const metrics = new Metrics({ diff --git a/examples/snippets/metrics/decorator.ts b/examples/snippets/metrics/decorator.ts index 2332630395..b5aeb60254 100644 --- a/examples/snippets/metrics/decorator.ts +++ b/examples/snippets/metrics/decorator.ts @@ -1,5 +1,5 @@ import type { LambdaInterface } from '@aws-lambda-powertools/commons/types'; -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; const metrics = new Metrics({ namespace: 'serverlessAirline', diff --git a/examples/snippets/metrics/defaultDimensions.ts b/examples/snippets/metrics/defaultDimensions.ts index c41510b2e3..7c0340e5f5 100644 --- a/examples/snippets/metrics/defaultDimensions.ts +++ b/examples/snippets/metrics/defaultDimensions.ts @@ -1,4 +1,4 @@ -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; const metrics = new Metrics({ namespace: 'serverlessAirline', diff --git a/examples/snippets/metrics/defaultDimensionsDecorator.ts b/examples/snippets/metrics/defaultDimensionsDecorator.ts index 9535f085be..be5d9131bf 100644 --- a/examples/snippets/metrics/defaultDimensionsDecorator.ts +++ b/examples/snippets/metrics/defaultDimensionsDecorator.ts @@ -1,5 +1,5 @@ import type { LambdaInterface } from '@aws-lambda-powertools/commons/types'; -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; const metrics = new Metrics({ namespace: 'serverlessAirline', diff --git a/examples/snippets/metrics/defaultDimensionsMiddy.ts b/examples/snippets/metrics/defaultDimensionsMiddy.ts index 9fc64520a2..b5f7ec9256 100644 --- a/examples/snippets/metrics/defaultDimensionsMiddy.ts +++ b/examples/snippets/metrics/defaultDimensionsMiddy.ts @@ -1,4 +1,4 @@ -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; import { logMetrics } from '@aws-lambda-powertools/metrics/middleware'; import middy from '@middy/core'; diff --git a/examples/snippets/metrics/dimensionSets.ts b/examples/snippets/metrics/dimensionSets.ts new file mode 100644 index 0000000000..ba3aa73470 --- /dev/null +++ b/examples/snippets/metrics/dimensionSets.ts @@ -0,0 +1,30 @@ +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; + +const metrics = new Metrics({ + namespace: 'serverlessAirline', + serviceName: 'orders', +}); + +export const handler = async ( + _event: unknown, + _context: unknown +): Promise => { + // Add a single dimension + metrics.addDimension('environment', 'prod'); + + // Add a new dimension set + metrics.addDimensions({ + dimension1: '1', + dimension2: '2', + }); + + // Add another dimension set + metrics.addDimensions({ + region: 'us-east-1', + category: 'books', + }); + + // Add metrics + metrics.addMetric('successfulBooking', MetricUnit.Count, 1); + metrics.publishStoredMetrics(); +}; diff --git a/examples/snippets/metrics/functionName.ts b/examples/snippets/metrics/functionName.ts index 2811a45af1..e6e2431a3c 100644 --- a/examples/snippets/metrics/functionName.ts +++ b/examples/snippets/metrics/functionName.ts @@ -1,4 +1,4 @@ -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; const metrics = new Metrics({ namespace: 'serverlessAirline', diff --git a/examples/snippets/metrics/manual.ts b/examples/snippets/metrics/manual.ts index 424ad50b16..79c0068ca8 100644 --- a/examples/snippets/metrics/manual.ts +++ b/examples/snippets/metrics/manual.ts @@ -1,4 +1,4 @@ -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; const metrics = new Metrics({ namespace: 'serverlessAirline', diff --git a/examples/snippets/metrics/middy.ts b/examples/snippets/metrics/middy.ts index 6585d4c227..d45a4aa08d 100644 --- a/examples/snippets/metrics/middy.ts +++ b/examples/snippets/metrics/middy.ts @@ -1,4 +1,4 @@ -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; import { logMetrics } from '@aws-lambda-powertools/metrics/middleware'; import middy from '@middy/core'; diff --git a/examples/snippets/metrics/multiValueMetrics.ts b/examples/snippets/metrics/multiValueMetrics.ts index 0c4971c135..be185d0718 100644 --- a/examples/snippets/metrics/multiValueMetrics.ts +++ b/examples/snippets/metrics/multiValueMetrics.ts @@ -1,4 +1,4 @@ -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; const metrics = new Metrics({ namespace: 'serverlessAirline', diff --git a/examples/snippets/metrics/sam.ts b/examples/snippets/metrics/sam.ts index a5fd3f0964..999e3fd9e3 100644 --- a/examples/snippets/metrics/sam.ts +++ b/examples/snippets/metrics/sam.ts @@ -1,4 +1,4 @@ -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; // Metrics parameters fetched from the environment variables (see template.yaml tab) const metrics = new Metrics(); diff --git a/examples/snippets/metrics/setDefaultDimensions.ts b/examples/snippets/metrics/setDefaultDimensions.ts index 877570467e..7125519d54 100644 --- a/examples/snippets/metrics/setDefaultDimensions.ts +++ b/examples/snippets/metrics/setDefaultDimensions.ts @@ -1,4 +1,4 @@ -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; const metrics = new Metrics({ namespace: 'serverlessAirline', diff --git a/examples/snippets/metrics/setTimestamp.ts b/examples/snippets/metrics/setTimestamp.ts index 5f6d6f69a4..f1866d1844 100644 --- a/examples/snippets/metrics/setTimestamp.ts +++ b/examples/snippets/metrics/setTimestamp.ts @@ -1,4 +1,4 @@ -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; const metrics = new Metrics({ namespace: 'serverlessAirline', diff --git a/examples/snippets/metrics/singleMetric.ts b/examples/snippets/metrics/singleMetric.ts index d2889f48ce..ed1a829f06 100644 --- a/examples/snippets/metrics/singleMetric.ts +++ b/examples/snippets/metrics/singleMetric.ts @@ -1,4 +1,4 @@ -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; const metrics = new Metrics({ namespace: 'serverlessAirline', diff --git a/examples/snippets/metrics/throwOnEmptyMetrics.ts b/examples/snippets/metrics/throwOnEmptyMetrics.ts index 391ae89124..2acb3f3dfd 100644 --- a/examples/snippets/metrics/throwOnEmptyMetrics.ts +++ b/examples/snippets/metrics/throwOnEmptyMetrics.ts @@ -1,4 +1,4 @@ -import { MetricUnit, Metrics } from '@aws-lambda-powertools/metrics'; +import { Metrics, MetricUnit } from '@aws-lambda-powertools/metrics'; import { logMetrics } from '@aws-lambda-powertools/metrics/middleware'; import middy from '@middy/core'; diff --git a/examples/snippets/package.json b/examples/snippets/package.json index 307791cd00..944c04bf19 100644 --- a/examples/snippets/package.json +++ b/examples/snippets/package.json @@ -1,6 +1,6 @@ { "name": "code-snippets", - "version": "2.23.0", + "version": "2.24.0", "description": "A collection code snippets for the Powertools for AWS Lambda (TypeScript) docs", "author": { "name": "Amazon Web Services", @@ -24,26 +24,26 @@ }, "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript#readme", "devDependencies": { - "@aws-lambda-powertools/batch": "^2.23.0", - "@aws-lambda-powertools/event-handler": "^2.23.0", - "@aws-lambda-powertools/idempotency": "^2.23.0", - "@aws-lambda-powertools/jmespath": "^2.23.0", - "@aws-lambda-powertools/logger": "^2.23.0", - "@aws-lambda-powertools/metrics": "^2.23.0", - "@aws-lambda-powertools/parameters": "^2.23.0", - "@aws-lambda-powertools/parser": "^2.23.0", - "@aws-lambda-powertools/tracer": "^2.23.0", - "@aws-sdk/client-appconfigdata": "^3.840.0", - "@aws-sdk/client-dynamodb": "^3.840.0", - "@aws-sdk/client-secrets-manager": "^3.840.0", - "@aws-sdk/client-ssm": "^3.840.0", - "@aws-sdk/util-dynamodb": "^3.840.0", + "@aws-lambda-powertools/batch": "^2.24.0", + "@aws-lambda-powertools/event-handler": "^2.24.0", + "@aws-lambda-powertools/idempotency": "^2.24.0", + "@aws-lambda-powertools/jmespath": "^2.24.0", + "@aws-lambda-powertools/logger": "^2.24.0", + "@aws-lambda-powertools/metrics": "^2.24.0", + "@aws-lambda-powertools/parameters": "^2.24.0", + "@aws-lambda-powertools/parser": "^2.24.0", + "@aws-lambda-powertools/tracer": "^2.24.0", + "@aws-sdk/client-appconfigdata": "^3.844.0", + "@aws-sdk/client-dynamodb": "^3.844.0", + "@aws-sdk/client-secrets-manager": "^3.844.0", + "@aws-sdk/client-ssm": "^3.844.0", + "@aws-sdk/util-dynamodb": "^3.844.0", "@middy/core": "^4.7.0", - "@redis/client": "^5.5.6", + "@redis/client": "^5.6.0", "@valkey/valkey-glide": "^2.0.1", "aws-sdk": "^2.1692.0", "aws-sdk-client-mock": "^4.1.0", - "zod": "^3.25.67" + "zod": "^4.0.5" }, "dependencies": { "arktype": "^2.1.20", diff --git a/examples/snippets/parameters/testingYourCodeClientHandler.ts b/examples/snippets/parameters/testingYourCodeClientHandler.ts index 9264d5eff3..c0227d0a0e 100644 --- a/examples/snippets/parameters/testingYourCodeClientHandler.ts +++ b/examples/snippets/parameters/testingYourCodeClientHandler.ts @@ -10,7 +10,7 @@ export const handler = async ( return { value: parameter, }; - } catch (error) { + } catch (_error) { return { message: 'Unable to retrieve secret', }; diff --git a/examples/snippets/parser/extendAPIGatewayProxyEventV2Schema.ts b/examples/snippets/parser/extendAPIGatewayProxyEventV2Schema.ts index 7282564a0b..7e2600c546 100644 --- a/examples/snippets/parser/extendAPIGatewayProxyEventV2Schema.ts +++ b/examples/snippets/parser/extendAPIGatewayProxyEventV2Schema.ts @@ -11,4 +11,4 @@ const extendedSchema = APIGatewayProxyEventV2Schema.extend({ // (1)! }) ), }); -type ExtendedAPIGatewayEvent = z.infer; +type _ExtendedAPIGatewayEvent = z.infer; diff --git a/examples/snippets/parser/extendAlbSchema.ts b/examples/snippets/parser/extendAlbSchema.ts index ed7c8cf35b..d38f802022 100644 --- a/examples/snippets/parser/extendAlbSchema.ts +++ b/examples/snippets/parser/extendAlbSchema.ts @@ -8,7 +8,7 @@ const customSchema = z.object({ }); const extendedSchema = AlbSchema.extend({ - body: JSONStringified(customSchema), + body: JSONStringified(customSchema), // (1)! }); -type ExtendedAlbEvent = z.infer; +type _ExtendedAlbEvent = z.infer; diff --git a/examples/snippets/parser/extendDynamoDBStreamSchema.ts b/examples/snippets/parser/extendDynamoDBStreamSchema.ts index 30fc8abe2e..4742d78738 100644 --- a/examples/snippets/parser/extendDynamoDBStreamSchema.ts +++ b/examples/snippets/parser/extendDynamoDBStreamSchema.ts @@ -21,4 +21,4 @@ const extendedSchema = DynamoDBStreamSchema.extend({ ), }); -type ExtendedDynamoDBStreamEvent = z.infer; +type _ExtendedDynamoDBStreamEvent = z.infer; diff --git a/examples/snippets/parser/extendSqsSchema.ts b/examples/snippets/parser/extendSqsSchema.ts index 0a1d36c072..a01f365785 100644 --- a/examples/snippets/parser/extendSqsSchema.ts +++ b/examples/snippets/parser/extendSqsSchema.ts @@ -13,9 +13,9 @@ const customSchema = z.object({ const extendedSchema = SqsSchema.extend({ Records: z.array( SqsRecordSchema.extend({ - body: JSONStringified(customSchema), // (1)! + body: JSONStringified(customSchema), }) ), }); -type ExtendedSqsEvent = z.infer; +type _ExtendedSqsEvent = z.infer; diff --git a/examples/snippets/parser/middy.ts b/examples/snippets/parser/middy.ts index e8c19fb3cf..396341483d 100644 --- a/examples/snippets/parser/middy.ts +++ b/examples/snippets/parser/middy.ts @@ -11,7 +11,7 @@ const orderSchema = z.object({ items: z.array( z.object({ id: z.number().positive(), - quantity: z.number(), + quantity: z.number().positive(), description: z.string(), }) ), diff --git a/examples/snippets/parser/middyValibot.ts b/examples/snippets/parser/middyValibot.ts new file mode 100644 index 0000000000..5a37de5daa --- /dev/null +++ b/examples/snippets/parser/middyValibot.ts @@ -0,0 +1,36 @@ +import { Logger } from '@aws-lambda-powertools/logger'; +import { parser } from '@aws-lambda-powertools/parser/middleware'; +import middy from '@middy/core'; +import { + array, + number, + object, + optional, + pipe, + string, + toMinValue, +} from 'valibot'; + +const logger = new Logger(); + +const orderSchema = object({ + id: pipe(number(), toMinValue(0)), + description: string(), + items: array( + object({ + id: pipe(number(), toMinValue(0)), + quantity: pipe(number(), toMinValue(1)), + description: string(), + }) + ), + optionalField: optional(string()), +}); + +export const handler = middy() + .use(parser({ schema: orderSchema })) + .handler(async (event): Promise => { + for (const item of event.items) { + // item is parsed as OrderItem + logger.info('Processing item', { item }); + } + }); diff --git a/examples/snippets/parser/samples/exampleAPIGatewayProxyEventV2.json b/examples/snippets/parser/samples/exampleAPIGatewayProxyEventV2.json index c3cbd7fc40..5a993cb9c4 100644 --- a/examples/snippets/parser/samples/exampleAPIGatewayProxyEventV2.json +++ b/examples/snippets/parser/samples/exampleAPIGatewayProxyEventV2.json @@ -38,4 +38,4 @@ }, "body": "{\"name\":\"John\",\"age\":42}", "isBase64Encoded": false -} \ No newline at end of file +} diff --git a/examples/snippets/parser/samples/exampleDynamoDBStreamPayload.json b/examples/snippets/parser/samples/exampleDynamoDBStreamPayload.json index 621c5dc47f..16009a7a95 100644 --- a/examples/snippets/parser/samples/exampleDynamoDBStreamPayload.json +++ b/examples/snippets/parser/samples/exampleDynamoDBStreamPayload.json @@ -1,66 +1,65 @@ { - "Records": [ - { - "eventID": "1", - "eventVersion": "1.0", - "dynamodb": { - "ApproximateCreationDateTime": 1693997155.0, - "Keys": { - "Id": { - "N": "101" - } - }, - "NewImage": { - "Message": { - "S": "New item!" - }, - "Id": { - "N": "101" - } + "Records": [ + { + "eventID": "1", + "eventVersion": "1.0", + "dynamodb": { + "ApproximateCreationDateTime": 1693997155.0, + "Keys": { + "Id": { + "N": "101" + } + }, + "NewImage": { + "Message": { + "S": "New item!" }, - "StreamViewType": "NEW_AND_OLD_IMAGES", - "SequenceNumber": "111", - "SizeBytes": 26 + "Id": { + "N": "101" + } }, - "awsRegion": "us-west-2", - "eventName": "INSERT", - "eventSourceARN": "eventsource_arn", - "eventSource": "aws:dynamodb" + "StreamViewType": "NEW_AND_OLD_IMAGES", + "SequenceNumber": "111", + "SizeBytes": 26 }, - { - "eventID": "2", - "eventVersion": "1.0", - "dynamodb": { - "OldImage": { - "Message": { - "S": "New item!" - }, - "Id": { - "N": "101" - } - }, - "SequenceNumber": "222", - "Keys": { - "Id": { - "N": "101" - } + "awsRegion": "us-west-2", + "eventName": "INSERT", + "eventSourceARN": "eventsource_arn", + "eventSource": "aws:dynamodb" + }, + { + "eventID": "2", + "eventVersion": "1.0", + "dynamodb": { + "OldImage": { + "Message": { + "S": "New item!" }, - "SizeBytes": 59, - "NewImage": { - "Message": { - "S": "This item has changed" - }, - "Id": { - "N": "101" - } + "Id": { + "N": "101" + } + }, + "SequenceNumber": "222", + "Keys": { + "Id": { + "N": "101" + } + }, + "SizeBytes": 59, + "NewImage": { + "Message": { + "S": "This item has changed" }, - "StreamViewType": "NEW_AND_OLD_IMAGES" + "Id": { + "N": "101" + } }, - "awsRegion": "us-west-2", - "eventName": "MODIFY", - "eventSourceARN": "source_arn", - "eventSource": "aws:dynamodb" - } - ] - } - \ No newline at end of file + "StreamViewType": "NEW_AND_OLD_IMAGES" + }, + "awsRegion": "us-west-2", + "eventName": "MODIFY", + "eventSourceARN": "source_arn", + "eventSource": "aws:dynamodb" + } + ] +} diff --git a/examples/snippets/tracer/accessRootTraceId.ts b/examples/snippets/tracer/accessRootTraceId.ts index 54139f8f1c..badd7873ea 100644 --- a/examples/snippets/tracer/accessRootTraceId.ts +++ b/examples/snippets/tracer/accessRootTraceId.ts @@ -1,11 +1,15 @@ +import { Logger } from '@aws-lambda-powertools/logger'; import { Tracer } from '@aws-lambda-powertools/tracer'; const tracer = new Tracer({ serviceName: 'serverlessAirline' }); +const logger = new Logger({ serviceName: 'serverlessAirline' }); export const handler = async (): Promise => { try { throw new Error('Something went wrong'); - } catch (err) { + } catch (error) { + logger.error('An error occurred', { error }); + const rootTraceId = tracer.getRootXrayTraceId(); // Example of returning an error response diff --git a/examples/snippets/validation/advancedExternalRefs.ts b/examples/snippets/validation/advancedExternalRefs.ts index 87ab0824ac..381108ad69 100644 --- a/examples/snippets/validation/advancedExternalRefs.ts +++ b/examples/snippets/validation/advancedExternalRefs.ts @@ -1,8 +1,8 @@ import { validator } from '@aws-lambda-powertools/validation/decorator'; import type { Context } from 'aws-lambda'; import { - type InboundSchema, defsSchema, + type InboundSchema, inboundSchema, outboundSchema, } from './schemasWithExternalRefs.js'; diff --git a/examples/snippets/validation/gettingStartedDecorator.ts b/examples/snippets/validation/gettingStartedDecorator.ts index 50cf98fa14..ebcc65185d 100644 --- a/examples/snippets/validation/gettingStartedDecorator.ts +++ b/examples/snippets/validation/gettingStartedDecorator.ts @@ -2,8 +2,8 @@ import { validator } from '@aws-lambda-powertools/validation/decorator'; import type { Context } from 'aws-lambda'; import { type InboundSchema, - type OutboundSchema, inboundSchema, + type OutboundSchema, outboundSchema, } from './schemas.js'; diff --git a/examples/snippets/validation/gettingStartedEnvelope.ts b/examples/snippets/validation/gettingStartedEnvelope.ts index 520e006bed..beee50fe9b 100644 --- a/examples/snippets/validation/gettingStartedEnvelope.ts +++ b/examples/snippets/validation/gettingStartedEnvelope.ts @@ -7,7 +7,7 @@ class Lambda { inboundSchema, envelope: 'detail', }) - async handler(event: InboundSchema, context: Context) { + async handler(event: InboundSchema, _context: Context) { return { message: `processed ${event.userId}`, success: true, diff --git a/examples/snippets/validation/gettingStartedMiddy.ts b/examples/snippets/validation/gettingStartedMiddy.ts index 9b700ab9cf..fe09bfbd58 100644 --- a/examples/snippets/validation/gettingStartedMiddy.ts +++ b/examples/snippets/validation/gettingStartedMiddy.ts @@ -2,8 +2,8 @@ import { validator } from '@aws-lambda-powertools/validation/middleware'; import middy from '@middy/core'; import { type InboundSchema, - type OutboundSchema, inboundSchema, + type OutboundSchema, outboundSchema, } from './schemas.js'; diff --git a/examples/snippets/validation/samples/gettingStartedEnvelopeEvent.json b/examples/snippets/validation/samples/gettingStartedEnvelopeEvent.json index 17c1c5672e..d31f2d1700 100644 --- a/examples/snippets/validation/samples/gettingStartedEnvelopeEvent.json +++ b/examples/snippets/validation/samples/gettingStartedEnvelopeEvent.json @@ -10,4 +10,4 @@ "detail": { "userId": "123" } -} \ No newline at end of file +} diff --git a/examples/snippets/validation/samples/gettingStartedSQSEnvelopeEvent.json b/examples/snippets/validation/samples/gettingStartedSQSEnvelopeEvent.json index a8df4bf107..0bdc1552c4 100644 --- a/examples/snippets/validation/samples/gettingStartedSQSEnvelopeEvent.json +++ b/examples/snippets/validation/samples/gettingStartedSQSEnvelopeEvent.json @@ -33,4 +33,4 @@ "awsRegion": "us-west-2" } ] -} \ No newline at end of file +} diff --git a/examples/snippets/validation/samples/schemaWithCustomFormat.json b/examples/snippets/validation/samples/schemaWithCustomFormat.json index 954fe05ddd..69b21e9569 100644 --- a/examples/snippets/validation/samples/schemaWithCustomFormat.json +++ b/examples/snippets/validation/samples/schemaWithCustomFormat.json @@ -10,7 +10,5 @@ "format": "creditcard" } }, - "required": [ - "accountId" - ] -} \ No newline at end of file + "required": ["accountId"] +} diff --git a/layers/CHANGELOG.md b/layers/CHANGELOG.md index f33cd5f25e..7fc54f03d5 100644 --- a/layers/CHANGELOG.md +++ b/layers/CHANGELOG.md @@ -1,233 +1,123 @@ # Change Log -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.24.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.23.0...v2.24.0) (2025-07-15) + +**Note:** Version bump only for this package # [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) **Note:** Version bump only for package layers - - - - # [2.22.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.21.0...v2.22.0) (2025-06-20) **Note:** Version bump only for package layers - - - - # [2.21.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.20.0...v2.21.0) (2025-06-03) **Note:** Version bump only for package layers - - - - # [2.20.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.1...v2.20.0) (2025-05-20) **Note:** Version bump only for package layers - - - - ## [2.19.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.0...v2.19.1) (2025-05-05) **Note:** Version bump only for package layers - - - - # [2.19.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.18.0...v2.19.0) (2025-04-24) **Note:** Version bump only for package layers - - - - # [2.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.17.0...v2.18.0) (2025-04-07) **Note:** Version bump only for package layers - - - - # [2.17.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.16.0...v2.17.0) (2025-03-25) **Note:** Version bump only for package layers - - - - # [2.16.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.15.0...v2.16.0) (2025-03-07) **Note:** Version bump only for package layers - - - - # [2.15.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.14.0...v2.15.0) (2025-02-25) **Note:** Version bump only for package layers - - - - # [2.14.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.1...v2.14.0) (2025-02-10) **Note:** Version bump only for package layers - - - - ## [2.13.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.0...v2.13.1) (2025-01-28) **Note:** Version bump only for package layers - - - - # [2.13.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.12.0...v2.13.0) (2025-01-14) **Note:** Version bump only for package layers - - - - # [2.12.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.11.0...v2.12.0) (2024-12-17) **Note:** Version bump only for package layers - - - - # [2.11.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.10.0...v2.11.0) (2024-11-20) - ### Features * **metrics:** add ability to pass custom logger ([#3057](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3057)) ([a531b90](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a531b90031826970673eb8bfad78dee6edd0a359)) - - - - # [2.10.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.9.0...v2.10.0) (2024-10-22) **Note:** Version bump only for package layers - - - - # [2.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.8.0...v2.9.0) (2024-10-07) **Note:** Version bump only for package layers - - - - # [2.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.7.0...v2.8.0) (2024-09-16) **Note:** Version bump only for package layers - - - - # [2.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.6.0...v2.7.0) (2024-08-08) **Note:** Version bump only for package layers - - - - # [2.6.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.5.0...v2.6.0) (2024-07-25) **Note:** Version bump only for package layers - - - - # [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) - ### Features * **maintenance:** drop support for Node.js 16.x ([#2717](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2717)) ([e4eee73](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e4eee73770ffccead9212a566335ec256a31af7d)) - - - - # [2.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.2.0...v2.3.0) (2024-06-27) **Note:** Version bump only for package layers - - - - # [2.2.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.1...v2.2.0) (2024-06-13) **Note:** Version bump only for package layers - - - - ## [2.1.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.0...v2.1.1) (2024-05-14) **Note:** Version bump only for package layers - - - - # [2.1.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.0.4...v2.1.0) (2024-04-17) - ### Features * **idempotency:** add custom JMESPath functions ([#2364](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2364)) ([9721e7c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9721e7c01fc010944eb477bdbc24b9e06a5c4571)) - - - - ## 2.0.4 (2024-04-10) **Note:** Version bump only for package layers - - - - ## 2.0.3 (2024-03-15) **fix:**: add createRequire banner in esm build ([#2231](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2231)) ([730bcc9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/730bcc93c027f4d60788badb6c5c01a09b3c70be)) @@ -236,34 +126,18 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline **Note:** Version bump only for package layers - - - - ## 2.0.1 (2024-03-04) **Note:** Version bump only for package layers - - - - # [2.0.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.18.1...v2.0.0) (2024-03-04) **Note:** Version bump only for package layers - - - - # 1.18.1 (2024-02-20) **Note:** Version bump only for package layers - - - - ## [1.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.17.0...v1.18.0) (2024-01-26) **Note:** Version bump only for package layers @@ -280,8 +154,8 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **maintenance:** add support for nodejs20.x runtime ([#1790](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1790)) ([6b9b1bc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b9b1bcb9baf4b3d8e0e5ec6709594aca09bb033)) -- **metrics:** log directly to stdout ([#1786](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1786)) ([75dc5b1](https://github.com/aws-powertools/powertools-lambda-typescript/commit/75dc5b1e16944416a287628c50ec4a0cf82c3023)) +* **maintenance:** add support for nodejs20.x runtime ([#1790](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1790)) ([6b9b1bc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b9b1bcb9baf4b3d8e0e5ec6709594aca09bb033)) +* **metrics:** log directly to stdout ([#1786](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1786)) ([75dc5b1](https://github.com/aws-powertools/powertools-lambda-typescript/commit/75dc5b1e16944416a287628c50ec4a0cf82c3023)) ## [1.14.2](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.14.1...v1.14.2) (2023-11-03) @@ -351,22 +225,22 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **all:** moved EnvService to commons + exposed getXrayTraceId in tracer ([#1123](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1123)) ([c8e3c15](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c8e3c15b64142ebe6f43835a5917ecba26293a32)) +* **all:** moved EnvService to commons + exposed getXrayTraceId in tracer ([#1123](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1123)) ([c8e3c15](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c8e3c15b64142ebe6f43835a5917ecba26293a32)) # [1.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.2.1...v1.3.0) (2022-10-17) ### Bug Fixes -- ts-node version for layer-publisher ([#1112](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1112)) ([ee243de](https://github.com/aws-powertools/powertools-lambda-typescript/commit/ee243dea0b9268ed793df19f0b04e680f68e41a6)) +* ts-node version for layer-publisher ([#1112](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1112)) ([ee243de](https://github.com/aws-powertools/powertools-lambda-typescript/commit/ee243dea0b9268ed793df19f0b04e680f68e41a6)) ### Features -- **idempotency:** create initial class structure for function idempotency ([#1086](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1086)) ([06fbaae](https://github.com/aws-powertools/powertools-lambda-typescript/commit/06fbaae4db3825557aa84d40372a53422e42840d)) -- publish lib as Lambda Layer ([#1095](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1095)) ([83f6efb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/83f6efba1db32ba2dc8fff026e258b5de66783e0)) +* **idempotency:** create initial class structure for function idempotency ([#1086](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1086)) ([06fbaae](https://github.com/aws-powertools/powertools-lambda-typescript/commit/06fbaae4db3825557aa84d40372a53422e42840d)) +* publish lib as Lambda Layer ([#1095](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1095)) ([83f6efb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/83f6efba1db32ba2dc8fff026e258b5de66783e0)) ### Reverts -- Revert "chore(release): v1.3.0 [skip ci]" ([237b99f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/237b99f9f6eff5e6e26d779603cf13cd4422c156)) +* Revert "chore(release): v1.3.0 [skip ci]" ([237b99f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/237b99f9f6eff5e6e26d779603cf13cd4422c156)) ## [1.2.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.2.0...v1.2.1) (2022-08-25) @@ -384,4 +258,4 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **build:** publish lib as a Lambda Layer ([#884](https://github.com/aws-powertools/powertools-lambda-typescript/issues/884)) ([c3a20c6](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c3a20c61380a6b6944807f5abf12c9cafb254325)), closes [#1031](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1031) +* **build:** publish lib as a Lambda Layer ([#884](https://github.com/aws-powertools/powertools-lambda-typescript/issues/884)) ([c3a20c6](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c3a20c61380a6b6944807f5abf12c9cafb254325)), closes [#1031](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1031) diff --git a/layers/package.json b/layers/package.json index a040414718..93fcec9f78 100644 --- a/layers/package.json +++ b/layers/package.json @@ -1,6 +1,6 @@ { "name": "layers", - "version": "2.23.0", + "version": "2.24.0", "bin": { "layer": "bin/layers.js" }, @@ -41,9 +41,9 @@ "source-map-support": "^0.5.21" }, "dependencies": { - "aws-cdk": "^2.1020.0", - "aws-cdk-lib": "^2.202.0", - "esbuild": "^0.25.5", + "aws-cdk": "^2.1020.2", + "aws-cdk-lib": "^2.204.0", + "esbuild": "^0.25.6", "tsx": "^4.20.3" } } diff --git a/layers/tests/e2e/layerPublisher.class.test.functionCode.ts b/layers/tests/e2e/layerPublisher.class.test.functionCode.ts index 440875dfd1..ed6b0f2d8e 100644 --- a/layers/tests/e2e/layerPublisher.class.test.functionCode.ts +++ b/layers/tests/e2e/layerPublisher.class.test.functionCode.ts @@ -79,7 +79,7 @@ const getVersionFromModule = async (moduleName: string): Promise => { return moduleVersion; }; -export const handler = async (event: unknown): Promise => { +export const handler = async (_event: unknown): Promise => { // Check that the packages version matches the expected one for (const moduleName of [ 'commons', diff --git a/layers/tests/e2e/layerPublisher.test.ts b/layers/tests/e2e/layerPublisher.test.ts index cffa1db3a5..0b2796828e 100644 --- a/layers/tests/e2e/layerPublisher.test.ts +++ b/layers/tests/e2e/layerPublisher.test.ts @@ -1,14 +1,14 @@ import { join } from 'node:path'; import { - TestInvocationLogs, - TestStack, generateTestUniqueName, invokeFunctionOnce, + TestInvocationLogs, + TestStack, } from '@aws-lambda-powertools/testing-utils'; import { TestNodejsFunction } from '@aws-lambda-powertools/testing-utils/resources/lambda'; import { App } from 'aws-cdk-lib'; import { LayerVersion } from 'aws-cdk-lib/aws-lambda'; -import { afterAll, beforeAll, describe, expect, it, vi } from 'vitest'; +import { afterAll, beforeAll, describe, expect, it } from 'vitest'; import packageJson from '../../package.json' with { type: 'json' }; import { LayerPublisherStack } from '../../src/layer-publisher-stack.js'; import { RESOURCE_NAME_PREFIX } from './constants.js'; diff --git a/lerna.json b/lerna.json index cb5c13dd41..45cdc8d19f 100644 --- a/lerna.json +++ b/lerna.json @@ -17,7 +17,7 @@ "layers", "examples/snippets" ], - "version": "2.23.0", + "version": "2.24.0", "npmClient": "npm", "message": "chore(release): %s [skip ci]" } diff --git a/package-lock.json b/package-lock.json index d6e5c708d4..efb4e20ee4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,9 +27,9 @@ "packages/kafka" ], "devDependencies": { - "@biomejs/biome": "^1.9.4", + "@biomejs/biome": "^2.1.1", "@types/aws-lambda": "^8.10.150", - "@types/node": "^24.0.8", + "@types/node": "^24.0.13", "@vitest/coverage-v8": "^3.2.4", "husky": "^9.1.7", "lerna": "8.1.2", @@ -49,7 +49,7 @@ }, "examples/app": { "name": "powertools-sample-app", - "version": "2.23.0", + "version": "2.24.0", "license": "MIT-0", "dependencies": { "@aws-lambda-powertools/batch": "^2.23.0", @@ -58,20 +58,20 @@ "@aws-lambda-powertools/metrics": "^2.23.0", "@aws-lambda-powertools/parameters": "^2.23.0", "@aws-lambda-powertools/tracer": "^2.23.0", - "@aws-sdk/client-ssm": "^3.840.0", - "@aws-sdk/lib-dynamodb": "^3.840.0", + "@aws-sdk/client-ssm": "^3.844.0", + "@aws-sdk/lib-dynamodb": "^3.844.0", "@middy/core": "^4.7.0", "@types/aws-lambda": "^8.10.150", - "@types/node": "24.0.8", - "aws-cdk": "^2.1020.0", + "@types/node": "24.0.13", + "aws-cdk": "^2.1020.2", "constructs": "^10.4.2", - "esbuild": "^0.25.5", + "esbuild": "^0.25.6", "typescript": "^5.8.3" }, "devDependencies": { "@types/aws-lambda": "^8.10.150", - "@types/node": "24.0.8", - "aws-cdk-lib": "^2.202.0", + "@types/node": "24.0.13", + "aws-cdk-lib": "^2.204.0", "constructs": "^10.4.2", "source-map-support": "^0.5.21", "tsx": "^4.20.3", @@ -81,7 +81,7 @@ }, "examples/snippets": { "name": "code-snippets", - "version": "2.23.0", + "version": "2.24.0", "license": "MIT-0", "dependencies": { "arktype": "^2.1.20", @@ -97,17 +97,17 @@ "@aws-lambda-powertools/parameters": "^2.23.0", "@aws-lambda-powertools/parser": "^2.23.0", "@aws-lambda-powertools/tracer": "^2.23.0", - "@aws-sdk/client-appconfigdata": "^3.840.0", - "@aws-sdk/client-dynamodb": "^3.840.0", - "@aws-sdk/client-secrets-manager": "^3.840.0", - "@aws-sdk/client-ssm": "^3.840.0", - "@aws-sdk/util-dynamodb": "^3.840.0", + "@aws-sdk/client-appconfigdata": "^3.844.0", + "@aws-sdk/client-dynamodb": "^3.844.0", + "@aws-sdk/client-secrets-manager": "^3.844.0", + "@aws-sdk/client-ssm": "^3.844.0", + "@aws-sdk/util-dynamodb": "^3.844.0", "@middy/core": "^4.7.0", - "@redis/client": "^5.5.6", + "@redis/client": "^5.6.0", "@valkey/valkey-glide": "^2.0.1", "aws-sdk": "^2.1692.0", "aws-sdk-client-mock": "^4.1.0", - "zod": "^3.25.67" + "zod": "^4.0.5" } }, "examples/snippets/node_modules/@valkey/valkey-glide": { @@ -136,9 +136,9 @@ "version": "2.23.0", "license": "MIT-0", "dependencies": { - "aws-cdk": "^2.1020.0", - "aws-cdk-lib": "^2.202.0", - "esbuild": "^0.25.5", + "aws-cdk": "^2.1020.2", + "aws-cdk-lib": "^2.204.0", + "esbuild": "^0.25.6", "tsx": "^4.20.3" }, "bin": { @@ -178,10 +178,9 @@ "license": "MIT" }, "node_modules/@aws-cdk/asset-awscli-v1": { - "version": "2.2.240", - "resolved": "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.240.tgz", - "integrity": "sha512-Ry5yvGVf8s7j1Gf1aBFs0mBnWzRkkRtgSVpRGkDWXvZoPbRODAH33S1mAxkETNb+dNnTPGE2Gvws0XbhpJ6RzA==", - "license": "Apache-2.0" + "version": "2.2.242", + "resolved": "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.242.tgz", + "integrity": "sha512-4c1bAy2ISzcdKXYS1k4HYZsNrgiwbiDzj36ybwFVxEWZXVAP0dimQTCaB9fxu7sWzEjw3d+eaw6Fon+QTfTIpQ==" }, "node_modules/@aws-cdk/asset-node-proxy-agent-v6": { "version": "2.1.0", @@ -320,9 +319,9 @@ } }, "node_modules/@aws-cdk/cloud-assembly-schema": { - "version": "44.9.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-44.9.0.tgz", - "integrity": "sha512-zQ/CwW/CZ3Zcf2vdukBCHbZi8wwYuoVIRU7w6dWS7Y7wPuq7iWTWwQyujvH5YlDVMyH4mrgYa3f1lV2etTZLVQ==", + "version": "45.2.0", + "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-45.2.0.tgz", + "integrity": "sha512-5TTUkGHQ+nfuUGwKA8/Yraxb+JdNUh4np24qk/VHXmrCMq+M6HfmGWfhcg/QlHA2S5P3YIamfYHdQAB4uSNLAg==", "bundleDependencies": [ "jsonschema", "semver" @@ -422,12 +421,12 @@ } }, "node_modules/@aws-cdk/toolkit-lib": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@aws-cdk/toolkit-lib/-/toolkit-lib-1.2.2.tgz", - "integrity": "sha512-Y2TmxrmMrIxJkhYZiDbfUnAnUbWMZR5IcoOcl3QANXZX8d3HqTV2lWiOffi8mjvWuseK+7NQEvfUNocc73KYKg==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@aws-cdk/toolkit-lib/-/toolkit-lib-1.2.4.tgz", + "integrity": "sha512-/qEWfQSbb5UlYwyTYnXcFGVaffeD5cVUZPMqbcRWC2sHPzSMGQpW12u2V2ygtxFIQUN8Km0ha+4QsyZDcHQzeQ==", "dependencies": { "@aws-cdk/cdk-assets-lib": "^1", - "@aws-cdk/cloud-assembly-schema": ">=44.9.0", + "@aws-cdk/cloud-assembly-schema": ">=45.1.0", "@aws-cdk/cloudformation-diff": "^2", "@aws-cdk/cx-api": "^2", "@aws-sdk/client-appsync": "^3", @@ -873,49 +872,50 @@ "link": true }, "node_modules/@aws-sdk/client-appconfigdata": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-appconfigdata/-/client-appconfigdata-3.840.0.tgz", - "integrity": "sha512-ePhKqs0Gp/9SWJnn8czFSxjR154au0QsoZbEPdGYonpyj7Dv/O4TOhN2+fhFbg63bES7mgcjmhNoYyQEbrFjSw==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-appconfigdata/-/client-appconfigdata-3.844.0.tgz", + "integrity": "sha512-f8nLu+503xiGu3R3YnFdrfYmcFyRtquraS6YdzBkQzKrhPGyJD1T4fEjNUfLpPC4EA5LtOpwnofFfyUXnTtkIg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", - "@aws-sdk/credential-provider-node": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/credential-provider-node": "3.844.0", "@aws-sdk/middleware-host-header": "3.840.0", "@aws-sdk/middleware-logger": "3.840.0", "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/region-config-resolver": "3.840.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", + "@aws-sdk/util-endpoints": "3.844.0", "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.844.0", "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/core": "^3.7.0", + "@smithy/fetch-http-handler": "^5.1.0", "@smithy/hash-node": "^4.0.4", "@smithy/invalid-dependency": "^4.0.4", "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", + "@smithy/middleware-endpoint": "^4.1.14", + "@smithy/middleware-retry": "^4.1.15", "@smithy/middleware-serde": "^4.0.8", "@smithy/middleware-stack": "^4.0.4", "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/node-http-handler": "^4.1.0", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", + "@smithy/util-defaults-mode-browser": "^4.0.22", + "@smithy/util-defaults-mode-node": "^4.0.22", "@smithy/util-endpoints": "^3.0.6", "@smithy/util-middleware": "^4.0.4", "@smithy/util-retry": "^4.0.6", - "@smithy/util-stream": "^4.2.2", + "@smithy/util-stream": "^4.2.3", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" }, @@ -924,44 +924,45 @@ } }, "node_modules/@aws-sdk/client-appconfigdata/node_modules/@aws-sdk/client-sso": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.840.0.tgz", - "integrity": "sha512-3Zp+FWN2hhmKdpS0Ragi5V2ZPsZNScE3jlbgoJjzjI/roHZqO+e3/+XFN4TlM0DsPKYJNp+1TAjmhxN6rOnfYA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.844.0.tgz", + "integrity": "sha512-FktodSx+pfUfIqMjoNwZ6t1xqq/G3cfT7I4JJ0HKHoIIZdoCHQB52x0OzKDtHDJAnEQPInasdPS8PorZBZtHmg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/middleware-host-header": "3.840.0", "@aws-sdk/middleware-logger": "3.840.0", "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/region-config-resolver": "3.840.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", + "@aws-sdk/util-endpoints": "3.844.0", "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.844.0", "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/core": "^3.7.0", + "@smithy/fetch-http-handler": "^5.1.0", "@smithy/hash-node": "^4.0.4", "@smithy/invalid-dependency": "^4.0.4", "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", + "@smithy/middleware-endpoint": "^4.1.14", + "@smithy/middleware-retry": "^4.1.15", "@smithy/middleware-serde": "^4.0.8", "@smithy/middleware-stack": "^4.0.4", "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/node-http-handler": "^4.1.0", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", + "@smithy/util-defaults-mode-browser": "^4.0.22", + "@smithy/util-defaults-mode-node": "^4.0.22", "@smithy/util-endpoints": "^3.0.6", "@smithy/util-middleware": "^4.0.4", "@smithy/util-retry": "^4.0.6", @@ -973,25 +974,26 @@ } }, "node_modules/@aws-sdk/client-appconfigdata/node_modules/@aws-sdk/core": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.840.0.tgz", - "integrity": "sha512-x3Zgb39tF1h2XpU+yA4OAAQlW6LVEfXNlSedSYJ7HGKXqA/E9h3rWQVpYfhXXVVsLdYXdNw5KBUkoAoruoZSZA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.844.0.tgz", + "integrity": "sha512-pfpI54bG5Xf2NkqrDBC2REStXlDXNCw/whORhkEs+Tp5exU872D5QKguzjPA6hH+8Pvbq1qgt5zXMbduISTHJw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@aws-sdk/xml-builder": "3.821.0", - "@smithy/core": "^3.6.0", + "@smithy/core": "^3.7.0", "@smithy/node-config-provider": "^4.1.3", "@smithy/property-provider": "^4.0.4", "@smithy/protocol-http": "^5.1.2", "@smithy/signature-v4": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-middleware": "^4.0.4", "@smithy/util-utf8": "^4.0.0", - "fast-xml-parser": "4.4.1", + "fast-xml-parser": "5.2.5", "tslib": "^2.6.2" }, "engines": { @@ -999,12 +1001,13 @@ } }, "node_modules/@aws-sdk/client-appconfigdata/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.840.0.tgz", - "integrity": "sha512-EzF6VcJK7XvQ/G15AVEfJzN2mNXU8fcVpXo4bRyr1S6t2q5zx6UPH/XjDbn18xyUmOq01t+r8gG+TmHEVo18fA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.844.0.tgz", + "integrity": "sha512-WB94Ox86MqcZ4CnRjKgopzaSuZH4hMP0GqdOxG4s1it1lRWOIPOHOC1dPiM0Zbj1uqITIhbXUQVXyP/uaJeNkw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/types": "^4.3.1", @@ -1015,20 +1018,21 @@ } }, "node_modules/@aws-sdk/client-appconfigdata/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.840.0.tgz", - "integrity": "sha512-wbnUiPGLVea6mXbUh04fu+VJmGkQvmToPeTYdHE8eRZq3NRDi3t3WltT+jArLBKD/4NppRpMjf2ju4coMCz91g==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.844.0.tgz", + "integrity": "sha512-e+efVqfkhpM8zxYeiLNgTUlX+tmtXzVm3bw1A02U9Z9cWBHyQNb8pi90M7QniLoqRURY1B0C2JqkOE61gd4KNg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", - "@smithy/fetch-http-handler": "^5.0.4", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/node-http-handler": "^4.1.0", "@smithy/property-provider": "^4.0.4", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", - "@smithy/util-stream": "^4.2.2", + "@smithy/util-stream": "^4.2.3", "tslib": "^2.6.2" }, "engines": { @@ -1036,18 +1040,19 @@ } }, "node_modules/@aws-sdk/client-appconfigdata/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.840.0.tgz", - "integrity": "sha512-7F290BsWydShHb+7InXd+IjJc3mlEIm9I0R57F/Pjl1xZB69MdkhVGCnuETWoBt4g53ktJd6NEjzm/iAhFXFmw==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.844.0.tgz", + "integrity": "sha512-jc5ArGz2HfAx5QPXD+Ep36+QWyCKzl2TG6Vtl87/vljfLhVD0gEHv8fRsqWEp3Rc6hVfKnCjLW5ayR2HYcow9w==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/credential-provider-env": "3.840.0", - "@aws-sdk/credential-provider-http": "3.840.0", - "@aws-sdk/credential-provider-process": "3.840.0", - "@aws-sdk/credential-provider-sso": "3.840.0", - "@aws-sdk/credential-provider-web-identity": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/credential-provider-env": "3.844.0", + "@aws-sdk/credential-provider-http": "3.844.0", + "@aws-sdk/credential-provider-process": "3.844.0", + "@aws-sdk/credential-provider-sso": "3.844.0", + "@aws-sdk/credential-provider-web-identity": "3.844.0", + "@aws-sdk/nested-clients": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/credential-provider-imds": "^4.0.6", "@smithy/property-provider": "^4.0.4", @@ -1060,17 +1065,18 @@ } }, "node_modules/@aws-sdk/client-appconfigdata/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.840.0.tgz", - "integrity": "sha512-KufP8JnxA31wxklLm63evUPSFApGcH8X86z3mv9SRbpCm5ycgWIGVCTXpTOdgq6rPZrwT9pftzv2/b4mV/9clg==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.844.0.tgz", + "integrity": "sha512-pUqB0StTNyW0R03XjTA3wrQZcie/7FJKSXlYHue921ZXuhLOZpzyDkLNfdRsZTcEoYYWVPSmyS+Eu/g5yVsBNA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.840.0", - "@aws-sdk/credential-provider-http": "3.840.0", - "@aws-sdk/credential-provider-ini": "3.840.0", - "@aws-sdk/credential-provider-process": "3.840.0", - "@aws-sdk/credential-provider-sso": "3.840.0", - "@aws-sdk/credential-provider-web-identity": "3.840.0", + "@aws-sdk/credential-provider-env": "3.844.0", + "@aws-sdk/credential-provider-http": "3.844.0", + "@aws-sdk/credential-provider-ini": "3.844.0", + "@aws-sdk/credential-provider-process": "3.844.0", + "@aws-sdk/credential-provider-sso": "3.844.0", + "@aws-sdk/credential-provider-web-identity": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/credential-provider-imds": "^4.0.6", "@smithy/property-provider": "^4.0.4", @@ -1083,12 +1089,13 @@ } }, "node_modules/@aws-sdk/client-appconfigdata/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.840.0.tgz", - "integrity": "sha512-HkDQWHy8tCI4A0Ps2NVtuVYMv9cB4y/IuD/TdOsqeRIAT12h8jDb98BwQPNLAImAOwOWzZJ8Cu0xtSpX7CQhMw==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.844.0.tgz", + "integrity": "sha512-VCI8XvIDt2WBfk5Gi/wXKPcWTS3OkAbovB66oKcNQalllH8ESDg4SfLNhchdnN8A5sDGj6tIBJ19nk+dQ6GaqQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -1100,14 +1107,15 @@ } }, "node_modules/@aws-sdk/client-appconfigdata/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.840.0.tgz", - "integrity": "sha512-2qgdtdd6R0Z1y0KL8gzzwFUGmhBHSUx4zy85L2XV1CXhpRNwV71SVWJqLDVV5RVWVf9mg50Pm3AWrUC0xb0pcA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.844.0.tgz", + "integrity": "sha512-UNp/uWufGlb5nWa4dpc6uQnDOB/9ysJJFG95ACowNVL9XWfi1LJO7teKrqNkVhq0CzSJS1tCt3FvX4UfM+aN1g==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.840.0", - "@aws-sdk/core": "3.840.0", - "@aws-sdk/token-providers": "3.840.0", + "@aws-sdk/client-sso": "3.844.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/token-providers": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -1119,13 +1127,14 @@ } }, "node_modules/@aws-sdk/client-appconfigdata/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.840.0.tgz", - "integrity": "sha512-dpEeVXG8uNZSmVXReE4WP0lwoioX2gstk4RnUgrdUE3YaPq8A+hJiVAyc3h+cjDeIqfbsQbZm9qFetKC2LF9dQ==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.844.0.tgz", + "integrity": "sha512-iDmX4pPmatjttIScdspZRagaFnCjpHZIEEwTyKdXxUaU0iAOSXF8ecrCEvutETvImPOC86xdrq+MPacJOnMzUA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/nested-clients": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/types": "^4.3.1", @@ -1140,6 +1149,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.840.0.tgz", "integrity": "sha512-ub+hXJAbAje94+Ya6c6eL7sYujoE8D4Bumu1NUI8TXjUhVVn0HzVWQjpRLshdLsUp1AW7XyeJaxyajRaJQ8+Xg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/protocol-http": "^5.1.2", @@ -1155,6 +1165,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.840.0.tgz", "integrity": "sha512-lSV8FvjpdllpGaRspywss4CtXV8M7NNNH+2/j86vMH+YCOZ6fu2T/TyFd/tHwZ92vDfHctWkRbQxg0bagqwovA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/types": "^4.3.1", @@ -1169,6 +1180,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.840.0.tgz", "integrity": "sha512-Gu7lGDyfddyhIkj1Z1JtrY5NHb5+x/CRiB87GjaSrKxkDaydtX2CU977JIABtt69l9wLbcGDIQ+W0uJ5xPof7g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/protocol-http": "^5.1.2", @@ -1180,15 +1192,16 @@ } }, "node_modules/@aws-sdk/client-appconfigdata/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.840.0.tgz", - "integrity": "sha512-hiiMf7BP5ZkAFAvWRcK67Mw/g55ar7OCrvrynC92hunx/xhMkrgSLM0EXIZ1oTn3uql9kH/qqGF0nqsK6K555A==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.844.0.tgz", + "integrity": "sha512-SIbDNUL6ZYXPj5Tk0qEz05sW9kNS1Gl3/wNWEmH+AuUACipkyIeKKWzD6z5433MllETh73vtka/JQF3g7AuZww==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", - "@smithy/core": "^3.6.0", + "@aws-sdk/util-endpoints": "3.844.0", + "@smithy/core": "^3.7.0", "@smithy/protocol-http": "^5.1.2", "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -1198,44 +1211,45 @@ } }, "node_modules/@aws-sdk/client-appconfigdata/node_modules/@aws-sdk/nested-clients": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.840.0.tgz", - "integrity": "sha512-LXYYo9+n4hRqnRSIMXLBb+BLz+cEmjMtTudwK1BF6Bn2RfdDv29KuyeDRrPCS3TwKl7ZKmXUmE9n5UuHAPfBpA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.844.0.tgz", + "integrity": "sha512-p2XILWc7AcevUSpBg2VtQrk79eWQC4q2JsCSY7HxKpFLZB4mMOfmiTyYkR1gEA6AttK/wpCOtfz+hi1/+z2V1A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/middleware-host-header": "3.840.0", "@aws-sdk/middleware-logger": "3.840.0", "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/region-config-resolver": "3.840.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", + "@aws-sdk/util-endpoints": "3.844.0", "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.844.0", "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/core": "^3.7.0", + "@smithy/fetch-http-handler": "^5.1.0", "@smithy/hash-node": "^4.0.4", "@smithy/invalid-dependency": "^4.0.4", "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", + "@smithy/middleware-endpoint": "^4.1.14", + "@smithy/middleware-retry": "^4.1.15", "@smithy/middleware-serde": "^4.0.8", "@smithy/middleware-stack": "^4.0.4", "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/node-http-handler": "^4.1.0", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", + "@smithy/util-defaults-mode-browser": "^4.0.22", + "@smithy/util-defaults-mode-node": "^4.0.22", "@smithy/util-endpoints": "^3.0.6", "@smithy/util-middleware": "^4.0.4", "@smithy/util-retry": "^4.0.6", @@ -1251,6 +1265,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.840.0.tgz", "integrity": "sha512-Qjnxd/yDv9KpIMWr90ZDPtRj0v75AqGC92Lm9+oHXZ8p1MjG5JE2CW0HL8JRgK9iKzgKBL7pPQRXI8FkvEVfrA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/node-config-provider": "^4.1.3", @@ -1264,13 +1279,14 @@ } }, "node_modules/@aws-sdk/client-appconfigdata/node_modules/@aws-sdk/token-providers": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.840.0.tgz", - "integrity": "sha512-6BuTOLTXvmgwjK7ve7aTg9JaWFdM5UoMolLVPMyh3wTv9Ufalh8oklxYHUBIxsKkBGO2WiHXytveuxH6tAgTYg==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.844.0.tgz", + "integrity": "sha512-Kh728FEny0fil+LeH8U1offPJCTd/EDh8liBAvLtViLHt2WoX2xC8rk98D38Q5p79aIUhHb3Pf4n9IZfTu/Kog==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/nested-clients": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -1286,6 +1302,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.840.0.tgz", "integrity": "sha512-xliuHaUFZxEx1NSXeLLZ9Dyu6+EJVQKEoD+yM+zqUo3YDZ7medKJWY6fIOKiPX/N7XbLdBYwajb15Q7IL8KkeA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -1295,13 +1312,15 @@ } }, "node_modules/@aws-sdk/client-appconfigdata/node_modules/@aws-sdk/util-endpoints": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.840.0.tgz", - "integrity": "sha512-eqE9ROdg/Kk0rj3poutyRCFauPDXIf/WSvCqFiRDDVi6QOnCv/M0g2XW8/jSvkJlOyaXkNCptapIp6BeeFFGYw==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.844.0.tgz", + "integrity": "sha512-1DHh0WTUmxlysz3EereHKtKoxVUG9UC5BsfAw6Bm4/6qDlJiqtY3oa2vebkYN23yltKdfsCK65cwnBRU59mWVg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", "@smithy/util-endpoints": "^3.0.6", "tslib": "^2.6.2" }, @@ -1314,6 +1333,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.840.0.tgz", "integrity": "sha512-JdyZM3EhhL4PqwFpttZu1afDpPJCCc3eyZOLi+srpX11LsGj6sThf47TYQN75HT1CarZ7cCdQHGzP2uy3/xHfQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/types": "^4.3.1", @@ -1322,12 +1342,13 @@ } }, "node_modules/@aws-sdk/client-appconfigdata/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.840.0.tgz", - "integrity": "sha512-Fy5JUEDQU1tPm2Yw/YqRYYc27W5+QD/J4mYvQvdWjUGZLB5q3eLFMGD35Uc28ZFoGMufPr4OCxK/bRfWROBRHQ==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.844.0.tgz", + "integrity": "sha512-0eTpURp9Gxbyyeqr78ogARZMSWS5KUMZuN+XMHxNpQLmn2S+J3g+MAyoklCcwhKXlbdQq2aMULEiy0mqIWytuw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/node-config-provider": "^4.1.3", "@smithy/types": "^4.3.1", @@ -1350,6 +1371,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.821.0.tgz", "integrity": "sha512-DIIotRnefVL6DiaHtO6/21DhJ4JZnnIwdNbpwiAhdt/AVbttcE4yw925gsjur0OGv5BTYXQXU3YnANBYnZjuQA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -1358,6 +1380,38 @@ "node": ">=18.0.0" } }, + "node_modules/@aws-sdk/client-appconfigdata/node_modules/fast-xml-parser": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", + "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^2.1.0" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/@aws-sdk/client-appconfigdata/node_modules/strnum": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, "node_modules/@aws-sdk/client-appsync": { "version": "3.741.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-appsync/-/client-appsync-3.741.0.tgz", @@ -2509,46 +2563,47 @@ } }, "node_modules/@aws-sdk/client-cloudwatch": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch/-/client-cloudwatch-3.840.0.tgz", - "integrity": "sha512-aAVBmXwHuLPpIY0oma2Zm8134CUoz2HlM2pGc2pmBI7vExwnh8UPYeM8SMhw/x0O4aeMNy3C5bGlj5XrssnWng==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch/-/client-cloudwatch-3.844.0.tgz", + "integrity": "sha512-4QVMBnPGEifabMvZnL8srWGVz69mHTb8aV/EaCf2lv91uN12RvzbwNF92iTi7tjrTR2+s9x8u5JlIvOEqLNhmg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", - "@aws-sdk/credential-provider-node": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/credential-provider-node": "3.844.0", "@aws-sdk/middleware-host-header": "3.840.0", "@aws-sdk/middleware-logger": "3.840.0", "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/region-config-resolver": "3.840.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", + "@aws-sdk/util-endpoints": "3.844.0", "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.844.0", "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/core": "^3.7.0", + "@smithy/fetch-http-handler": "^5.1.0", "@smithy/hash-node": "^4.0.4", "@smithy/invalid-dependency": "^4.0.4", - "@smithy/middleware-compression": "^4.1.12", + "@smithy/middleware-compression": "^4.1.13", "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", + "@smithy/middleware-endpoint": "^4.1.14", + "@smithy/middleware-retry": "^4.1.15", "@smithy/middleware-serde": "^4.0.8", "@smithy/middleware-stack": "^4.0.4", "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/node-http-handler": "^4.1.0", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", + "@smithy/util-defaults-mode-browser": "^4.0.22", + "@smithy/util-defaults-mode-node": "^4.0.22", "@smithy/util-endpoints": "^3.0.6", "@smithy/util-middleware": "^4.0.4", "@smithy/util-retry": "^4.0.6", @@ -2947,44 +3002,45 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/client-sso": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.840.0.tgz", - "integrity": "sha512-3Zp+FWN2hhmKdpS0Ragi5V2ZPsZNScE3jlbgoJjzjI/roHZqO+e3/+XFN4TlM0DsPKYJNp+1TAjmhxN6rOnfYA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.844.0.tgz", + "integrity": "sha512-FktodSx+pfUfIqMjoNwZ6t1xqq/G3cfT7I4JJ0HKHoIIZdoCHQB52x0OzKDtHDJAnEQPInasdPS8PorZBZtHmg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/middleware-host-header": "3.840.0", "@aws-sdk/middleware-logger": "3.840.0", "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/region-config-resolver": "3.840.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", + "@aws-sdk/util-endpoints": "3.844.0", "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.844.0", "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/core": "^3.7.0", + "@smithy/fetch-http-handler": "^5.1.0", "@smithy/hash-node": "^4.0.4", "@smithy/invalid-dependency": "^4.0.4", "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", + "@smithy/middleware-endpoint": "^4.1.14", + "@smithy/middleware-retry": "^4.1.15", "@smithy/middleware-serde": "^4.0.8", "@smithy/middleware-stack": "^4.0.4", "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/node-http-handler": "^4.1.0", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", + "@smithy/util-defaults-mode-browser": "^4.0.22", + "@smithy/util-defaults-mode-node": "^4.0.22", "@smithy/util-endpoints": "^3.0.6", "@smithy/util-middleware": "^4.0.4", "@smithy/util-retry": "^4.0.6", @@ -2996,25 +3052,26 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/core": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.840.0.tgz", - "integrity": "sha512-x3Zgb39tF1h2XpU+yA4OAAQlW6LVEfXNlSedSYJ7HGKXqA/E9h3rWQVpYfhXXVVsLdYXdNw5KBUkoAoruoZSZA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.844.0.tgz", + "integrity": "sha512-pfpI54bG5Xf2NkqrDBC2REStXlDXNCw/whORhkEs+Tp5exU872D5QKguzjPA6hH+8Pvbq1qgt5zXMbduISTHJw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@aws-sdk/xml-builder": "3.821.0", - "@smithy/core": "^3.6.0", + "@smithy/core": "^3.7.0", "@smithy/node-config-provider": "^4.1.3", "@smithy/property-provider": "^4.0.4", "@smithy/protocol-http": "^5.1.2", "@smithy/signature-v4": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-middleware": "^4.0.4", "@smithy/util-utf8": "^4.0.0", - "fast-xml-parser": "4.4.1", + "fast-xml-parser": "5.2.5", "tslib": "^2.6.2" }, "engines": { @@ -3022,12 +3079,13 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.840.0.tgz", - "integrity": "sha512-EzF6VcJK7XvQ/G15AVEfJzN2mNXU8fcVpXo4bRyr1S6t2q5zx6UPH/XjDbn18xyUmOq01t+r8gG+TmHEVo18fA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.844.0.tgz", + "integrity": "sha512-WB94Ox86MqcZ4CnRjKgopzaSuZH4hMP0GqdOxG4s1it1lRWOIPOHOC1dPiM0Zbj1uqITIhbXUQVXyP/uaJeNkw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/types": "^4.3.1", @@ -3038,20 +3096,21 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.840.0.tgz", - "integrity": "sha512-wbnUiPGLVea6mXbUh04fu+VJmGkQvmToPeTYdHE8eRZq3NRDi3t3WltT+jArLBKD/4NppRpMjf2ju4coMCz91g==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.844.0.tgz", + "integrity": "sha512-e+efVqfkhpM8zxYeiLNgTUlX+tmtXzVm3bw1A02U9Z9cWBHyQNb8pi90M7QniLoqRURY1B0C2JqkOE61gd4KNg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", - "@smithy/fetch-http-handler": "^5.0.4", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/node-http-handler": "^4.1.0", "@smithy/property-provider": "^4.0.4", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", - "@smithy/util-stream": "^4.2.2", + "@smithy/util-stream": "^4.2.3", "tslib": "^2.6.2" }, "engines": { @@ -3059,18 +3118,19 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.840.0.tgz", - "integrity": "sha512-7F290BsWydShHb+7InXd+IjJc3mlEIm9I0R57F/Pjl1xZB69MdkhVGCnuETWoBt4g53ktJd6NEjzm/iAhFXFmw==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.844.0.tgz", + "integrity": "sha512-jc5ArGz2HfAx5QPXD+Ep36+QWyCKzl2TG6Vtl87/vljfLhVD0gEHv8fRsqWEp3Rc6hVfKnCjLW5ayR2HYcow9w==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/credential-provider-env": "3.840.0", - "@aws-sdk/credential-provider-http": "3.840.0", - "@aws-sdk/credential-provider-process": "3.840.0", - "@aws-sdk/credential-provider-sso": "3.840.0", - "@aws-sdk/credential-provider-web-identity": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/credential-provider-env": "3.844.0", + "@aws-sdk/credential-provider-http": "3.844.0", + "@aws-sdk/credential-provider-process": "3.844.0", + "@aws-sdk/credential-provider-sso": "3.844.0", + "@aws-sdk/credential-provider-web-identity": "3.844.0", + "@aws-sdk/nested-clients": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/credential-provider-imds": "^4.0.6", "@smithy/property-provider": "^4.0.4", @@ -3083,17 +3143,18 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.840.0.tgz", - "integrity": "sha512-KufP8JnxA31wxklLm63evUPSFApGcH8X86z3mv9SRbpCm5ycgWIGVCTXpTOdgq6rPZrwT9pftzv2/b4mV/9clg==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.844.0.tgz", + "integrity": "sha512-pUqB0StTNyW0R03XjTA3wrQZcie/7FJKSXlYHue921ZXuhLOZpzyDkLNfdRsZTcEoYYWVPSmyS+Eu/g5yVsBNA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.840.0", - "@aws-sdk/credential-provider-http": "3.840.0", - "@aws-sdk/credential-provider-ini": "3.840.0", - "@aws-sdk/credential-provider-process": "3.840.0", - "@aws-sdk/credential-provider-sso": "3.840.0", - "@aws-sdk/credential-provider-web-identity": "3.840.0", + "@aws-sdk/credential-provider-env": "3.844.0", + "@aws-sdk/credential-provider-http": "3.844.0", + "@aws-sdk/credential-provider-ini": "3.844.0", + "@aws-sdk/credential-provider-process": "3.844.0", + "@aws-sdk/credential-provider-sso": "3.844.0", + "@aws-sdk/credential-provider-web-identity": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/credential-provider-imds": "^4.0.6", "@smithy/property-provider": "^4.0.4", @@ -3106,12 +3167,13 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.840.0.tgz", - "integrity": "sha512-HkDQWHy8tCI4A0Ps2NVtuVYMv9cB4y/IuD/TdOsqeRIAT12h8jDb98BwQPNLAImAOwOWzZJ8Cu0xtSpX7CQhMw==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.844.0.tgz", + "integrity": "sha512-VCI8XvIDt2WBfk5Gi/wXKPcWTS3OkAbovB66oKcNQalllH8ESDg4SfLNhchdnN8A5sDGj6tIBJ19nk+dQ6GaqQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -3123,14 +3185,15 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.840.0.tgz", - "integrity": "sha512-2qgdtdd6R0Z1y0KL8gzzwFUGmhBHSUx4zy85L2XV1CXhpRNwV71SVWJqLDVV5RVWVf9mg50Pm3AWrUC0xb0pcA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.844.0.tgz", + "integrity": "sha512-UNp/uWufGlb5nWa4dpc6uQnDOB/9ysJJFG95ACowNVL9XWfi1LJO7teKrqNkVhq0CzSJS1tCt3FvX4UfM+aN1g==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.840.0", - "@aws-sdk/core": "3.840.0", - "@aws-sdk/token-providers": "3.840.0", + "@aws-sdk/client-sso": "3.844.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/token-providers": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -3142,13 +3205,14 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.840.0.tgz", - "integrity": "sha512-dpEeVXG8uNZSmVXReE4WP0lwoioX2gstk4RnUgrdUE3YaPq8A+hJiVAyc3h+cjDeIqfbsQbZm9qFetKC2LF9dQ==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.844.0.tgz", + "integrity": "sha512-iDmX4pPmatjttIScdspZRagaFnCjpHZIEEwTyKdXxUaU0iAOSXF8ecrCEvutETvImPOC86xdrq+MPacJOnMzUA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/nested-clients": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/types": "^4.3.1", @@ -3163,6 +3227,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.840.0.tgz", "integrity": "sha512-ub+hXJAbAje94+Ya6c6eL7sYujoE8D4Bumu1NUI8TXjUhVVn0HzVWQjpRLshdLsUp1AW7XyeJaxyajRaJQ8+Xg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/protocol-http": "^5.1.2", @@ -3178,6 +3243,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.840.0.tgz", "integrity": "sha512-lSV8FvjpdllpGaRspywss4CtXV8M7NNNH+2/j86vMH+YCOZ6fu2T/TyFd/tHwZ92vDfHctWkRbQxg0bagqwovA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/types": "^4.3.1", @@ -3192,6 +3258,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.840.0.tgz", "integrity": "sha512-Gu7lGDyfddyhIkj1Z1JtrY5NHb5+x/CRiB87GjaSrKxkDaydtX2CU977JIABtt69l9wLbcGDIQ+W0uJ5xPof7g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/protocol-http": "^5.1.2", @@ -3203,15 +3270,16 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.840.0.tgz", - "integrity": "sha512-hiiMf7BP5ZkAFAvWRcK67Mw/g55ar7OCrvrynC92hunx/xhMkrgSLM0EXIZ1oTn3uql9kH/qqGF0nqsK6K555A==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.844.0.tgz", + "integrity": "sha512-SIbDNUL6ZYXPj5Tk0qEz05sW9kNS1Gl3/wNWEmH+AuUACipkyIeKKWzD6z5433MllETh73vtka/JQF3g7AuZww==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", - "@smithy/core": "^3.6.0", + "@aws-sdk/util-endpoints": "3.844.0", + "@smithy/core": "^3.7.0", "@smithy/protocol-http": "^5.1.2", "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -3221,44 +3289,45 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/nested-clients": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.840.0.tgz", - "integrity": "sha512-LXYYo9+n4hRqnRSIMXLBb+BLz+cEmjMtTudwK1BF6Bn2RfdDv29KuyeDRrPCS3TwKl7ZKmXUmE9n5UuHAPfBpA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.844.0.tgz", + "integrity": "sha512-p2XILWc7AcevUSpBg2VtQrk79eWQC4q2JsCSY7HxKpFLZB4mMOfmiTyYkR1gEA6AttK/wpCOtfz+hi1/+z2V1A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/middleware-host-header": "3.840.0", "@aws-sdk/middleware-logger": "3.840.0", "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/region-config-resolver": "3.840.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", + "@aws-sdk/util-endpoints": "3.844.0", "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.844.0", "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/core": "^3.7.0", + "@smithy/fetch-http-handler": "^5.1.0", "@smithy/hash-node": "^4.0.4", "@smithy/invalid-dependency": "^4.0.4", "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", + "@smithy/middleware-endpoint": "^4.1.14", + "@smithy/middleware-retry": "^4.1.15", "@smithy/middleware-serde": "^4.0.8", "@smithy/middleware-stack": "^4.0.4", "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/node-http-handler": "^4.1.0", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", + "@smithy/util-defaults-mode-browser": "^4.0.22", + "@smithy/util-defaults-mode-node": "^4.0.22", "@smithy/util-endpoints": "^3.0.6", "@smithy/util-middleware": "^4.0.4", "@smithy/util-retry": "^4.0.6", @@ -3274,6 +3343,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.840.0.tgz", "integrity": "sha512-Qjnxd/yDv9KpIMWr90ZDPtRj0v75AqGC92Lm9+oHXZ8p1MjG5JE2CW0HL8JRgK9iKzgKBL7pPQRXI8FkvEVfrA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/node-config-provider": "^4.1.3", @@ -3287,13 +3357,14 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/token-providers": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.840.0.tgz", - "integrity": "sha512-6BuTOLTXvmgwjK7ve7aTg9JaWFdM5UoMolLVPMyh3wTv9Ufalh8oklxYHUBIxsKkBGO2WiHXytveuxH6tAgTYg==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.844.0.tgz", + "integrity": "sha512-Kh728FEny0fil+LeH8U1offPJCTd/EDh8liBAvLtViLHt2WoX2xC8rk98D38Q5p79aIUhHb3Pf4n9IZfTu/Kog==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/nested-clients": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -3309,6 +3380,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.840.0.tgz", "integrity": "sha512-xliuHaUFZxEx1NSXeLLZ9Dyu6+EJVQKEoD+yM+zqUo3YDZ7medKJWY6fIOKiPX/N7XbLdBYwajb15Q7IL8KkeA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -3318,13 +3390,15 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/util-endpoints": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.840.0.tgz", - "integrity": "sha512-eqE9ROdg/Kk0rj3poutyRCFauPDXIf/WSvCqFiRDDVi6QOnCv/M0g2XW8/jSvkJlOyaXkNCptapIp6BeeFFGYw==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.844.0.tgz", + "integrity": "sha512-1DHh0WTUmxlysz3EereHKtKoxVUG9UC5BsfAw6Bm4/6qDlJiqtY3oa2vebkYN23yltKdfsCK65cwnBRU59mWVg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", "@smithy/util-endpoints": "^3.0.6", "tslib": "^2.6.2" }, @@ -3337,6 +3411,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.840.0.tgz", "integrity": "sha512-JdyZM3EhhL4PqwFpttZu1afDpPJCCc3eyZOLi+srpX11LsGj6sThf47TYQN75HT1CarZ7cCdQHGzP2uy3/xHfQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/types": "^4.3.1", @@ -3345,12 +3420,13 @@ } }, "node_modules/@aws-sdk/client-cloudwatch/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.840.0.tgz", - "integrity": "sha512-Fy5JUEDQU1tPm2Yw/YqRYYc27W5+QD/J4mYvQvdWjUGZLB5q3eLFMGD35Uc28ZFoGMufPr4OCxK/bRfWROBRHQ==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.844.0.tgz", + "integrity": "sha512-0eTpURp9Gxbyyeqr78ogARZMSWS5KUMZuN+XMHxNpQLmn2S+J3g+MAyoklCcwhKXlbdQq2aMULEiy0mqIWytuw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/node-config-provider": "^4.1.3", "@smithy/types": "^4.3.1", @@ -3373,6 +3449,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.821.0.tgz", "integrity": "sha512-DIIotRnefVL6DiaHtO6/21DhJ4JZnnIwdNbpwiAhdt/AVbttcE4yw925gsjur0OGv5BTYXQXU3YnANBYnZjuQA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -3381,6 +3458,38 @@ "node": ">=18.0.0" } }, + "node_modules/@aws-sdk/client-cloudwatch/node_modules/fast-xml-parser": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", + "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^2.1.0" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/@aws-sdk/client-cloudwatch/node_modules/strnum": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, "node_modules/@aws-sdk/client-codebuild": { "version": "3.741.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-codebuild/-/client-codebuild-3.741.0.tgz", @@ -3892,45 +4001,46 @@ } }, "node_modules/@aws-sdk/client-dynamodb": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.840.0.tgz", - "integrity": "sha512-eLLKMwORBJ32YyKRo2LhWtYAYoWdnEPZSo6CyD4QUcsOosvPGdJgz4s13O3AmC60Sn43X5g3Zc4vgKvhZCfkUw==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.844.0.tgz", + "integrity": "sha512-QpgRluxFBKC/dx62WB1lO+HNmQEFd+xJRvh7oo8JMh9LnH3RIHWPbY2QlhndS4ST46p45cvtLC8LRpquFLpLDg==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", - "@aws-sdk/credential-provider-node": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/credential-provider-node": "3.844.0", "@aws-sdk/middleware-endpoint-discovery": "3.840.0", "@aws-sdk/middleware-host-header": "3.840.0", "@aws-sdk/middleware-logger": "3.840.0", "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/region-config-resolver": "3.840.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", + "@aws-sdk/util-endpoints": "3.844.0", "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.844.0", "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/core": "^3.7.0", + "@smithy/fetch-http-handler": "^5.1.0", "@smithy/hash-node": "^4.0.4", "@smithy/invalid-dependency": "^4.0.4", "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", + "@smithy/middleware-endpoint": "^4.1.14", + "@smithy/middleware-retry": "^4.1.15", "@smithy/middleware-serde": "^4.0.8", "@smithy/middleware-stack": "^4.0.4", "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/node-http-handler": "^4.1.0", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", + "@smithy/util-defaults-mode-browser": "^4.0.22", + "@smithy/util-defaults-mode-node": "^4.0.22", "@smithy/util-endpoints": "^3.0.6", "@smithy/util-middleware": "^4.0.4", "@smithy/util-retry": "^4.0.6", @@ -3945,43 +4055,44 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/client-sso": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.840.0.tgz", - "integrity": "sha512-3Zp+FWN2hhmKdpS0Ragi5V2ZPsZNScE3jlbgoJjzjI/roHZqO+e3/+XFN4TlM0DsPKYJNp+1TAjmhxN6rOnfYA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.844.0.tgz", + "integrity": "sha512-FktodSx+pfUfIqMjoNwZ6t1xqq/G3cfT7I4JJ0HKHoIIZdoCHQB52x0OzKDtHDJAnEQPInasdPS8PorZBZtHmg==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/middleware-host-header": "3.840.0", "@aws-sdk/middleware-logger": "3.840.0", "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/region-config-resolver": "3.840.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", + "@aws-sdk/util-endpoints": "3.844.0", "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.844.0", "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/core": "^3.7.0", + "@smithy/fetch-http-handler": "^5.1.0", "@smithy/hash-node": "^4.0.4", "@smithy/invalid-dependency": "^4.0.4", "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", + "@smithy/middleware-endpoint": "^4.1.14", + "@smithy/middleware-retry": "^4.1.15", "@smithy/middleware-serde": "^4.0.8", "@smithy/middleware-stack": "^4.0.4", "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/node-http-handler": "^4.1.0", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", + "@smithy/util-defaults-mode-browser": "^4.0.22", + "@smithy/util-defaults-mode-node": "^4.0.22", "@smithy/util-endpoints": "^3.0.6", "@smithy/util-middleware": "^4.0.4", "@smithy/util-retry": "^4.0.6", @@ -3993,24 +4104,25 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/core": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.840.0.tgz", - "integrity": "sha512-x3Zgb39tF1h2XpU+yA4OAAQlW6LVEfXNlSedSYJ7HGKXqA/E9h3rWQVpYfhXXVVsLdYXdNw5KBUkoAoruoZSZA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.844.0.tgz", + "integrity": "sha512-pfpI54bG5Xf2NkqrDBC2REStXlDXNCw/whORhkEs+Tp5exU872D5QKguzjPA6hH+8Pvbq1qgt5zXMbduISTHJw==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@aws-sdk/xml-builder": "3.821.0", - "@smithy/core": "^3.6.0", + "@smithy/core": "^3.7.0", "@smithy/node-config-provider": "^4.1.3", "@smithy/property-provider": "^4.0.4", "@smithy/protocol-http": "^5.1.2", "@smithy/signature-v4": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-middleware": "^4.0.4", "@smithy/util-utf8": "^4.0.0", - "fast-xml-parser": "4.4.1", + "fast-xml-parser": "5.2.5", "tslib": "^2.6.2" }, "engines": { @@ -4018,11 +4130,12 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.840.0.tgz", - "integrity": "sha512-EzF6VcJK7XvQ/G15AVEfJzN2mNXU8fcVpXo4bRyr1S6t2q5zx6UPH/XjDbn18xyUmOq01t+r8gG+TmHEVo18fA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.844.0.tgz", + "integrity": "sha512-WB94Ox86MqcZ4CnRjKgopzaSuZH4hMP0GqdOxG4s1it1lRWOIPOHOC1dPiM0Zbj1uqITIhbXUQVXyP/uaJeNkw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/types": "^4.3.1", @@ -4033,19 +4146,20 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.840.0.tgz", - "integrity": "sha512-wbnUiPGLVea6mXbUh04fu+VJmGkQvmToPeTYdHE8eRZq3NRDi3t3WltT+jArLBKD/4NppRpMjf2ju4coMCz91g==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.844.0.tgz", + "integrity": "sha512-e+efVqfkhpM8zxYeiLNgTUlX+tmtXzVm3bw1A02U9Z9cWBHyQNb8pi90M7QniLoqRURY1B0C2JqkOE61gd4KNg==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", - "@smithy/fetch-http-handler": "^5.0.4", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/node-http-handler": "^4.1.0", "@smithy/property-provider": "^4.0.4", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", - "@smithy/util-stream": "^4.2.2", + "@smithy/util-stream": "^4.2.3", "tslib": "^2.6.2" }, "engines": { @@ -4053,17 +4167,18 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.840.0.tgz", - "integrity": "sha512-7F290BsWydShHb+7InXd+IjJc3mlEIm9I0R57F/Pjl1xZB69MdkhVGCnuETWoBt4g53ktJd6NEjzm/iAhFXFmw==", - "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/credential-provider-env": "3.840.0", - "@aws-sdk/credential-provider-http": "3.840.0", - "@aws-sdk/credential-provider-process": "3.840.0", - "@aws-sdk/credential-provider-sso": "3.840.0", - "@aws-sdk/credential-provider-web-identity": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.844.0.tgz", + "integrity": "sha512-jc5ArGz2HfAx5QPXD+Ep36+QWyCKzl2TG6Vtl87/vljfLhVD0gEHv8fRsqWEp3Rc6hVfKnCjLW5ayR2HYcow9w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.844.0", + "@aws-sdk/credential-provider-env": "3.844.0", + "@aws-sdk/credential-provider-http": "3.844.0", + "@aws-sdk/credential-provider-process": "3.844.0", + "@aws-sdk/credential-provider-sso": "3.844.0", + "@aws-sdk/credential-provider-web-identity": "3.844.0", + "@aws-sdk/nested-clients": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/credential-provider-imds": "^4.0.6", "@smithy/property-provider": "^4.0.4", @@ -4076,16 +4191,17 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.840.0.tgz", - "integrity": "sha512-KufP8JnxA31wxklLm63evUPSFApGcH8X86z3mv9SRbpCm5ycgWIGVCTXpTOdgq6rPZrwT9pftzv2/b4mV/9clg==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.840.0", - "@aws-sdk/credential-provider-http": "3.840.0", - "@aws-sdk/credential-provider-ini": "3.840.0", - "@aws-sdk/credential-provider-process": "3.840.0", - "@aws-sdk/credential-provider-sso": "3.840.0", - "@aws-sdk/credential-provider-web-identity": "3.840.0", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.844.0.tgz", + "integrity": "sha512-pUqB0StTNyW0R03XjTA3wrQZcie/7FJKSXlYHue921ZXuhLOZpzyDkLNfdRsZTcEoYYWVPSmyS+Eu/g5yVsBNA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.844.0", + "@aws-sdk/credential-provider-http": "3.844.0", + "@aws-sdk/credential-provider-ini": "3.844.0", + "@aws-sdk/credential-provider-process": "3.844.0", + "@aws-sdk/credential-provider-sso": "3.844.0", + "@aws-sdk/credential-provider-web-identity": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/credential-provider-imds": "^4.0.6", "@smithy/property-provider": "^4.0.4", @@ -4098,11 +4214,12 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.840.0.tgz", - "integrity": "sha512-HkDQWHy8tCI4A0Ps2NVtuVYMv9cB4y/IuD/TdOsqeRIAT12h8jDb98BwQPNLAImAOwOWzZJ8Cu0xtSpX7CQhMw==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.844.0.tgz", + "integrity": "sha512-VCI8XvIDt2WBfk5Gi/wXKPcWTS3OkAbovB66oKcNQalllH8ESDg4SfLNhchdnN8A5sDGj6tIBJ19nk+dQ6GaqQ==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -4114,13 +4231,14 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.840.0.tgz", - "integrity": "sha512-2qgdtdd6R0Z1y0KL8gzzwFUGmhBHSUx4zy85L2XV1CXhpRNwV71SVWJqLDVV5RVWVf9mg50Pm3AWrUC0xb0pcA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.844.0.tgz", + "integrity": "sha512-UNp/uWufGlb5nWa4dpc6uQnDOB/9ysJJFG95ACowNVL9XWfi1LJO7teKrqNkVhq0CzSJS1tCt3FvX4UfM+aN1g==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.840.0", - "@aws-sdk/core": "3.840.0", - "@aws-sdk/token-providers": "3.840.0", + "@aws-sdk/client-sso": "3.844.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/token-providers": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -4132,12 +4250,13 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.840.0.tgz", - "integrity": "sha512-dpEeVXG8uNZSmVXReE4WP0lwoioX2gstk4RnUgrdUE3YaPq8A+hJiVAyc3h+cjDeIqfbsQbZm9qFetKC2LF9dQ==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.844.0.tgz", + "integrity": "sha512-iDmX4pPmatjttIScdspZRagaFnCjpHZIEEwTyKdXxUaU0iAOSXF8ecrCEvutETvImPOC86xdrq+MPacJOnMzUA==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/nested-clients": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/types": "^4.3.1", @@ -4151,6 +4270,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.840.0.tgz", "integrity": "sha512-ub+hXJAbAje94+Ya6c6eL7sYujoE8D4Bumu1NUI8TXjUhVVn0HzVWQjpRLshdLsUp1AW7XyeJaxyajRaJQ8+Xg==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/protocol-http": "^5.1.2", @@ -4165,6 +4285,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.840.0.tgz", "integrity": "sha512-lSV8FvjpdllpGaRspywss4CtXV8M7NNNH+2/j86vMH+YCOZ6fu2T/TyFd/tHwZ92vDfHctWkRbQxg0bagqwovA==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/types": "^4.3.1", @@ -4178,6 +4299,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.840.0.tgz", "integrity": "sha512-Gu7lGDyfddyhIkj1Z1JtrY5NHb5+x/CRiB87GjaSrKxkDaydtX2CU977JIABtt69l9wLbcGDIQ+W0uJ5xPof7g==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/protocol-http": "^5.1.2", @@ -4189,14 +4311,15 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.840.0.tgz", - "integrity": "sha512-hiiMf7BP5ZkAFAvWRcK67Mw/g55ar7OCrvrynC92hunx/xhMkrgSLM0EXIZ1oTn3uql9kH/qqGF0nqsK6K555A==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.844.0.tgz", + "integrity": "sha512-SIbDNUL6ZYXPj5Tk0qEz05sW9kNS1Gl3/wNWEmH+AuUACipkyIeKKWzD6z5433MllETh73vtka/JQF3g7AuZww==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", - "@smithy/core": "^3.6.0", + "@aws-sdk/util-endpoints": "3.844.0", + "@smithy/core": "^3.7.0", "@smithy/protocol-http": "^5.1.2", "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -4206,43 +4329,44 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/nested-clients": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.840.0.tgz", - "integrity": "sha512-LXYYo9+n4hRqnRSIMXLBb+BLz+cEmjMtTudwK1BF6Bn2RfdDv29KuyeDRrPCS3TwKl7ZKmXUmE9n5UuHAPfBpA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.844.0.tgz", + "integrity": "sha512-p2XILWc7AcevUSpBg2VtQrk79eWQC4q2JsCSY7HxKpFLZB4mMOfmiTyYkR1gEA6AttK/wpCOtfz+hi1/+z2V1A==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/middleware-host-header": "3.840.0", "@aws-sdk/middleware-logger": "3.840.0", "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/region-config-resolver": "3.840.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", + "@aws-sdk/util-endpoints": "3.844.0", "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.844.0", "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/core": "^3.7.0", + "@smithy/fetch-http-handler": "^5.1.0", "@smithy/hash-node": "^4.0.4", "@smithy/invalid-dependency": "^4.0.4", "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", + "@smithy/middleware-endpoint": "^4.1.14", + "@smithy/middleware-retry": "^4.1.15", "@smithy/middleware-serde": "^4.0.8", "@smithy/middleware-stack": "^4.0.4", "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/node-http-handler": "^4.1.0", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", + "@smithy/util-defaults-mode-browser": "^4.0.22", + "@smithy/util-defaults-mode-node": "^4.0.22", "@smithy/util-endpoints": "^3.0.6", "@smithy/util-middleware": "^4.0.4", "@smithy/util-retry": "^4.0.6", @@ -4257,6 +4381,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.840.0.tgz", "integrity": "sha512-Qjnxd/yDv9KpIMWr90ZDPtRj0v75AqGC92Lm9+oHXZ8p1MjG5JE2CW0HL8JRgK9iKzgKBL7pPQRXI8FkvEVfrA==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/node-config-provider": "^4.1.3", @@ -4270,12 +4395,13 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/token-providers": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.840.0.tgz", - "integrity": "sha512-6BuTOLTXvmgwjK7ve7aTg9JaWFdM5UoMolLVPMyh3wTv9Ufalh8oklxYHUBIxsKkBGO2WiHXytveuxH6tAgTYg==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.844.0.tgz", + "integrity": "sha512-Kh728FEny0fil+LeH8U1offPJCTd/EDh8liBAvLtViLHt2WoX2xC8rk98D38Q5p79aIUhHb3Pf4n9IZfTu/Kog==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/nested-clients": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -4290,6 +4416,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.840.0.tgz", "integrity": "sha512-xliuHaUFZxEx1NSXeLLZ9Dyu6+EJVQKEoD+yM+zqUo3YDZ7medKJWY6fIOKiPX/N7XbLdBYwajb15Q7IL8KkeA==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -4299,12 +4426,14 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/util-endpoints": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.840.0.tgz", - "integrity": "sha512-eqE9ROdg/Kk0rj3poutyRCFauPDXIf/WSvCqFiRDDVi6QOnCv/M0g2XW8/jSvkJlOyaXkNCptapIp6BeeFFGYw==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.844.0.tgz", + "integrity": "sha512-1DHh0WTUmxlysz3EereHKtKoxVUG9UC5BsfAw6Bm4/6qDlJiqtY3oa2vebkYN23yltKdfsCK65cwnBRU59mWVg==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", "@smithy/util-endpoints": "^3.0.6", "tslib": "^2.6.2" }, @@ -4316,6 +4445,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.840.0.tgz", "integrity": "sha512-JdyZM3EhhL4PqwFpttZu1afDpPJCCc3eyZOLi+srpX11LsGj6sThf47TYQN75HT1CarZ7cCdQHGzP2uy3/xHfQ==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/types": "^4.3.1", @@ -4324,11 +4454,12 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.840.0.tgz", - "integrity": "sha512-Fy5JUEDQU1tPm2Yw/YqRYYc27W5+QD/J4mYvQvdWjUGZLB5q3eLFMGD35Uc28ZFoGMufPr4OCxK/bRfWROBRHQ==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.844.0.tgz", + "integrity": "sha512-0eTpURp9Gxbyyeqr78ogARZMSWS5KUMZuN+XMHxNpQLmn2S+J3g+MAyoklCcwhKXlbdQq2aMULEiy0mqIWytuw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/node-config-provider": "^4.1.3", "@smithy/types": "^4.3.1", @@ -4350,6 +4481,7 @@ "version": "3.821.0", "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.821.0.tgz", "integrity": "sha512-DIIotRnefVL6DiaHtO6/21DhJ4JZnnIwdNbpwiAhdt/AVbttcE4yw925gsjur0OGv5BTYXQXU3YnANBYnZjuQA==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -4358,6 +4490,36 @@ "node": ">=18.0.0" } }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/fast-xml-parser": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", + "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^2.1.0" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/strnum": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, "node_modules/@aws-sdk/client-ec2": { "version": "3.741.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-ec2/-/client-ec2-3.741.0.tgz", @@ -6403,51 +6565,52 @@ } }, "node_modules/@aws-sdk/client-lambda": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.840.0.tgz", - "integrity": "sha512-aUKHKWW4Z1nxQ0q/shHkSA278oyv+lRJSvpin1GJXQumDdMKcOuXktmufOCZzjbl6UVw/Pqaw6V1Vo2gda6RdQ==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.844.0.tgz", + "integrity": "sha512-tPq+gxhbyZvYP7sqkxPNbDTtxGsOg+RZnyAvoZHH19kFk9zkkHIJi54Qo8ydg8OZqWC7LZtAbpIIQTmRWirVyQ==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", - "@aws-sdk/credential-provider-node": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/credential-provider-node": "3.844.0", "@aws-sdk/middleware-host-header": "3.840.0", "@aws-sdk/middleware-logger": "3.840.0", "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/region-config-resolver": "3.840.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", + "@aws-sdk/util-endpoints": "3.844.0", "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.844.0", "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", + "@smithy/core": "^3.7.0", "@smithy/eventstream-serde-browser": "^4.0.4", "@smithy/eventstream-serde-config-resolver": "^4.1.2", "@smithy/eventstream-serde-node": "^4.0.4", - "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/fetch-http-handler": "^5.1.0", "@smithy/hash-node": "^4.0.4", "@smithy/invalid-dependency": "^4.0.4", "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", + "@smithy/middleware-endpoint": "^4.1.14", + "@smithy/middleware-retry": "^4.1.15", "@smithy/middleware-serde": "^4.0.8", "@smithy/middleware-stack": "^4.0.4", "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/node-http-handler": "^4.1.0", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", + "@smithy/util-defaults-mode-browser": "^4.0.22", + "@smithy/util-defaults-mode-node": "^4.0.22", "@smithy/util-endpoints": "^3.0.6", "@smithy/util-middleware": "^4.0.4", "@smithy/util-retry": "^4.0.6", - "@smithy/util-stream": "^4.2.2", + "@smithy/util-stream": "^4.2.3", "@smithy/util-utf8": "^4.0.0", "@smithy/util-waiter": "^4.0.6", "tslib": "^2.6.2" @@ -6457,43 +6620,44 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/client-sso": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.840.0.tgz", - "integrity": "sha512-3Zp+FWN2hhmKdpS0Ragi5V2ZPsZNScE3jlbgoJjzjI/roHZqO+e3/+XFN4TlM0DsPKYJNp+1TAjmhxN6rOnfYA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.844.0.tgz", + "integrity": "sha512-FktodSx+pfUfIqMjoNwZ6t1xqq/G3cfT7I4JJ0HKHoIIZdoCHQB52x0OzKDtHDJAnEQPInasdPS8PorZBZtHmg==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/middleware-host-header": "3.840.0", "@aws-sdk/middleware-logger": "3.840.0", "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/region-config-resolver": "3.840.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", + "@aws-sdk/util-endpoints": "3.844.0", "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.844.0", "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/core": "^3.7.0", + "@smithy/fetch-http-handler": "^5.1.0", "@smithy/hash-node": "^4.0.4", "@smithy/invalid-dependency": "^4.0.4", "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", + "@smithy/middleware-endpoint": "^4.1.14", + "@smithy/middleware-retry": "^4.1.15", "@smithy/middleware-serde": "^4.0.8", "@smithy/middleware-stack": "^4.0.4", "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/node-http-handler": "^4.1.0", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", + "@smithy/util-defaults-mode-browser": "^4.0.22", + "@smithy/util-defaults-mode-node": "^4.0.22", "@smithy/util-endpoints": "^3.0.6", "@smithy/util-middleware": "^4.0.4", "@smithy/util-retry": "^4.0.6", @@ -6505,24 +6669,25 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/core": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.840.0.tgz", - "integrity": "sha512-x3Zgb39tF1h2XpU+yA4OAAQlW6LVEfXNlSedSYJ7HGKXqA/E9h3rWQVpYfhXXVVsLdYXdNw5KBUkoAoruoZSZA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.844.0.tgz", + "integrity": "sha512-pfpI54bG5Xf2NkqrDBC2REStXlDXNCw/whORhkEs+Tp5exU872D5QKguzjPA6hH+8Pvbq1qgt5zXMbduISTHJw==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@aws-sdk/xml-builder": "3.821.0", - "@smithy/core": "^3.6.0", + "@smithy/core": "^3.7.0", "@smithy/node-config-provider": "^4.1.3", "@smithy/property-provider": "^4.0.4", "@smithy/protocol-http": "^5.1.2", "@smithy/signature-v4": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-middleware": "^4.0.4", "@smithy/util-utf8": "^4.0.0", - "fast-xml-parser": "4.4.1", + "fast-xml-parser": "5.2.5", "tslib": "^2.6.2" }, "engines": { @@ -6530,11 +6695,12 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.840.0.tgz", - "integrity": "sha512-EzF6VcJK7XvQ/G15AVEfJzN2mNXU8fcVpXo4bRyr1S6t2q5zx6UPH/XjDbn18xyUmOq01t+r8gG+TmHEVo18fA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.844.0.tgz", + "integrity": "sha512-WB94Ox86MqcZ4CnRjKgopzaSuZH4hMP0GqdOxG4s1it1lRWOIPOHOC1dPiM0Zbj1uqITIhbXUQVXyP/uaJeNkw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/types": "^4.3.1", @@ -6545,19 +6711,20 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.840.0.tgz", - "integrity": "sha512-wbnUiPGLVea6mXbUh04fu+VJmGkQvmToPeTYdHE8eRZq3NRDi3t3WltT+jArLBKD/4NppRpMjf2ju4coMCz91g==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.844.0.tgz", + "integrity": "sha512-e+efVqfkhpM8zxYeiLNgTUlX+tmtXzVm3bw1A02U9Z9cWBHyQNb8pi90M7QniLoqRURY1B0C2JqkOE61gd4KNg==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", - "@smithy/fetch-http-handler": "^5.0.4", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/node-http-handler": "^4.1.0", "@smithy/property-provider": "^4.0.4", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", - "@smithy/util-stream": "^4.2.2", + "@smithy/util-stream": "^4.2.3", "tslib": "^2.6.2" }, "engines": { @@ -6565,17 +6732,18 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.840.0.tgz", - "integrity": "sha512-7F290BsWydShHb+7InXd+IjJc3mlEIm9I0R57F/Pjl1xZB69MdkhVGCnuETWoBt4g53ktJd6NEjzm/iAhFXFmw==", - "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/credential-provider-env": "3.840.0", - "@aws-sdk/credential-provider-http": "3.840.0", - "@aws-sdk/credential-provider-process": "3.840.0", - "@aws-sdk/credential-provider-sso": "3.840.0", - "@aws-sdk/credential-provider-web-identity": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.844.0.tgz", + "integrity": "sha512-jc5ArGz2HfAx5QPXD+Ep36+QWyCKzl2TG6Vtl87/vljfLhVD0gEHv8fRsqWEp3Rc6hVfKnCjLW5ayR2HYcow9w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.844.0", + "@aws-sdk/credential-provider-env": "3.844.0", + "@aws-sdk/credential-provider-http": "3.844.0", + "@aws-sdk/credential-provider-process": "3.844.0", + "@aws-sdk/credential-provider-sso": "3.844.0", + "@aws-sdk/credential-provider-web-identity": "3.844.0", + "@aws-sdk/nested-clients": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/credential-provider-imds": "^4.0.6", "@smithy/property-provider": "^4.0.4", @@ -6588,16 +6756,17 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.840.0.tgz", - "integrity": "sha512-KufP8JnxA31wxklLm63evUPSFApGcH8X86z3mv9SRbpCm5ycgWIGVCTXpTOdgq6rPZrwT9pftzv2/b4mV/9clg==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.840.0", - "@aws-sdk/credential-provider-http": "3.840.0", - "@aws-sdk/credential-provider-ini": "3.840.0", - "@aws-sdk/credential-provider-process": "3.840.0", - "@aws-sdk/credential-provider-sso": "3.840.0", - "@aws-sdk/credential-provider-web-identity": "3.840.0", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.844.0.tgz", + "integrity": "sha512-pUqB0StTNyW0R03XjTA3wrQZcie/7FJKSXlYHue921ZXuhLOZpzyDkLNfdRsZTcEoYYWVPSmyS+Eu/g5yVsBNA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.844.0", + "@aws-sdk/credential-provider-http": "3.844.0", + "@aws-sdk/credential-provider-ini": "3.844.0", + "@aws-sdk/credential-provider-process": "3.844.0", + "@aws-sdk/credential-provider-sso": "3.844.0", + "@aws-sdk/credential-provider-web-identity": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/credential-provider-imds": "^4.0.6", "@smithy/property-provider": "^4.0.4", @@ -6610,11 +6779,12 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.840.0.tgz", - "integrity": "sha512-HkDQWHy8tCI4A0Ps2NVtuVYMv9cB4y/IuD/TdOsqeRIAT12h8jDb98BwQPNLAImAOwOWzZJ8Cu0xtSpX7CQhMw==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.844.0.tgz", + "integrity": "sha512-VCI8XvIDt2WBfk5Gi/wXKPcWTS3OkAbovB66oKcNQalllH8ESDg4SfLNhchdnN8A5sDGj6tIBJ19nk+dQ6GaqQ==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -6626,13 +6796,14 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.840.0.tgz", - "integrity": "sha512-2qgdtdd6R0Z1y0KL8gzzwFUGmhBHSUx4zy85L2XV1CXhpRNwV71SVWJqLDVV5RVWVf9mg50Pm3AWrUC0xb0pcA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.844.0.tgz", + "integrity": "sha512-UNp/uWufGlb5nWa4dpc6uQnDOB/9ysJJFG95ACowNVL9XWfi1LJO7teKrqNkVhq0CzSJS1tCt3FvX4UfM+aN1g==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.840.0", - "@aws-sdk/core": "3.840.0", - "@aws-sdk/token-providers": "3.840.0", + "@aws-sdk/client-sso": "3.844.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/token-providers": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -6644,12 +6815,13 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.840.0.tgz", - "integrity": "sha512-dpEeVXG8uNZSmVXReE4WP0lwoioX2gstk4RnUgrdUE3YaPq8A+hJiVAyc3h+cjDeIqfbsQbZm9qFetKC2LF9dQ==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.844.0.tgz", + "integrity": "sha512-iDmX4pPmatjttIScdspZRagaFnCjpHZIEEwTyKdXxUaU0iAOSXF8ecrCEvutETvImPOC86xdrq+MPacJOnMzUA==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/nested-clients": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/types": "^4.3.1", @@ -6663,6 +6835,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.840.0.tgz", "integrity": "sha512-ub+hXJAbAje94+Ya6c6eL7sYujoE8D4Bumu1NUI8TXjUhVVn0HzVWQjpRLshdLsUp1AW7XyeJaxyajRaJQ8+Xg==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/protocol-http": "^5.1.2", @@ -6677,6 +6850,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.840.0.tgz", "integrity": "sha512-lSV8FvjpdllpGaRspywss4CtXV8M7NNNH+2/j86vMH+YCOZ6fu2T/TyFd/tHwZ92vDfHctWkRbQxg0bagqwovA==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/types": "^4.3.1", @@ -6690,6 +6864,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.840.0.tgz", "integrity": "sha512-Gu7lGDyfddyhIkj1Z1JtrY5NHb5+x/CRiB87GjaSrKxkDaydtX2CU977JIABtt69l9wLbcGDIQ+W0uJ5xPof7g==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/protocol-http": "^5.1.2", @@ -6701,14 +6876,15 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.840.0.tgz", - "integrity": "sha512-hiiMf7BP5ZkAFAvWRcK67Mw/g55ar7OCrvrynC92hunx/xhMkrgSLM0EXIZ1oTn3uql9kH/qqGF0nqsK6K555A==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.844.0.tgz", + "integrity": "sha512-SIbDNUL6ZYXPj5Tk0qEz05sW9kNS1Gl3/wNWEmH+AuUACipkyIeKKWzD6z5433MllETh73vtka/JQF3g7AuZww==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", - "@smithy/core": "^3.6.0", + "@aws-sdk/util-endpoints": "3.844.0", + "@smithy/core": "^3.7.0", "@smithy/protocol-http": "^5.1.2", "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -6718,43 +6894,44 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/nested-clients": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.840.0.tgz", - "integrity": "sha512-LXYYo9+n4hRqnRSIMXLBb+BLz+cEmjMtTudwK1BF6Bn2RfdDv29KuyeDRrPCS3TwKl7ZKmXUmE9n5UuHAPfBpA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.844.0.tgz", + "integrity": "sha512-p2XILWc7AcevUSpBg2VtQrk79eWQC4q2JsCSY7HxKpFLZB4mMOfmiTyYkR1gEA6AttK/wpCOtfz+hi1/+z2V1A==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/middleware-host-header": "3.840.0", "@aws-sdk/middleware-logger": "3.840.0", "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/region-config-resolver": "3.840.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", + "@aws-sdk/util-endpoints": "3.844.0", "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.844.0", "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/core": "^3.7.0", + "@smithy/fetch-http-handler": "^5.1.0", "@smithy/hash-node": "^4.0.4", "@smithy/invalid-dependency": "^4.0.4", "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", + "@smithy/middleware-endpoint": "^4.1.14", + "@smithy/middleware-retry": "^4.1.15", "@smithy/middleware-serde": "^4.0.8", "@smithy/middleware-stack": "^4.0.4", "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/node-http-handler": "^4.1.0", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", + "@smithy/util-defaults-mode-browser": "^4.0.22", + "@smithy/util-defaults-mode-node": "^4.0.22", "@smithy/util-endpoints": "^3.0.6", "@smithy/util-middleware": "^4.0.4", "@smithy/util-retry": "^4.0.6", @@ -6769,6 +6946,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.840.0.tgz", "integrity": "sha512-Qjnxd/yDv9KpIMWr90ZDPtRj0v75AqGC92Lm9+oHXZ8p1MjG5JE2CW0HL8JRgK9iKzgKBL7pPQRXI8FkvEVfrA==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/node-config-provider": "^4.1.3", @@ -6782,12 +6960,13 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/token-providers": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.840.0.tgz", - "integrity": "sha512-6BuTOLTXvmgwjK7ve7aTg9JaWFdM5UoMolLVPMyh3wTv9Ufalh8oklxYHUBIxsKkBGO2WiHXytveuxH6tAgTYg==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.844.0.tgz", + "integrity": "sha512-Kh728FEny0fil+LeH8U1offPJCTd/EDh8liBAvLtViLHt2WoX2xC8rk98D38Q5p79aIUhHb3Pf4n9IZfTu/Kog==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/nested-clients": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -6802,6 +6981,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.840.0.tgz", "integrity": "sha512-xliuHaUFZxEx1NSXeLLZ9Dyu6+EJVQKEoD+yM+zqUo3YDZ7medKJWY6fIOKiPX/N7XbLdBYwajb15Q7IL8KkeA==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -6811,12 +6991,14 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/util-endpoints": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.840.0.tgz", - "integrity": "sha512-eqE9ROdg/Kk0rj3poutyRCFauPDXIf/WSvCqFiRDDVi6QOnCv/M0g2XW8/jSvkJlOyaXkNCptapIp6BeeFFGYw==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.844.0.tgz", + "integrity": "sha512-1DHh0WTUmxlysz3EereHKtKoxVUG9UC5BsfAw6Bm4/6qDlJiqtY3oa2vebkYN23yltKdfsCK65cwnBRU59mWVg==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", "@smithy/util-endpoints": "^3.0.6", "tslib": "^2.6.2" }, @@ -6828,6 +7010,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.840.0.tgz", "integrity": "sha512-JdyZM3EhhL4PqwFpttZu1afDpPJCCc3eyZOLi+srpX11LsGj6sThf47TYQN75HT1CarZ7cCdQHGzP2uy3/xHfQ==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/types": "^4.3.1", @@ -6836,11 +7019,12 @@ } }, "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.840.0.tgz", - "integrity": "sha512-Fy5JUEDQU1tPm2Yw/YqRYYc27W5+QD/J4mYvQvdWjUGZLB5q3eLFMGD35Uc28ZFoGMufPr4OCxK/bRfWROBRHQ==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.844.0.tgz", + "integrity": "sha512-0eTpURp9Gxbyyeqr78ogARZMSWS5KUMZuN+XMHxNpQLmn2S+J3g+MAyoklCcwhKXlbdQq2aMULEiy0mqIWytuw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/node-config-provider": "^4.1.3", "@smithy/types": "^4.3.1", @@ -6862,6 +7046,7 @@ "version": "3.821.0", "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.821.0.tgz", "integrity": "sha512-DIIotRnefVL6DiaHtO6/21DhJ4JZnnIwdNbpwiAhdt/AVbttcE4yw925gsjur0OGv5BTYXQXU3YnANBYnZjuQA==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -6870,6 +7055,36 @@ "node": ">=18.0.0" } }, + "node_modules/@aws-sdk/client-lambda/node_modules/fast-xml-parser": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", + "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^2.1.0" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/@aws-sdk/client-lambda/node_modules/strnum": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, "node_modules/@aws-sdk/client-route-53": { "version": "3.741.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-route-53/-/client-route-53-3.741.0.tgz", @@ -7415,44 +7630,45 @@ } }, "node_modules/@aws-sdk/client-secrets-manager": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.840.0.tgz", - "integrity": "sha512-oUcoZT4YJc/WUoxydfzSE3o89dBvdzan75XOLXg3JVg64os4ao8SUkIphR3YXmjmHz8qwaVNXVF4MpR3IxGPCg==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.844.0.tgz", + "integrity": "sha512-gAReLhaSopLT4wjN7teSXNBptEem8KFxxmE1cMB+W0I087ZYiH2Fycn+TXQrMagc2ykoqYIdO+cZPJXIvnw0RA==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", - "@aws-sdk/credential-provider-node": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/credential-provider-node": "3.844.0", "@aws-sdk/middleware-host-header": "3.840.0", "@aws-sdk/middleware-logger": "3.840.0", "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/region-config-resolver": "3.840.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", + "@aws-sdk/util-endpoints": "3.844.0", "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.844.0", "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/core": "^3.7.0", + "@smithy/fetch-http-handler": "^5.1.0", "@smithy/hash-node": "^4.0.4", "@smithy/invalid-dependency": "^4.0.4", "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", + "@smithy/middleware-endpoint": "^4.1.14", + "@smithy/middleware-retry": "^4.1.15", "@smithy/middleware-serde": "^4.0.8", "@smithy/middleware-stack": "^4.0.4", "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/node-http-handler": "^4.1.0", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", + "@smithy/util-defaults-mode-browser": "^4.0.22", + "@smithy/util-defaults-mode-node": "^4.0.22", "@smithy/util-endpoints": "^3.0.6", "@smithy/util-middleware": "^4.0.4", "@smithy/util-retry": "^4.0.6", @@ -7466,43 +7682,44 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.840.0.tgz", - "integrity": "sha512-3Zp+FWN2hhmKdpS0Ragi5V2ZPsZNScE3jlbgoJjzjI/roHZqO+e3/+XFN4TlM0DsPKYJNp+1TAjmhxN6rOnfYA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.844.0.tgz", + "integrity": "sha512-FktodSx+pfUfIqMjoNwZ6t1xqq/G3cfT7I4JJ0HKHoIIZdoCHQB52x0OzKDtHDJAnEQPInasdPS8PorZBZtHmg==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/middleware-host-header": "3.840.0", "@aws-sdk/middleware-logger": "3.840.0", "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/region-config-resolver": "3.840.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", + "@aws-sdk/util-endpoints": "3.844.0", "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.844.0", "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/core": "^3.7.0", + "@smithy/fetch-http-handler": "^5.1.0", "@smithy/hash-node": "^4.0.4", "@smithy/invalid-dependency": "^4.0.4", "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", + "@smithy/middleware-endpoint": "^4.1.14", + "@smithy/middleware-retry": "^4.1.15", "@smithy/middleware-serde": "^4.0.8", "@smithy/middleware-stack": "^4.0.4", "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/node-http-handler": "^4.1.0", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", + "@smithy/util-defaults-mode-browser": "^4.0.22", + "@smithy/util-defaults-mode-node": "^4.0.22", "@smithy/util-endpoints": "^3.0.6", "@smithy/util-middleware": "^4.0.4", "@smithy/util-retry": "^4.0.6", @@ -7514,24 +7731,25 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/core": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.840.0.tgz", - "integrity": "sha512-x3Zgb39tF1h2XpU+yA4OAAQlW6LVEfXNlSedSYJ7HGKXqA/E9h3rWQVpYfhXXVVsLdYXdNw5KBUkoAoruoZSZA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.844.0.tgz", + "integrity": "sha512-pfpI54bG5Xf2NkqrDBC2REStXlDXNCw/whORhkEs+Tp5exU872D5QKguzjPA6hH+8Pvbq1qgt5zXMbduISTHJw==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@aws-sdk/xml-builder": "3.821.0", - "@smithy/core": "^3.6.0", + "@smithy/core": "^3.7.0", "@smithy/node-config-provider": "^4.1.3", "@smithy/property-provider": "^4.0.4", "@smithy/protocol-http": "^5.1.2", "@smithy/signature-v4": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-middleware": "^4.0.4", "@smithy/util-utf8": "^4.0.0", - "fast-xml-parser": "4.4.1", + "fast-xml-parser": "5.2.5", "tslib": "^2.6.2" }, "engines": { @@ -7539,11 +7757,12 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.840.0.tgz", - "integrity": "sha512-EzF6VcJK7XvQ/G15AVEfJzN2mNXU8fcVpXo4bRyr1S6t2q5zx6UPH/XjDbn18xyUmOq01t+r8gG+TmHEVo18fA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.844.0.tgz", + "integrity": "sha512-WB94Ox86MqcZ4CnRjKgopzaSuZH4hMP0GqdOxG4s1it1lRWOIPOHOC1dPiM0Zbj1uqITIhbXUQVXyP/uaJeNkw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/types": "^4.3.1", @@ -7554,19 +7773,20 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.840.0.tgz", - "integrity": "sha512-wbnUiPGLVea6mXbUh04fu+VJmGkQvmToPeTYdHE8eRZq3NRDi3t3WltT+jArLBKD/4NppRpMjf2ju4coMCz91g==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.844.0.tgz", + "integrity": "sha512-e+efVqfkhpM8zxYeiLNgTUlX+tmtXzVm3bw1A02U9Z9cWBHyQNb8pi90M7QniLoqRURY1B0C2JqkOE61gd4KNg==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", - "@smithy/fetch-http-handler": "^5.0.4", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/node-http-handler": "^4.1.0", "@smithy/property-provider": "^4.0.4", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", - "@smithy/util-stream": "^4.2.2", + "@smithy/util-stream": "^4.2.3", "tslib": "^2.6.2" }, "engines": { @@ -7574,17 +7794,18 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.840.0.tgz", - "integrity": "sha512-7F290BsWydShHb+7InXd+IjJc3mlEIm9I0R57F/Pjl1xZB69MdkhVGCnuETWoBt4g53ktJd6NEjzm/iAhFXFmw==", - "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/credential-provider-env": "3.840.0", - "@aws-sdk/credential-provider-http": "3.840.0", - "@aws-sdk/credential-provider-process": "3.840.0", - "@aws-sdk/credential-provider-sso": "3.840.0", - "@aws-sdk/credential-provider-web-identity": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.844.0.tgz", + "integrity": "sha512-jc5ArGz2HfAx5QPXD+Ep36+QWyCKzl2TG6Vtl87/vljfLhVD0gEHv8fRsqWEp3Rc6hVfKnCjLW5ayR2HYcow9w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.844.0", + "@aws-sdk/credential-provider-env": "3.844.0", + "@aws-sdk/credential-provider-http": "3.844.0", + "@aws-sdk/credential-provider-process": "3.844.0", + "@aws-sdk/credential-provider-sso": "3.844.0", + "@aws-sdk/credential-provider-web-identity": "3.844.0", + "@aws-sdk/nested-clients": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/credential-provider-imds": "^4.0.6", "@smithy/property-provider": "^4.0.4", @@ -7597,16 +7818,17 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.840.0.tgz", - "integrity": "sha512-KufP8JnxA31wxklLm63evUPSFApGcH8X86z3mv9SRbpCm5ycgWIGVCTXpTOdgq6rPZrwT9pftzv2/b4mV/9clg==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.840.0", - "@aws-sdk/credential-provider-http": "3.840.0", - "@aws-sdk/credential-provider-ini": "3.840.0", - "@aws-sdk/credential-provider-process": "3.840.0", - "@aws-sdk/credential-provider-sso": "3.840.0", - "@aws-sdk/credential-provider-web-identity": "3.840.0", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.844.0.tgz", + "integrity": "sha512-pUqB0StTNyW0R03XjTA3wrQZcie/7FJKSXlYHue921ZXuhLOZpzyDkLNfdRsZTcEoYYWVPSmyS+Eu/g5yVsBNA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.844.0", + "@aws-sdk/credential-provider-http": "3.844.0", + "@aws-sdk/credential-provider-ini": "3.844.0", + "@aws-sdk/credential-provider-process": "3.844.0", + "@aws-sdk/credential-provider-sso": "3.844.0", + "@aws-sdk/credential-provider-web-identity": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/credential-provider-imds": "^4.0.6", "@smithy/property-provider": "^4.0.4", @@ -7619,11 +7841,12 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.840.0.tgz", - "integrity": "sha512-HkDQWHy8tCI4A0Ps2NVtuVYMv9cB4y/IuD/TdOsqeRIAT12h8jDb98BwQPNLAImAOwOWzZJ8Cu0xtSpX7CQhMw==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.844.0.tgz", + "integrity": "sha512-VCI8XvIDt2WBfk5Gi/wXKPcWTS3OkAbovB66oKcNQalllH8ESDg4SfLNhchdnN8A5sDGj6tIBJ19nk+dQ6GaqQ==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -7635,13 +7858,14 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.840.0.tgz", - "integrity": "sha512-2qgdtdd6R0Z1y0KL8gzzwFUGmhBHSUx4zy85L2XV1CXhpRNwV71SVWJqLDVV5RVWVf9mg50Pm3AWrUC0xb0pcA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.844.0.tgz", + "integrity": "sha512-UNp/uWufGlb5nWa4dpc6uQnDOB/9ysJJFG95ACowNVL9XWfi1LJO7teKrqNkVhq0CzSJS1tCt3FvX4UfM+aN1g==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.840.0", - "@aws-sdk/core": "3.840.0", - "@aws-sdk/token-providers": "3.840.0", + "@aws-sdk/client-sso": "3.844.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/token-providers": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -7653,12 +7877,13 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.840.0.tgz", - "integrity": "sha512-dpEeVXG8uNZSmVXReE4WP0lwoioX2gstk4RnUgrdUE3YaPq8A+hJiVAyc3h+cjDeIqfbsQbZm9qFetKC2LF9dQ==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.844.0.tgz", + "integrity": "sha512-iDmX4pPmatjttIScdspZRagaFnCjpHZIEEwTyKdXxUaU0iAOSXF8ecrCEvutETvImPOC86xdrq+MPacJOnMzUA==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/nested-clients": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/types": "^4.3.1", @@ -7672,6 +7897,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.840.0.tgz", "integrity": "sha512-ub+hXJAbAje94+Ya6c6eL7sYujoE8D4Bumu1NUI8TXjUhVVn0HzVWQjpRLshdLsUp1AW7XyeJaxyajRaJQ8+Xg==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/protocol-http": "^5.1.2", @@ -7686,6 +7912,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.840.0.tgz", "integrity": "sha512-lSV8FvjpdllpGaRspywss4CtXV8M7NNNH+2/j86vMH+YCOZ6fu2T/TyFd/tHwZ92vDfHctWkRbQxg0bagqwovA==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/types": "^4.3.1", @@ -7699,6 +7926,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.840.0.tgz", "integrity": "sha512-Gu7lGDyfddyhIkj1Z1JtrY5NHb5+x/CRiB87GjaSrKxkDaydtX2CU977JIABtt69l9wLbcGDIQ+W0uJ5xPof7g==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/protocol-http": "^5.1.2", @@ -7710,14 +7938,15 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.840.0.tgz", - "integrity": "sha512-hiiMf7BP5ZkAFAvWRcK67Mw/g55ar7OCrvrynC92hunx/xhMkrgSLM0EXIZ1oTn3uql9kH/qqGF0nqsK6K555A==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.844.0.tgz", + "integrity": "sha512-SIbDNUL6ZYXPj5Tk0qEz05sW9kNS1Gl3/wNWEmH+AuUACipkyIeKKWzD6z5433MllETh73vtka/JQF3g7AuZww==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", - "@smithy/core": "^3.6.0", + "@aws-sdk/util-endpoints": "3.844.0", + "@smithy/core": "^3.7.0", "@smithy/protocol-http": "^5.1.2", "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -7727,43 +7956,44 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/nested-clients": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.840.0.tgz", - "integrity": "sha512-LXYYo9+n4hRqnRSIMXLBb+BLz+cEmjMtTudwK1BF6Bn2RfdDv29KuyeDRrPCS3TwKl7ZKmXUmE9n5UuHAPfBpA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.844.0.tgz", + "integrity": "sha512-p2XILWc7AcevUSpBg2VtQrk79eWQC4q2JsCSY7HxKpFLZB4mMOfmiTyYkR1gEA6AttK/wpCOtfz+hi1/+z2V1A==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/middleware-host-header": "3.840.0", "@aws-sdk/middleware-logger": "3.840.0", "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/region-config-resolver": "3.840.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", + "@aws-sdk/util-endpoints": "3.844.0", "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.844.0", "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/core": "^3.7.0", + "@smithy/fetch-http-handler": "^5.1.0", "@smithy/hash-node": "^4.0.4", "@smithy/invalid-dependency": "^4.0.4", "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", + "@smithy/middleware-endpoint": "^4.1.14", + "@smithy/middleware-retry": "^4.1.15", "@smithy/middleware-serde": "^4.0.8", "@smithy/middleware-stack": "^4.0.4", "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/node-http-handler": "^4.1.0", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", + "@smithy/util-defaults-mode-browser": "^4.0.22", + "@smithy/util-defaults-mode-node": "^4.0.22", "@smithy/util-endpoints": "^3.0.6", "@smithy/util-middleware": "^4.0.4", "@smithy/util-retry": "^4.0.6", @@ -7778,6 +8008,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.840.0.tgz", "integrity": "sha512-Qjnxd/yDv9KpIMWr90ZDPtRj0v75AqGC92Lm9+oHXZ8p1MjG5JE2CW0HL8JRgK9iKzgKBL7pPQRXI8FkvEVfrA==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/node-config-provider": "^4.1.3", @@ -7791,12 +8022,13 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/token-providers": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.840.0.tgz", - "integrity": "sha512-6BuTOLTXvmgwjK7ve7aTg9JaWFdM5UoMolLVPMyh3wTv9Ufalh8oklxYHUBIxsKkBGO2WiHXytveuxH6tAgTYg==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.844.0.tgz", + "integrity": "sha512-Kh728FEny0fil+LeH8U1offPJCTd/EDh8liBAvLtViLHt2WoX2xC8rk98D38Q5p79aIUhHb3Pf4n9IZfTu/Kog==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/nested-clients": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -7811,6 +8043,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.840.0.tgz", "integrity": "sha512-xliuHaUFZxEx1NSXeLLZ9Dyu6+EJVQKEoD+yM+zqUo3YDZ7medKJWY6fIOKiPX/N7XbLdBYwajb15Q7IL8KkeA==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -7820,12 +8053,14 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-endpoints": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.840.0.tgz", - "integrity": "sha512-eqE9ROdg/Kk0rj3poutyRCFauPDXIf/WSvCqFiRDDVi6QOnCv/M0g2XW8/jSvkJlOyaXkNCptapIp6BeeFFGYw==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.844.0.tgz", + "integrity": "sha512-1DHh0WTUmxlysz3EereHKtKoxVUG9UC5BsfAw6Bm4/6qDlJiqtY3oa2vebkYN23yltKdfsCK65cwnBRU59mWVg==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", "@smithy/util-endpoints": "^3.0.6", "tslib": "^2.6.2" }, @@ -7837,6 +8072,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.840.0.tgz", "integrity": "sha512-JdyZM3EhhL4PqwFpttZu1afDpPJCCc3eyZOLi+srpX11LsGj6sThf47TYQN75HT1CarZ7cCdQHGzP2uy3/xHfQ==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/types": "^4.3.1", @@ -7845,11 +8081,12 @@ } }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.840.0.tgz", - "integrity": "sha512-Fy5JUEDQU1tPm2Yw/YqRYYc27W5+QD/J4mYvQvdWjUGZLB5q3eLFMGD35Uc28ZFoGMufPr4OCxK/bRfWROBRHQ==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.844.0.tgz", + "integrity": "sha512-0eTpURp9Gxbyyeqr78ogARZMSWS5KUMZuN+XMHxNpQLmn2S+J3g+MAyoklCcwhKXlbdQq2aMULEiy0mqIWytuw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/node-config-provider": "^4.1.3", "@smithy/types": "^4.3.1", @@ -7871,6 +8108,7 @@ "version": "3.821.0", "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.821.0.tgz", "integrity": "sha512-DIIotRnefVL6DiaHtO6/21DhJ4JZnnIwdNbpwiAhdt/AVbttcE4yw925gsjur0OGv5BTYXQXU3YnANBYnZjuQA==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -7879,6 +8117,36 @@ "node": ">=18.0.0" } }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/fast-xml-parser": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", + "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^2.1.0" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/strnum": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, "node_modules/@aws-sdk/client-sfn": { "version": "3.741.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sfn/-/client-sfn-3.741.0.tgz", @@ -8263,44 +8531,45 @@ } }, "node_modules/@aws-sdk/client-ssm": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.840.0.tgz", - "integrity": "sha512-INXT6vibxTZM/uIsP2VwvVPe/QT/EthAxI29LdPokkjOtFHDR1S+2mrFE6QkKmsEIutAv+H5EQ6gkpwnSyDX1A==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.844.0.tgz", + "integrity": "sha512-y7E6lU8MJmPSKSWpUfICxZszSL7SufLoI/cFCJeEdhQh3Y6olxcZbF0PxNTYIskVR8ibHXsguUe981zIncRlwg==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", - "@aws-sdk/credential-provider-node": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/credential-provider-node": "3.844.0", "@aws-sdk/middleware-host-header": "3.840.0", "@aws-sdk/middleware-logger": "3.840.0", "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/region-config-resolver": "3.840.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", + "@aws-sdk/util-endpoints": "3.844.0", "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.844.0", "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/core": "^3.7.0", + "@smithy/fetch-http-handler": "^5.1.0", "@smithy/hash-node": "^4.0.4", "@smithy/invalid-dependency": "^4.0.4", "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", + "@smithy/middleware-endpoint": "^4.1.14", + "@smithy/middleware-retry": "^4.1.15", "@smithy/middleware-serde": "^4.0.8", "@smithy/middleware-stack": "^4.0.4", "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/node-http-handler": "^4.1.0", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", + "@smithy/util-defaults-mode-browser": "^4.0.22", + "@smithy/util-defaults-mode-node": "^4.0.22", "@smithy/util-endpoints": "^3.0.6", "@smithy/util-middleware": "^4.0.4", "@smithy/util-retry": "^4.0.6", @@ -8315,43 +8584,44 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/client-sso": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.840.0.tgz", - "integrity": "sha512-3Zp+FWN2hhmKdpS0Ragi5V2ZPsZNScE3jlbgoJjzjI/roHZqO+e3/+XFN4TlM0DsPKYJNp+1TAjmhxN6rOnfYA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.844.0.tgz", + "integrity": "sha512-FktodSx+pfUfIqMjoNwZ6t1xqq/G3cfT7I4JJ0HKHoIIZdoCHQB52x0OzKDtHDJAnEQPInasdPS8PorZBZtHmg==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/middleware-host-header": "3.840.0", "@aws-sdk/middleware-logger": "3.840.0", "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/region-config-resolver": "3.840.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", + "@aws-sdk/util-endpoints": "3.844.0", "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.844.0", "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/core": "^3.7.0", + "@smithy/fetch-http-handler": "^5.1.0", "@smithy/hash-node": "^4.0.4", "@smithy/invalid-dependency": "^4.0.4", "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", + "@smithy/middleware-endpoint": "^4.1.14", + "@smithy/middleware-retry": "^4.1.15", "@smithy/middleware-serde": "^4.0.8", "@smithy/middleware-stack": "^4.0.4", "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/node-http-handler": "^4.1.0", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", + "@smithy/util-defaults-mode-browser": "^4.0.22", + "@smithy/util-defaults-mode-node": "^4.0.22", "@smithy/util-endpoints": "^3.0.6", "@smithy/util-middleware": "^4.0.4", "@smithy/util-retry": "^4.0.6", @@ -8363,24 +8633,25 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/core": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.840.0.tgz", - "integrity": "sha512-x3Zgb39tF1h2XpU+yA4OAAQlW6LVEfXNlSedSYJ7HGKXqA/E9h3rWQVpYfhXXVVsLdYXdNw5KBUkoAoruoZSZA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.844.0.tgz", + "integrity": "sha512-pfpI54bG5Xf2NkqrDBC2REStXlDXNCw/whORhkEs+Tp5exU872D5QKguzjPA6hH+8Pvbq1qgt5zXMbduISTHJw==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@aws-sdk/xml-builder": "3.821.0", - "@smithy/core": "^3.6.0", + "@smithy/core": "^3.7.0", "@smithy/node-config-provider": "^4.1.3", "@smithy/property-provider": "^4.0.4", "@smithy/protocol-http": "^5.1.2", "@smithy/signature-v4": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-middleware": "^4.0.4", "@smithy/util-utf8": "^4.0.0", - "fast-xml-parser": "4.4.1", + "fast-xml-parser": "5.2.5", "tslib": "^2.6.2" }, "engines": { @@ -8388,11 +8659,12 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.840.0.tgz", - "integrity": "sha512-EzF6VcJK7XvQ/G15AVEfJzN2mNXU8fcVpXo4bRyr1S6t2q5zx6UPH/XjDbn18xyUmOq01t+r8gG+TmHEVo18fA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.844.0.tgz", + "integrity": "sha512-WB94Ox86MqcZ4CnRjKgopzaSuZH4hMP0GqdOxG4s1it1lRWOIPOHOC1dPiM0Zbj1uqITIhbXUQVXyP/uaJeNkw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/types": "^4.3.1", @@ -8403,19 +8675,20 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.840.0.tgz", - "integrity": "sha512-wbnUiPGLVea6mXbUh04fu+VJmGkQvmToPeTYdHE8eRZq3NRDi3t3WltT+jArLBKD/4NppRpMjf2ju4coMCz91g==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.844.0.tgz", + "integrity": "sha512-e+efVqfkhpM8zxYeiLNgTUlX+tmtXzVm3bw1A02U9Z9cWBHyQNb8pi90M7QniLoqRURY1B0C2JqkOE61gd4KNg==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", - "@smithy/fetch-http-handler": "^5.0.4", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/node-http-handler": "^4.1.0", "@smithy/property-provider": "^4.0.4", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", - "@smithy/util-stream": "^4.2.2", + "@smithy/util-stream": "^4.2.3", "tslib": "^2.6.2" }, "engines": { @@ -8423,17 +8696,18 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.840.0.tgz", - "integrity": "sha512-7F290BsWydShHb+7InXd+IjJc3mlEIm9I0R57F/Pjl1xZB69MdkhVGCnuETWoBt4g53ktJd6NEjzm/iAhFXFmw==", - "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/credential-provider-env": "3.840.0", - "@aws-sdk/credential-provider-http": "3.840.0", - "@aws-sdk/credential-provider-process": "3.840.0", - "@aws-sdk/credential-provider-sso": "3.840.0", - "@aws-sdk/credential-provider-web-identity": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.844.0.tgz", + "integrity": "sha512-jc5ArGz2HfAx5QPXD+Ep36+QWyCKzl2TG6Vtl87/vljfLhVD0gEHv8fRsqWEp3Rc6hVfKnCjLW5ayR2HYcow9w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.844.0", + "@aws-sdk/credential-provider-env": "3.844.0", + "@aws-sdk/credential-provider-http": "3.844.0", + "@aws-sdk/credential-provider-process": "3.844.0", + "@aws-sdk/credential-provider-sso": "3.844.0", + "@aws-sdk/credential-provider-web-identity": "3.844.0", + "@aws-sdk/nested-clients": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/credential-provider-imds": "^4.0.6", "@smithy/property-provider": "^4.0.4", @@ -8446,16 +8720,17 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.840.0.tgz", - "integrity": "sha512-KufP8JnxA31wxklLm63evUPSFApGcH8X86z3mv9SRbpCm5ycgWIGVCTXpTOdgq6rPZrwT9pftzv2/b4mV/9clg==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.840.0", - "@aws-sdk/credential-provider-http": "3.840.0", - "@aws-sdk/credential-provider-ini": "3.840.0", - "@aws-sdk/credential-provider-process": "3.840.0", - "@aws-sdk/credential-provider-sso": "3.840.0", - "@aws-sdk/credential-provider-web-identity": "3.840.0", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.844.0.tgz", + "integrity": "sha512-pUqB0StTNyW0R03XjTA3wrQZcie/7FJKSXlYHue921ZXuhLOZpzyDkLNfdRsZTcEoYYWVPSmyS+Eu/g5yVsBNA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.844.0", + "@aws-sdk/credential-provider-http": "3.844.0", + "@aws-sdk/credential-provider-ini": "3.844.0", + "@aws-sdk/credential-provider-process": "3.844.0", + "@aws-sdk/credential-provider-sso": "3.844.0", + "@aws-sdk/credential-provider-web-identity": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/credential-provider-imds": "^4.0.6", "@smithy/property-provider": "^4.0.4", @@ -8468,11 +8743,12 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.840.0.tgz", - "integrity": "sha512-HkDQWHy8tCI4A0Ps2NVtuVYMv9cB4y/IuD/TdOsqeRIAT12h8jDb98BwQPNLAImAOwOWzZJ8Cu0xtSpX7CQhMw==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.844.0.tgz", + "integrity": "sha512-VCI8XvIDt2WBfk5Gi/wXKPcWTS3OkAbovB66oKcNQalllH8ESDg4SfLNhchdnN8A5sDGj6tIBJ19nk+dQ6GaqQ==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -8484,13 +8760,14 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.840.0.tgz", - "integrity": "sha512-2qgdtdd6R0Z1y0KL8gzzwFUGmhBHSUx4zy85L2XV1CXhpRNwV71SVWJqLDVV5RVWVf9mg50Pm3AWrUC0xb0pcA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.844.0.tgz", + "integrity": "sha512-UNp/uWufGlb5nWa4dpc6uQnDOB/9ysJJFG95ACowNVL9XWfi1LJO7teKrqNkVhq0CzSJS1tCt3FvX4UfM+aN1g==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.840.0", - "@aws-sdk/core": "3.840.0", - "@aws-sdk/token-providers": "3.840.0", + "@aws-sdk/client-sso": "3.844.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/token-providers": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -8502,12 +8779,13 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.840.0.tgz", - "integrity": "sha512-dpEeVXG8uNZSmVXReE4WP0lwoioX2gstk4RnUgrdUE3YaPq8A+hJiVAyc3h+cjDeIqfbsQbZm9qFetKC2LF9dQ==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.844.0.tgz", + "integrity": "sha512-iDmX4pPmatjttIScdspZRagaFnCjpHZIEEwTyKdXxUaU0iAOSXF8ecrCEvutETvImPOC86xdrq+MPacJOnMzUA==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/nested-clients": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/types": "^4.3.1", @@ -8521,6 +8799,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.840.0.tgz", "integrity": "sha512-ub+hXJAbAje94+Ya6c6eL7sYujoE8D4Bumu1NUI8TXjUhVVn0HzVWQjpRLshdLsUp1AW7XyeJaxyajRaJQ8+Xg==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/protocol-http": "^5.1.2", @@ -8535,6 +8814,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.840.0.tgz", "integrity": "sha512-lSV8FvjpdllpGaRspywss4CtXV8M7NNNH+2/j86vMH+YCOZ6fu2T/TyFd/tHwZ92vDfHctWkRbQxg0bagqwovA==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/types": "^4.3.1", @@ -8548,6 +8828,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.840.0.tgz", "integrity": "sha512-Gu7lGDyfddyhIkj1Z1JtrY5NHb5+x/CRiB87GjaSrKxkDaydtX2CU977JIABtt69l9wLbcGDIQ+W0uJ5xPof7g==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/protocol-http": "^5.1.2", @@ -8559,14 +8840,15 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.840.0.tgz", - "integrity": "sha512-hiiMf7BP5ZkAFAvWRcK67Mw/g55ar7OCrvrynC92hunx/xhMkrgSLM0EXIZ1oTn3uql9kH/qqGF0nqsK6K555A==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.844.0.tgz", + "integrity": "sha512-SIbDNUL6ZYXPj5Tk0qEz05sW9kNS1Gl3/wNWEmH+AuUACipkyIeKKWzD6z5433MllETh73vtka/JQF3g7AuZww==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", - "@smithy/core": "^3.6.0", + "@aws-sdk/util-endpoints": "3.844.0", + "@smithy/core": "^3.7.0", "@smithy/protocol-http": "^5.1.2", "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -8576,43 +8858,44 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/nested-clients": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.840.0.tgz", - "integrity": "sha512-LXYYo9+n4hRqnRSIMXLBb+BLz+cEmjMtTudwK1BF6Bn2RfdDv29KuyeDRrPCS3TwKl7ZKmXUmE9n5UuHAPfBpA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.844.0.tgz", + "integrity": "sha512-p2XILWc7AcevUSpBg2VtQrk79eWQC4q2JsCSY7HxKpFLZB4mMOfmiTyYkR1gEA6AttK/wpCOtfz+hi1/+z2V1A==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/middleware-host-header": "3.840.0", "@aws-sdk/middleware-logger": "3.840.0", "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/region-config-resolver": "3.840.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", + "@aws-sdk/util-endpoints": "3.844.0", "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", - "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/fetch-http-handler": "^5.0.4", + "@aws-sdk/util-user-agent-node": "3.844.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.0", + "@smithy/fetch-http-handler": "^5.1.0", "@smithy/hash-node": "^4.0.4", "@smithy/invalid-dependency": "^4.0.4", "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", + "@smithy/middleware-endpoint": "^4.1.14", + "@smithy/middleware-retry": "^4.1.15", "@smithy/middleware-serde": "^4.0.8", "@smithy/middleware-stack": "^4.0.4", "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/node-http-handler": "^4.1.0", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", + "@smithy/util-defaults-mode-browser": "^4.0.22", + "@smithy/util-defaults-mode-node": "^4.0.22", "@smithy/util-endpoints": "^3.0.6", "@smithy/util-middleware": "^4.0.4", "@smithy/util-retry": "^4.0.6", @@ -8627,6 +8910,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.840.0.tgz", "integrity": "sha512-Qjnxd/yDv9KpIMWr90ZDPtRj0v75AqGC92Lm9+oHXZ8p1MjG5JE2CW0HL8JRgK9iKzgKBL7pPQRXI8FkvEVfrA==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/node-config-provider": "^4.1.3", @@ -8640,12 +8924,13 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/token-providers": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.840.0.tgz", - "integrity": "sha512-6BuTOLTXvmgwjK7ve7aTg9JaWFdM5UoMolLVPMyh3wTv9Ufalh8oklxYHUBIxsKkBGO2WiHXytveuxH6tAgTYg==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.844.0.tgz", + "integrity": "sha512-Kh728FEny0fil+LeH8U1offPJCTd/EDh8liBAvLtViLHt2WoX2xC8rk98D38Q5p79aIUhHb3Pf4n9IZfTu/Kog==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/nested-clients": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -8660,6 +8945,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.840.0.tgz", "integrity": "sha512-xliuHaUFZxEx1NSXeLLZ9Dyu6+EJVQKEoD+yM+zqUo3YDZ7medKJWY6fIOKiPX/N7XbLdBYwajb15Q7IL8KkeA==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -8669,12 +8955,14 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-endpoints": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.840.0.tgz", - "integrity": "sha512-eqE9ROdg/Kk0rj3poutyRCFauPDXIf/WSvCqFiRDDVi6QOnCv/M0g2XW8/jSvkJlOyaXkNCptapIp6BeeFFGYw==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.844.0.tgz", + "integrity": "sha512-1DHh0WTUmxlysz3EereHKtKoxVUG9UC5BsfAw6Bm4/6qDlJiqtY3oa2vebkYN23yltKdfsCK65cwnBRU59mWVg==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", "@smithy/util-endpoints": "^3.0.6", "tslib": "^2.6.2" }, @@ -8686,6 +8974,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.840.0.tgz", "integrity": "sha512-JdyZM3EhhL4PqwFpttZu1afDpPJCCc3eyZOLi+srpX11LsGj6sThf47TYQN75HT1CarZ7cCdQHGzP2uy3/xHfQ==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/types": "^4.3.1", @@ -8694,11 +8983,12 @@ } }, "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.840.0.tgz", - "integrity": "sha512-Fy5JUEDQU1tPm2Yw/YqRYYc27W5+QD/J4mYvQvdWjUGZLB5q3eLFMGD35Uc28ZFoGMufPr4OCxK/bRfWROBRHQ==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.844.0.tgz", + "integrity": "sha512-0eTpURp9Gxbyyeqr78ogARZMSWS5KUMZuN+XMHxNpQLmn2S+J3g+MAyoklCcwhKXlbdQq2aMULEiy0mqIWytuw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/node-config-provider": "^4.1.3", "@smithy/types": "^4.3.1", @@ -8720,6 +9010,7 @@ "version": "3.821.0", "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.821.0.tgz", "integrity": "sha512-DIIotRnefVL6DiaHtO6/21DhJ4JZnnIwdNbpwiAhdt/AVbttcE4yw925gsjur0OGv5BTYXQXU3YnANBYnZjuQA==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -8728,6 +9019,36 @@ "node": ">=18.0.0" } }, + "node_modules/@aws-sdk/client-ssm/node_modules/fast-xml-parser": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", + "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^2.1.0" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/@aws-sdk/client-ssm/node_modules/strnum": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, "node_modules/@aws-sdk/client-sso": { "version": "3.839.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.839.0.tgz", @@ -8986,45 +9307,46 @@ } }, "node_modules/@aws-sdk/client-xray": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-xray/-/client-xray-3.840.0.tgz", - "integrity": "sha512-+Y1NpdIHcA4EOijCcDUPhEyKuFfx/U25Xe1ikUk2IN6dlTIIXiFXTqvZaapAWhWRgTWqMehlupBjhSx80Aa07g==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-xray/-/client-xray-3.844.0.tgz", + "integrity": "sha512-7y/CvO2fPY7+wYTUD2YbDNDLXSE294LwXXYgDoroAvzKjMO/4H6zGdMv/Dsk2XtruhUpQKU3L8nyJINjCX+RDQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", - "@aws-sdk/credential-provider-node": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/credential-provider-node": "3.844.0", "@aws-sdk/middleware-host-header": "3.840.0", "@aws-sdk/middleware-logger": "3.840.0", "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/region-config-resolver": "3.840.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", + "@aws-sdk/util-endpoints": "3.844.0", "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.844.0", "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/core": "^3.7.0", + "@smithy/fetch-http-handler": "^5.1.0", "@smithy/hash-node": "^4.0.4", "@smithy/invalid-dependency": "^4.0.4", "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", + "@smithy/middleware-endpoint": "^4.1.14", + "@smithy/middleware-retry": "^4.1.15", "@smithy/middleware-serde": "^4.0.8", "@smithy/middleware-stack": "^4.0.4", "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/node-http-handler": "^4.1.0", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", + "@smithy/util-defaults-mode-browser": "^4.0.22", + "@smithy/util-defaults-mode-node": "^4.0.22", "@smithy/util-endpoints": "^3.0.6", "@smithy/util-middleware": "^4.0.4", "@smithy/util-retry": "^4.0.6", @@ -9036,44 +9358,45 @@ } }, "node_modules/@aws-sdk/client-xray/node_modules/@aws-sdk/client-sso": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.840.0.tgz", - "integrity": "sha512-3Zp+FWN2hhmKdpS0Ragi5V2ZPsZNScE3jlbgoJjzjI/roHZqO+e3/+XFN4TlM0DsPKYJNp+1TAjmhxN6rOnfYA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.844.0.tgz", + "integrity": "sha512-FktodSx+pfUfIqMjoNwZ6t1xqq/G3cfT7I4JJ0HKHoIIZdoCHQB52x0OzKDtHDJAnEQPInasdPS8PorZBZtHmg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/middleware-host-header": "3.840.0", "@aws-sdk/middleware-logger": "3.840.0", "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/region-config-resolver": "3.840.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", + "@aws-sdk/util-endpoints": "3.844.0", "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.844.0", "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/core": "^3.7.0", + "@smithy/fetch-http-handler": "^5.1.0", "@smithy/hash-node": "^4.0.4", "@smithy/invalid-dependency": "^4.0.4", "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", + "@smithy/middleware-endpoint": "^4.1.14", + "@smithy/middleware-retry": "^4.1.15", "@smithy/middleware-serde": "^4.0.8", "@smithy/middleware-stack": "^4.0.4", "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/node-http-handler": "^4.1.0", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", + "@smithy/util-defaults-mode-browser": "^4.0.22", + "@smithy/util-defaults-mode-node": "^4.0.22", "@smithy/util-endpoints": "^3.0.6", "@smithy/util-middleware": "^4.0.4", "@smithy/util-retry": "^4.0.6", @@ -9085,25 +9408,26 @@ } }, "node_modules/@aws-sdk/client-xray/node_modules/@aws-sdk/core": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.840.0.tgz", - "integrity": "sha512-x3Zgb39tF1h2XpU+yA4OAAQlW6LVEfXNlSedSYJ7HGKXqA/E9h3rWQVpYfhXXVVsLdYXdNw5KBUkoAoruoZSZA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.844.0.tgz", + "integrity": "sha512-pfpI54bG5Xf2NkqrDBC2REStXlDXNCw/whORhkEs+Tp5exU872D5QKguzjPA6hH+8Pvbq1qgt5zXMbduISTHJw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@aws-sdk/xml-builder": "3.821.0", - "@smithy/core": "^3.6.0", + "@smithy/core": "^3.7.0", "@smithy/node-config-provider": "^4.1.3", "@smithy/property-provider": "^4.0.4", "@smithy/protocol-http": "^5.1.2", "@smithy/signature-v4": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-middleware": "^4.0.4", "@smithy/util-utf8": "^4.0.0", - "fast-xml-parser": "4.4.1", + "fast-xml-parser": "5.2.5", "tslib": "^2.6.2" }, "engines": { @@ -9111,12 +9435,13 @@ } }, "node_modules/@aws-sdk/client-xray/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.840.0.tgz", - "integrity": "sha512-EzF6VcJK7XvQ/G15AVEfJzN2mNXU8fcVpXo4bRyr1S6t2q5zx6UPH/XjDbn18xyUmOq01t+r8gG+TmHEVo18fA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.844.0.tgz", + "integrity": "sha512-WB94Ox86MqcZ4CnRjKgopzaSuZH4hMP0GqdOxG4s1it1lRWOIPOHOC1dPiM0Zbj1uqITIhbXUQVXyP/uaJeNkw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/types": "^4.3.1", @@ -9127,20 +9452,21 @@ } }, "node_modules/@aws-sdk/client-xray/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.840.0.tgz", - "integrity": "sha512-wbnUiPGLVea6mXbUh04fu+VJmGkQvmToPeTYdHE8eRZq3NRDi3t3WltT+jArLBKD/4NppRpMjf2ju4coMCz91g==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.844.0.tgz", + "integrity": "sha512-e+efVqfkhpM8zxYeiLNgTUlX+tmtXzVm3bw1A02U9Z9cWBHyQNb8pi90M7QniLoqRURY1B0C2JqkOE61gd4KNg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", - "@smithy/fetch-http-handler": "^5.0.4", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/node-http-handler": "^4.1.0", "@smithy/property-provider": "^4.0.4", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", - "@smithy/util-stream": "^4.2.2", + "@smithy/util-stream": "^4.2.3", "tslib": "^2.6.2" }, "engines": { @@ -9148,18 +9474,19 @@ } }, "node_modules/@aws-sdk/client-xray/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.840.0.tgz", - "integrity": "sha512-7F290BsWydShHb+7InXd+IjJc3mlEIm9I0R57F/Pjl1xZB69MdkhVGCnuETWoBt4g53ktJd6NEjzm/iAhFXFmw==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.844.0.tgz", + "integrity": "sha512-jc5ArGz2HfAx5QPXD+Ep36+QWyCKzl2TG6Vtl87/vljfLhVD0gEHv8fRsqWEp3Rc6hVfKnCjLW5ayR2HYcow9w==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/credential-provider-env": "3.840.0", - "@aws-sdk/credential-provider-http": "3.840.0", - "@aws-sdk/credential-provider-process": "3.840.0", - "@aws-sdk/credential-provider-sso": "3.840.0", - "@aws-sdk/credential-provider-web-identity": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/credential-provider-env": "3.844.0", + "@aws-sdk/credential-provider-http": "3.844.0", + "@aws-sdk/credential-provider-process": "3.844.0", + "@aws-sdk/credential-provider-sso": "3.844.0", + "@aws-sdk/credential-provider-web-identity": "3.844.0", + "@aws-sdk/nested-clients": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/credential-provider-imds": "^4.0.6", "@smithy/property-provider": "^4.0.4", @@ -9172,17 +9499,18 @@ } }, "node_modules/@aws-sdk/client-xray/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.840.0.tgz", - "integrity": "sha512-KufP8JnxA31wxklLm63evUPSFApGcH8X86z3mv9SRbpCm5ycgWIGVCTXpTOdgq6rPZrwT9pftzv2/b4mV/9clg==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.844.0.tgz", + "integrity": "sha512-pUqB0StTNyW0R03XjTA3wrQZcie/7FJKSXlYHue921ZXuhLOZpzyDkLNfdRsZTcEoYYWVPSmyS+Eu/g5yVsBNA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.840.0", - "@aws-sdk/credential-provider-http": "3.840.0", - "@aws-sdk/credential-provider-ini": "3.840.0", - "@aws-sdk/credential-provider-process": "3.840.0", - "@aws-sdk/credential-provider-sso": "3.840.0", - "@aws-sdk/credential-provider-web-identity": "3.840.0", + "@aws-sdk/credential-provider-env": "3.844.0", + "@aws-sdk/credential-provider-http": "3.844.0", + "@aws-sdk/credential-provider-ini": "3.844.0", + "@aws-sdk/credential-provider-process": "3.844.0", + "@aws-sdk/credential-provider-sso": "3.844.0", + "@aws-sdk/credential-provider-web-identity": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/credential-provider-imds": "^4.0.6", "@smithy/property-provider": "^4.0.4", @@ -9195,12 +9523,13 @@ } }, "node_modules/@aws-sdk/client-xray/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.840.0.tgz", - "integrity": "sha512-HkDQWHy8tCI4A0Ps2NVtuVYMv9cB4y/IuD/TdOsqeRIAT12h8jDb98BwQPNLAImAOwOWzZJ8Cu0xtSpX7CQhMw==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.844.0.tgz", + "integrity": "sha512-VCI8XvIDt2WBfk5Gi/wXKPcWTS3OkAbovB66oKcNQalllH8ESDg4SfLNhchdnN8A5sDGj6tIBJ19nk+dQ6GaqQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -9212,14 +9541,15 @@ } }, "node_modules/@aws-sdk/client-xray/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.840.0.tgz", - "integrity": "sha512-2qgdtdd6R0Z1y0KL8gzzwFUGmhBHSUx4zy85L2XV1CXhpRNwV71SVWJqLDVV5RVWVf9mg50Pm3AWrUC0xb0pcA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.844.0.tgz", + "integrity": "sha512-UNp/uWufGlb5nWa4dpc6uQnDOB/9ysJJFG95ACowNVL9XWfi1LJO7teKrqNkVhq0CzSJS1tCt3FvX4UfM+aN1g==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.840.0", - "@aws-sdk/core": "3.840.0", - "@aws-sdk/token-providers": "3.840.0", + "@aws-sdk/client-sso": "3.844.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/token-providers": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -9231,13 +9561,14 @@ } }, "node_modules/@aws-sdk/client-xray/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.840.0.tgz", - "integrity": "sha512-dpEeVXG8uNZSmVXReE4WP0lwoioX2gstk4RnUgrdUE3YaPq8A+hJiVAyc3h+cjDeIqfbsQbZm9qFetKC2LF9dQ==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.844.0.tgz", + "integrity": "sha512-iDmX4pPmatjttIScdspZRagaFnCjpHZIEEwTyKdXxUaU0iAOSXF8ecrCEvutETvImPOC86xdrq+MPacJOnMzUA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/nested-clients": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/types": "^4.3.1", @@ -9252,6 +9583,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.840.0.tgz", "integrity": "sha512-ub+hXJAbAje94+Ya6c6eL7sYujoE8D4Bumu1NUI8TXjUhVVn0HzVWQjpRLshdLsUp1AW7XyeJaxyajRaJQ8+Xg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/protocol-http": "^5.1.2", @@ -9267,6 +9599,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.840.0.tgz", "integrity": "sha512-lSV8FvjpdllpGaRspywss4CtXV8M7NNNH+2/j86vMH+YCOZ6fu2T/TyFd/tHwZ92vDfHctWkRbQxg0bagqwovA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/types": "^4.3.1", @@ -9281,6 +9614,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.840.0.tgz", "integrity": "sha512-Gu7lGDyfddyhIkj1Z1JtrY5NHb5+x/CRiB87GjaSrKxkDaydtX2CU977JIABtt69l9wLbcGDIQ+W0uJ5xPof7g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/protocol-http": "^5.1.2", @@ -9292,15 +9626,16 @@ } }, "node_modules/@aws-sdk/client-xray/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.840.0.tgz", - "integrity": "sha512-hiiMf7BP5ZkAFAvWRcK67Mw/g55ar7OCrvrynC92hunx/xhMkrgSLM0EXIZ1oTn3uql9kH/qqGF0nqsK6K555A==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.844.0.tgz", + "integrity": "sha512-SIbDNUL6ZYXPj5Tk0qEz05sW9kNS1Gl3/wNWEmH+AuUACipkyIeKKWzD6z5433MllETh73vtka/JQF3g7AuZww==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", - "@smithy/core": "^3.6.0", + "@aws-sdk/util-endpoints": "3.844.0", + "@smithy/core": "^3.7.0", "@smithy/protocol-http": "^5.1.2", "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -9310,44 +9645,45 @@ } }, "node_modules/@aws-sdk/client-xray/node_modules/@aws-sdk/nested-clients": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.840.0.tgz", - "integrity": "sha512-LXYYo9+n4hRqnRSIMXLBb+BLz+cEmjMtTudwK1BF6Bn2RfdDv29KuyeDRrPCS3TwKl7ZKmXUmE9n5UuHAPfBpA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.844.0.tgz", + "integrity": "sha512-p2XILWc7AcevUSpBg2VtQrk79eWQC4q2JsCSY7HxKpFLZB4mMOfmiTyYkR1gEA6AttK/wpCOtfz+hi1/+z2V1A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", + "@aws-sdk/core": "3.844.0", "@aws-sdk/middleware-host-header": "3.840.0", "@aws-sdk/middleware-logger": "3.840.0", "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/region-config-resolver": "3.840.0", "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", + "@aws-sdk/util-endpoints": "3.844.0", "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.844.0", "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/fetch-http-handler": "^5.0.4", + "@smithy/core": "^3.7.0", + "@smithy/fetch-http-handler": "^5.1.0", "@smithy/hash-node": "^4.0.4", "@smithy/invalid-dependency": "^4.0.4", "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", + "@smithy/middleware-endpoint": "^4.1.14", + "@smithy/middleware-retry": "^4.1.15", "@smithy/middleware-serde": "^4.0.8", "@smithy/middleware-stack": "^4.0.4", "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/node-http-handler": "^4.1.0", "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", + "@smithy/util-defaults-mode-browser": "^4.0.22", + "@smithy/util-defaults-mode-node": "^4.0.22", "@smithy/util-endpoints": "^3.0.6", "@smithy/util-middleware": "^4.0.4", "@smithy/util-retry": "^4.0.6", @@ -9363,6 +9699,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.840.0.tgz", "integrity": "sha512-Qjnxd/yDv9KpIMWr90ZDPtRj0v75AqGC92Lm9+oHXZ8p1MjG5JE2CW0HL8JRgK9iKzgKBL7pPQRXI8FkvEVfrA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/node-config-provider": "^4.1.3", @@ -9376,13 +9713,14 @@ } }, "node_modules/@aws-sdk/client-xray/node_modules/@aws-sdk/token-providers": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.840.0.tgz", - "integrity": "sha512-6BuTOLTXvmgwjK7ve7aTg9JaWFdM5UoMolLVPMyh3wTv9Ufalh8oklxYHUBIxsKkBGO2WiHXytveuxH6tAgTYg==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.844.0.tgz", + "integrity": "sha512-Kh728FEny0fil+LeH8U1offPJCTd/EDh8liBAvLtViLHt2WoX2xC8rk98D38Q5p79aIUhHb3Pf4n9IZfTu/Kog==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/nested-clients": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -9398,6 +9736,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.840.0.tgz", "integrity": "sha512-xliuHaUFZxEx1NSXeLLZ9Dyu6+EJVQKEoD+yM+zqUo3YDZ7medKJWY6fIOKiPX/N7XbLdBYwajb15Q7IL8KkeA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -9407,13 +9746,15 @@ } }, "node_modules/@aws-sdk/client-xray/node_modules/@aws-sdk/util-endpoints": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.840.0.tgz", - "integrity": "sha512-eqE9ROdg/Kk0rj3poutyRCFauPDXIf/WSvCqFiRDDVi6QOnCv/M0g2XW8/jSvkJlOyaXkNCptapIp6BeeFFGYw==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.844.0.tgz", + "integrity": "sha512-1DHh0WTUmxlysz3EereHKtKoxVUG9UC5BsfAw6Bm4/6qDlJiqtY3oa2vebkYN23yltKdfsCK65cwnBRU59mWVg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", "@smithy/util-endpoints": "^3.0.6", "tslib": "^2.6.2" }, @@ -9426,6 +9767,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.840.0.tgz", "integrity": "sha512-JdyZM3EhhL4PqwFpttZu1afDpPJCCc3eyZOLi+srpX11LsGj6sThf47TYQN75HT1CarZ7cCdQHGzP2uy3/xHfQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@smithy/types": "^4.3.1", @@ -9434,12 +9776,13 @@ } }, "node_modules/@aws-sdk/client-xray/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.840.0.tgz", - "integrity": "sha512-Fy5JUEDQU1tPm2Yw/YqRYYc27W5+QD/J4mYvQvdWjUGZLB5q3eLFMGD35Uc28ZFoGMufPr4OCxK/bRfWROBRHQ==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.844.0.tgz", + "integrity": "sha512-0eTpURp9Gxbyyeqr78ogARZMSWS5KUMZuN+XMHxNpQLmn2S+J3g+MAyoklCcwhKXlbdQq2aMULEiy0mqIWytuw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.844.0", "@aws-sdk/types": "3.840.0", "@smithy/node-config-provider": "^4.1.3", "@smithy/types": "^4.3.1", @@ -9462,6 +9805,7 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.821.0.tgz", "integrity": "sha512-DIIotRnefVL6DiaHtO6/21DhJ4JZnnIwdNbpwiAhdt/AVbttcE4yw925gsjur0OGv5BTYXQXU3YnANBYnZjuQA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -9470,6 +9814,38 @@ "node": ">=18.0.0" } }, + "node_modules/@aws-sdk/client-xray/node_modules/fast-xml-parser": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", + "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^2.1.0" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/@aws-sdk/client-xray/node_modules/strnum": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, "node_modules/@aws-sdk/core": { "version": "3.839.0", "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.839.0.tgz", @@ -9832,14 +10208,15 @@ } }, "node_modules/@aws-sdk/lib-dynamodb": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.840.0.tgz", - "integrity": "sha512-9YoIOAG9CUUe/zLs0QX3fpKnfoO8uWd4fSiqUTg04sJdeCUrQ6njzmgNnMhV95MwOJ3tdlSsFGznSMu/sGep+A==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.844.0.tgz", + "integrity": "sha512-Zdv0dxyDTbCKN9AwdS8hUtW0QyMBbMuXFeHa1AhZ7mc1XACM8AF9e8840vZpSThLy+Hfp8Z0770xZfk8/DNPbA==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/util-dynamodb": "3.840.0", - "@smithy/core": "^3.6.0", - "@smithy/smithy-client": "^4.4.5", + "@aws-sdk/core": "3.844.0", + "@aws-sdk/util-dynamodb": "3.844.0", + "@smithy/core": "^3.7.0", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "tslib": "^2.6.2" }, @@ -9847,28 +10224,29 @@ "node": ">=18.0.0" }, "peerDependencies": { - "@aws-sdk/client-dynamodb": "^3.840.0" + "@aws-sdk/client-dynamodb": "^3.844.0" } }, "node_modules/@aws-sdk/lib-dynamodb/node_modules/@aws-sdk/core": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.840.0.tgz", - "integrity": "sha512-x3Zgb39tF1h2XpU+yA4OAAQlW6LVEfXNlSedSYJ7HGKXqA/E9h3rWQVpYfhXXVVsLdYXdNw5KBUkoAoruoZSZA==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.844.0.tgz", + "integrity": "sha512-pfpI54bG5Xf2NkqrDBC2REStXlDXNCw/whORhkEs+Tp5exU872D5QKguzjPA6hH+8Pvbq1qgt5zXMbduISTHJw==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.840.0", "@aws-sdk/xml-builder": "3.821.0", - "@smithy/core": "^3.6.0", + "@smithy/core": "^3.7.0", "@smithy/node-config-provider": "^4.1.3", "@smithy/property-provider": "^4.0.4", "@smithy/protocol-http": "^5.1.2", "@smithy/signature-v4": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-middleware": "^4.0.4", "@smithy/util-utf8": "^4.0.0", - "fast-xml-parser": "4.4.1", + "fast-xml-parser": "5.2.5", "tslib": "^2.6.2" }, "engines": { @@ -9879,6 +10257,7 @@ "version": "3.840.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.840.0.tgz", "integrity": "sha512-xliuHaUFZxEx1NSXeLLZ9Dyu6+EJVQKEoD+yM+zqUo3YDZ7medKJWY6fIOKiPX/N7XbLdBYwajb15Q7IL8KkeA==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -9891,6 +10270,7 @@ "version": "3.821.0", "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.821.0.tgz", "integrity": "sha512-DIIotRnefVL6DiaHtO6/21DhJ4JZnnIwdNbpwiAhdt/AVbttcE4yw925gsjur0OGv5BTYXQXU3YnANBYnZjuQA==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.3.1", "tslib": "^2.6.2" @@ -9899,6 +10279,36 @@ "node": ">=18.0.0" } }, + "node_modules/@aws-sdk/lib-dynamodb/node_modules/fast-xml-parser": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", + "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^2.1.0" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/@aws-sdk/lib-dynamodb/node_modules/strnum": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, "node_modules/@aws-sdk/lib-storage": { "version": "3.839.0", "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.839.0.tgz", @@ -10464,9 +10874,10 @@ } }, "node_modules/@aws-sdk/util-dynamodb": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-dynamodb/-/util-dynamodb-3.840.0.tgz", - "integrity": "sha512-DmTgUojCV4eCd2HDkFtNwocWoGz1Q/YTbdx4wFlUksrcLdFhI8CKRe6WVGZK0lxceIbtFONuseByMFo8hs/EMQ==", + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-dynamodb/-/util-dynamodb-3.844.0.tgz", + "integrity": "sha512-idKpV8wDQUdmv7gDh3073pceujd1D6bGqYZTLXWprHBao44iyHnY97FIx8zhBEHLi4HxzD2HqHzpljTAOwgYjQ==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -10474,7 +10885,7 @@ "node": ">=18.0.0" }, "peerDependencies": { - "@aws-sdk/client-dynamodb": "^3.840.0" + "@aws-sdk/client-dynamodb": "^3.844.0" } }, "node_modules/@aws-sdk/util-endpoints": { @@ -10736,11 +11147,10 @@ } }, "node_modules/@biomejs/biome": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-1.9.4.tgz", - "integrity": "sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.1.1.tgz", + "integrity": "sha512-HFGYkxG714KzG+8tvtXCJ1t1qXQMzgWzfvQaUjxN6UeKv+KvMEuliInnbZLJm6DXFXwqVi6446EGI0sGBLIYng==", "dev": true, - "hasInstallScript": true, "bin": { "biome": "bin/biome" }, @@ -10752,20 +11162,20 @@ "url": "https://opencollective.com/biome" }, "optionalDependencies": { - "@biomejs/cli-darwin-arm64": "1.9.4", - "@biomejs/cli-darwin-x64": "1.9.4", - "@biomejs/cli-linux-arm64": "1.9.4", - "@biomejs/cli-linux-arm64-musl": "1.9.4", - "@biomejs/cli-linux-x64": "1.9.4", - "@biomejs/cli-linux-x64-musl": "1.9.4", - "@biomejs/cli-win32-arm64": "1.9.4", - "@biomejs/cli-win32-x64": "1.9.4" + "@biomejs/cli-darwin-arm64": "2.1.1", + "@biomejs/cli-darwin-x64": "2.1.1", + "@biomejs/cli-linux-arm64": "2.1.1", + "@biomejs/cli-linux-arm64-musl": "2.1.1", + "@biomejs/cli-linux-x64": "2.1.1", + "@biomejs/cli-linux-x64-musl": "2.1.1", + "@biomejs/cli-win32-arm64": "2.1.1", + "@biomejs/cli-win32-x64": "2.1.1" } }, "node_modules/@biomejs/cli-darwin-arm64": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.9.4.tgz", - "integrity": "sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.1.1.tgz", + "integrity": "sha512-2Muinu5ok4tWxq4nu5l19el48cwCY/vzvI7Vjbkf3CYIQkjxZLyj0Ad37Jv2OtlXYaLvv+Sfu1hFeXt/JwRRXQ==", "cpu": [ "arm64" ], @@ -10779,9 +11189,9 @@ } }, "node_modules/@biomejs/cli-darwin-x64": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.9.4.tgz", - "integrity": "sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.1.1.tgz", + "integrity": "sha512-cC8HM5lrgKQXLAK+6Iz2FrYW5A62pAAX6KAnRlEyLb+Q3+Kr6ur/sSuoIacqlp1yvmjHJqjYfZjPvHWnqxoEIA==", "cpu": [ "x64" ], @@ -10795,9 +11205,9 @@ } }, "node_modules/@biomejs/cli-linux-arm64": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.9.4.tgz", - "integrity": "sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.1.1.tgz", + "integrity": "sha512-tw4BEbhAUkWPe4WBr6IX04DJo+2jz5qpPzpW/SWvqMjb9QuHY8+J0M23V8EPY/zWU4IG8Ui0XESapR1CB49Q7g==", "cpu": [ "arm64" ], @@ -10811,9 +11221,9 @@ } }, "node_modules/@biomejs/cli-linux-arm64-musl": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.9.4.tgz", - "integrity": "sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.1.1.tgz", + "integrity": "sha512-/7FBLnTswu4jgV9ttI3AMIdDGqVEPIZd8I5u2D4tfCoj8rl9dnjrEQbAIDlWhUXdyWlFSz8JypH3swU9h9P+2A==", "cpu": [ "arm64" ], @@ -10827,9 +11237,9 @@ } }, "node_modules/@biomejs/cli-linux-x64": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-1.9.4.tgz", - "integrity": "sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.1.1.tgz", + "integrity": "sha512-3WJ1GKjU7NzZb6RTbwLB59v9cTIlzjbiFLDB0z4376TkDqoNYilJaC37IomCr/aXwuU8QKkrYoHrgpSq5ffJ4Q==", "cpu": [ "x64" ], @@ -10843,9 +11253,9 @@ } }, "node_modules/@biomejs/cli-linux-x64-musl": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.9.4.tgz", - "integrity": "sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.1.1.tgz", + "integrity": "sha512-kUu+loNI3OCD2c12cUt7M5yaaSjDnGIksZwKnueubX6c/HWUyi/0mPbTBHR49Me3F0KKjWiKM+ZOjsmC+lUt9g==", "cpu": [ "x64" ], @@ -10859,9 +11269,9 @@ } }, "node_modules/@biomejs/cli-win32-arm64": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.9.4.tgz", - "integrity": "sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.1.1.tgz", + "integrity": "sha512-vEHK0v0oW+E6RUWLoxb2isI3rZo57OX9ZNyyGH701fZPj6Il0Rn1f5DMNyCmyflMwTnIQstEbs7n2BxYSqQx4Q==", "cpu": [ "arm64" ], @@ -10875,9 +11285,9 @@ } }, "node_modules/@biomejs/cli-win32-x64": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-1.9.4.tgz", - "integrity": "sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.1.1.tgz", + "integrity": "sha512-i2PKdn70kY++KEF/zkQFvQfX1e8SkA8hq4BgC+yE9dZqyLzB/XStY2MvwI3qswlRgnGpgncgqe0QYKVS1blksg==", "cpu": [ "x64" ], @@ -10909,9 +11319,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", - "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.6.tgz", + "integrity": "sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==", "cpu": [ "ppc64" ], @@ -10925,9 +11335,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", - "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.6.tgz", + "integrity": "sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==", "cpu": [ "arm" ], @@ -10941,9 +11351,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", - "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.6.tgz", + "integrity": "sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==", "cpu": [ "arm64" ], @@ -10957,9 +11367,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", - "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.6.tgz", + "integrity": "sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==", "cpu": [ "x64" ], @@ -10973,9 +11383,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", - "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.6.tgz", + "integrity": "sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==", "cpu": [ "arm64" ], @@ -10989,9 +11399,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", - "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.6.tgz", + "integrity": "sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==", "cpu": [ "x64" ], @@ -11005,9 +11415,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", - "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.6.tgz", + "integrity": "sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==", "cpu": [ "arm64" ], @@ -11021,9 +11431,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", - "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.6.tgz", + "integrity": "sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==", "cpu": [ "x64" ], @@ -11037,9 +11447,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", - "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.6.tgz", + "integrity": "sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==", "cpu": [ "arm" ], @@ -11053,9 +11463,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", - "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.6.tgz", + "integrity": "sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==", "cpu": [ "arm64" ], @@ -11069,9 +11479,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", - "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.6.tgz", + "integrity": "sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==", "cpu": [ "ia32" ], @@ -11085,9 +11495,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", - "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.6.tgz", + "integrity": "sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==", "cpu": [ "loong64" ], @@ -11101,9 +11511,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", - "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.6.tgz", + "integrity": "sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==", "cpu": [ "mips64el" ], @@ -11117,9 +11527,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", - "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.6.tgz", + "integrity": "sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==", "cpu": [ "ppc64" ], @@ -11133,9 +11543,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", - "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.6.tgz", + "integrity": "sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==", "cpu": [ "riscv64" ], @@ -11149,9 +11559,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", - "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.6.tgz", + "integrity": "sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==", "cpu": [ "s390x" ], @@ -11165,9 +11575,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", - "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.6.tgz", + "integrity": "sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==", "cpu": [ "x64" ], @@ -11181,9 +11591,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", - "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.6.tgz", + "integrity": "sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==", "cpu": [ "arm64" ], @@ -11197,9 +11607,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", - "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.6.tgz", + "integrity": "sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==", "cpu": [ "x64" ], @@ -11213,9 +11623,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", - "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.6.tgz", + "integrity": "sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==", "cpu": [ "arm64" ], @@ -11229,9 +11639,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", - "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.6.tgz", + "integrity": "sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==", "cpu": [ "x64" ], @@ -11244,10 +11654,26 @@ "node": ">=18" } }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.6.tgz", + "integrity": "sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", - "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.6.tgz", + "integrity": "sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==", "cpu": [ "x64" ], @@ -11261,9 +11687,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", - "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.6.tgz", + "integrity": "sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==", "cpu": [ "arm64" ], @@ -11277,9 +11703,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", - "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.6.tgz", + "integrity": "sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==", "cpu": [ "ia32" ], @@ -11293,9 +11719,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", - "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.6.tgz", + "integrity": "sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==", "cpu": [ "x64" ], @@ -12353,9 +12779,9 @@ "license": "BSD-3-Clause" }, "node_modules/@redis/client": { - "version": "5.5.6", - "resolved": "https://registry.npmjs.org/@redis/client/-/client-5.5.6.tgz", - "integrity": "sha512-M3Svdwt6oSfyfQdqEr0L2HOJH2vK7GgCFx1NfAQvpWAT4+ljoT1L5S5cKT3dA9NJrxrOPDkdoTPWJnIrGCOcmw==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-5.6.0.tgz", + "integrity": "sha512-wmP9kCFElCSr4MM4+1E4VckDuN4wLtiXSM/J0rKVQppajxQhowci89RGZr2OdLualowb8SRJ/R6OjsXrn9ZNFA==", "devOptional": true, "license": "MIT", "dependencies": { @@ -13055,9 +13481,10 @@ } }, "node_modules/@smithy/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.6.0.tgz", - "integrity": "sha512-Pgvfb+TQ4wUNLyHzvgCP4aYZMh16y7GcfF59oirRHcgGgkH1e/s9C0nv/v3WP+Quymyr5je71HeFQCwh+44XLg==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.7.0.tgz", + "integrity": "sha512-7ov8hu/4j0uPZv8b27oeOFtIBtlFmM3ibrPv/Omx1uUdoXvcpJ00U+H/OWWC/keAguLlcqwtyL2/jTlSnApgNQ==", + "license": "Apache-2.0", "dependencies": { "@smithy/middleware-serde": "^4.0.8", "@smithy/protocol-http": "^5.1.2", @@ -13065,7 +13492,7 @@ "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-middleware": "^4.0.4", - "@smithy/util-stream": "^4.2.2", + "@smithy/util-stream": "^4.2.3", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" }, @@ -13160,9 +13587,9 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.0.4.tgz", - "integrity": "sha512-AMtBR5pHppYMVD7z7G+OlHHAcgAN7v0kVKEpHuTO4Gb199Gowh0taYi9oDStFeUhetkeP55JLSVlTW1n9rFtUw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.1.0.tgz", + "integrity": "sha512-mADw7MS0bYe2OGKkHYMaqarOXuDwRbO6ArD91XhHcl2ynjGCFF+hvqf0LyQcYxkA1zaWjefSkU7Ne9mqgApSgQ==", "license": "Apache-2.0", "dependencies": { "@smithy/protocol-http": "^5.1.2", @@ -13255,12 +13682,13 @@ } }, "node_modules/@smithy/middleware-compression": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@smithy/middleware-compression/-/middleware-compression-4.1.12.tgz", - "integrity": "sha512-FGWI/vq3LV/TgHAp+jaWNpFmgnir7zY7gD2hHFZ9Kg4XJi1BszrXYS7Le24cb7ujDGtd13JOflh5ABDjcGjswA==", + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@smithy/middleware-compression/-/middleware-compression-4.1.13.tgz", + "integrity": "sha512-NO3uF24ZX8ZoV9ltd5wpzYKXqyGvjhKV0MYxNxe4yJad2KjThJJmSoP6aYifWSQ8Hc1Vv0/0s4pv/PfPqOaatw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.6.0", + "@smithy/core": "^3.7.0", "@smithy/is-array-buffer": "^4.0.0", "@smithy/node-config-provider": "^4.1.3", "@smithy/protocol-http": "^5.1.2", @@ -13290,11 +13718,12 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "4.1.13", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.13.tgz", - "integrity": "sha512-xg3EHV/Q5ZdAO5b0UiIMj3RIOCobuS40pBBODguUDVdko6YK6QIzCVRrHTogVuEKglBWqWenRnZ71iZnLL3ZAQ==", + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.14.tgz", + "integrity": "sha512-+BGLpK5D93gCcSEceaaYhUD/+OCGXM1IDaq/jKUQ+ujB0PTWlWN85noodKw/IPFZhIKFCNEe19PGd/reUMeLSQ==", + "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.6.0", + "@smithy/core": "^3.7.0", "@smithy/middleware-serde": "^4.0.8", "@smithy/node-config-provider": "^4.1.3", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -13308,14 +13737,15 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.1.14.tgz", - "integrity": "sha512-eoXaLlDGpKvdmvt+YBfRXE7HmIEtFF+DJCbTPwuLunP0YUnrydl+C4tS+vEM0+nyxXrX3PSUFqC+lP1+EHB1Tw==", + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.1.15.tgz", + "integrity": "sha512-iKYUJpiyTQ33U2KlOZeUb0GwtzWR3C0soYcKuCnTmJrvt6XwTPQZhMfsjJZNw7PpQ3TU4Ati1qLSrkSJxnnSMQ==", + "license": "Apache-2.0", "dependencies": { "@smithy/node-config-provider": "^4.1.3", "@smithy/protocol-http": "^5.1.2", "@smithy/service-error-classification": "^4.0.6", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "@smithy/util-middleware": "^4.0.4", "@smithy/util-retry": "^4.0.6", @@ -13369,9 +13799,9 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.6.tgz", - "integrity": "sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.1.0.tgz", + "integrity": "sha512-vqfSiHz2v8b3TTTrdXi03vNz1KLYYS3bhHCDv36FYDqxT7jvTll1mMnCrkD+gOvgwybuunh/2VmvOMqwBegxEg==", "license": "Apache-2.0", "dependencies": { "@smithy/abort-controller": "^4.0.4", @@ -13482,16 +13912,17 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.4.5.tgz", - "integrity": "sha512-+lynZjGuUFJaMdDYSTMnP/uPBBXXukVfrJlP+1U/Dp5SFTEI++w6NMga8DjOENxecOF71V9Z2DllaVDYRnGlkg==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.4.6.tgz", + "integrity": "sha512-3wfhywdzB/CFszP6moa5L3lf5/zSfQoH0kvVSdkyK2az5qZet0sn2PAHjcTDiq296Y4RP5yxF7B6S6+3oeBUCQ==", + "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.6.0", - "@smithy/middleware-endpoint": "^4.1.13", + "@smithy/core": "^3.7.0", + "@smithy/middleware-endpoint": "^4.1.14", "@smithy/middleware-stack": "^4.0.4", "@smithy/protocol-http": "^5.1.2", "@smithy/types": "^4.3.1", - "@smithy/util-stream": "^4.2.2", + "@smithy/util-stream": "^4.2.3", "tslib": "^2.6.2" }, "engines": { @@ -13583,12 +14014,13 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.0.21", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.21.tgz", - "integrity": "sha512-wM0jhTytgXu3wzJoIqpbBAG5U6BwiubZ6QKzSbP7/VbmF1v96xlAbX2Am/mz0Zep0NLvLh84JT0tuZnk3wmYQA==", + "version": "4.0.22", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.22.tgz", + "integrity": "sha512-hjElSW18Wq3fUAWVk6nbk7pGrV7ZT14DL1IUobmqhV3lxcsIenr5FUsDe2jlTVaS8OYBI3x+Og9URv5YcKb5QA==", + "license": "Apache-2.0", "dependencies": { "@smithy/property-provider": "^4.0.4", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "bowser": "^2.11.0", "tslib": "^2.6.2" @@ -13598,15 +14030,16 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.0.21", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.21.tgz", - "integrity": "sha512-/F34zkoU0GzpUgLJydHY8Rxu9lBn8xQC/s/0M0U9lLBkYbA1htaAFjWYJzpzsbXPuri5D1H8gjp2jBum05qBrA==", + "version": "4.0.22", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.22.tgz", + "integrity": "sha512-7B8mfQBtwwr2aNRRmU39k/bsRtv9B6/1mTMrGmmdJFKmLAH+KgIiOuhaqfKOBGh9sZ/VkZxbvm94rI4MMYpFjQ==", + "license": "Apache-2.0", "dependencies": { "@smithy/config-resolver": "^4.1.4", "@smithy/credential-provider-imds": "^4.0.6", "@smithy/node-config-provider": "^4.1.3", "@smithy/property-provider": "^4.0.4", - "@smithy/smithy-client": "^4.4.5", + "@smithy/smithy-client": "^4.4.6", "@smithy/types": "^4.3.1", "tslib": "^2.6.2" }, @@ -13667,13 +14100,13 @@ } }, "node_modules/@smithy/util-stream": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.2.2.tgz", - "integrity": "sha512-aI+GLi7MJoVxg24/3J1ipwLoYzgkB4kUfogZfnslcYlynj3xsQ0e7vk4TnTro9hhsS5PvX1mwmkRqqHQjwcU7w==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.2.3.tgz", + "integrity": "sha512-cQn412DWHHFNKrQfbHY8vSFI3nTROY1aIKji9N0tpp8gUABRilr7wdf8fqBbSlXresobM+tQFNk6I+0LXK/YZg==", "license": "Apache-2.0", "dependencies": { - "@smithy/fetch-http-handler": "^5.0.4", - "@smithy/node-http-handler": "^4.0.6", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/node-http-handler": "^4.1.0", "@smithy/types": "^4.3.1", "@smithy/util-base64": "^4.0.0", "@smithy/util-buffer-from": "^4.0.0", @@ -13858,9 +14291,10 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.0.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.8.tgz", - "integrity": "sha512-WytNrFSgWO/esSH9NbpWUfTMGQwCGIKfCmNlmFDNiI5gGhgMmEA+V1AEvKLeBNvvtBnailJtkrEa2OIISwrVAA==", + "version": "24.0.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.13.tgz", + "integrity": "sha512-Qm9OYVOFHFYg3wJoTSrz80hoec5Lia/dPp84do3X7dZvLikQvM1YpmvTBEdIr/e+U8HTkFjLHLnl78K/qjf+jQ==", + "license": "MIT", "dependencies": { "undici-types": "~7.8.0" } @@ -14508,9 +14942,9 @@ "dev": true }, "node_modules/agent-base": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, "license": "MIT", "engines": { @@ -14933,9 +15367,9 @@ } }, "node_modules/aws-cdk": { - "version": "2.1020.0", - "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1020.0.tgz", - "integrity": "sha512-luLfXrshHJBtN7BZVFHYEsDRYfE15zRgejKElRhaC6rDAS19RZoDObKC6FDCYZCoFlHJR15ZeP2uGgV+4i6qEw==", + "version": "2.1020.2", + "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.1020.2.tgz", + "integrity": "sha512-yWdt3dJh4aPm1VNyEgfG3lozGrvddw0i7avt+Cl9KOYixmisQtAg39/aZqzVVqjzVZVEanXmz+tlhzzh75Z69A==", "bin": { "cdk": "bin/cdk" }, @@ -14947,9 +15381,9 @@ } }, "node_modules/aws-cdk-lib": { - "version": "2.202.0", - "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.202.0.tgz", - "integrity": "sha512-JDycQoE8AxUAeCFXFoCx6FGvR78e6W9zYxPgmfW/uPPbntyNCXXBqwyAYo17RGS/lr0RO3zqD/oCBZSNU2e/Yg==", + "version": "2.204.0", + "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.204.0.tgz", + "integrity": "sha512-mY3nYu+QvPhO+fz+LCFKbc0PFhTHbHzDLnbcA2fPcQBKciYnTixpBd2ccRlKYWbG4y6NTc6ju6DudZ3HIS4OlA==", "bundleDependencies": [ "@balena/dockerignore", "case", @@ -14963,11 +15397,10 @@ "yaml", "mime-types" ], - "license": "Apache-2.0", "dependencies": { - "@aws-cdk/asset-awscli-v1": "2.2.240", + "@aws-cdk/asset-awscli-v1": "2.2.242", "@aws-cdk/asset-node-proxy-agent-v6": "^2.1.0", - "@aws-cdk/cloud-assembly-schema": "^44.2.0", + "@aws-cdk/cloud-assembly-schema": "^45.0.0", "@balena/dockerignore": "^1.0.2", "case": "1.6.3", "fs-extra": "^11.3.0", @@ -16918,9 +17351,9 @@ "license": "MIT" }, "node_modules/esbuild": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", - "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.6.tgz", + "integrity": "sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==", "hasInstallScript": true, "license": "MIT", "bin": { @@ -16930,31 +17363,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.5", - "@esbuild/android-arm": "0.25.5", - "@esbuild/android-arm64": "0.25.5", - "@esbuild/android-x64": "0.25.5", - "@esbuild/darwin-arm64": "0.25.5", - "@esbuild/darwin-x64": "0.25.5", - "@esbuild/freebsd-arm64": "0.25.5", - "@esbuild/freebsd-x64": "0.25.5", - "@esbuild/linux-arm": "0.25.5", - "@esbuild/linux-arm64": "0.25.5", - "@esbuild/linux-ia32": "0.25.5", - "@esbuild/linux-loong64": "0.25.5", - "@esbuild/linux-mips64el": "0.25.5", - "@esbuild/linux-ppc64": "0.25.5", - "@esbuild/linux-riscv64": "0.25.5", - "@esbuild/linux-s390x": "0.25.5", - "@esbuild/linux-x64": "0.25.5", - "@esbuild/netbsd-arm64": "0.25.5", - "@esbuild/netbsd-x64": "0.25.5", - "@esbuild/openbsd-arm64": "0.25.5", - "@esbuild/openbsd-x64": "0.25.5", - "@esbuild/sunos-x64": "0.25.5", - "@esbuild/win32-arm64": "0.25.5", - "@esbuild/win32-ia32": "0.25.5", - "@esbuild/win32-x64": "0.25.5" + "@esbuild/aix-ppc64": "0.25.6", + "@esbuild/android-arm": "0.25.6", + "@esbuild/android-arm64": "0.25.6", + "@esbuild/android-x64": "0.25.6", + "@esbuild/darwin-arm64": "0.25.6", + "@esbuild/darwin-x64": "0.25.6", + "@esbuild/freebsd-arm64": "0.25.6", + "@esbuild/freebsd-x64": "0.25.6", + "@esbuild/linux-arm": "0.25.6", + "@esbuild/linux-arm64": "0.25.6", + "@esbuild/linux-ia32": "0.25.6", + "@esbuild/linux-loong64": "0.25.6", + "@esbuild/linux-mips64el": "0.25.6", + "@esbuild/linux-ppc64": "0.25.6", + "@esbuild/linux-riscv64": "0.25.6", + "@esbuild/linux-s390x": "0.25.6", + "@esbuild/linux-x64": "0.25.6", + "@esbuild/netbsd-arm64": "0.25.6", + "@esbuild/netbsd-x64": "0.25.6", + "@esbuild/openbsd-arm64": "0.25.6", + "@esbuild/openbsd-x64": "0.25.6", + "@esbuild/openharmony-arm64": "0.25.6", + "@esbuild/sunos-x64": "0.25.6", + "@esbuild/win32-arm64": "0.25.6", + "@esbuild/win32-ia32": "0.25.6", + "@esbuild/win32-x64": "0.25.6" } }, "node_modules/escalade": { @@ -17167,7 +17601,8 @@ "version": "0.8.1", "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.1.tgz", "integrity": "sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/figures": { "version": "3.2.0", @@ -23869,9 +24304,16 @@ "license": "MIT" }, "node_modules/strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", + "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" }, "node_modules/strong-log-transformer": { "version": "2.1.0", @@ -25303,10 +25745,10 @@ } }, "node_modules/zod": { - "version": "3.25.67", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz", - "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==", - "devOptional": true, + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.5.tgz", + "integrity": "sha512-/5UuuRPStvHXu7RS+gmvRf4NXrNxpSllGwDnCBcJZtQsKrviYXm54yDGV2KYNLT5kq0lHGcl7lqWJLgSaG+tgA==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" @@ -25314,7 +25756,7 @@ }, "packages/batch": { "name": "@aws-lambda-powertools/batch", - "version": "2.23.0", + "version": "2.24.0", "license": "MIT-0", "devDependencies": { "@aws-lambda-powertools/testing-utils": "file:../testing" @@ -25322,7 +25764,7 @@ }, "packages/commons": { "name": "@aws-lambda-powertools/commons", - "version": "2.23.0", + "version": "2.24.0", "license": "MIT-0", "devDependencies": { "@aws-lambda-powertools/testing-utils": "file:../testing" @@ -25330,7 +25772,7 @@ }, "packages/event-handler": { "name": "@aws-lambda-powertools/event-handler", - "version": "2.23.0", + "version": "2.24.0", "license": "MIT-0", "dependencies": { "@aws-lambda-powertools/commons": "2.23.0" @@ -25338,7 +25780,7 @@ }, "packages/idempotency": { "name": "@aws-lambda-powertools/idempotency", - "version": "2.23.0", + "version": "2.24.0", "license": "MIT-0", "dependencies": { "@aws-lambda-powertools/commons": "2.23.0", @@ -25346,8 +25788,8 @@ }, "devDependencies": { "@aws-lambda-powertools/testing-utils": "file:../testing", - "@aws-sdk/client-dynamodb": "^3.840.0", - "@aws-sdk/lib-dynamodb": "^3.840.0", + "@aws-sdk/client-dynamodb": "^3.844.0", + "@aws-sdk/lib-dynamodb": "^3.844.0", "aws-sdk-client-mock": "^4.1.0" }, "peerDependencies": { @@ -25377,7 +25819,7 @@ }, "packages/jmespath": { "name": "@aws-lambda-powertools/jmespath", - "version": "2.23.0", + "version": "2.24.0", "license": "MIT-0", "dependencies": { "@aws-lambda-powertools/commons": "2.23.0" @@ -25385,7 +25827,7 @@ }, "packages/kafka": { "name": "@aws-lambda-powertools/kafka", - "version": "2.23.0", + "version": "2.24.0", "license": "MIT-0", "dependencies": { "@aws-lambda-powertools/commons": "2.23.0", @@ -25394,12 +25836,12 @@ "devDependencies": { "avro-js": "^1.12.0", "protobufjs": "^7.5.3", - "zod": "^3.25.67" + "zod": "^4.0.5" }, "peerDependencies": { "arktype": ">=2.0.0", "valibot": ">=1.0.0", - "zod": ">=3.24.0" + "zod": "^3.25.0 || ^4.0.0" }, "peerDependenciesMeta": { "arktype": { @@ -25415,7 +25857,7 @@ }, "packages/logger": { "name": "@aws-lambda-powertools/logger", - "version": "2.23.0", + "version": "2.24.0", "license": "MIT-0", "dependencies": { "@aws-lambda-powertools/commons": "2.23.0", @@ -25440,14 +25882,14 @@ }, "packages/metrics": { "name": "@aws-lambda-powertools/metrics", - "version": "2.23.0", + "version": "2.24.0", "license": "MIT-0", "dependencies": { "@aws-lambda-powertools/commons": "2.23.0" }, "devDependencies": { "@aws-lambda-powertools/testing-utils": "file:../testing", - "@aws-sdk/client-cloudwatch": "^3.840.0", + "@aws-sdk/client-cloudwatch": "^3.844.0", "@types/promise-retry": "^1.1.3", "promise-retry": "^2.0.1" }, @@ -25462,18 +25904,18 @@ }, "packages/parameters": { "name": "@aws-lambda-powertools/parameters", - "version": "2.23.0", + "version": "2.24.0", "license": "MIT-0", "dependencies": { "@aws-lambda-powertools/commons": "2.23.0" }, "devDependencies": { "@aws-lambda-powertools/testing-utils": "file:../testing", - "@aws-sdk/client-appconfigdata": "^3.840.0", - "@aws-sdk/client-dynamodb": "^3.840.0", - "@aws-sdk/client-secrets-manager": "^3.840.0", - "@aws-sdk/client-ssm": "^3.840.0", - "@aws-sdk/util-dynamodb": "^3.840.0", + "@aws-sdk/client-appconfigdata": "^3.844.0", + "@aws-sdk/client-dynamodb": "^3.844.0", + "@aws-sdk/client-secrets-manager": "^3.844.0", + "@aws-sdk/client-ssm": "^3.844.0", + "@aws-sdk/util-dynamodb": "^3.844.0", "@smithy/util-base64": "^4.0.0", "aws-sdk-client-mock": "^4.1.0" }, @@ -25508,14 +25950,18 @@ }, "packages/parser": { "name": "@aws-lambda-powertools/parser", - "version": "2.23.0", + "version": "2.24.0", "license": "MIT-0", "dependencies": { - "@aws-lambda-powertools/commons": "2.23.0" + "@aws-lambda-powertools/commons": "2.23.0", + "@standard-schema/spec": "^1.0.0" + }, + "devDependencies": { + "zod": "^4.0.5" }, "peerDependencies": { "@middy/core": "4.x || 5.x || 6.x", - "zod": ">=3.x" + "zod": "^3.25.0 || ^4.0.0" }, "peerDependenciesMeta": { "@middy/core": { @@ -25528,14 +25974,14 @@ }, "packages/testing": { "name": "@aws-lambda-powertools/testing-utils", - "version": "2.23.0", + "version": "2.24.0", "license": "MIT-0", "dependencies": { - "@aws-cdk/toolkit-lib": "^1.2.2", - "@aws-sdk/client-lambda": "^3.840.0", + "@aws-cdk/toolkit-lib": "^1.2.4", + "@aws-sdk/client-lambda": "^3.844.0", "@smithy/util-utf8": "^4.0.0", - "aws-cdk-lib": "^2.202.0", - "esbuild": "^0.25.5", + "aws-cdk-lib": "^2.204.0", + "esbuild": "^0.25.6", "promise-retry": "^2.0.1" }, "devDependencies": { @@ -25545,7 +25991,7 @@ }, "packages/tracer": { "name": "@aws-lambda-powertools/tracer", - "version": "2.23.0", + "version": "2.24.0", "license": "MIT-0", "dependencies": { "@aws-lambda-powertools/commons": "2.23.0", @@ -25553,8 +25999,8 @@ }, "devDependencies": { "@aws-lambda-powertools/testing-utils": "file:../testing", - "@aws-sdk/client-dynamodb": "^3.840.0", - "@aws-sdk/client-xray": "^3.840.0" + "@aws-sdk/client-dynamodb": "^3.844.0", + "@aws-sdk/client-xray": "^3.844.0" }, "peerDependencies": { "@middy/core": "4.x || 5.x || 6.x" @@ -25567,7 +26013,7 @@ }, "packages/validation": { "name": "@aws-lambda-powertools/validation", - "version": "2.23.0", + "version": "2.24.0", "license": "MIT-0", "dependencies": { "@aws-lambda-powertools/commons": "2.23.0", diff --git a/package.json b/package.json index 14a5b49d87..d478dcca9e 100644 --- a/package.json +++ b/package.json @@ -52,9 +52,9 @@ }, "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript#readme", "devDependencies": { - "@biomejs/biome": "^1.9.4", + "@biomejs/biome": "^2.1.1", "@types/aws-lambda": "^8.10.150", - "@types/node": "^24.0.8", + "@types/node": "^24.0.13", "@vitest/coverage-v8": "^3.2.4", "husky": "^9.1.7", "lerna": "8.1.2", diff --git a/packages/batch/CHANGELOG.md b/packages/batch/CHANGELOG.md index dd543e5f3c..79ee3174bd 100644 --- a/packages/batch/CHANGELOG.md +++ b/packages/batch/CHANGELOG.md @@ -1,281 +1,149 @@ # Change Log -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.24.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.23.0...v2.24.0) (2025-07-15) +### Maintenance + +- exclude deprecated code from coverage ([#4152](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4152)) ([30bbf5a](https://github.com/aws-powertools/powertools-lambda-typescript/commit/30bbf5af3ae78fdb4b837ad9b4322a9e90f15f57)) # [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - # [2.22.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.21.0...v2.22.0) (2025-06-20) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - # [2.21.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.20.0...v2.21.0) (2025-06-03) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - # [2.20.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.1...v2.20.0) (2025-05-20) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - ## [2.19.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.0...v2.19.1) (2025-05-05) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - # [2.19.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.18.0...v2.19.0) (2025-04-24) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - # [2.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.17.0...v2.18.0) (2025-04-07) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - # [2.17.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.16.0...v2.17.0) (2025-03-25) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - # [2.16.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.15.0...v2.16.0) (2025-03-07) - ### Bug Fixes * **batch:** clear message group references after request ([#3674](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3674)) ([270115e](https://github.com/aws-powertools/powertools-lambda-typescript/commit/270115e288a552bdb32083f04f23530725a86243)) - - - - # [2.15.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.14.0...v2.15.0) (2025-02-25) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - # [2.14.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.1...v2.14.0) (2025-02-10) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - ## [2.13.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.0...v2.13.1) (2025-01-28) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - # [2.13.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.12.0...v2.13.0) (2025-01-14) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - # [2.12.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.11.0...v2.12.0) (2024-12-17) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - # [2.11.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.10.0...v2.11.0) (2024-11-20) - ### Features * **batch:** Async Processing of Records for for SQS Fifo ([#3160](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3160)) ([e73b575](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e73b575b784b7a59ca8cde02d4ca51ec97789d19)) - - - - # [2.10.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.9.0...v2.10.0) (2024-10-22) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - # [2.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.8.0...v2.9.0) (2024-10-07) - ### Features * **batch:** sequential async processing of records for `BatchProcessor` ([#3109](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3109)) ([e31279a](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e31279af90446050a7974fbe25c34758f64915f9)) - - - - # [2.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.7.0...v2.8.0) (2024-09-16) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - # [2.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.6.0...v2.7.0) (2024-08-08) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - # [2.6.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.5.0...v2.6.0) (2024-07-25) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - # [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) - ### Features * **batch:** add option to not throw `FullBatchFailureError` when the entire batch fails ([#2711](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2711)) ([74198ef](https://github.com/aws-powertools/powertools-lambda-typescript/commit/74198ef1ec1d11267813d2f4b6dd5f4c5692f7d4)) * **maintenance:** drop support for Node.js 16.x ([#2717](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2717)) ([e4eee73](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e4eee73770ffccead9212a566335ec256a31af7d)) - - - - # [2.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.2.0...v2.3.0) (2024-06-27) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - # [2.2.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.1...v2.2.0) (2024-06-13) - ### Features * **batch:** add option to continue processing other group IDs on failure in `SqsFifoPartialProcessor` ([#2590](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2590)) ([a615c24](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a615c24108c4653be4c62d8488092fc08a4a3cc3)) - - - - ## [2.1.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.0...v2.1.1) (2024-05-14) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - # [2.1.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.0.4...v2.1.0) (2024-04-17) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - ## 2.0.4 (2024-04-10) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - ## 2.0.3 (2024-03-15) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - ## 2.0.2 (2024-03-05) - **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - ## 2.0.1 (2024-03-04) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - # [2.0.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.18.1...v2.0.0) (2024-03-04) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - ## 1.18.1 (2024-02-20) **Note:** Version bump only for package @aws-lambda-powertools/batch - - - - ## [1.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.17.0...v1.18.0) (2024-01-26) **Note:** Version bump only for package @aws-lambda-powertools/batch @@ -292,7 +160,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **maintenance:** add support for nodejs20.x runtime ([#1790](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1790)) ([6b9b1bc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b9b1bcb9baf4b3d8e0e5ec6709594aca09bb033)) +* **maintenance:** add support for nodejs20.x runtime ([#1790](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1790)) ([6b9b1bc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b9b1bcb9baf4b3d8e0e5ec6709594aca09bb033)) ## [1.14.2](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.14.1...v1.14.2) (2023-11-03) @@ -314,11 +182,11 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- **batch:** Update processor to pass only context to handler ([#1637](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1637)) ([6fa09b2](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6fa09b2638bf247fd595db51ac3d1aa1252d3379)) +* **batch:** Update processor to pass only context to handler ([#1637](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1637)) ([6fa09b2](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6fa09b2638bf247fd595db51ac3d1aa1252d3379)) ### Features -- **batch:** rename AsyncBatchProcessor to default BatchProcessor ([#1683](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1683)) ([e253755](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e253755d09f50a75cde805168845f52d8b85af28)) +* **batch:** rename AsyncBatchProcessor to default BatchProcessor ([#1683](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1683)) ([e253755](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e253755d09f50a75cde805168845f52d8b85af28)) ## [1.12.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.12.0...v1.12.1) (2023-07-25) @@ -328,4 +196,4 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **batch:** add batch processing utility ([#1625](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1625)) ([c4e6b19](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c4e6b192c3658cbcc3f458a579a0752153e3c201)), closes [#1588](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1588) [#1591](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1591) [#1593](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1593) [#1592](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1592) [#1594](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1594) +* **batch:** add batch processing utility ([#1625](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1625)) ([c4e6b19](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c4e6b192c3658cbcc3f458a579a0752153e3c201)), closes [#1588](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1588) [#1591](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1591) [#1593](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1593) [#1592](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1592) [#1594](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1594) diff --git a/packages/batch/package.json b/packages/batch/package.json index 3ea40f07c2..59b50b4d1f 100644 --- a/packages/batch/package.json +++ b/packages/batch/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/batch", - "version": "2.23.0", + "version": "2.24.0", "description": "The batch processing package for the Powertools for AWS Lambda (TypeScript) library.", "author": { "name": "Amazon Web Services", diff --git a/packages/batch/src/BasePartialProcessor.ts b/packages/batch/src/BasePartialProcessor.ts index 68bcac467d..1640cc4355 100644 --- a/packages/batch/src/BasePartialProcessor.ts +++ b/packages/batch/src/BasePartialProcessor.ts @@ -106,20 +106,6 @@ abstract class BasePartialProcessor { * Before and after processing, the processor will call the prepare and clean methods respectively. */ public async process(): Promise<(SuccessResponse | FailureResponse)[]> { - /** - * If this is a sync processor, user should have called processSync instead, - * so we call the method early to throw the error early thus failing fast. - * - * The type casting is necessary to ensure that we have test coverage for the - * block of code that throws the error, without having to change the return type - * of the method. This is because this call will always throw an error. - */ - if (this.constructor.name === 'BatchProcessorSync') { - return (await this.processRecord(this.records[0])) as ( - | SuccessResponse - | FailureResponse - )[]; - } this.prepare(); // Default to `true` if `processInParallel` is not specified. diff --git a/packages/batch/src/BatchProcessorSync.ts b/packages/batch/src/BatchProcessorSync.ts index 8feb8f14fa..a3613a3d51 100644 --- a/packages/batch/src/BatchProcessorSync.ts +++ b/packages/batch/src/BatchProcessorSync.ts @@ -82,7 +82,7 @@ import type { BaseRecord, FailureResponse, SuccessResponse } from './types.js'; * @param eventType The type of event to process (SQS, Kinesis, DynamoDB) * @deprecated Use {@link BasePartialBatchProcessor} instead, this class is deprecated and will be removed in the next major version. */ -class BatchProcessorSync extends BasePartialBatchProcessor { +/* v8 ignore start */ class BatchProcessorSync extends BasePartialBatchProcessor { /** * @throws {BatchProcessingError} This method is not implemented for asynchronous processing. * @@ -120,6 +120,6 @@ class BatchProcessorSync extends BasePartialBatchProcessor { return this.failureHandler(record, error as Error); } } -} +} /* v8 ignore stop */ export { BatchProcessorSync }; diff --git a/packages/batch/src/SqsFifoPartialProcessor.ts b/packages/batch/src/SqsFifoPartialProcessor.ts index fded442669..d7752b83f8 100644 --- a/packages/batch/src/SqsFifoPartialProcessor.ts +++ b/packages/batch/src/SqsFifoPartialProcessor.ts @@ -1,12 +1,12 @@ import type { SQSRecord } from 'aws-lambda'; import { BatchProcessorSync } from './BatchProcessorSync.js'; -import { SqsFifoProcessor } from './SqsFifoProcessor.js'; import { EventType } from './constants.js'; import { type BatchProcessingError, SqsFifoMessageGroupShortCircuitError, SqsFifoShortCircuitError, } from './errors.js'; +import { SqsFifoProcessor } from './SqsFifoProcessor.js'; import type { BaseRecord, EventSourceDataClassTypes, diff --git a/packages/batch/src/SqsFifoPartialProcessorAsync.ts b/packages/batch/src/SqsFifoPartialProcessorAsync.ts index 59001b6b4b..9e15d4a916 100644 --- a/packages/batch/src/SqsFifoPartialProcessorAsync.ts +++ b/packages/batch/src/SqsFifoPartialProcessorAsync.ts @@ -1,12 +1,12 @@ import type { SQSRecord } from 'aws-lambda'; import { BatchProcessor } from './BatchProcessor.js'; -import { SqsFifoProcessor } from './SqsFifoProcessor.js'; import { EventType } from './constants.js'; import { type BatchProcessingError, SqsFifoMessageGroupShortCircuitError, SqsFifoShortCircuitError, } from './errors.js'; +import { SqsFifoProcessor } from './SqsFifoProcessor.js'; import type { BaseRecord, EventSourceDataClassTypes, diff --git a/packages/batch/src/index.ts b/packages/batch/src/index.ts index ceb2b114fb..510c57123d 100644 --- a/packages/batch/src/index.ts +++ b/packages/batch/src/index.ts @@ -1,15 +1,15 @@ +export { BasePartialBatchProcessor } from './BasePartialBatchProcessor.js'; +export { BatchProcessor } from './BatchProcessor.js'; +export { BatchProcessorSync } from './BatchProcessorSync.js'; export { EventType } from './constants.js'; export { BatchProcessingError, FullBatchFailureError, - SqsFifoShortCircuitError, SqsFifoMessageGroupShortCircuitError, + SqsFifoShortCircuitError, UnexpectedBatchTypeError, } from './errors.js'; -export { BasePartialBatchProcessor } from './BasePartialBatchProcessor.js'; -export { BatchProcessorSync } from './BatchProcessorSync.js'; -export { BatchProcessor } from './BatchProcessor.js'; -export { processPartialResponseSync } from './processPartialResponseSync.js'; export { processPartialResponse } from './processPartialResponse.js'; +export { processPartialResponseSync } from './processPartialResponseSync.js'; export { SqsFifoPartialProcessor } from './SqsFifoPartialProcessor.js'; export { SqsFifoPartialProcessorAsync } from './SqsFifoPartialProcessorAsync.js'; diff --git a/packages/batch/src/processPartialResponseSync.ts b/packages/batch/src/processPartialResponseSync.ts index 39e1dce7c1..d5c22d9975 100644 --- a/packages/batch/src/processPartialResponseSync.ts +++ b/packages/batch/src/processPartialResponseSync.ts @@ -99,7 +99,9 @@ import type { * @param processor Batch processor instance to handle the batch processing * @param options Batch processing options, which can vary with chosen batch processor implementation */ -const processPartialResponseSync = ( +/* v8 ignore start */ const processPartialResponseSync = < + T extends BasePartialBatchProcessor, +>( event: { Records: BaseRecord[] }, recordHandler: CallableFunction, processor: T, @@ -114,6 +116,6 @@ const processPartialResponseSync = ( processor.processSync(); return processor.response(); -}; +}; /* v8 ignore stop */ export { processPartialResponseSync }; diff --git a/packages/batch/tests/helpers/handlers.ts b/packages/batch/tests/helpers/handlers.ts index 1902cd1a2b..fbc962daee 100644 --- a/packages/batch/tests/helpers/handlers.ts +++ b/packages/batch/tests/helpers/handlers.ts @@ -68,7 +68,7 @@ const handlerWithContext = (record: SQSRecord, context: Context): string => { if (context.getRemainingTimeInMillis() === 0) { throw Error('No time remaining.'); } - } catch (e) { + } catch { throw Error(`Context possibly malformed. Displaying context:\n${context}`); } @@ -83,7 +83,7 @@ const asyncHandlerWithContext = async ( if (context.getRemainingTimeInMillis() === 0) { throw Error('No time remaining.'); } - } catch (e) { + } catch { throw Error(`Context possibly malformed. Displaying context:\n${context}`); } diff --git a/packages/batch/tests/unit/BatchProcessorSync.test.ts b/packages/batch/tests/unit/BatchProcessorSync.test.ts deleted file mode 100644 index e341628da8..0000000000 --- a/packages/batch/tests/unit/BatchProcessorSync.test.ts +++ /dev/null @@ -1,271 +0,0 @@ -import context from '@aws-lambda-powertools/testing-utils/context'; -import type { Context } from 'aws-lambda'; -import { afterAll, beforeEach, describe, expect, it, vi } from 'vitest'; -import { - BatchProcessingError, - BatchProcessorSync, - EventType, - FullBatchFailureError, -} from '../../src/index.js'; -import type { BatchProcessingOptions } from '../../src/types.js'; -import { - dynamodbRecordFactory, - kinesisRecordFactory, - sqsRecordFactory, -} from '../helpers/factories.js'; -import { - dynamodbRecordHandler, - handlerWithContext, - kinesisRecordHandler, - sqsRecordHandler, -} from '../helpers/handlers.js'; - -describe('Class: BatchProcessor', () => { - const ENVIRONMENT_VARIABLES = process.env; - const options: BatchProcessingOptions = { - context, - }; - - beforeEach(() => { - vi.clearAllMocks(); - process.env = { ...ENVIRONMENT_VARIABLES }; - }); - - afterAll(() => { - process.env = ENVIRONMENT_VARIABLES; - }); - - describe('Synchronously processing SQS Records', () => { - it('completes processing with no failures', () => { - // Prepare - const firstRecord = sqsRecordFactory('success'); - const secondRecord = sqsRecordFactory('success'); - const records = [firstRecord, secondRecord]; - const processor = new BatchProcessorSync(EventType.SQS); - - // Act - processor.register(records, sqsRecordHandler); - const processedMessages = processor.processSync(); - - // Assess - expect(processedMessages).toStrictEqual([ - ['success', firstRecord.body, firstRecord], - ['success', secondRecord.body, secondRecord], - ]); - }); - - it('completes processing with some failures', () => { - // Prepare - const firstRecord = sqsRecordFactory('failure'); - const secondRecord = sqsRecordFactory('success'); - const thirdRecord = sqsRecordFactory('fail'); - const records = [firstRecord, secondRecord, thirdRecord]; - const processor = new BatchProcessorSync(EventType.SQS); - - // Act - processor.register(records, sqsRecordHandler); - const processedMessages = processor.processSync(); - - // Assess - expect(processedMessages[1]).toStrictEqual([ - 'success', - secondRecord.body, - secondRecord, - ]); - expect(processor.failureMessages.length).toBe(2); - expect(processor.response()).toStrictEqual({ - batchItemFailures: [ - { itemIdentifier: firstRecord.messageId }, - { itemIdentifier: thirdRecord.messageId }, - ], - }); - }); - - it('completes processing with all failures', () => { - // Prepare - const firstRecord = sqsRecordFactory('failure'); - const secondRecord = sqsRecordFactory('failure'); - const thirdRecord = sqsRecordFactory('fail'); - - const records = [firstRecord, secondRecord, thirdRecord]; - const processor = new BatchProcessorSync(EventType.SQS); - - // Act & Assess - processor.register(records, sqsRecordHandler); - expect(() => processor.processSync()).toThrowError(FullBatchFailureError); - }); - }); - - describe('Synchronously processing Kinesis Records', () => { - it('completes processing with no failures', async () => { - // Prepare - const firstRecord = kinesisRecordFactory('success'); - const secondRecord = kinesisRecordFactory('success'); - const records = [firstRecord, secondRecord]; - const processor = new BatchProcessorSync(EventType.KinesisDataStreams); - - // Act - processor.register(records, kinesisRecordHandler); - const processedMessages = processor.processSync(); - - // Assess - expect(processedMessages).toStrictEqual([ - ['success', firstRecord.kinesis.data, firstRecord], - ['success', secondRecord.kinesis.data, secondRecord], - ]); - }); - - it('completes processing with some failures', async () => { - // Prepare - const firstRecord = kinesisRecordFactory('failure'); - const secondRecord = kinesisRecordFactory('success'); - const thirdRecord = kinesisRecordFactory('fail'); - const records = [firstRecord, secondRecord, thirdRecord]; - const processor = new BatchProcessorSync(EventType.KinesisDataStreams); - - // Act - processor.register(records, kinesisRecordHandler); - const processedMessages = processor.processSync(); - - // Assess - expect(processedMessages[1]).toStrictEqual([ - 'success', - secondRecord.kinesis.data, - secondRecord, - ]); - expect(processor.failureMessages.length).toBe(2); - expect(processor.response()).toStrictEqual({ - batchItemFailures: [ - { itemIdentifier: firstRecord.kinesis.sequenceNumber }, - { itemIdentifier: thirdRecord.kinesis.sequenceNumber }, - ], - }); - }); - - it('completes processing with all failures', async () => { - const firstRecord = kinesisRecordFactory('failure'); - const secondRecord = kinesisRecordFactory('failure'); - const thirdRecord = kinesisRecordFactory('fail'); - - const records = [firstRecord, secondRecord, thirdRecord]; - const processor = new BatchProcessorSync(EventType.KinesisDataStreams); - - // Act - processor.register(records, kinesisRecordHandler); - - // Assess - expect(() => processor.processSync()).toThrowError(FullBatchFailureError); - }); - }); - - describe('Synchronously processing DynamoDB Records', () => { - it('completes processing with no failures', async () => { - // Prepare - const firstRecord = dynamodbRecordFactory('success'); - const secondRecord = dynamodbRecordFactory('success'); - const records = [firstRecord, secondRecord]; - const processor = new BatchProcessorSync(EventType.DynamoDBStreams); - - // Act - processor.register(records, dynamodbRecordHandler); - const processedMessages = processor.processSync(); - - // Assess - expect(processedMessages).toStrictEqual([ - ['success', firstRecord.dynamodb?.NewImage?.Message, firstRecord], - ['success', secondRecord.dynamodb?.NewImage?.Message, secondRecord], - ]); - }); - - it('completes processing with some failures', async () => { - // Prepare - const firstRecord = dynamodbRecordFactory('failure'); - const secondRecord = dynamodbRecordFactory('success'); - const thirdRecord = dynamodbRecordFactory('fail'); - const records = [firstRecord, secondRecord, thirdRecord]; - const processor = new BatchProcessorSync(EventType.DynamoDBStreams); - - // Act - processor.register(records, dynamodbRecordHandler); - const processedMessages = processor.processSync(); - - // Assess - expect(processedMessages[1]).toStrictEqual([ - 'success', - secondRecord.dynamodb?.NewImage?.Message, - secondRecord, - ]); - expect(processor.failureMessages.length).toBe(2); - expect(processor.response()).toStrictEqual({ - batchItemFailures: [ - { itemIdentifier: firstRecord.dynamodb?.SequenceNumber }, - { itemIdentifier: thirdRecord.dynamodb?.SequenceNumber }, - ], - }); - }); - - it('completes processing with all failures', async () => { - // Prepare - const firstRecord = dynamodbRecordFactory('failure'); - const secondRecord = dynamodbRecordFactory('failure'); - const thirdRecord = dynamodbRecordFactory('fail'); - - const records = [firstRecord, secondRecord, thirdRecord]; - const processor = new BatchProcessorSync(EventType.DynamoDBStreams); - - // Act - processor.register(records, dynamodbRecordHandler); - - // Assess - expect(() => processor.processSync()).toThrowError(FullBatchFailureError); - }); - }); - - describe('Batch processing with Lambda context', () => { - it('passes the context to the record handler', async () => { - // Prepare - const firstRecord = sqsRecordFactory('success'); - const secondRecord = sqsRecordFactory('success'); - const records = [firstRecord, secondRecord]; - const processor = new BatchProcessorSync(EventType.SQS); - - // Act - processor.register(records, handlerWithContext, options); - const processedMessages = processor.processSync(); - - // Assess - expect(processedMessages).toStrictEqual([ - ['success', firstRecord.body, firstRecord], - ['success', secondRecord.body, secondRecord], - ]); - }); - - it('throws an error when passing an invalid context object', async () => { - // Prepare - const firstRecord = sqsRecordFactory('success'); - const secondRecord = sqsRecordFactory('success'); - const records = [firstRecord, secondRecord]; - const processor = new BatchProcessorSync(EventType.SQS); - - // Act - processor.register(records, sqsRecordHandler, options); - const processedMessages = processor.processSync(); - - // Assess - expect(processedMessages).toStrictEqual([ - ['success', firstRecord.body, firstRecord], - ['success', secondRecord.body, secondRecord], - ]); - }); - }); - - it('throws an error when the async process method is called', async () => { - // Prepare - const processor = new BatchProcessorSync(EventType.SQS); - - // Act & Assess - await expect(() => processor.process()).rejects.toThrowError( - BatchProcessingError - ); - }); -}); diff --git a/packages/batch/tests/unit/SqsFifoPartialProcessor.test.ts b/packages/batch/tests/unit/SqsFifoPartialProcessor.test.ts index 3c6cc35e76..6071464039 100644 --- a/packages/batch/tests/unit/SqsFifoPartialProcessor.test.ts +++ b/packages/batch/tests/unit/SqsFifoPartialProcessor.test.ts @@ -1,11 +1,11 @@ import { afterAll, beforeEach, describe, expect, it, vi } from 'vitest'; import { + processPartialResponse, + processPartialResponseSync, SqsFifoMessageGroupShortCircuitError, SqsFifoPartialProcessor, SqsFifoPartialProcessorAsync, SqsFifoShortCircuitError, - processPartialResponse, - processPartialResponseSync, } from '../../src/index.js'; import type { PartialItemFailureResponse } from '../../src/types.js'; import { sqsRecordFactory } from '../helpers/factories.js'; diff --git a/packages/batch/tests/unit/processPartialResponse.test.ts b/packages/batch/tests/unit/processPartialResponse.test.ts index 54d0ef6fec..d9c6d56a20 100644 --- a/packages/batch/tests/unit/processPartialResponse.test.ts +++ b/packages/batch/tests/unit/processPartialResponse.test.ts @@ -11,8 +11,8 @@ import { BatchProcessor, EventType, FullBatchFailureError, - UnexpectedBatchTypeError, processPartialResponse, + UnexpectedBatchTypeError, } from '../../src/index.js'; import type { BatchProcessingOptions, diff --git a/packages/batch/tests/unit/processPartialResponseSync.test.ts b/packages/batch/tests/unit/processPartialResponseSync.test.ts deleted file mode 100644 index b274f6f8f6..0000000000 --- a/packages/batch/tests/unit/processPartialResponseSync.test.ts +++ /dev/null @@ -1,341 +0,0 @@ -import context from '@aws-lambda-powertools/testing-utils/context'; -import type { - Context, - DynamoDBStreamEvent, - KinesisStreamEvent, - SQSEvent, -} from 'aws-lambda'; -import { afterAll, beforeEach, describe, expect, it, vi } from 'vitest'; -import { - BatchProcessorSync, - EventType, - FullBatchFailureError, - UnexpectedBatchTypeError, - processPartialResponseSync, -} from '../../src/index.js'; -import type { - BatchProcessingOptions, - PartialItemFailureResponse, -} from '../../src/types.js'; -import { - dynamodbRecordFactory, - kinesisRecordFactory, - sqsRecordFactory, -} from '../helpers/factories.js'; -import { - dynamodbRecordHandler, - handlerWithContext, - kinesisRecordHandler, - sqsRecordHandler, -} from '../helpers/handlers.js'; - -describe('Function: processPartialResponse()', () => { - const ENVIRONMENT_VARIABLES = process.env; - const options: BatchProcessingOptions = { - context, - }; - - beforeEach(() => { - vi.clearAllMocks(); - process.env = { ...ENVIRONMENT_VARIABLES }; - }); - - afterAll(() => { - process.env = ENVIRONMENT_VARIABLES; - }); - - describe('Process partial response function call tests', () => { - it('Process partial response function call with synchronous handler', () => { - // Prepare - const records = [ - sqsRecordFactory('success'), - sqsRecordFactory('success'), - ]; - const batch = { Records: records }; - const processor = new BatchProcessorSync(EventType.SQS); - - // Act - const ret = processPartialResponseSync( - batch, - sqsRecordHandler, - processor - ); - - // Assess - expect(ret).toStrictEqual({ batchItemFailures: [] }); - }); - - it('Process partial response function call with context provided', () => { - // Prepare - const records = [ - sqsRecordFactory('success'), - sqsRecordFactory('success'), - ]; - const batch = { Records: records }; - const processor = new BatchProcessorSync(EventType.SQS); - - // Act - const ret = processPartialResponseSync( - batch, - handlerWithContext, - processor, - options - ); - - // Assess - expect(ret).toStrictEqual({ batchItemFailures: [] }); - }); - - it('Process partial response function call with synchronous handler for full batch failure', () => { - // Prepare - const records = [sqsRecordFactory('fail'), sqsRecordFactory('fail')]; - const batch = { Records: records }; - const processor = new BatchProcessorSync(EventType.SQS); - - // Act & Assess - expect(() => - processPartialResponseSync(batch, sqsRecordHandler, processor) - ).toThrow(FullBatchFailureError); - }); - - it('Process partial response function call with synchronous handler for full batch failure when `throwOnFullBatchFailure` is `true`', () => { - // Prepare - const records = [sqsRecordFactory('fail'), sqsRecordFactory('fail')]; - const batch = { Records: records }; - const processor = new BatchProcessorSync(EventType.SQS); - - // Act & Assess - expect(() => - processPartialResponseSync(batch, sqsRecordHandler, processor, { - ...options, - throwOnFullBatchFailure: true, - }) - ).toThrow(FullBatchFailureError); - }); - - it('Process partial response function call with synchronous handler for full batch failure when `throwOnFullBatchFailure` is `false`', () => { - // Prepare - const records = [sqsRecordFactory('fail'), sqsRecordFactory('fail')]; - const batch = { Records: records }; - const processor = new BatchProcessorSync(EventType.SQS); - - // Act - const response = processPartialResponseSync( - batch, - sqsRecordHandler, - processor, - { - ...options, - throwOnFullBatchFailure: false, - } - ); - - // Assess - expect(response).toStrictEqual({ - batchItemFailures: [ - { itemIdentifier: records[0].messageId }, - { itemIdentifier: records[1].messageId }, - ], - }); - }); - }); - - describe('Process partial response function call through handler', () => { - it('Process partial response through handler with SQS event', () => { - // Prepare - const records = [ - sqsRecordFactory('success'), - sqsRecordFactory('success'), - ]; - const processor = new BatchProcessorSync(EventType.SQS); - const event: SQSEvent = { Records: records }; - - const handler = ( - event: SQSEvent, - _context: Context - ): PartialItemFailureResponse => { - return processPartialResponseSync(event, sqsRecordHandler, processor); - }; - - // Act - const result = handler(event, context); - - // Assess - expect(result).toStrictEqual({ batchItemFailures: [] }); - }); - - it('Process partial response through handler with Kinesis event', () => { - // Prepare - const records = [ - kinesisRecordFactory('success'), - kinesisRecordFactory('success'), - ]; - const processor = new BatchProcessorSync(EventType.KinesisDataStreams); - const event: KinesisStreamEvent = { Records: records }; - - const handler = ( - event: KinesisStreamEvent, - _context: Context - ): PartialItemFailureResponse => { - return processPartialResponseSync( - event, - kinesisRecordHandler, - processor - ); - }; - - // Act - const result = handler(event, context); - - // Assess - expect(result).toStrictEqual({ batchItemFailures: [] }); - }); - - it('Process partial response through handler with DynamoDB event', () => { - // Prepare - const records = [ - dynamodbRecordFactory('success'), - dynamodbRecordFactory('success'), - ]; - const processor = new BatchProcessorSync(EventType.DynamoDBStreams); - const event: DynamoDBStreamEvent = { Records: records }; - - const handler = ( - event: DynamoDBStreamEvent, - _context: Context - ): PartialItemFailureResponse => { - return processPartialResponseSync( - event, - dynamodbRecordHandler, - processor - ); - }; - - // Act - const result = handler(event, context); - - // Assess - expect(result).toStrictEqual({ batchItemFailures: [] }); - }); - - it('Process partial response through handler for SQS records with incorrect event type', () => { - // Prepare - const processor = new BatchProcessorSync(EventType.SQS); - - const handler = ( - event: SQSEvent, - _context: Context - ): PartialItemFailureResponse => { - return processPartialResponseSync(event, sqsRecordHandler, processor); - }; - - try { - // Act - handler({} as unknown as SQSEvent, context); - } catch (error) { - // Assess - expect(error).toBeInstanceOf(UnexpectedBatchTypeError); - expect((error as Error).message).toBe( - `Unexpected batch type. Possible values are: ${Object.keys( - EventType - ).join(', ')}` - ); - } - }); - - it('Process partial response through handler with context provided', () => { - // Prepare - const records = [ - sqsRecordFactory('success'), - sqsRecordFactory('success'), - ]; - const processor = new BatchProcessorSync(EventType.SQS); - const event: SQSEvent = { Records: records }; - - const handler = ( - event: SQSEvent, - context: Context - ): PartialItemFailureResponse => { - const options: BatchProcessingOptions = { context: context }; - - return processPartialResponseSync( - event, - handlerWithContext, - processor, - options - ); - }; - - // Act - const result = handler(event, context); - - // Assess - expect(result).toStrictEqual({ batchItemFailures: [] }); - }); - - it('Process partial response through handler for full batch failure', () => { - // Prepare - const records = [sqsRecordFactory('fail'), sqsRecordFactory('fail')]; - const processor = new BatchProcessorSync(EventType.SQS); - const event: SQSEvent = { Records: records }; - - const handler = ( - event: SQSEvent, - _context: Context - ): PartialItemFailureResponse => { - return processPartialResponseSync(event, sqsRecordHandler, processor); - }; - - // Act & Assess - expect(() => handler(event, context)).toThrow(FullBatchFailureError); - }); - - it('Process partial response through handler for full batch failure when `throwOnFullBatchFailure` is `true`', () => { - // Prepare - const records = [sqsRecordFactory('fail'), sqsRecordFactory('fail')]; - const processor = new BatchProcessorSync(EventType.SQS); - const event: SQSEvent = { Records: records }; - - const handler = ( - event: SQSEvent, - _context: Context - ): PartialItemFailureResponse => { - return processPartialResponseSync(event, sqsRecordHandler, processor, { - ...options, - throwOnFullBatchFailure: true, - }); - }; - - // Act & Assess - expect(() => handler(event, context)).toThrow(FullBatchFailureError); - }); - - it('Process partial response through handler for full batch failure when `throwOnFullBatchFailure` is `false`', () => { - // Prepare - const records = [sqsRecordFactory('fail'), sqsRecordFactory('fail')]; - const processor = new BatchProcessorSync(EventType.SQS); - const event: SQSEvent = { Records: records }; - - const handler = ( - event: SQSEvent, - _context: Context - ): PartialItemFailureResponse => { - return processPartialResponseSync(event, sqsRecordHandler, processor, { - ...options, - throwOnFullBatchFailure: false, - }); - }; - - // Act - const response = handler(event, context); - - // Assess - expect(response).toStrictEqual({ - batchItemFailures: [ - { itemIdentifier: records[0].messageId }, - { itemIdentifier: records[1].messageId }, - ], - }); - }); - }); -}); diff --git a/packages/batch/tsconfig.cjs.json b/packages/batch/tsconfig.cjs.json index 7d570c8dbe..a8fadd417f 100644 --- a/packages/batch/tsconfig.cjs.json +++ b/packages/batch/tsconfig.cjs.json @@ -7,7 +7,5 @@ "rootDir": "./src", "tsBuildInfoFile": ".tsbuildinfo/cjs.json" }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/batch/tsconfig.json b/packages/batch/tsconfig.json index 204ff253d4..e1c2fb1dc4 100644 --- a/packages/batch/tsconfig.json +++ b/packages/batch/tsconfig.json @@ -8,7 +8,5 @@ "composite": true, "declaration": true }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/commons/CHANGELOG.md b/packages/commons/CHANGELOG.md index 9360759521..80acf9e29a 100644 --- a/packages/commons/CHANGELOG.md +++ b/packages/commons/CHANGELOG.md @@ -1,245 +1,131 @@ # Change Log -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.24.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.23.0...v2.24.0) (2025-07-15) + +**Note:** Version bump only for this package # [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - # [2.22.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.21.0...v2.22.0) (2025-06-20) **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - # [2.21.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.20.0...v2.21.0) (2025-06-03) - ### Features * **commons:** environment variable helpers ([#3945](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3945)) ([7cfcd85](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7cfcd8517a0578e248ead1e2e0261fe7ba405e14)) - - - - # [2.20.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.1...v2.20.0) (2025-05-20) **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - ## [2.19.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.0...v2.19.1) (2025-05-05) **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - # [2.19.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.18.0...v2.19.0) (2025-04-24) **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - # [2.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.17.0...v2.18.0) (2025-04-07) **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - # [2.17.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.16.0...v2.17.0) (2025-03-25) - ### Features * **commons:** make utilities aware of provisioned concurrency ([#3724](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3724)) ([c28e45e](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c28e45ecba315bac8fbc7744dbe21a3461747d44)) - - - - # [2.16.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.15.0...v2.16.0) (2025-03-07) - ### Features * **logger:** refresh sample rate calculation before each invocation ([#3672](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3672)) ([8c8d6b2](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8c8d6b2ea4ccd473f56b05913169cc5995765562)) - - - - # [2.15.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.14.0...v2.15.0) (2025-02-25) **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - # [2.14.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.1...v2.14.0) (2025-02-10) **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - ## [2.13.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.0...v2.13.1) (2025-01-28) - ### Bug Fixes * **parser:** DynamoDBStream schema & envelope ([#3482](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3482)) ([7f7f8ce](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7f7f8ced2953e0fc72a33cd2b6e8af15fae8d3d6)) - - - - # [2.13.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.12.0...v2.13.0) (2025-01-14) **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - # [2.12.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.11.0...v2.12.0) (2024-12-17) - ### Features * **metrics:** disable metrics with `POWERTOOLS_METRICS_DISABLED` ([#3351](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3351)) ([7e8578e](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7e8578e630218c9a987754bf789895ab63c3547f)) - - - - # [2.11.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.10.0...v2.11.0) (2024-11-20) - ### Features * **metrics:** add ability to pass custom logger ([#3057](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3057)) ([a531b90](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a531b90031826970673eb8bfad78dee6edd0a359)) - - - - # [2.10.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.9.0...v2.10.0) (2024-10-22) **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - # [2.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.8.0...v2.9.0) (2024-10-07) **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - # [2.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.7.0...v2.8.0) (2024-09-16) **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - # [2.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.6.0...v2.7.0) (2024-08-08) **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - # [2.6.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.5.0...v2.6.0) (2024-07-25) **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - # [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) - ### Features * **maintenance:** drop support for Node.js 16.x ([#2717](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2717)) ([e4eee73](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e4eee73770ffccead9212a566335ec256a31af7d)) - - - - # [2.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.2.0...v2.3.0) (2024-06-27) **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - # [2.2.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.1...v2.2.0) (2024-06-13) **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - ## [2.1.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.0...v2.1.1) (2024-05-14) **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - # [2.1.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.0.4...v2.1.0) (2024-04-17) **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - ## 2.0.4 (2024-04-10) **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - ## 2.0.3 (2024-03-15) **improv:**: expand type utils functions ([#2191](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2191)) ([9208393](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9208393fe07d33cb35ea479b3c0866c8a7b91a21)) @@ -249,34 +135,18 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - ## 2.0.1 (2024-03-04) **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - # [2.0.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.18.1...v2.0.0) (2024-03-04) **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - ## 1.18.1 (2024-02-20) **Note:** Version bump only for package @aws-lambda-powertools/commons - - - - ## [1.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.17.0...v1.18.0) (2024-01-26) **Note:** Version bump only for package @aws-lambda-powertools/commons @@ -293,8 +163,8 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **maintenance:** add support for nodejs20.x runtime ([#1790](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1790)) ([6b9b1bc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b9b1bcb9baf4b3d8e0e5ec6709594aca09bb033)) -- **metrics:** log directly to stdout ([#1786](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1786)) ([75dc5b1](https://github.com/aws-powertools/powertools-lambda-typescript/commit/75dc5b1e16944416a287628c50ec4a0cf82c3023)) +* **maintenance:** add support for nodejs20.x runtime ([#1790](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1790)) ([6b9b1bc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b9b1bcb9baf4b3d8e0e5ec6709594aca09bb033)) +* **metrics:** log directly to stdout ([#1786](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1786)) ([75dc5b1](https://github.com/aws-powertools/powertools-lambda-typescript/commit/75dc5b1e16944416a287628c50ec4a0cf82c3023)) ## [1.14.2](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.14.1...v1.14.2) (2023-11-03) @@ -336,30 +206,30 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- **idempotency:** skip persistence for optional idempotency key ([#1507](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1507)) ([b9fcef6](https://github.com/aws-powertools/powertools-lambda-typescript/commit/b9fcef66eb4bd9a7ad1eeac5f5db2cdbccc70c71)) +* **idempotency:** skip persistence for optional idempotency key ([#1507](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1507)) ([b9fcef6](https://github.com/aws-powertools/powertools-lambda-typescript/commit/b9fcef66eb4bd9a7ad1eeac5f5db2cdbccc70c71)) ### Features -- **parameters:** review types and exports ([#1528](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1528)) ([6f96711](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6f96711625e212898b1c227c651beba7e709c9d1)) +* **parameters:** review types and exports ([#1528](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1528)) ([6f96711](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6f96711625e212898b1c227c651beba7e709c9d1)) # [1.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.8.0...v1.9.0) (2023-06-09) ### Features -- **commons:** add `cleanupPowertools` function ([#1473](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1473)) ([5bd0166](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5bd01665699ae2f026d845477e648d325f20a855)) -- **tracer:** add isTraceSampled method ([#1435](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1435)) ([194bbd3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/194bbd366b726a477523225f446add054c20566e)) +* **commons:** add `cleanupPowertools` function ([#1473](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1473)) ([5bd0166](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5bd01665699ae2f026d845477e648d325f20a855)) +* **tracer:** add isTraceSampled method ([#1435](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1435)) ([194bbd3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/194bbd366b726a477523225f446add054c20566e)) # [1.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.7.0...v1.8.0) (2023-04-07) ### Features -- **parameters:** ability to set `maxAge` and `decrypt` via environment variables ([#1384](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1384)) ([dcf6620](https://github.com/aws-powertools/powertools-lambda-typescript/commit/dcf6620f55004b69186cd69b0c42b1cdd9fd1ce4)) +* **parameters:** ability to set `maxAge` and `decrypt` via environment variables ([#1384](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1384)) ([dcf6620](https://github.com/aws-powertools/powertools-lambda-typescript/commit/dcf6620f55004b69186cd69b0c42b1cdd9fd1ce4)) # [1.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.6.0...v1.7.0) (2023-03-20) ### Features -- **parameters:** AppConfigProvider to return the last valid value when the API returns empty value on subsequent calls ([#1365](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1365)) ([97339d9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/97339d9336ec67568e9e7fd079b3cfe006da1bba)) +* **parameters:** AppConfigProvider to return the last valid value when the API returns empty value on subsequent calls ([#1365](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1365)) ([97339d9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/97339d9336ec67568e9e7fd079b3cfe006da1bba)) # [1.6.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.5.1...v1.6.0) (2023-03-02) @@ -381,17 +251,17 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **all:** moved EnvService to commons + exposed getXrayTraceId in tracer ([#1123](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1123)) ([c8e3c15](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c8e3c15b64142ebe6f43835a5917ecba26293a32)) +* **all:** moved EnvService to commons + exposed getXrayTraceId in tracer ([#1123](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1123)) ([c8e3c15](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c8e3c15b64142ebe6f43835a5917ecba26293a32)) # [1.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.2.1...v1.3.0) (2022-10-17) ### Bug Fixes -- **all:** update version command to use lint-fix ([#1119](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1119)) ([6f14fb3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6f14fb3229882b1dd0c20d18c87a542993432da9)) +* **all:** update version command to use lint-fix ([#1119](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1119)) ([6f14fb3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6f14fb3229882b1dd0c20d18c87a542993432da9)) ### Reverts -- Revert "chore(release): v1.3.0 [skip ci]" ([237b99f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/237b99f9f6eff5e6e26d779603cf13cd4422c156)) +* Revert "chore(release): v1.3.0 [skip ci]" ([237b99f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/237b99f9f6eff5e6e26d779603cf13cd4422c156)) ## [1.2.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.2.0...v1.2.1) (2022-08-25) @@ -409,7 +279,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **build:** publish lib as a Lambda Layer ([#884](https://github.com/aws-powertools/powertools-lambda-typescript/issues/884)) ([c3a20c6](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c3a20c61380a6b6944807f5abf12c9cafb254325)), closes [#1031](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1031) +* **build:** publish lib as a Lambda Layer ([#884](https://github.com/aws-powertools/powertools-lambda-typescript/issues/884)) ([c3a20c6](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c3a20c61380a6b6944807f5abf12c9cafb254325)), closes [#1031](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1031) ## [1.0.2](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.0.1...v1.0.2) (2022-07-19) @@ -427,8 +297,8 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Reverts -- Revert "chore(release): v0.12.0-rc.0 [skip ci]" ([9397f1d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9397f1d3624eb0bfbeb5e4c2702ae51e558a5b4a)) -- Revert "chore(release): v0.12.0-rc.0 [skip ci]" (#1017) ([51c18da](https://github.com/aws-powertools/powertools-lambda-typescript/commit/51c18da20db434f8b12f320e5074e3e0a146046e)), closes [#1017](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1017) +* Revert "chore(release): v0.12.0-rc.0 [skip ci]" ([9397f1d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9397f1d3624eb0bfbeb5e4c2702ae51e558a5b4a)) +* Revert "chore(release): v0.12.0-rc.0 [skip ci]" (#1017) ([51c18da](https://github.com/aws-powertools/powertools-lambda-typescript/commit/51c18da20db434f8b12f320e5074e3e0a146046e)), closes [#1017](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1017) ## [0.11.1-rc.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.11.0...v0.11.1-rc.0) (2022-06-24) @@ -438,17 +308,17 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **logger:** add clear state functionality ([#902](https://github.com/aws-powertools/powertools-lambda-typescript/issues/902)) ([fa1dacb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fa1dacb001503a0a607e0951499119a1a9c61545)) +* **logger:** add clear state functionality ([#902](https://github.com/aws-powertools/powertools-lambda-typescript/issues/902)) ([fa1dacb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fa1dacb001503a0a607e0951499119a1a9c61545)) # [0.10.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.9.1...v0.10.0) (2022-06-02) ### Bug Fixes -- **commons:** rename tests subfolder to samples to avoid being deleted by tools such as node-prune ([#882](https://github.com/aws-powertools/powertools-lambda-typescript/issues/882)) ([74ef816](https://github.com/aws-powertools/powertools-lambda-typescript/commit/74ef816830eca897d59881b1d260a146a2c9a47c)) +* **commons:** rename tests subfolder to samples to avoid being deleted by tools such as node-prune ([#882](https://github.com/aws-powertools/powertools-lambda-typescript/issues/882)) ([74ef816](https://github.com/aws-powertools/powertools-lambda-typescript/commit/74ef816830eca897d59881b1d260a146a2c9a47c)) ### Features -- **all:** nodejs16x support ([#877](https://github.com/aws-powertools/powertools-lambda-typescript/issues/877)) ([d2b13c9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d2b13c945adb1a74b7c5f76d45f28a6979ce6429)) +* **all:** nodejs16x support ([#877](https://github.com/aws-powertools/powertools-lambda-typescript/issues/877)) ([d2b13c9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d2b13c945adb1a74b7c5f76d45f28a6979ce6429)) ## [0.9.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.9.0...v0.9.1) (2022-05-24) @@ -462,7 +332,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- **logger:** change logging to use stdout ([#748](https://github.com/aws-powertools/powertools-lambda-typescript/issues/748)) ([0781a47](https://github.com/aws-powertools/powertools-lambda-typescript/commit/0781a479a6ae3c794f94c72b59cd0920073159a2)) +* **logger:** change logging to use stdout ([#748](https://github.com/aws-powertools/powertools-lambda-typescript/issues/748)) ([0781a47](https://github.com/aws-powertools/powertools-lambda-typescript/commit/0781a479a6ae3c794f94c72b59cd0920073159a2)) # [0.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.7.2...v0.8.0) (2022-04-08) @@ -484,7 +354,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **commons:** centralize cold start heuristic ([#547](https://github.com/aws-powertools/powertools-lambda-typescript/issues/547)) ([4e4091f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/4e4091f7b853c56a8dfd28829f09a066cc8e2ee7)) +* **commons:** centralize cold start heuristic ([#547](https://github.com/aws-powertools/powertools-lambda-typescript/issues/547)) ([4e4091f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/4e4091f7b853c56a8dfd28829f09a066cc8e2ee7)) ## [0.5.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.5.0...v0.5.1) (2022-02-09) @@ -506,24 +376,24 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- **all:** fix latest release broken by change of npm pack result on common ([#470](https://github.com/aws-powertools/powertools-lambda-typescript/issues/470)) ([2c3df93](https://github.com/aws-powertools/powertools-lambda-typescript/commit/2c3df9378ac191f6da6cb5f458f6227d6466cafa)), closes [#417](https://github.com/aws-powertools/powertools-lambda-typescript/issues/417) +* **all:** fix latest release broken by change of npm pack result on common ([#470](https://github.com/aws-powertools/powertools-lambda-typescript/issues/470)) ([2c3df93](https://github.com/aws-powertools/powertools-lambda-typescript/commit/2c3df9378ac191f6da6cb5f458f6227d6466cafa)), closes [#417](https://github.com/aws-powertools/powertools-lambda-typescript/issues/417) # [0.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.2.0...v0.3.0) (2022-01-14) ### Bug Fixes -- **build:** Update contributing.md and fix npm ci ([#417](https://github.com/aws-powertools/powertools-lambda-typescript/issues/417)) ([279ad98](https://github.com/aws-powertools/powertools-lambda-typescript/commit/279ad984f71d5b157a13cffeab52602f2c09c1f8)), closes [#415](https://github.com/aws-powertools/powertools-lambda-typescript/issues/415) [#415](https://github.com/aws-powertools/powertools-lambda-typescript/issues/415) +* **build:** Update contributing.md and fix npm ci ([#417](https://github.com/aws-powertools/powertools-lambda-typescript/issues/417)) ([279ad98](https://github.com/aws-powertools/powertools-lambda-typescript/commit/279ad984f71d5b157a13cffeab52602f2c09c1f8)), closes [#415](https://github.com/aws-powertools/powertools-lambda-typescript/issues/415) [#415](https://github.com/aws-powertools/powertools-lambda-typescript/issues/415) ### Features -- **all:** Update to examples use released version (0.2.0) ([#405](https://github.com/aws-powertools/powertools-lambda-typescript/issues/405)) ([d5e0620](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d5e0620473f31d0839c027a76a88dcdcb98c84de)) +* **all:** Update to examples use released version (0.2.0) ([#405](https://github.com/aws-powertools/powertools-lambda-typescript/issues/405)) ([d5e0620](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d5e0620473f31d0839c027a76a88dcdcb98c84de)) # 0.2.0 (2022-01-05) ### Features -- **commons** Create a common package (#314) by @flochaz +* **commons** Create a common package (#314) by @flochaz -### Contributor List: +### Contributor List @alan-churley, @bahrmichael, @dreamorosi, @flochaz, @heitorlessa, @ijemmy and @saragerion diff --git a/packages/commons/package.json b/packages/commons/package.json index 9def612566..2cd0b34e9e 100644 --- a/packages/commons/package.json +++ b/packages/commons/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/commons", - "version": "2.23.0", + "version": "2.24.0", "description": "A shared utility package for Powertools for AWS Lambda (TypeScript) libraries", "author": { "name": "Amazon Web Services", diff --git a/packages/commons/src/envUtils.ts b/packages/commons/src/envUtils.ts index fe1c459b6e..b9848dc993 100644 --- a/packages/commons/src/envUtils.ts +++ b/packages/commons/src/envUtils.ts @@ -224,7 +224,7 @@ const isDevMode = (): boolean => { key: POWERTOOLS_DEV_ENV_VAR, extendedParsing: true, }); - } catch (error) { + } catch { return false; } }; diff --git a/packages/commons/src/index.ts b/packages/commons/src/index.ts index 03b21e2ef7..64a2774b83 100644 --- a/packages/commons/src/index.ts +++ b/packages/commons/src/index.ts @@ -1,26 +1,28 @@ import { PT_VERSION } from './version.js'; + if (!process.env.AWS_SDK_UA_APP_ID) { process.env.AWS_SDK_UA_APP_ID = `PT/NO-OP/${PT_VERSION}`; } -export { PT_VERSION } from './version.js'; + +export { addUserAgentMiddleware, isSdkClient } from './awsSdkUtils.js'; +export { EnvironmentVariablesService } from './config/EnvironmentVariablesService.js'; +export { cleanupMiddlewares } from './middleware/cleanupMiddlewares.js'; export { - isRecord, - isString, - isNumber, + IDEMPOTENCY_KEY, + LOGGER_KEY, + METRICS_KEY, + TRACER_KEY, +} from './middleware/constants.js'; +export { + getType, isIntegerNumber, - isTruthy, isNull, isNullOrUndefined, - getType, + isNumber, + isRecord, isStrictEqual, + isString, + isTruthy, } from './typeUtils.js'; export { Utility } from './Utility.js'; -export { EnvironmentVariablesService } from './config/EnvironmentVariablesService.js'; -export { addUserAgentMiddleware, isSdkClient } from './awsSdkUtils.js'; -export { cleanupMiddlewares } from './middleware/cleanupMiddlewares.js'; -export { - TRACER_KEY, - LOGGER_KEY, - METRICS_KEY, - IDEMPOTENCY_KEY, -} from './middleware/constants.js'; +export { PT_VERSION } from './version.js'; diff --git a/packages/commons/src/types/index.ts b/packages/commons/src/types/index.ts index de3d07f01b..7984f1308a 100644 --- a/packages/commons/src/types/index.ts +++ b/packages/commons/src/types/index.ts @@ -1,27 +1,27 @@ +export type { MiddlewareArgsLike, SdkClient } from './awsSdk.js'; +export type { ConfigServiceInterface } from './ConfigServiceInterface.js'; export type { - Request, - MiddlewareLikeObj, - MiddyLikeRequest, - MiddlewareFn, - CleanupFunction, -} from './middy.js'; + GetBooleanFromEnvOptions, + GetNumberFromEnvOptions, + GetStringFromEnvOptions, +} from './envUtils.js'; export type { GenericLogger } from './GenericLogger.js'; -export type { SdkClient, MiddlewareArgsLike } from './awsSdk.js'; export type { + JSONArray, + JSONObject, JSONPrimitive, JSONValue, - JSONObject, - JSONArray, } from './json.js'; export type { - SyncHandler, AsyncHandler, - LambdaInterface, HandlerMethodDecorator, + LambdaInterface, + SyncHandler, } from './LambdaInterface.js'; -export type { ConfigServiceInterface } from './ConfigServiceInterface.js'; export type { - GetStringFromEnvOptions, - GetBooleanFromEnvOptions, - GetNumberFromEnvOptions, -} from './envUtils.js'; + CleanupFunction, + MiddlewareFn, + MiddlewareLikeObj, + MiddyLikeRequest, + Request, +} from './middy.js'; diff --git a/packages/commons/src/unmarshallDynamoDB.ts b/packages/commons/src/unmarshallDynamoDB.ts index 6c98201999..13dff27de4 100644 --- a/packages/commons/src/unmarshallDynamoDB.ts +++ b/packages/commons/src/unmarshallDynamoDB.ts @@ -58,7 +58,7 @@ const convertNumber = (numString: string) => { if (isLargeFiniteNumber) { try { return BigInt(numString); - } catch (error) { + } catch { throw new UnmarshallDynamoDBAttributeError( `${numString} can't be converted to BigInt` ); diff --git a/packages/commons/src/version.ts b/packages/commons/src/version.ts index 5f584a3803..79b5647372 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.23.0'; +export const PT_VERSION = '2.24.0'; diff --git a/packages/commons/tests/unit/cleanupMiddlewares.test.ts b/packages/commons/tests/unit/cleanupMiddlewares.test.ts index 2046455de4..c11da107fe 100644 --- a/packages/commons/tests/unit/cleanupMiddlewares.test.ts +++ b/packages/commons/tests/unit/cleanupMiddlewares.test.ts @@ -1,11 +1,11 @@ import context from '@aws-lambda-powertools/testing-utils/context'; import { describe, expect, it, vi } from 'vitest'; import { + cleanupMiddlewares, IDEMPOTENCY_KEY, LOGGER_KEY, METRICS_KEY, TRACER_KEY, - cleanupMiddlewares, } from '../../src/index.js'; describe('Function: cleanupMiddlewares', () => { diff --git a/packages/commons/tsconfig.cjs.json b/packages/commons/tsconfig.cjs.json index 7d570c8dbe..a8fadd417f 100644 --- a/packages/commons/tsconfig.cjs.json +++ b/packages/commons/tsconfig.cjs.json @@ -7,7 +7,5 @@ "rootDir": "./src", "tsBuildInfoFile": ".tsbuildinfo/cjs.json" }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/commons/tsconfig.json b/packages/commons/tsconfig.json index 204ff253d4..e1c2fb1dc4 100644 --- a/packages/commons/tsconfig.json +++ b/packages/commons/tsconfig.json @@ -8,7 +8,5 @@ "composite": true, "declaration": true }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/commons/typedoc.json b/packages/commons/typedoc.json index 1ba85b7f7d..e85c329a9d 100644 --- a/packages/commons/typedoc.json +++ b/packages/commons/typedoc.json @@ -1,7 +1,5 @@ { - "extends": [ - "../../typedoc.base.json" - ], + "extends": ["../../typedoc.base.json"], "entryPoints": [ "./src/index.ts", "./src/types/index.ts", @@ -12,4 +10,4 @@ "./src/LRUCache.ts" ], "readme": "./README.md" -} \ No newline at end of file +} diff --git a/packages/event-handler/CHANGELOG.md b/packages/event-handler/CHANGELOG.md index 85ef2b7368..7f4c0cac41 100644 --- a/packages/event-handler/CHANGELOG.md +++ b/packages/event-handler/CHANGELOG.md @@ -1,10 +1,10 @@ # Change Log -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.24.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.23.0...v2.24.0) (2025-07-15) -# [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) +**Note:** Version bump only for this package +# [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) ### Features @@ -12,158 +12,82 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline * **event-handler:** expose event & context as object ([#4113](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4113)) ([7e74c9e](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7e74c9e356d97372c4f1ee5ca83d16dfefea42f4)) * **event-handler:** support `onQuery` and `onMutation` handlers ([#4111](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4111)) ([263db2d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/263db2d74e558adb9b088174a5500de6c29488d0)) - - - - # [2.22.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.21.0...v2.22.0) (2025-06-20) - ### Bug Fixes * **event-handler:** fix decorated scope in appsync events ([#3974](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3974)) ([e539719](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e5397199133da265f593c5feed0178c0ebe1e7c2)) - - - - # [2.21.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.20.0...v2.21.0) (2025-06-03) - ### Features * **event-handler:** add Amazon Bedrock Agents Functions Resolver ([#3957](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3957)) ([720ddcb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/720ddcb974bd044fccd54d4cf5e46a1576f487a7)) - - - - # [2.20.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.1...v2.20.0) (2025-05-20) **Note:** Version bump only for package @aws-lambda-powertools/event-handler - - - - ## [2.19.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.0...v2.19.1) (2025-05-05) - ### Bug Fixes * **event-handler:** ignore return type from onSubscribe handler ([#3888](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3888)) ([02b3cda](https://github.com/aws-powertools/powertools-lambda-typescript/commit/02b3cda9fd10c4e757dee321749d484c9ac542ee)) - - - - # [2.19.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.18.0...v2.19.0) (2025-04-24) - ### Features * **event-handler:** AppSync Events resolver ([#3858](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3858)) ([01f8a68](https://github.com/aws-powertools/powertools-lambda-typescript/commit/01f8a687a0c033cdc5d55c50bc7e6d0566f485cb)) - - - - # [2.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.17.0...v2.18.0) (2025-04-07) **Note:** Version bump only for package @aws-lambda-powertools/event-handler - - - - # [2.17.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.16.0...v2.17.0) (2025-03-25) **Note:** Version bump only for package @aws-lambda-powertools/event-handler - - - - # [2.16.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.15.0...v2.16.0) (2025-03-07) **Note:** Version bump only for package @aws-lambda-powertools/event-handler - - - - # [2.15.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.14.0...v2.15.0) (2025-02-25) **Note:** Version bump only for package @aws-lambda-powertools/event-handler - - - - # [2.14.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.1...v2.14.0) (2025-02-10) **Note:** Version bump only for package @aws-lambda-powertools/event-handler - - - - ## [2.13.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.0...v2.13.1) (2025-01-28) **Note:** Version bump only for package @aws-lambda-powertools/event-handler - - - - # [2.13.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.12.0...v2.13.0) (2025-01-14) **Note:** Version bump only for package @aws-lambda-powertools/event-handler - - - - # [2.12.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.11.0...v2.12.0) (2024-12-17) **Note:** Version bump only for package @aws-lambda-powertools/event-handler - - - - # [2.11.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.10.0...v2.11.0) (2024-11-20) **Note:** Version bump only for package @aws-lambda-powertools/event-handler - - - - # [2.10.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.9.0...v2.10.0) (2024-10-22) **Note:** Version bump only for package @aws-lambda-powertools/event-handler - - - - # [2.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.8.0...v2.9.0) (2024-10-07) **Note:** Version bump only for package @aws-lambda-powertools/event-handler - - - - # [2.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.7.0...v2.8.0) (2024-09-16) **Note:** Version bump only for package @aws-lambda-powertools/event-handler - - - - # [2.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.6.0...v2.7.0) (2024-08-08) **Note:** Version bump only for package @aws-lambda-powertools/event-handler diff --git a/packages/event-handler/package.json b/packages/event-handler/package.json index dd29548790..ee96e0c1f4 100644 --- a/packages/event-handler/package.json +++ b/packages/event-handler/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/event-handler", - "version": "2.23.0", + "version": "2.24.0", "description": "Lightweight routing to reduce boilerplate for API Gateway REST/HTTP API, ALB, Lambda Function URLs, and AppSync.", "author": { "name": "Amazon Web Services", @@ -101,7 +101,7 @@ "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" }, "dependencies": { - "@aws-lambda-powertools/commons": "2.23.0" + "@aws-lambda-powertools/commons": "2.24.0" }, "keywords": [ "aws", diff --git a/packages/event-handler/src/appsync-events/AppSyncEventsResolver.ts b/packages/event-handler/src/appsync-events/AppSyncEventsResolver.ts index 4e1e06b1c5..25be97bb8d 100644 --- a/packages/event-handler/src/appsync-events/AppSyncEventsResolver.ts +++ b/packages/event-handler/src/appsync-events/AppSyncEventsResolver.ts @@ -7,8 +7,8 @@ import type { OnSubscribeHandler, } from '../types/appsync-events.js'; import type { ResolveOptions } from '../types/common.js'; -import { Router } from './Router.js'; import { UnauthorizedException } from './errors.js'; +import { Router } from './Router.js'; import { isAppSyncEventsEvent, isAppSyncEventsPublishEvent } from './utils.js'; /** diff --git a/packages/event-handler/src/appsync-events/RouteHandlerRegistry.ts b/packages/event-handler/src/appsync-events/RouteHandlerRegistry.ts index f6cbf9ebe2..4ad6937aa9 100644 --- a/packages/event-handler/src/appsync-events/RouteHandlerRegistry.ts +++ b/packages/event-handler/src/appsync-events/RouteHandlerRegistry.ts @@ -101,7 +101,8 @@ class RouteHandlerRegistry { return this.#resolverCache.get(path); } this.#logger.debug(`Resolving handler for path '${path}'`); - let mostSpecificHandler = undefined; + let mostSpecificHandler: RouteHandlerOptions | undefined; + // Find the most specific handler by checking the regex patterns let mostSpecificRouteLength = 0; for (const [key, value] of this.resolvers.entries()) { if (new RegExp(key).test(path)) { @@ -137,7 +138,7 @@ class RouteHandlerRegistry { */ static isValidPath(path: string): boolean { if (path === '/*') return true; - const pathRegex = /^\/([^\/\*]+)(\/[^\/\*]+)*(\/\*)?$/; + const pathRegex = /^\/([^/*]+)(\/[^/*]+)*(\/\*)?$/; return pathRegex.test(path); } @@ -149,7 +150,7 @@ class RouteHandlerRegistry { * @param path - The path to be converted to a regex string */ static pathToRegexString(path: string): string { - const escapedPath = path.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1'); + const escapedPath = path.replace(/([.*+?^=!:${}()|[\]/\\])/g, '\\$1'); return `^${escapedPath.replace(/\\\*/g, '.*')}$`; } } diff --git a/packages/event-handler/src/appsync-events/Router.ts b/packages/event-handler/src/appsync-events/Router.ts index feb70526ef..8aa0a10cd6 100644 --- a/packages/event-handler/src/appsync-events/Router.ts +++ b/packages/event-handler/src/appsync-events/Router.ts @@ -194,7 +194,7 @@ class Router { return; } - return (target, _propertyKey, descriptor: PropertyDescriptor) => { + return (_target, _propertyKey, descriptor: PropertyDescriptor) => { const routeOptions = isRecord(handler) ? handler : options; this.onPublishRegistry.register({ path, diff --git a/packages/event-handler/src/appsync-events/index.ts b/packages/event-handler/src/appsync-events/index.ts index 8b25ae13be..00e319169d 100644 --- a/packages/event-handler/src/appsync-events/index.ts +++ b/packages/event-handler/src/appsync-events/index.ts @@ -1,3 +1,3 @@ export { AppSyncEventsResolver } from './AppSyncEventsResolver.js'; -export { Router } from './Router.js'; export { UnauthorizedException } from './errors.js'; +export { Router } from './Router.js'; diff --git a/packages/event-handler/src/appsync-graphql/AppSyncGraphQLResolver.ts b/packages/event-handler/src/appsync-graphql/AppSyncGraphQLResolver.ts index cda083b554..9c2679dcea 100644 --- a/packages/event-handler/src/appsync-graphql/AppSyncGraphQLResolver.ts +++ b/packages/event-handler/src/appsync-graphql/AppSyncGraphQLResolver.ts @@ -1,7 +1,7 @@ import type { AppSyncResolverEvent, Context } from 'aws-lambda'; import type { ResolveOptions } from '../types/common.js'; -import { Router } from './Router.js'; import { ResolverNotFoundException } from './errors.js'; +import { Router } from './Router.js'; import { isAppSyncGraphQLEvent } from './utils.js'; /** diff --git a/packages/event-handler/src/appsync-graphql/index.ts b/packages/event-handler/src/appsync-graphql/index.ts index 78092fbd57..40524b71aa 100644 --- a/packages/event-handler/src/appsync-graphql/index.ts +++ b/packages/event-handler/src/appsync-graphql/index.ts @@ -1,9 +1,9 @@ export { AppSyncGraphQLResolver } from './AppSyncGraphQLResolver.js'; export { ResolverNotFoundException } from './errors.js'; export { - makeId, - awsTimestamp, awsDate, - awsTime, awsDateTime, + awsTime, + awsTimestamp, + makeId, } from './scalarTypesUtils.js'; diff --git a/packages/event-handler/src/bedrock-agent/BedrockFunctionResponse.ts b/packages/event-handler/src/bedrock-agent/BedrockFunctionResponse.ts index 25609c9ee9..8bb5258c4e 100644 --- a/packages/event-handler/src/bedrock-agent/BedrockFunctionResponse.ts +++ b/packages/event-handler/src/bedrock-agent/BedrockFunctionResponse.ts @@ -71,10 +71,7 @@ class BedrockFunctionResponse { * @param options.actionGroup - The action group of the function, this comes from the `event.actionGroup` field in the Bedrock agent function event. * @param options.func - The name of the function being invoked by the agent, this comes from the `event.function` field in the Bedrock agent function event. */ - build(options: { - actionGroup: string; - func: string; - }) { + build(options: { actionGroup: string; func: string }) { return { messageVersion: '1.0', response: { diff --git a/packages/event-handler/src/types/index.ts b/packages/event-handler/src/types/index.ts index 3a5d286377..c26f70b878 100644 --- a/packages/event-handler/src/types/index.ts +++ b/packages/event-handler/src/types/index.ts @@ -11,21 +11,21 @@ export type { } from './appsync-events.js'; export type { + GraphQlRouteOptions, + GraphQlRouterOptions, ResolverHandler, RouteHandlerOptions, - GraphQlRouterOptions, - GraphQlRouteOptions, } from './appsync-graphql.js'; export type { BedrockAgentFunctionEvent, BedrockAgentFunctionResponse, - ResolverOptions, Parameter, + ResolverOptions, ResponseState, } from './bedrock-agent.js'; export type { - ResolveOptions, Anything, + ResolveOptions, } from './common.js'; diff --git a/packages/event-handler/tests/events/onPublish.json b/packages/event-handler/tests/events/onPublish.json index 0e7150930b..4db0f93a2d 100644 --- a/packages/event-handler/tests/events/onPublish.json +++ b/packages/event-handler/tests/events/onPublish.json @@ -10,10 +10,7 @@ "info": { "channel": { "path": "/request/channel", - "segments": [ - "request", - "channel" - ] + "segments": ["request", "channel"] }, "channelNamespace": { "name": "request" @@ -44,4 +41,4 @@ "id": "8bb2983a-0967-45a0-8243-0aeb8c83d80e" } ] -} \ No newline at end of file +} diff --git a/packages/event-handler/tests/unit/appsync-graphql/AppSyncGraphQLResolver.test.ts b/packages/event-handler/tests/unit/appsync-graphql/AppSyncGraphQLResolver.test.ts index b28b3877bf..6e6c2574f9 100644 --- a/packages/event-handler/tests/unit/appsync-graphql/AppSyncGraphQLResolver.test.ts +++ b/packages/event-handler/tests/unit/appsync-graphql/AppSyncGraphQLResolver.test.ts @@ -216,7 +216,10 @@ describe('Class: AppSyncGraphQLResolver', () => { public async handleAddPost({ title, content, - }: { title: string; content: string }) { + }: { + title: string; + content: string; + }) { return { id: '123', title, diff --git a/packages/event-handler/tsconfig.cjs.json b/packages/event-handler/tsconfig.cjs.json index 7d570c8dbe..a8fadd417f 100644 --- a/packages/event-handler/tsconfig.cjs.json +++ b/packages/event-handler/tsconfig.cjs.json @@ -7,7 +7,5 @@ "rootDir": "./src", "tsBuildInfoFile": ".tsbuildinfo/cjs.json" }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/event-handler/tsconfig.json b/packages/event-handler/tsconfig.json index 204ff253d4..e1c2fb1dc4 100644 --- a/packages/event-handler/tsconfig.json +++ b/packages/event-handler/tsconfig.json @@ -8,7 +8,5 @@ "composite": true, "declaration": true }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/event-handler/typedoc.json b/packages/event-handler/typedoc.json index fce95e37d4..779f9ec709 100644 --- a/packages/event-handler/typedoc.json +++ b/packages/event-handler/typedoc.json @@ -1,12 +1,10 @@ { - "extends": [ - "../../typedoc.base.json" - ], + "extends": ["../../typedoc.base.json"], "entryPoints": [ "./src/appsync-events/index.ts", "./src/appsync-graphql/index.ts", "./src/bedrock-agent/index.ts", - "./src/types/index.ts", + "./src/types/index.ts" ], "readme": "README.md" -} \ No newline at end of file +} diff --git a/packages/idempotency/CHANGELOG.md b/packages/idempotency/CHANGELOG.md index ca9ea94bbd..6bf0e7b576 100644 --- a/packages/idempotency/CHANGELOG.md +++ b/packages/idempotency/CHANGELOG.md @@ -1,250 +1,137 @@ # Change Log -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.24.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.23.0...v2.24.0) (2025-07-15) + +**Note:** Version bump only for this package # [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) **Note:** Version bump only for package @aws-lambda-powertools/idempotency - - - - # [2.22.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.21.0...v2.22.0) (2025-06-20) **Note:** Version bump only for package @aws-lambda-powertools/idempotency - - - - # [2.21.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.20.0...v2.21.0) (2025-06-03) **Note:** Version bump only for package @aws-lambda-powertools/idempotency - - - - # [2.20.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.1...v2.20.0) (2025-05-20) - ### Features * **idempotency:** support for Valkey- and Redis OSS-compatible cache ([#3896](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3896)) ([3352b90](https://github.com/aws-powertools/powertools-lambda-typescript/commit/3352b909cf06f435fe876adba8f2c9f6e5ba11b0)) - - - - ## [2.19.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.0...v2.19.1) (2025-05-05) **Note:** Version bump only for package @aws-lambda-powertools/idempotency - - - - # [2.19.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.18.0...v2.19.0) (2025-04-24) **Note:** Version bump only for package @aws-lambda-powertools/idempotency - - - - # [2.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.17.0...v2.18.0) (2025-04-07) **Note:** Version bump only for package @aws-lambda-powertools/idempotency - - - - # [2.17.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.16.0...v2.17.0) (2025-03-25) - ### Bug Fixes * **idempotency:** include sk in error msgs when using composite key ([#3709](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3709)) ([661f5ff](https://github.com/aws-powertools/powertools-lambda-typescript/commit/661f5ff7f3f3805e24f515892e98430dccebf979)) - - - - # [2.16.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.15.0...v2.16.0) (2025-03-07) **Note:** Version bump only for package @aws-lambda-powertools/idempotency - - - - # [2.15.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.14.0...v2.15.0) (2025-02-25) - ### Features * **idempotency:** add support for custom key prefix ([#3532](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3532)) ([7be7a83](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7be7a83a07e86927221ba34ec1dbae7e73cf6e32)) - - - - # [2.14.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.1...v2.14.0) (2025-02-10) **Note:** Version bump only for package @aws-lambda-powertools/idempotency - - - - ## [2.13.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.0...v2.13.1) (2025-01-28) **Note:** Version bump only for package @aws-lambda-powertools/idempotency - - - - # [2.13.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.12.0...v2.13.0) (2025-01-14) **Note:** Version bump only for package @aws-lambda-powertools/idempotency - - - - # [2.12.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.11.0...v2.12.0) (2024-12-17) **Note:** Version bump only for package @aws-lambda-powertools/idempotency - - - - # [2.11.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.10.0...v2.11.0) (2024-11-20) **Note:** Version bump only for package @aws-lambda-powertools/idempotency - - - - # [2.10.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.9.0...v2.10.0) (2024-10-22) **Note:** Version bump only for package @aws-lambda-powertools/idempotency - - - - # [2.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.8.0...v2.9.0) (2024-10-07) - ### Features * **idempotency:** ability to specify JMESPath custom functions ([#3150](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3150)) ([869b6fc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/869b6fced659ad820ffe79a0b905022061570974)) * **idempotency:** manipulate idempotent response via response hook ([#3071](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3071)) ([f7c1769](https://github.com/aws-powertools/powertools-lambda-typescript/commit/f7c176901a36698f591d897c2abde54cf30c9ea9)) - - - - # [2.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.7.0...v2.8.0) (2024-09-16) - ### Bug Fixes * **idempotency:** include cause in idempotency persistence layer error ([#2916](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2916)) ([47f0161](https://github.com/aws-powertools/powertools-lambda-typescript/commit/47f016188e5d36611c10466a4755d1228a6e14e1)) - - - - # [2.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.6.0...v2.7.0) (2024-08-08) **Note:** Version bump only for package @aws-lambda-powertools/idempotency - - - - # [2.6.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.5.0...v2.6.0) (2024-07-25) **Note:** Version bump only for package @aws-lambda-powertools/idempotency - - - - # [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) - ### Bug Fixes * **idempotency:** check error identity via names ([#2747](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2747)) ([55c3878](https://github.com/aws-powertools/powertools-lambda-typescript/commit/55c387816baee98829441526a0de001044d67344)) - ### Features * **internal:** support Middy.js 5.x ([#2748](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2748)) ([1d7ad61](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1d7ad61a569a4b1421dbe1754b0179f676cfede7)) * **maintenance:** drop support for Node.js 16.x ([#2717](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2717)) ([e4eee73](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e4eee73770ffccead9212a566335ec256a31af7d)) - - - - # [2.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.2.0...v2.3.0) (2024-06-27) - ### Bug Fixes * **idempotency:** preserve scope of decorated class ([#2693](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2693)) ([22ec1f0](https://github.com/aws-powertools/powertools-lambda-typescript/commit/22ec1f005ae334577a2ee878a454527ad16a56d9)) - - - - # [2.2.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.1...v2.2.0) (2024-06-13) - ### Bug Fixes * **idempotency:** deep sort payload during hashing ([#2570](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2570)) ([6765f35](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6765f35e98e2d8267d2672c12ba387a9af62a4b5)) - - - - ## [2.1.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.0...v2.1.1) (2024-05-14) **Note:** Version bump only for package @aws-lambda-powertools/idempotency - - - - # [2.1.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.0.4...v2.1.0) (2024-04-17) - ### Features * **idempotency:** add custom JMESPath functions ([#2364](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2364)) ([9721e7c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9721e7c01fc010944eb477bdbc24b9e06a5c4571)) - - - - ## 2.0.4 (2024-04-10) ### Bug Fixes @@ -259,39 +146,23 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline **Note:** Version bump only for package @aws-lambda-powertools/idempotency - - - - ## 2.0.1 (2024-03-04) **Note:** Version bump only for package @aws-lambda-powertools/idempotency - - - - # [2.0.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.18.1...v2.0.0) (2024-03-04) **Note:** Version bump only for package @aws-lambda-powertools/idempotency - - - - ## 1.18.1 (2024-02-20) **Note:** Version bump only for package @aws-lambda-powertools/idempotency - - - - ## [1.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.17.0...v1.18.0) (2024-01-26) ### Features -- **idempotency:** leverage new DynamoDB failed conditional writes ([#1779](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1779)) ([1917ec6](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1917ec6b48df17de3126a1b8b1d008295e60f4ef)) +* **idempotency:** leverage new DynamoDB failed conditional writes ([#1779](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1779)) ([1917ec6](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1917ec6b48df17de3126a1b8b1d008295e60f4ef)) ## [1.17.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.16.0...v1.17.0) (2023-11-24) @@ -305,7 +176,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **maintenance:** add support for nodejs20.x runtime ([#1790](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1790)) ([6b9b1bc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b9b1bcb9baf4b3d8e0e5ec6709594aca09bb033)) +* **maintenance:** add support for nodejs20.x runtime ([#1790](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1790)) ([6b9b1bc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b9b1bcb9baf4b3d8e0e5ec6709594aca09bb033)) ## [1.14.2](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.14.1...v1.14.2) (2023-11-03) @@ -319,14 +190,14 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **idempotency:** add idempotency decorator ([#1723](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1723)) ([d138673](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d138673a33ff31f40b225dc046b2ff8258d0a97d)) -- **layers:** add `arm64` to integration test matrix ([#1720](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1720)) ([61ad5ac](https://github.com/aws-powertools/powertools-lambda-typescript/commit/61ad5ac3bcf7742684aeec28553ec294696f3301)) +* **idempotency:** add idempotency decorator ([#1723](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1723)) ([d138673](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d138673a33ff31f40b225dc046b2ff8258d0a97d)) +* **layers:** add `arm64` to integration test matrix ([#1720](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1720)) ([61ad5ac](https://github.com/aws-powertools/powertools-lambda-typescript/commit/61ad5ac3bcf7742684aeec28553ec294696f3301)) ## [1.13.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.13.0...v1.13.1) (2023-09-21) ### Bug Fixes -- **maintenance:** remove upper peer dependency Middy ([#1705](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1705)) ([df21ec8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/df21ec8761b1be511c13c28fedd41bf0e2851061)) +* **maintenance:** remove upper peer dependency Middy ([#1705](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1705)) ([df21ec8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/df21ec8761b1be511c13c28fedd41bf0e2851061)) # [1.13.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.12.1...v1.13.0) (2023-09-18) @@ -344,18 +215,18 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- **idempotency:** types, docs, and `makeIdempotent` function wrapper ([#1579](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1579)) ([bba1c01](https://github.com/aws-powertools/powertools-lambda-typescript/commit/bba1c01a0b3f08e962568e1d0eb44d486829657b)) +* **idempotency:** types, docs, and `makeIdempotent` function wrapper ([#1579](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1579)) ([bba1c01](https://github.com/aws-powertools/powertools-lambda-typescript/commit/bba1c01a0b3f08e962568e1d0eb44d486829657b)) # [1.11.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.10.0...v1.11.0) (2023-06-29) ### Features -- **idempotency:** preserve original error when wrapping into `IdempotencyPersistenceLayerError` ([#1552](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1552)) ([866837d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/866837daf34563698709612351c45769e02daf16)) +* **idempotency:** preserve original error when wrapping into `IdempotencyPersistenceLayerError` ([#1552](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1552)) ([866837d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/866837daf34563698709612351c45769e02daf16)) # [1.10.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.9.0...v1.10.0) (2023-06-23) ### Bug Fixes -- **idempotency:** pass lambda context remaining time to save inprogress ([#1540](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1540)) ([d47c3ec](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d47c3ec64d926d49f3799f361d54a11627d16cc1)) -- **idempotency:** record validation not using hash ([#1502](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1502)) ([f475bd0](https://github.com/aws-powertools/powertools-lambda-typescript/commit/f475bd097b64f009c329c023a2dd7c7e9371270a)) -- **idempotency:** skip persistence for optional idempotency key ([#1507](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1507)) ([b9fcef6](https://github.com/aws-powertools/powertools-lambda-typescript/commit/b9fcef66eb4bd9a7ad1eeac5f5db2cdbccc70c71)) +* **idempotency:** pass lambda context remaining time to save inprogress ([#1540](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1540)) ([d47c3ec](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d47c3ec64d926d49f3799f361d54a11627d16cc1)) +* **idempotency:** record validation not using hash ([#1502](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1502)) ([f475bd0](https://github.com/aws-powertools/powertools-lambda-typescript/commit/f475bd097b64f009c329c023a2dd7c7e9371270a)) +* **idempotency:** skip persistence for optional idempotency key ([#1507](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1507)) ([b9fcef6](https://github.com/aws-powertools/powertools-lambda-typescript/commit/b9fcef66eb4bd9a7ad1eeac5f5db2cdbccc70c71)) diff --git a/packages/idempotency/package.json b/packages/idempotency/package.json index 6038294667..03d51aae5d 100644 --- a/packages/idempotency/package.json +++ b/packages/idempotency/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/idempotency", - "version": "2.23.0", + "version": "2.24.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", @@ -114,8 +114,8 @@ "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" }, "dependencies": { - "@aws-lambda-powertools/commons": "2.23.0", - "@aws-lambda-powertools/jmespath": "2.23.0" + "@aws-lambda-powertools/commons": "2.24.0", + "@aws-lambda-powertools/jmespath": "2.24.0" }, "peerDependencies": { "@aws-sdk/client-dynamodb": ">=3.x", @@ -151,8 +151,8 @@ ], "devDependencies": { "@aws-lambda-powertools/testing-utils": "file:../testing", - "@aws-sdk/client-dynamodb": "^3.840.0", - "@aws-sdk/lib-dynamodb": "^3.840.0", + "@aws-sdk/client-dynamodb": "^3.844.0", + "@aws-sdk/lib-dynamodb": "^3.844.0", "aws-sdk-client-mock": "^4.1.0" } } diff --git a/packages/idempotency/src/IdempotencyHandler.ts b/packages/idempotency/src/IdempotencyHandler.ts index dcf27d3264..aad48f9dea 100644 --- a/packages/idempotency/src/IdempotencyHandler.ts +++ b/packages/idempotency/src/IdempotencyHandler.ts @@ -4,7 +4,6 @@ import type { } from '@aws-lambda-powertools/commons/types'; import { search } from '@aws-lambda-powertools/jmespath'; import type { Handler } from 'aws-lambda'; -import type { IdempotencyConfig } from './IdempotencyConfig.js'; import { IdempotencyRecordStatus, MAX_RETRIES } from './constants.js'; import { IdempotencyAlreadyInProgressError, @@ -13,6 +12,7 @@ import { IdempotencyPersistenceLayerError, IdempotencyUnknownError, } from './errors.js'; +import type { IdempotencyConfig } from './IdempotencyConfig.js'; import type { BasePersistenceLayer } from './persistence/BasePersistenceLayer.js'; import type { IdempotencyRecord } from './persistence/IdempotencyRecord.js'; import type { diff --git a/packages/idempotency/src/constants.ts b/packages/idempotency/src/constants.ts index 404a0bf95f..902a408f46 100644 --- a/packages/idempotency/src/constants.ts +++ b/packages/idempotency/src/constants.ts @@ -1,4 +1,5 @@ import type { BasePersistenceAttributes } from './types/BasePersistenceLayer.js'; + /** * Number of times to retry a request in case of `IdempotencyInconsistentStateError` * diff --git a/packages/idempotency/src/idempotencyDecorator.ts b/packages/idempotency/src/idempotencyDecorator.ts index 64ad4c4fad..968b3bd10e 100644 --- a/packages/idempotency/src/idempotencyDecorator.ts +++ b/packages/idempotency/src/idempotencyDecorator.ts @@ -55,13 +55,13 @@ import type { * @see {@link persistence/DynamoDBPersistenceLayer.DynamoDBPersistenceLayer | DynamoDBPersistenceLayer} * @see https://www.typescriptlang.org/docs/handbook/decorators.html */ -const idempotent = function ( +const idempotent = ( options: ItempotentFunctionOptions> -): ( +): (( target: unknown, propertyKey: string, descriptor: PropertyDescriptor -) => PropertyDescriptor { +) => PropertyDescriptor) => { // biome-ignore lint/complexity/useArrowFunction: this is a decorator function and we need to maintain the `this` context return function ( _target: unknown, diff --git a/packages/idempotency/src/index.ts b/packages/idempotency/src/index.ts index 6a76aac37a..c8b2ce454f 100644 --- a/packages/idempotency/src/index.ts +++ b/packages/idempotency/src/index.ts @@ -1,18 +1,18 @@ export { - IdempotencyItemAlreadyExistsError, - IdempotencyItemNotFoundError, + IdempotencyRecordStatus, + PERSISTENCE_ATTRIBUTE_KEY_MAPPINGS, +} from './constants.js'; +export { IdempotencyAlreadyInProgressError, - IdempotencyInvalidStatusError, - IdempotencyValidationError, IdempotencyInconsistentStateError, - IdempotencyPersistenceLayerError, + IdempotencyInvalidStatusError, + IdempotencyItemAlreadyExistsError, + IdempotencyItemNotFoundError, IdempotencyKeyError, + IdempotencyPersistenceLayerError, IdempotencyUnknownError, + IdempotencyValidationError, } from './errors.js'; export { IdempotencyConfig } from './IdempotencyConfig.js'; -export { makeIdempotent } from './makeIdempotent.js'; export { idempotent } from './idempotencyDecorator.js'; -export { - IdempotencyRecordStatus, - PERSISTENCE_ATTRIBUTE_KEY_MAPPINGS, -} from './constants.js'; +export { makeIdempotent } from './makeIdempotent.js'; diff --git a/packages/idempotency/src/middleware/makeHandlerIdempotent.ts b/packages/idempotency/src/middleware/makeHandlerIdempotent.ts index 3803062a01..d48dcc221d 100644 --- a/packages/idempotency/src/middleware/makeHandlerIdempotent.ts +++ b/packages/idempotency/src/middleware/makeHandlerIdempotent.ts @@ -1,6 +1,6 @@ import { - IDEMPOTENCY_KEY, cleanupMiddlewares, + IDEMPOTENCY_KEY, } from '@aws-lambda-powertools/commons'; import type { JSONValue, diff --git a/packages/idempotency/src/persistence/BasePersistenceLayer.ts b/packages/idempotency/src/persistence/BasePersistenceLayer.ts index cc29ac6e4b..515a315652 100644 --- a/packages/idempotency/src/persistence/BasePersistenceLayer.ts +++ b/packages/idempotency/src/persistence/BasePersistenceLayer.ts @@ -1,4 +1,4 @@ -import { type Hash, createHash } from 'node:crypto'; +import { createHash, type Hash } from 'node:crypto'; import type { JSONValue } from '@aws-lambda-powertools/commons/types'; import { LRUCache } from '@aws-lambda-powertools/commons/utils/lru-cache'; import { search } from '@aws-lambda-powertools/jmespath'; @@ -174,7 +174,7 @@ abstract class BasePersistenceLayer implements BasePersistenceLayerInterface { if (remainingTimeInMillis) { idempotencyRecord.inProgressExpiryTimestamp = - new Date().getTime() + remainingTimeInMillis; + Date.now() + remainingTimeInMillis; } else { console.warn( 'Could not determine remaining time left. Did you call registerLambdaContext on IdempotencyConfig?' diff --git a/packages/idempotency/src/types/IdempotencyRecord.ts b/packages/idempotency/src/types/IdempotencyRecord.ts index ee1fed1223..1569373286 100644 --- a/packages/idempotency/src/types/IdempotencyRecord.ts +++ b/packages/idempotency/src/types/IdempotencyRecord.ts @@ -1,6 +1,7 @@ import type { JSONValue } from '@aws-lambda-powertools/commons/types'; import type { IdempotencyRecordStatus } from '../constants.js'; import type { DynamoDBPersistenceLayer } from '../persistence/DynamoDBPersistenceLayer.js'; + /** * The status of an IdempotencyRecord */ diff --git a/packages/idempotency/src/types/index.ts b/packages/idempotency/src/types/index.ts index 193571d092..1d77754342 100644 --- a/packages/idempotency/src/types/index.ts +++ b/packages/idempotency/src/types/index.ts @@ -1,20 +1,12 @@ export type { - IdempotencyRecordOptions, - IdempotencyRecordStatusValue, -} from './IdempotencyRecord.js'; -export type { + BasePersistenceAttributes, BasePersistenceLayerInterface, BasePersistenceLayerOptions, - BasePersistenceAttributes, } from './BasePersistenceLayer.js'; export type { - IdempotencyConfigOptions, - IdempotencyLambdaHandlerOptions, - IdempotencyHandlerOptions, - ItempotentFunctionOptions, - AnyFunction, - ResponseHook, -} from './IdempotencyOptions.js'; + CacheClient, + CachePersistenceOptions, +} from './CachePersistence.js'; export type { DynamoDBPersistenceOptions, DynamoDBPersistenceOptionsBase, @@ -22,6 +14,14 @@ export type { DynamoDBPersistenceOptionsWithClientInstance, } from './DynamoDBPersistence.js'; export type { - CacheClient, - CachePersistenceOptions, -} from './CachePersistence.js'; + AnyFunction, + IdempotencyConfigOptions, + IdempotencyHandlerOptions, + IdempotencyLambdaHandlerOptions, + ItempotentFunctionOptions, + ResponseHook, +} from './IdempotencyOptions.js'; +export type { + IdempotencyRecordOptions, + IdempotencyRecordStatusValue, +} from './IdempotencyRecord.js'; diff --git a/packages/idempotency/tests/e2e/idempotentDecorator.test.ts b/packages/idempotency/tests/e2e/idempotentDecorator.test.ts index 9c83ab5417..c3bf22d41b 100644 --- a/packages/idempotency/tests/e2e/idempotentDecorator.test.ts +++ b/packages/idempotency/tests/e2e/idempotentDecorator.test.ts @@ -1,9 +1,9 @@ import { createHash } from 'node:crypto'; import { join } from 'node:path'; import { + invokeFunction, TestInvocationLogs, TestStack, - invokeFunction, } from '@aws-lambda-powertools/testing-utils'; import { DynamoDBClient } from '@aws-sdk/client-dynamodb'; import { ScanCommand } from '@aws-sdk/lib-dynamodb'; diff --git a/packages/idempotency/tests/e2e/makeHandlerIdempotent.test.FunctionCode.ts b/packages/idempotency/tests/e2e/makeHandlerIdempotent.test.FunctionCode.ts index 7358697039..6ade59d2ef 100644 --- a/packages/idempotency/tests/e2e/makeHandlerIdempotent.test.FunctionCode.ts +++ b/packages/idempotency/tests/e2e/makeHandlerIdempotent.test.FunctionCode.ts @@ -1,6 +1,6 @@ import { Logger } from '@aws-lambda-powertools/logger'; -import middy from 'middy6'; import type { Context } from 'aws-lambda'; +import middy from 'middy6'; import { IdempotencyConfig } from '../../src/IdempotencyConfig.js'; import { makeHandlerIdempotent } from '../../src/middleware/makeHandlerIdempotent.js'; import { DynamoDBPersistenceLayer } from '../../src/persistence/DynamoDBPersistenceLayer.js'; diff --git a/packages/idempotency/tests/e2e/makeHandlerIdempotent.test.ts b/packages/idempotency/tests/e2e/makeHandlerIdempotent.test.ts index 9b92a56af8..0c379b5f4e 100644 --- a/packages/idempotency/tests/e2e/makeHandlerIdempotent.test.ts +++ b/packages/idempotency/tests/e2e/makeHandlerIdempotent.test.ts @@ -1,9 +1,9 @@ import { createHash } from 'node:crypto'; import { join } from 'node:path'; import { + invokeFunction, TestInvocationLogs, TestStack, - invokeFunction, } from '@aws-lambda-powertools/testing-utils'; import { DynamoDBClient } from '@aws-sdk/client-dynamodb'; import { ScanCommand } from '@aws-sdk/lib-dynamodb'; diff --git a/packages/idempotency/tests/e2e/makeIdempotent.test.FunctionCode.ts b/packages/idempotency/tests/e2e/makeIdempotent.test.FunctionCode.ts index 2fd70bf6a1..10e2ce5f73 100644 --- a/packages/idempotency/tests/e2e/makeIdempotent.test.FunctionCode.ts +++ b/packages/idempotency/tests/e2e/makeIdempotent.test.FunctionCode.ts @@ -1,8 +1,8 @@ -import type { Context } from 'aws-lambda'; -import { DynamoDBPersistenceLayer } from '../../src/persistence/DynamoDBPersistenceLayer.js'; -import { makeIdempotent } from '../../src/makeIdempotent.js'; import { Logger } from '@aws-lambda-powertools/logger'; +import type { Context } from 'aws-lambda'; import { IdempotencyConfig } from '../../src/IdempotencyConfig.js'; +import { makeIdempotent } from '../../src/makeIdempotent.js'; +import { DynamoDBPersistenceLayer } from '../../src/persistence/DynamoDBPersistenceLayer.js'; const IDEMPOTENCY_TABLE_NAME = process.env.IDEMPOTENCY_TABLE_NAME || 'table_name'; diff --git a/packages/idempotency/tests/e2e/makeIdempotent.test.ts b/packages/idempotency/tests/e2e/makeIdempotent.test.ts index c87bc9f6b7..380945509d 100644 --- a/packages/idempotency/tests/e2e/makeIdempotent.test.ts +++ b/packages/idempotency/tests/e2e/makeIdempotent.test.ts @@ -1,16 +1,16 @@ import { createHash } from 'node:crypto'; import { join } from 'node:path'; import { + invokeFunction, TestInvocationLogs, TestStack, - invokeFunction, } from '@aws-lambda-powertools/testing-utils'; import { DynamoDBClient } from '@aws-sdk/client-dynamodb'; import { ScanCommand } from '@aws-sdk/lib-dynamodb'; import { AttributeType } from 'aws-cdk-lib/aws-dynamodb'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; import { IdempotencyTestNodejsFunctionAndDynamoTable } from '../helpers/resources.js'; -import { RESOURCE_NAME_PREFIX } from './constants'; +import { RESOURCE_NAME_PREFIX } from './constants.js'; describe('Idempotency E2E tests, wrapper function usage', () => { const testStack = new TestStack({ diff --git a/packages/idempotency/tests/helpers/resources.ts b/packages/idempotency/tests/helpers/resources.ts index 3a732f5ba0..fe7507f31c 100644 --- a/packages/idempotency/tests/helpers/resources.ts +++ b/packages/idempotency/tests/helpers/resources.ts @@ -1,16 +1,16 @@ +import { randomUUID } from 'node:crypto'; import { - type TestStack, concatenateResourceName, + type TestStack, } from '@aws-lambda-powertools/testing-utils'; -import { TestNodejsFunction } from '@aws-lambda-powertools/testing-utils/resources/lambda'; import { TestDynamodbTable } from '@aws-lambda-powertools/testing-utils/resources/dynamodb'; +import { TestNodejsFunction } from '@aws-lambda-powertools/testing-utils/resources/lambda'; import type { ExtraTestProps, TestDynamodbTableProps, TestNodejsFunctionProps, } from '@aws-lambda-powertools/testing-utils/types'; import { Construct } from 'constructs'; -import { randomUUID } from 'node:crypto'; class IdempotencyTestNodejsFunctionAndDynamoTable extends Construct { public constructor( diff --git a/packages/idempotency/tests/tsconfig.json b/packages/idempotency/tests/tsconfig.json index dde99895c8..39f442212e 100644 --- a/packages/idempotency/tests/tsconfig.json +++ b/packages/idempotency/tests/tsconfig.json @@ -1,12 +1,8 @@ { - "extends": "../tsconfig.json", - "compilerOptions": { - "rootDir": "../../", - "noEmit": true - }, - "include": [ - "../../testing/src/setupEnv.ts", - "../src/**/*", - "./**/*", - ] -} \ No newline at end of file + "extends": "../tsconfig.json", + "compilerOptions": { + "rootDir": "../../", + "noEmit": true + }, + "include": ["../../testing/src/setupEnv.ts", "../src/**/*", "./**/*"] +} diff --git a/packages/idempotency/tests/unit/IdempotencyHandler.test.ts b/packages/idempotency/tests/unit/IdempotencyHandler.test.ts index 22f574ac53..883abb0219 100644 --- a/packages/idempotency/tests/unit/IdempotencyHandler.test.ts +++ b/packages/idempotency/tests/unit/IdempotencyHandler.test.ts @@ -1,7 +1,7 @@ import type { JSONValue } from '@aws-lambda-powertools/commons/types'; import { afterAll, beforeEach, describe, expect, it, vi } from 'vitest'; -import { IdempotencyHandler } from '../../src/IdempotencyHandler.js'; import { IdempotencyRecordStatus, MAX_RETRIES } from '../../src/constants.js'; +import { IdempotencyHandler } from '../../src/IdempotencyHandler.js'; import { IdempotencyAlreadyInProgressError, IdempotencyConfig, @@ -15,7 +15,7 @@ import { PersistenceLayerTestClass } from '../helpers/idempotencyUtils.js'; const mockFunctionToMakeIdempotent = vi.fn(); const mockResponseHook = vi .fn() - .mockImplementation((response, record) => response); + .mockImplementation((response, _record) => response); const mockFunctionPayloadToBeHashed = {}; const persistenceStore = new PersistenceLayerTestClass(); const mockIdempotencyOptions = { diff --git a/packages/idempotency/tests/unit/idempotencyDecorator.test.ts b/packages/idempotency/tests/unit/idempotencyDecorator.test.ts index 7f32a4e98c..b153c01418 100644 --- a/packages/idempotency/tests/unit/idempotencyDecorator.test.ts +++ b/packages/idempotency/tests/unit/idempotencyDecorator.test.ts @@ -2,9 +2,9 @@ import type { LambdaInterface } from '@aws-lambda-powertools/commons/types'; import context from '@aws-lambda-powertools/testing-utils/context'; import type { Context } from 'aws-lambda'; import { describe, expect, it, vi } from 'vitest'; -import { idempotent, IdempotencyConfig } from '../../src/index.js'; -import { PersistenceLayerTestClass } from '../helpers/idempotencyUtils.js'; +import { IdempotencyConfig, idempotent } from '../../src/index.js'; import { BasePersistenceLayer } from '../../src/persistence/BasePersistenceLayer.js'; +import { PersistenceLayerTestClass } from '../helpers/idempotencyUtils.js'; describe('Given a class with a function to decorate', () => { it('maintains the scope of the decorated function', async () => { diff --git a/packages/idempotency/tests/unit/makeIdempotent.test.ts b/packages/idempotency/tests/unit/makeIdempotent.test.ts index 1e1a1e2054..bc567d452f 100644 --- a/packages/idempotency/tests/unit/makeIdempotent.test.ts +++ b/packages/idempotency/tests/unit/makeIdempotent.test.ts @@ -420,7 +420,7 @@ describe('Function: makeIdempotent', () => { mockIdempotencyOptions.persistenceStore, 'configure' ); - + // Act const result = await handler(event, context); diff --git a/packages/idempotency/tests/unit/persistence/BasePersistenceLayer.test.ts b/packages/idempotency/tests/unit/persistence/BasePersistenceLayer.test.ts index 2a2d5e1a56..acd40bcb99 100644 --- a/packages/idempotency/tests/unit/persistence/BasePersistenceLayer.test.ts +++ b/packages/idempotency/tests/unit/persistence/BasePersistenceLayer.test.ts @@ -103,9 +103,7 @@ describe('Class: BasePersistenceLayer', () => { persistenceLayer.configure({ config, keyPrefix: 'my-custom-prefix' }); // Assess - expect(persistenceLayer.idempotencyKeyPrefix).toBe( - 'my-custom-prefix' - ); + expect(persistenceLayer.idempotencyKeyPrefix).toBe('my-custom-prefix'); }); it('uses default config when no option is provided', () => { diff --git a/packages/idempotency/tests/unit/persistence/DynamoDbPersistenceLayer.test.ts b/packages/idempotency/tests/unit/persistence/DynamoDbPersistenceLayer.test.ts index bb72789986..f786774cbb 100644 --- a/packages/idempotency/tests/unit/persistence/DynamoDbPersistenceLayer.test.ts +++ b/packages/idempotency/tests/unit/persistence/DynamoDbPersistenceLayer.test.ts @@ -28,7 +28,7 @@ import type { DynamoDBPersistenceOptions } from '../../../src/types/DynamoDBPers import { DynamoDBPersistenceLayerTestClass } from '../../helpers/idempotencyUtils.js'; const getFutureTimestamp = (seconds: number): number => - new Date().getTime() + seconds * 1000; + Date.now() + seconds * 1000; vi.mock('@aws-lambda-powertools/commons', async (importOriginal) => ({ ...(await importOriginal()), diff --git a/packages/idempotency/tsconfig.cjs.json b/packages/idempotency/tsconfig.cjs.json index 682c17bfad..beaff94051 100644 --- a/packages/idempotency/tsconfig.cjs.json +++ b/packages/idempotency/tsconfig.cjs.json @@ -1,13 +1,11 @@ { - "extends": "../../tsconfig.cjs.json", - "compilerOptions": { - "outDir": "./lib/cjs", - "rootDir": "./src", - "tsBuildInfoFile": ".tsbuildinfo/cjs.json", - "composite": true, - "declaration": true - }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "extends": "../../tsconfig.cjs.json", + "compilerOptions": { + "outDir": "./lib/cjs", + "rootDir": "./src", + "tsBuildInfoFile": ".tsbuildinfo/cjs.json", + "composite": true, + "declaration": true + }, + "include": ["./src/**/*"] +} diff --git a/packages/idempotency/tsconfig.json b/packages/idempotency/tsconfig.json index 204ff253d4..e1c2fb1dc4 100644 --- a/packages/idempotency/tsconfig.json +++ b/packages/idempotency/tsconfig.json @@ -8,7 +8,5 @@ "composite": true, "declaration": true }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/idempotency/typedoc.json b/packages/idempotency/typedoc.json index 73da1534e3..a429c1b85f 100644 --- a/packages/idempotency/typedoc.json +++ b/packages/idempotency/typedoc.json @@ -7,7 +7,7 @@ "./src/persistence/index.ts", "./src/persistence/DynamoDBPersistenceLayer.ts", "./src/persistence/CachePersistenceLayer.ts", - "./src/types/CachePersistence.ts", + "./src/types/CachePersistence.ts" ], "readme": "README.md" } diff --git a/packages/jmespath/CHANGELOG.md b/packages/jmespath/CHANGELOG.md index 1547056fc0..8d4a21b303 100644 --- a/packages/jmespath/CHANGELOG.md +++ b/packages/jmespath/CHANGELOG.md @@ -1,225 +1,119 @@ # Change Log -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.24.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.23.0...v2.24.0) (2025-07-15) + +**Note:** Version bump only for this package # [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) **Note:** Version bump only for package @aws-lambda-powertools/jmespath - - - - # [2.22.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.21.0...v2.22.0) (2025-06-20) **Note:** Version bump only for package @aws-lambda-powertools/jmespath - - - - # [2.21.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.20.0...v2.21.0) (2025-06-03) **Note:** Version bump only for package @aws-lambda-powertools/jmespath - - - - # [2.20.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.1...v2.20.0) (2025-05-20) **Note:** Version bump only for package @aws-lambda-powertools/jmespath - - - - ## [2.19.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.0...v2.19.1) (2025-05-05) **Note:** Version bump only for package @aws-lambda-powertools/jmespath - - - - # [2.19.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.18.0...v2.19.0) (2025-04-24) **Note:** Version bump only for package @aws-lambda-powertools/jmespath - - - - # [2.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.17.0...v2.18.0) (2025-04-07) **Note:** Version bump only for package @aws-lambda-powertools/jmespath - - - - # [2.17.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.16.0...v2.17.0) (2025-03-25) **Note:** Version bump only for package @aws-lambda-powertools/jmespath - - - - # [2.16.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.15.0...v2.16.0) (2025-03-07) **Note:** Version bump only for package @aws-lambda-powertools/jmespath - - - - # [2.15.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.14.0...v2.15.0) (2025-02-25) **Note:** Version bump only for package @aws-lambda-powertools/jmespath - - - - # [2.14.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.1...v2.14.0) (2025-02-10) **Note:** Version bump only for package @aws-lambda-powertools/jmespath - - - - ## [2.13.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.0...v2.13.1) (2025-01-28) **Note:** Version bump only for package @aws-lambda-powertools/jmespath - - - - # [2.13.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.12.0...v2.13.0) (2025-01-14) **Note:** Version bump only for package @aws-lambda-powertools/jmespath - - - - # [2.12.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.11.0...v2.12.0) (2024-12-17) **Note:** Version bump only for package @aws-lambda-powertools/jmespath - - - - # [2.11.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.10.0...v2.11.0) (2024-11-20) **Note:** Version bump only for package @aws-lambda-powertools/jmespath - - - - # [2.10.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.9.0...v2.10.0) (2024-10-22) **Note:** Version bump only for package @aws-lambda-powertools/jmespath - - - - # [2.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.8.0...v2.9.0) (2024-10-07) - ### Features * **idempotency:** ability to specify JMESPath custom functions ([#3150](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3150)) ([869b6fc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/869b6fced659ad820ffe79a0b905022061570974)) - - - - # [2.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.7.0...v2.8.0) (2024-09-16) **Note:** Version bump only for package @aws-lambda-powertools/jmespath - - - - # [2.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.6.0...v2.7.0) (2024-08-08) **Note:** Version bump only for package @aws-lambda-powertools/jmespath - - - - # [2.6.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.5.0...v2.6.0) (2024-07-25) **Note:** Version bump only for package @aws-lambda-powertools/jmespath - - - - # [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) - ### Features * **maintenance:** drop support for Node.js 16.x ([#2717](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2717)) ([e4eee73](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e4eee73770ffccead9212a566335ec256a31af7d)) - - - - # [2.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.2.0...v2.3.0) (2024-06-27) **Note:** Version bump only for package @aws-lambda-powertools/jmespath - - - - # [2.2.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.1...v2.2.0) (2024-06-13) **Note:** Version bump only for package @aws-lambda-powertools/jmespath - - - - ## [2.1.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.0...v2.1.1) (2024-05-14) **Note:** Version bump only for package @aws-lambda-powertools/jmespath - - - - # [2.1.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.0.4...v2.1.0) (2024-04-17) - ### Bug Fixes * **jmespath:** refactor custom function introspection to work with minification ([#2384](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2384)) ([21ecc4f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/21ecc4f736ccba85c276889163860a98613174cc)) - - - - ## 2.0.4 (2024-04-10) ### Features diff --git a/packages/jmespath/package.json b/packages/jmespath/package.json index 5bde36186f..9964c342b7 100644 --- a/packages/jmespath/package.json +++ b/packages/jmespath/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/jmespath", - "version": "2.23.0", + "version": "2.24.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.23.0" + "@aws-lambda-powertools/commons": "2.24.0" }, "repository": { "type": "git", diff --git a/packages/jmespath/src/Lexer.ts b/packages/jmespath/src/Lexer.ts index 313cc271df..a200b74974 100644 --- a/packages/jmespath/src/Lexer.ts +++ b/packages/jmespath/src/Lexer.ts @@ -285,7 +285,7 @@ class Lexer { start, end: this.#position - start, }; - } catch (error) { + } catch { throw new LexerError(start, lexeme); } } diff --git a/packages/jmespath/src/ParsedResult.ts b/packages/jmespath/src/ParsedResult.ts index 0ed9a2d4ca..c5436fabd1 100644 --- a/packages/jmespath/src/ParsedResult.ts +++ b/packages/jmespath/src/ParsedResult.ts @@ -1,10 +1,10 @@ -import { TreeInterpreter } from './TreeInterpreter.js'; import { ArityError, JMESPathTypeError, UnknownFunctionError, VariadicArityError, } from './errors.js'; +import { TreeInterpreter } from './TreeInterpreter.js'; import type { JMESPathParsingOptions, JSONObject, Node } from './types.js'; class ParsedResult { diff --git a/packages/jmespath/src/Parser.ts b/packages/jmespath/src/Parser.ts index 208aa45314..8c006cc8e3 100644 --- a/packages/jmespath/src/Parser.ts +++ b/packages/jmespath/src/Parser.ts @@ -1,6 +1,4 @@ import { randomInt } from 'node:crypto'; -import { Lexer } from './Lexer.js'; -import { ParsedResult } from './ParsedResult.js'; import { andExpression, comparator, @@ -27,6 +25,8 @@ import { } from './ast.js'; import { BINDING_POWER } from './constants.js'; import { IncompleteExpressionError, LexerError, ParseError } from './errors.js'; +import { Lexer } from './Lexer.js'; +import { ParsedResult } from './ParsedResult.js'; import type { Node, Token } from './types.js'; /** diff --git a/packages/jmespath/src/TreeInterpreter.ts b/packages/jmespath/src/TreeInterpreter.ts index 324c7a35ca..385dbab6b3 100644 --- a/packages/jmespath/src/TreeInterpreter.ts +++ b/packages/jmespath/src/TreeInterpreter.ts @@ -4,7 +4,6 @@ import { isStrictEqual, } from '@aws-lambda-powertools/commons/typeutils'; import { Expression } from './Expression.js'; -import { Functions } from './Functions.js'; import { ArityError, JMESPathError, @@ -12,6 +11,7 @@ import { UnknownFunctionError, VariadicArityError, } from './errors.js'; +import { Functions } from './Functions.js'; import type { JMESPathParsingOptions, JSONObject, Node } from './types.js'; import { isTruthy, sliceArray } from './utils.js'; diff --git a/packages/jmespath/src/index.ts b/packages/jmespath/src/index.ts index a0f2545f85..400898bfb5 100644 --- a/packages/jmespath/src/index.ts +++ b/packages/jmespath/src/index.ts @@ -1,12 +1,12 @@ -export { search } from './search.js'; export { + ArityError, + EmptyExpressionError, + IncompleteExpressionError, JMESPathError, + JMESPathTypeError, LexerError, ParseError, - IncompleteExpressionError, - ArityError, - VariadicArityError, - JMESPathTypeError, - EmptyExpressionError, UnknownFunctionError, + VariadicArityError, } from './errors.js'; +export { search } from './search.js'; diff --git a/packages/jmespath/src/types.ts b/packages/jmespath/src/types.ts index 92e3e7ffff..485529d9f1 100644 --- a/packages/jmespath/src/types.ts +++ b/packages/jmespath/src/types.ts @@ -2,8 +2,8 @@ import type { JSONArray, JSONValue, } from '@aws-lambda-powertools/commons/types'; -import type { Functions } from './Functions.js'; import type { BINDING_POWER } from './constants.js'; +import type { Functions } from './Functions.js'; /** * A token in the JMESPath AST. diff --git a/packages/jmespath/src/utils.ts b/packages/jmespath/src/utils.ts index 113d3f30f7..9a27909c98 100644 --- a/packages/jmespath/src/utils.ts +++ b/packages/jmespath/src/utils.ts @@ -230,7 +230,6 @@ const checkIfArgumentTypeIsValid = ( } if (['string', 'number', 'boolean'].includes(type)) { typeCheckType(arg, type, argumentSpec, hasMoreTypesToCheck); - // biome-ignore lint/suspicious/useValidTypeof: we know that `type` is one of 'string', 'number', or 'boolean' because we checked for that above if (typeof arg === type) return true; } else if (type === 'object') { checkObjectType(arg, argumentSpec, hasMoreTypesToCheck); @@ -255,7 +254,6 @@ const typeCheckType = ( argumentSpec: string[], hasMoreTypesToCheck: boolean ): void => { - // biome-ignore lint/suspicious/useValidTypeof: we know that `type` is one of 'string', 'number', or 'boolean' because we checked before calling this function if (typeof arg !== type && !hasMoreTypesToCheck) { throw new JMESPathTypeError({ currentValue: arg, diff --git a/packages/jmespath/tests/unit/index.test.ts b/packages/jmespath/tests/unit/index.test.ts index 7b25c566e1..b71230c671 100644 --- a/packages/jmespath/tests/unit/index.test.ts +++ b/packages/jmespath/tests/unit/index.test.ts @@ -1,19 +1,19 @@ import { brotliDecompressSync } from 'node:zlib'; import { fromBase64 } from '@aws-lambda-powertools/commons/utils/base64'; import { describe, expect, it } from 'vitest'; +import { extractDataFromEnvelope, SQS } from '../../src/envelopes.js'; import { Functions } from '../../src/Functions.js'; -import { Parser } from '../../src/Parser.js'; -import { PowertoolsFunctions } from '../../src/PowertoolsFunctions.js'; -import { TreeInterpreter } from '../../src/TreeInterpreter.js'; -import { SQS, extractDataFromEnvelope } from '../../src/envelopes.js'; import { ArityError, EmptyExpressionError, JMESPathError, LexerError, - VariadicArityError, search, + VariadicArityError, } from '../../src/index.js'; +import { Parser } from '../../src/Parser.js'; +import { PowertoolsFunctions } from '../../src/PowertoolsFunctions.js'; +import { TreeInterpreter } from '../../src/TreeInterpreter.js'; describe('Coverage tests', () => { // These expressions tests are not part of the compliance suite, but are added to ensure coverage diff --git a/packages/jmespath/tsconfig.cjs.json b/packages/jmespath/tsconfig.cjs.json index 7d570c8dbe..a8fadd417f 100644 --- a/packages/jmespath/tsconfig.cjs.json +++ b/packages/jmespath/tsconfig.cjs.json @@ -7,7 +7,5 @@ "rootDir": "./src", "tsBuildInfoFile": ".tsbuildinfo/cjs.json" }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/jmespath/tsconfig.json b/packages/jmespath/tsconfig.json index 4fdaca79c4..d5b9efc4f2 100644 --- a/packages/jmespath/tsconfig.json +++ b/packages/jmespath/tsconfig.json @@ -6,7 +6,5 @@ "rootDir": "./src", "tsBuildInfoFile": ".tsbuildinfo/esm.json" }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/kafka/CHANGELOG.md b/packages/kafka/CHANGELOG.md index 6f4cd04667..fef389a323 100644 --- a/packages/kafka/CHANGELOG.md +++ b/packages/kafka/CHANGELOG.md @@ -1,19 +1,15 @@ # Change Log -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.24.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.23.0...v2.24.0) (2025-07-15) + +**Note:** Version bump only for this package # [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) **Note:** Version bump only for package @aws-lambda-powertools/kafka - - - - # [2.22.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.21.0...v2.22.0) (2025-06-20) - ### Features * **kafka:** add logic to handle delimited protobufs ([#4071](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4071)) ([db9ec0c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/db9ec0c4af668c002460f8dc9171c7d4bfc155b2)) diff --git a/packages/kafka/package.json b/packages/kafka/package.json index 40b29d64a1..fb1498c72e 100644 --- a/packages/kafka/package.json +++ b/packages/kafka/package.json @@ -1,7 +1,7 @@ { "name": "@aws-lambda-powertools/kafka", "description": "Utility to easily handle message deserialization and parsing of Kafka events in AWS Lambda functions", - "version": "2.23.0", + "version": "2.24.0", "author": { "name": "Amazon Web Services", "url": "https://aws.amazon.com" @@ -47,13 +47,13 @@ "nodejs" ], "dependencies": { - "@aws-lambda-powertools/commons": "2.23.0", + "@aws-lambda-powertools/commons": "2.24.0", "@standard-schema/spec": "^1.0.0" }, "peerDependencies": { "arktype": ">=2.0.0", "valibot": ">=1.0.0", - "zod": ">=3.24.0" + "zod": "^3.25.0 || ^4.0.0" }, "peerDependenciesMeta": { "zod": { @@ -117,6 +117,6 @@ "devDependencies": { "avro-js": "^1.12.0", "protobufjs": "^7.5.3", - "zod": "^3.25.67" + "zod": "^4.0.5" } } diff --git a/packages/kafka/src/types/index.ts b/packages/kafka/src/types/index.ts index 944b14b4eb..a6e3f96bc3 100644 --- a/packages/kafka/src/types/index.ts +++ b/packages/kafka/src/types/index.ts @@ -5,8 +5,8 @@ export type { ProtobufMessage, Record, RecordHeader, - SchemaType, SchemaConfig, SchemaConfigValue, SchemaMetadata, + SchemaType, } from './types.js'; diff --git a/packages/kafka/tests/events/avro.json b/packages/kafka/tests/events/avro.json index d495060d7c..8d6ef22108 100644 --- a/packages/kafka/tests/events/avro.json +++ b/packages/kafka/tests/events/avro.json @@ -48,4 +48,4 @@ } ] } -} \ No newline at end of file +} diff --git a/packages/kafka/tests/events/protobuf-complex.confluent.json b/packages/kafka/tests/events/protobuf-complex.confluent.json index 47f5e4c8de..e7534f3906 100644 --- a/packages/kafka/tests/events/protobuf-complex.confluent.json +++ b/packages/kafka/tests/events/protobuf-complex.confluent.json @@ -62,4 +62,4 @@ } ] } -} \ No newline at end of file +} diff --git a/packages/kafka/tests/events/protobuf-complex.glue.json b/packages/kafka/tests/events/protobuf-complex.glue.json index f051e5f652..f2e81fa33e 100644 --- a/packages/kafka/tests/events/protobuf-complex.glue.json +++ b/packages/kafka/tests/events/protobuf-complex.glue.json @@ -14,19 +14,7 @@ "value": "AQoDMTIzEgRUZXN0Ggx0ZXN0QGdteC5jb20gCjIKMjAyNS0wNi0yMDoEdGFnMToEdGFnMkoOCgV0aGVtZRIFbGlnaHRSGgoKTXl0aGVucXVhaRIGWnVyaWNoGgQ4MDAy", "headers": [ { - "headerKey": [ - 104, - 101, - 97, - 100, - 101, - 114, - 86, - 97, - 108, - 117, - 101 - ] + "headerKey": [104, 101, 97, 100, 101, 114, 86, 97, 108, 117, 101] } ], "valueSchemaMetadata": { @@ -36,4 +24,4 @@ } ] } -} \ No newline at end of file +} diff --git a/packages/kafka/tests/events/protobuf.json b/packages/kafka/tests/events/protobuf.json index 58ad47f5e0..b7f152879f 100644 --- a/packages/kafka/tests/events/protobuf.json +++ b/packages/kafka/tests/events/protobuf.json @@ -18,7 +18,7 @@ } ], "valueSchemaMetadata": { - "dataFormat": "PROTOBUF" + "dataFormat": "PROTOBUF" } }, { @@ -35,8 +35,8 @@ } ], "valueSchemaMetadata": { - "dataFormat": "PROTOBUF", - "schemaId": "7d55d475-2244-4485-8341-f74468c1e058" + "dataFormat": "PROTOBUF", + "schemaId": "7d55d475-2244-4485-8341-f74468c1e058" } }, { @@ -53,10 +53,10 @@ } ], "valueSchemaMetadata": { - "dataFormat": "PROTOBUF", - "schemaId": "2" + "dataFormat": "PROTOBUF", + "schemaId": "2" } } ] } -} \ No newline at end of file +} diff --git a/packages/kafka/tests/tsconfig.json b/packages/kafka/tests/tsconfig.json index 6b38e082b1..daf72b90df 100644 --- a/packages/kafka/tests/tsconfig.json +++ b/packages/kafka/tests/tsconfig.json @@ -5,9 +5,5 @@ "noEmit": true, "resolveJsonModule": true }, - "include": [ - "../../testing/src/setupEnv.ts", - "../src/**/*", - "./**/*" - ] -} \ No newline at end of file + "include": ["../../testing/src/setupEnv.ts", "../src/**/*", "./**/*"] +} diff --git a/packages/kafka/tests/unit/consumer.test.ts b/packages/kafka/tests/unit/consumer.test.ts index f653be5497..ebad6e6493 100644 --- a/packages/kafka/tests/unit/consumer.test.ts +++ b/packages/kafka/tests/unit/consumer.test.ts @@ -2,7 +2,7 @@ import type { Context } from 'aws-lambda'; import { describe, expect, it } from 'vitest'; import { z } from 'zod/v4'; import { KafkaConsumerMissingSchemaError } from '../../src/errors.js'; -import { SchemaType, kafkaConsumer } from '../../src/index.js'; +import { kafkaConsumer, SchemaType } from '../../src/index.js'; import type { ConsumerRecords, MSKEvent } from '../../src/types/types.js'; import { loadEvent } from '../helpers/loadEvent.js'; import { com } from '../protos/complex.generated.js'; diff --git a/packages/kafka/tsconfig.cjs.json b/packages/kafka/tsconfig.cjs.json index 7d570c8dbe..a8fadd417f 100644 --- a/packages/kafka/tsconfig.cjs.json +++ b/packages/kafka/tsconfig.cjs.json @@ -7,7 +7,5 @@ "rootDir": "./src", "tsBuildInfoFile": ".tsbuildinfo/cjs.json" }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/kafka/tsconfig.json b/packages/kafka/tsconfig.json index 204ff253d4..e1c2fb1dc4 100644 --- a/packages/kafka/tsconfig.json +++ b/packages/kafka/tsconfig.json @@ -8,7 +8,5 @@ "composite": true, "declaration": true }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/kafka/typedoc.json b/packages/kafka/typedoc.json index e56c23f196..dafd6a578c 100644 --- a/packages/kafka/typedoc.json +++ b/packages/kafka/typedoc.json @@ -1,11 +1,5 @@ { - "extends": [ - "../../typedoc.base.json" - ], - "entryPoints": [ - "./src/index.ts", - "./src/types/types.ts", - "./src/errors.ts" - ], + "extends": ["../../typedoc.base.json"], + "entryPoints": ["./src/index.ts", "./src/types/types.ts", "./src/errors.ts"], "readme": "README.md" -} \ No newline at end of file +} diff --git a/packages/logger/CHANGELOG.md b/packages/logger/CHANGELOG.md index 02bb84ce1d..c7b1e4646a 100644 --- a/packages/logger/CHANGELOG.md +++ b/packages/logger/CHANGELOG.md @@ -1,92 +1,56 @@ # Change Log -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.24.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.23.0...v2.24.0) (2025-07-15) -# [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) +**Note:** Version bump only for this package +# [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) ### Bug Fixes * **logger:** reset keys on error in middleware ([#4122](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4122)) ([e310c50](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e310c50fe12463a5e3759ee1ecd61e0467fbc6a4)) * **logger:** set `hourCycle` to h23 when tz is not UTC ([#4102](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4102)) ([54b0863](https://github.com/aws-powertools/powertools-lambda-typescript/commit/54b08636474f11fefcb295cd04511d3f46be4382)) - - - - # [2.22.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.21.0...v2.22.0) (2025-06-20) **Note:** Version bump only for package @aws-lambda-powertools/logger - - - - # [2.21.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.20.0...v2.21.0) (2025-06-03) **Note:** Version bump only for package @aws-lambda-powertools/logger - - - - # [2.20.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.1...v2.20.0) (2025-05-20) **Note:** Version bump only for package @aws-lambda-powertools/logger - - - - ## [2.19.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.0...v2.19.1) (2025-05-05) **Note:** Version bump only for package @aws-lambda-powertools/logger - - - - # [2.19.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.18.0...v2.19.0) (2025-04-24) - ### Bug Fixes * **logger:** warn customers when the ALC log level is less verbose than log buffer ([#3834](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3834)) ([04f64ce](https://github.com/aws-powertools/powertools-lambda-typescript/commit/04f64ce23716037d6684fd4f6859bb8df8743911)) * **logger:** warn only once on ALC log level mismatch ([#3816](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3816)) ([1e330b3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1e330b3f96f0ae9f18dd09e2856658b22dbfd930)) - - - - # [2.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.17.0...v2.18.0) (2025-04-07) **Note:** Version bump only for package @aws-lambda-powertools/logger - - - - # [2.17.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.16.0...v2.17.0) (2025-03-25) - ### Bug Fixes * **logger:** correctly refresh sample rate ([#3722](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3722)) ([2692ca4](https://github.com/aws-powertools/powertools-lambda-typescript/commit/2692ca4d1b15763936659b05e1830d998a4d2020)) - ### Features * **commons:** make utilities aware of provisioned concurrency ([#3724](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3724)) ([c28e45e](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c28e45ecba315bac8fbc7744dbe21a3461747d44)) * **logger:** set correlation ID in logs ([#3726](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3726)) ([aa74fc8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/aa74fc8548ccb8cb313ffd1742184c66e8d6c22c)) - - - - # [2.16.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.15.0...v2.16.0) (2025-03-07) - ### Features * **logger:** Enable log buffering feature ([#3641](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3641)) ([8203016](https://github.com/aws-powertools/powertools-lambda-typescript/commit/82030167abe3797392b919db2b4a006ae47e0ef7)) @@ -94,18 +58,12 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline * **logger:** Flush buffer on uncaught error in Middy middleware ([#3690](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3690)) ([23eebe4](https://github.com/aws-powertools/powertools-lambda-typescript/commit/23eebe46bd4d07315545ecefa672d53d14ac9a72)) * **logger:** refresh sample rate calculation before each invocation ([#3672](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3672)) ([8c8d6b2](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8c8d6b2ea4ccd473f56b05913169cc5995765562)) - - - - # [2.15.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.14.0...v2.15.0) (2025-02-25) - ### Bug Fixes * **logger:** handle illegal `null`/`undefined` as extra args ([#3614](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3614)) ([6f99073](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6f99073cf61d2e49b01d8f7dcc9b4edf36166ad9)) - ### Features * **logger:** add circular buffer ([#3593](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3593)) ([618cdee](https://github.com/aws-powertools/powertools-lambda-typescript/commit/618cdeefd8838bf291b5b9df73d765c30d2457df)) @@ -113,173 +71,95 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline * **logger:** Emit a warning on buffer flush ([#3639](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3639)) ([f471552](https://github.com/aws-powertools/powertools-lambda-typescript/commit/f4715520322e768f4cc743388069f91d424b0ebd)) * **logger:** refresh sample rate calculation per invocation ([#3644](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3644)) ([1d66a2a](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1d66a2a0d0af36d6c8aa86b0c559f8489fe9ef77)) - - - - # [2.14.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.1...v2.14.0) (2025-02-10) - ### Bug Fixes * **logger:** prevent overwriting standard keys ([#3553](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3553)) ([f0bdf3c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/f0bdf3cdb1fe25ff7baea352215f41501ca6c5c2)) - - - - ## [2.13.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.0...v2.13.1) (2025-01-28) **Note:** Version bump only for package @aws-lambda-powertools/logger - - - - # [2.13.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.12.0...v2.13.0) (2025-01-14) **Note:** Version bump only for package @aws-lambda-powertools/logger - - - - # [2.12.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.11.0...v2.12.0) (2024-12-17) - ### Features * **logger:** change selected method visibility to protected ([#3377](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3377)) ([93a19a5](https://github.com/aws-powertools/powertools-lambda-typescript/commit/93a19a5181b6875d57a589e17c620b7a4631c085)) - - - - # [2.11.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.10.0...v2.11.0) (2024-11-20) **Note:** Version bump only for package @aws-lambda-powertools/logger - - - - # [2.10.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.9.0...v2.10.0) (2024-10-22) - ### Features * **logger:** include enumerable properties in formatted errors ([#3195](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3195)) ([4b80d9f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/4b80d9ff77a638d2290411764a1b9dc2dc9d8cbd)) - - - - # [2.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.8.0...v2.9.0) (2024-10-07) **Note:** Version bump only for package @aws-lambda-powertools/logger - - - - # [2.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.7.0...v2.8.0) (2024-09-16) - ### Features * **logger:** introduce log key reordering functionality ([#2736](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2736)) ([9677258](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9677258f3c872400fca89b625760b7a45f923212)) * **logger:** introduce loglevel trace [#1589](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1589) ([#2902](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2902)) ([650252c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/650252c6863d95d53ed182888200db314a199b09)) - - - - # [2.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.6.0...v2.7.0) (2024-08-08) - ### Bug Fixes * **logger:** invalid time zone environment variables leads to error ([#2865](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2865)) ([d55465f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d55465f937390f4511e837033db0dab582cf4e14)) - - - - # [2.6.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.5.0...v2.6.0) (2024-07-25) - ### Features * **logger:** introduce loglevel constant ([#2787](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2787)) ([e75f593](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e75f5933602342a45fbeaa7a459452387e43c492)) - - - - # [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) - ### Features * **internal:** support Middy.js 5.x ([#2748](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2748)) ([1d7ad61](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1d7ad61a569a4b1421dbe1754b0179f676cfede7)) * **logger:** time zone aware timestamp in Logger ([#2710](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2710)) ([9fe4c75](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9fe4c754960a07aad008ff4ada63cf68aa9ba89a)) * **maintenance:** drop support for Node.js 16.x ([#2717](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2717)) ([e4eee73](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e4eee73770ffccead9212a566335ec256a31af7d)) - - - - # [2.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.2.0...v2.3.0) (2024-06-27) - ### Bug Fixes * **logger:** reset log level after sampling refresh ([#2673](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2673)) ([618faec](https://github.com/aws-powertools/powertools-lambda-typescript/commit/618faeca7a2fff1d8570bd46832da65129196220)) - ### Features * **logger:** add `clearState()` method ([#2408](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2408)) ([f55e2d0](https://github.com/aws-powertools/powertools-lambda-typescript/commit/f55e2d019f8693ca79753eb56ba951b0fd33101b)) - - - - # [2.2.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.1...v2.2.0) (2024-06-13) **Note:** Version bump only for package @aws-lambda-powertools/logger - - - - ## [2.1.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.0...v2.1.1) (2024-05-14) **Note:** Version bump only for package @aws-lambda-powertools/logger - - - - # [2.1.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.0.4...v2.1.0) (2024-04-17) **Note:** Version bump only for package @aws-lambda-powertools/logger - - - - ## 2.0.4 (2024-04-10) ### Bug Fixes @@ -298,35 +178,18 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline **Note:** Version bump only for package @aws-lambda-powertools/logger - - - - - ## 2.0.1 (2024-03-04) **Note:** Version bump only for package @aws-lambda-powertools/logger - - - - # [2.0.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.18.1...v2.0.0) (2024-03-04) **Note:** Version bump only for package @aws-lambda-powertools/logger - - - - ## 1.18.1 (2024-02-20) **Note:** Version bump only for package @aws-lambda-powertools/logger - - - - ## [1.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.17.0...v1.18.0) (2024-01-26) **Note:** Version bump only for package @aws-lambda-powertools/logger @@ -339,14 +202,14 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **logger:** add support for `AWS_LAMBDA_LOG_LEVEL` and `POWERTOOLS_LOG_LEVEL` ([#1795](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1795)) ([e69abfb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e69abfb5f1b5d3bf993ac2fe66fae85a85af9905)) +* **logger:** add support for `AWS_LAMBDA_LOG_LEVEL` and `POWERTOOLS_LOG_LEVEL` ([#1795](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1795)) ([e69abfb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e69abfb5f1b5d3bf993ac2fe66fae85a85af9905)) # [1.15.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.14.2...v1.15.0) (2023-11-14) ### Features -- **maintenance:** add support for nodejs20.x runtime ([#1790](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1790)) ([6b9b1bc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b9b1bcb9baf4b3d8e0e5ec6709594aca09bb033)) -- **metrics:** log directly to stdout ([#1786](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1786)) ([75dc5b1](https://github.com/aws-powertools/powertools-lambda-typescript/commit/75dc5b1e16944416a287628c50ec4a0cf82c3023)) +* **maintenance:** add support for nodejs20.x runtime ([#1790](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1790)) ([6b9b1bc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b9b1bcb9baf4b3d8e0e5ec6709594aca09bb033)) +* **metrics:** log directly to stdout ([#1786](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1786)) ([75dc5b1](https://github.com/aws-powertools/powertools-lambda-typescript/commit/75dc5b1e16944416a287628c50ec4a0cf82c3023)) ## [1.14.2](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.14.1...v1.14.2) (2023-11-03) @@ -360,13 +223,13 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **layers:** add `arm64` to integration test matrix ([#1720](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1720)) ([61ad5ac](https://github.com/aws-powertools/powertools-lambda-typescript/commit/61ad5ac3bcf7742684aeec28553ec294696f3301)) +* **layers:** add `arm64` to integration test matrix ([#1720](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1720)) ([61ad5ac](https://github.com/aws-powertools/powertools-lambda-typescript/commit/61ad5ac3bcf7742684aeec28553ec294696f3301)) ## [1.13.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.13.0...v1.13.1) (2023-09-21) ### Bug Fixes -- **maintenance:** remove upper peer dependency Middy ([#1705](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1705)) ([df21ec8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/df21ec8761b1be511c13c28fedd41bf0e2851061)) +* **maintenance:** remove upper peer dependency Middy ([#1705](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1705)) ([df21ec8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/df21ec8761b1be511c13c28fedd41bf0e2851061)) # [1.13.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.12.1...v1.13.0) (2023-09-18) @@ -380,7 +243,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **logger:** add cause to formatted error ([#1617](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1617)) ([6a14595](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6a145959249db6eeb89fdfe3ed4c6e30ab155f9c)) +* **logger:** add cause to formatted error ([#1617](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1617)) ([6a14595](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6a145959249db6eeb89fdfe3ed4c6e30ab155f9c)) ## [1.11.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.11.0...v1.11.1) (2023-07-11) @@ -394,58 +257,58 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- **idempotency:** skip persistence for optional idempotency key ([#1507](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1507)) ([b9fcef6](https://github.com/aws-powertools/powertools-lambda-typescript/commit/b9fcef66eb4bd9a7ad1eeac5f5db2cdbccc70c71)) +* **idempotency:** skip persistence for optional idempotency key ([#1507](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1507)) ([b9fcef6](https://github.com/aws-powertools/powertools-lambda-typescript/commit/b9fcef66eb4bd9a7ad1eeac5f5db2cdbccc70c71)) ### Features -- **logger:** clear state when other middlewares return early ([#1544](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1544)) ([d5f3f13](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d5f3f13ccd7aae1bbc59431741e8aaf042dd2a73)) +* **logger:** clear state when other middlewares return early ([#1544](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1544)) ([d5f3f13](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d5f3f13ccd7aae1bbc59431741e8aaf042dd2a73)) # [1.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.8.0...v1.9.0) (2023-06-09) ### Features -- **logger:** enhance log level handling ([#1476](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1476)) ([0021536](https://github.com/aws-powertools/powertools-lambda-typescript/commit/0021536e35ba7046226155055f9ab6b5f988f71f)) +* **logger:** enhance log level handling ([#1476](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1476)) ([0021536](https://github.com/aws-powertools/powertools-lambda-typescript/commit/0021536e35ba7046226155055f9ab6b5f988f71f)) # [1.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.7.0...v1.8.0) (2023-04-07) ### Features -- **logger:** add `CRITICAL` log level ([#1399](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1399)) ([a248ff0](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a248ff0a584bac5a97fe300f3addbb9c3a50b555)) -- **parameters:** ability to set `maxAge` and `decrypt` via environment variables ([#1384](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1384)) ([dcf6620](https://github.com/aws-powertools/powertools-lambda-typescript/commit/dcf6620f55004b69186cd69b0c42b1cdd9fd1ce4)) +* **logger:** add `CRITICAL` log level ([#1399](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1399)) ([a248ff0](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a248ff0a584bac5a97fe300f3addbb9c3a50b555)) +* **parameters:** ability to set `maxAge` and `decrypt` via environment variables ([#1384](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1384)) ([dcf6620](https://github.com/aws-powertools/powertools-lambda-typescript/commit/dcf6620f55004b69186cd69b0c42b1cdd9fd1ce4)) # [1.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.6.0...v1.7.0) (2023-03-20) ### Features -- **logger:** add silent log level to suppress the emission of all logs ([#1347](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1347)) ([c82939e](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c82939ebdb82ae596cbad07be397794ee4b69fe5)) +* **logger:** add silent log level to suppress the emission of all logs ([#1347](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1347)) ([c82939e](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c82939ebdb82ae596cbad07be397794ee4b69fe5)) # [1.6.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.5.1...v1.6.0) (2023-03-02) ### Bug Fixes -- **logger:** createChild not passing all parent's attributes ([#1267](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1267)) ([84ab4b9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/84ab4b911d17d687bdbe60ded31f1e2b6860feb3)) -- **logger:** middleware stores initial persistent attributes correctly ([#1329](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1329)) ([6b32304](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b3230489895dc1abdfc6ad56daeeb555fda529f)) +* **logger:** createChild not passing all parent's attributes ([#1267](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1267)) ([84ab4b9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/84ab4b911d17d687bdbe60ded31f1e2b6860feb3)) +* **logger:** middleware stores initial persistent attributes correctly ([#1329](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1329)) ([6b32304](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b3230489895dc1abdfc6ad56daeeb555fda529f)) ### Features -- **logger:** make loglevel types stricter ([#1313](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1313)) ([5af51d3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5af51d319dee68d7a7ba832721580d7a6e655249)) +* **logger:** make loglevel types stricter ([#1313](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1313)) ([5af51d3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5af51d319dee68d7a7ba832721580d7a6e655249)) ## [1.5.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.5.0...v1.5.1) (2023-01-13) ### Bug Fixes -- **logger:** logger throws TypeError when log item has BigInt value ([#1201](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1201)) ([a09e4df](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a09e4dfbb2cef062c1178de3e3dbc2583aef7a91)) +* **logger:** logger throws TypeError when log item has BigInt value ([#1201](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1201)) ([a09e4df](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a09e4dfbb2cef062c1178de3e3dbc2583aef7a91)) # [1.5.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.4.1...v1.5.0) (2022-11-25) ### Bug Fixes -- **logger:** merge child logger options correctly ([#1178](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1178)) ([cb91374](https://github.com/aws-powertools/powertools-lambda-typescript/commit/cb9137436cc3a10d6c869506ddd07e35963ba8b2)) +* **logger:** merge child logger options correctly ([#1178](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1178)) ([cb91374](https://github.com/aws-powertools/powertools-lambda-typescript/commit/cb9137436cc3a10d6c869506ddd07e35963ba8b2)) ### Features -- **logger:** disable logs while testing with `jest --silent` in dev env ([#1165](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1165)) ([6f0c307](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6f0c30728f31d60433b3afb6983c64110c28d27e)) -- **logger:** pretty printing logs in local and non-prod environment ([#1141](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1141)) ([8d52660](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8d52660eb6b8324e284421c2484c45d9a0839346)) +* **logger:** disable logs while testing with `jest --silent` in dev env ([#1165](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1165)) ([6f0c307](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6f0c30728f31d60433b3afb6983c64110c28d27e)) +* **logger:** pretty printing logs in local and non-prod environment ([#1141](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1141)) ([8d52660](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8d52660eb6b8324e284421c2484c45d9a0839346)) ## [1.4.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.4.0...v1.4.1) (2022-11-09) @@ -455,18 +318,18 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **all:** moved EnvService to commons + exposed getXrayTraceId in tracer ([#1123](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1123)) ([c8e3c15](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c8e3c15b64142ebe6f43835a5917ecba26293a32)) +* **all:** moved EnvService to commons + exposed getXrayTraceId in tracer ([#1123](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1123)) ([c8e3c15](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c8e3c15b64142ebe6f43835a5917ecba26293a32)) # [1.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.2.1...v1.3.0) (2022-10-17) ### Bug Fixes -- **all:** update version command to use lint-fix ([#1119](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1119)) ([6f14fb3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6f14fb3229882b1dd0c20d18c87a542993432da9)) -- **logger:** wait for decorated method return before clearing out state ([#1087](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1087)) ([133ed3c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/133ed3c31ce1d99eb8f427f54721896781438ef7)) +* **all:** update version command to use lint-fix ([#1119](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1119)) ([6f14fb3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6f14fb3229882b1dd0c20d18c87a542993432da9)) +* **logger:** wait for decorated method return before clearing out state ([#1087](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1087)) ([133ed3c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/133ed3c31ce1d99eb8f427f54721896781438ef7)) ### Reverts -- Revert "chore(release): v1.3.0 [skip ci]" ([237b99f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/237b99f9f6eff5e6e26d779603cf13cd4422c156)) +* Revert "chore(release): v1.3.0 [skip ci]" ([237b99f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/237b99f9f6eff5e6e26d779603cf13cd4422c156)) ## [1.2.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.2.0...v1.2.1) (2022-08-25) @@ -480,13 +343,13 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- **logger:** decorated class methods cannot access `this` ([#1060](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1060)) ([73990bb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/73990bbcbbd9d5a6d6f55f553e4fd8f038654fa9)) +* **logger:** decorated class methods cannot access `this` ([#1060](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1060)) ([73990bb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/73990bbcbbd9d5a6d6f55f553e4fd8f038654fa9)) # [1.1.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.0.2...v1.1.0) (2022-08-12) ### Bug Fixes -- **logger:** fix clearstate bug when lambda handler throws ([#1045](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1045)) ([5ebd1cf](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5ebd1cf44a2a3b6d99923e5bb942af3327325241)) +* **logger:** fix clearstate bug when lambda handler throws ([#1045](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1045)) ([5ebd1cf](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5ebd1cf44a2a3b6d99923e5bb942af3327325241)) ## [1.0.2](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.0.1...v1.0.2) (2022-07-19) @@ -504,12 +367,12 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- **logger:** POWERTOOLS_LOGGER_LOG_EVENT precedence is respected ([#1015](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1015)) ([1cbb4db](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1cbb4db4daf776e12f7dc2b383ac7fa561b7bada)) +* **logger:** POWERTOOLS_LOGGER_LOG_EVENT precedence is respected ([#1015](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1015)) ([1cbb4db](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1cbb4db4daf776e12f7dc2b383ac7fa561b7bada)) ### Reverts -- Revert "chore(release): v0.12.0-rc.0 [skip ci]" ([9397f1d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9397f1d3624eb0bfbeb5e4c2702ae51e558a5b4a)) -- Revert "chore(release): v0.12.0-rc.0 [skip ci]" (#1017) ([51c18da](https://github.com/aws-powertools/powertools-lambda-typescript/commit/51c18da20db434f8b12f320e5074e3e0a146046e)), closes [#1017](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1017) +* Revert "chore(release): v0.12.0-rc.0 [skip ci]" ([9397f1d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9397f1d3624eb0bfbeb5e4c2702ae51e558a5b4a)) +* Revert "chore(release): v0.12.0-rc.0 [skip ci]" (#1017) ([51c18da](https://github.com/aws-powertools/powertools-lambda-typescript/commit/51c18da20db434f8b12f320e5074e3e0a146046e)), closes [#1017](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1017) ## [0.11.1-rc.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.11.0...v0.11.1-rc.0) (2022-06-24) @@ -519,32 +382,32 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **logger:** add clear state functionality ([#902](https://github.com/aws-powertools/powertools-lambda-typescript/issues/902)) ([fa1dacb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fa1dacb001503a0a607e0951499119a1a9c61545)) +* **logger:** add clear state functionality ([#902](https://github.com/aws-powertools/powertools-lambda-typescript/issues/902)) ([fa1dacb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fa1dacb001503a0a607e0951499119a1a9c61545)) # [0.10.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.9.1...v0.10.0) (2022-06-02) ### Features -- **all:** nodejs16x support ([#877](https://github.com/aws-powertools/powertools-lambda-typescript/issues/877)) ([d2b13c9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d2b13c945adb1a74b7c5f76d45f28a6979ce6429)) -- **logger:** add removeKeys functionality ([#901](https://github.com/aws-powertools/powertools-lambda-typescript/issues/901)) ([a0f72c2](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a0f72c275270db33d382bff357f6054f552197e6)) +* **all:** nodejs16x support ([#877](https://github.com/aws-powertools/powertools-lambda-typescript/issues/877)) ([d2b13c9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d2b13c945adb1a74b7c5f76d45f28a6979ce6429)) +* **logger:** add removeKeys functionality ([#901](https://github.com/aws-powertools/powertools-lambda-typescript/issues/901)) ([a0f72c2](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a0f72c275270db33d382bff357f6054f552197e6)) ## [0.9.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.9.0...v0.9.1) (2022-05-24) ### Bug Fixes -- **logger:** enable logging of arbitrary objects ([#883](https://github.com/aws-powertools/powertools-lambda-typescript/issues/883)) ([5d34854](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5d348543d3fbb48a98a9b2c34a1e8fa56b037adb)) +* **logger:** enable logging of arbitrary objects ([#883](https://github.com/aws-powertools/powertools-lambda-typescript/issues/883)) ([5d34854](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5d348543d3fbb48a98a9b2c34a1e8fa56b037adb)) # [0.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.8.1...v0.9.0) (2022-05-16) ### Bug Fixes -- **logger:** add xray_trace_id to every log ([#776](https://github.com/aws-powertools/powertools-lambda-typescript/issues/776)) ([11af21a](https://github.com/aws-powertools/powertools-lambda-typescript/commit/11af21ae236140e85d1503d355074c9ec254d90b)) +* **logger:** add xray_trace_id to every log ([#776](https://github.com/aws-powertools/powertools-lambda-typescript/issues/776)) ([11af21a](https://github.com/aws-powertools/powertools-lambda-typescript/commit/11af21ae236140e85d1503d355074c9ec254d90b)) ## [0.8.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.8.0...v0.8.1) (2022-04-14) ### Bug Fixes -- **logger:** change logging to use stdout ([#748](https://github.com/aws-powertools/powertools-lambda-typescript/issues/748)) ([0781a47](https://github.com/aws-powertools/powertools-lambda-typescript/commit/0781a479a6ae3c794f94c72b59cd0920073159a2)) +* **logger:** change logging to use stdout ([#748](https://github.com/aws-powertools/powertools-lambda-typescript/issues/748)) ([0781a47](https://github.com/aws-powertools/powertools-lambda-typescript/commit/0781a479a6ae3c794f94c72b59cd0920073159a2)) # [0.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.7.2...v0.8.0) (2022-04-08) @@ -558,24 +421,24 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- **logger:** enable sequential invocation in e2e test ([#658](https://github.com/aws-powertools/powertools-lambda-typescript/issues/658)) ([800424b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/800424bc77223682ad6cdcc9f35080aff30ba91e)) -- **logger:** fix handling of additional log keys ([#614](https://github.com/aws-powertools/powertools-lambda-typescript/issues/614)) ([8aab299](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8aab29900c5fac8eb625eb747acbc23ceac8f6ba)) +* **logger:** enable sequential invocation in e2e test ([#658](https://github.com/aws-powertools/powertools-lambda-typescript/issues/658)) ([800424b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/800424bc77223682ad6cdcc9f35080aff30ba91e)) +* **logger:** fix handling of additional log keys ([#614](https://github.com/aws-powertools/powertools-lambda-typescript/issues/614)) ([8aab299](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8aab29900c5fac8eb625eb747acbc23ceac8f6ba)) # [0.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.6.0...v0.7.0) (2022-03-08) ### Features -- **logger:** adopted Utility class & updated unit tests ([#550](https://github.com/aws-powertools/powertools-lambda-typescript/issues/550)) ([48f3487](https://github.com/aws-powertools/powertools-lambda-typescript/commit/48f34870d5bc3a5affcb70c8927859c56da6c5ff)) +* **logger:** adopted Utility class & updated unit tests ([#550](https://github.com/aws-powertools/powertools-lambda-typescript/issues/550)) ([48f3487](https://github.com/aws-powertools/powertools-lambda-typescript/commit/48f34870d5bc3a5affcb70c8927859c56da6c5ff)) # [0.6.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.5.1...v0.6.0) (2022-02-17) ### Bug Fixes -- **logger:** fix logger attribute merging ([#535](https://github.com/aws-powertools/powertools-lambda-typescript/issues/535)) ([8180be1](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8180be1ceb3f75bb7a35a7905cca867fb5eaa970)) +* **logger:** fix logger attribute merging ([#535](https://github.com/aws-powertools/powertools-lambda-typescript/issues/535)) ([8180be1](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8180be1ceb3f75bb7a35a7905cca867fb5eaa970)) ### Features -- **logger:** add e2e tests for logger ([#529](https://github.com/aws-powertools/powertools-lambda-typescript/issues/529)) ([e736b65](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e736b652c112b1c24c29eca8b1edfd87a79d1b2e)) +* **logger:** add e2e tests for logger ([#529](https://github.com/aws-powertools/powertools-lambda-typescript/issues/529)) ([e736b65](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e736b652c112b1c24c29eca8b1edfd87a79d1b2e)) ## [0.5.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.5.0...v0.5.1) (2022-02-09) @@ -585,18 +448,18 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- **examples:** fix errors in logger and metrics examples ([#509](https://github.com/aws-powertools/powertools-lambda-typescript/issues/509)) ([c19b47c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c19b47cb4cdb71e0ae404e9302226256d02fb7d5)) -- **logger|metrics:** properly return decorated class ([#489](https://github.com/aws-powertools/powertools-lambda-typescript/issues/489)) ([014c5bd](https://github.com/aws-powertools/powertools-lambda-typescript/commit/014c5bd7d5c807064af8f04c16d297a8fe3bc0d9)) +* **examples:** fix errors in logger and metrics examples ([#509](https://github.com/aws-powertools/powertools-lambda-typescript/issues/509)) ([c19b47c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c19b47cb4cdb71e0ae404e9302226256d02fb7d5)) +* **logger|metrics:** properly return decorated class ([#489](https://github.com/aws-powertools/powertools-lambda-typescript/issues/489)) ([014c5bd](https://github.com/aws-powertools/powertools-lambda-typescript/commit/014c5bd7d5c807064af8f04c16d297a8fe3bc0d9)) ### Features -- **all:** make `@middy/core` optional ([#511](https://github.com/aws-powertools/powertools-lambda-typescript/issues/511)) ([1107f96](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1107f96e9b4c678d34ee36757366f150d99be4dc)) +* **all:** make `@middy/core` optional ([#511](https://github.com/aws-powertools/powertools-lambda-typescript/issues/511)) ([1107f96](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1107f96e9b4c678d34ee36757366f150d99be4dc)) # [0.4.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.3.3...v0.4.0) (2022-01-20) ### Features -- **logger:** JSDOCS support ([#491](https://github.com/aws-powertools/powertools-lambda-typescript/issues/491)) ([cd2c2d9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/cd2c2d93a5822e26d3113a042be1dd0473aa6b2a)) +* **logger:** JSDOCS support ([#491](https://github.com/aws-powertools/powertools-lambda-typescript/issues/491)) ([cd2c2d9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/cd2c2d93a5822e26d3113a042be1dd0473aa6b2a)) ## [0.3.3](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.3.2...v0.3.3) (2022-01-17) @@ -606,30 +469,30 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- export LogFormatter + update docs ([#479](https://github.com/aws-powertools/powertools-lambda-typescript/issues/479)) ([7f91566](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7f91566d4ff34887914009e2424df7c39a96cd71)) +* export LogFormatter + update docs ([#479](https://github.com/aws-powertools/powertools-lambda-typescript/issues/479)) ([7f91566](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7f91566d4ff34887914009e2424df7c39a96cd71)) ## [0.3.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.3.0...v0.3.1) (2022-01-14) ### Bug Fixes -- **all:** fix latest release broken by change of npm pack result on common ([#470](https://github.com/aws-powertools/powertools-lambda-typescript/issues/470)) ([2c3df93](https://github.com/aws-powertools/powertools-lambda-typescript/commit/2c3df9378ac191f6da6cb5f458f6227d6466cafa)), closes [#417](https://github.com/aws-powertools/powertools-lambda-typescript/issues/417) +* **all:** fix latest release broken by change of npm pack result on common ([#470](https://github.com/aws-powertools/powertools-lambda-typescript/issues/470)) ([2c3df93](https://github.com/aws-powertools/powertools-lambda-typescript/commit/2c3df9378ac191f6da6cb5f458f6227d6466cafa)), closes [#417](https://github.com/aws-powertools/powertools-lambda-typescript/issues/417) # [0.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.2.0...v0.3.0) (2022-01-14) ### Bug Fixes -- **build:** Update contributing.md and fix npm ci ([#417](https://github.com/aws-powertools/powertools-lambda-typescript/issues/417)) ([279ad98](https://github.com/aws-powertools/powertools-lambda-typescript/commit/279ad984f71d5b157a13cffeab52602f2c09c1f8)), closes [#415](https://github.com/aws-powertools/powertools-lambda-typescript/issues/415) [#415](https://github.com/aws-powertools/powertools-lambda-typescript/issues/415) +* **build:** Update contributing.md and fix npm ci ([#417](https://github.com/aws-powertools/powertools-lambda-typescript/issues/417)) ([279ad98](https://github.com/aws-powertools/powertools-lambda-typescript/commit/279ad984f71d5b157a13cffeab52602f2c09c1f8)), closes [#415](https://github.com/aws-powertools/powertools-lambda-typescript/issues/415) [#415](https://github.com/aws-powertools/powertools-lambda-typescript/issues/415) ### Features -- **all:** Update to examples use released version (0.2.0) ([#405](https://github.com/aws-powertools/powertools-lambda-typescript/issues/405)) ([d5e0620](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d5e0620473f31d0839c027a76a88dcdcb98c84de)) +* **all:** Update to examples use released version (0.2.0) ([#405](https://github.com/aws-powertools/powertools-lambda-typescript/issues/405)) ([d5e0620](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d5e0620473f31d0839c027a76a88dcdcb98c84de)) # 0.2.0 (2022-01-05) ### Features -- _logger:_ beta release (#24 (https://github.com/aws-powertools/powertools-lambda-python/issues/24)) +* _logger:_ beta release (#24 ()) -### Contributor List: +### Contributor List @alan-churley, @bahrmichael, @dreamorosi, @flochaz, @heitorlessa, @ijemmy and @saragerion diff --git a/packages/logger/package.json b/packages/logger/package.json index 02b35a4fdb..8d8c78cb99 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/logger", - "version": "2.23.0", + "version": "2.24.0", "description": "The logging package for the Powertools for AWS Lambda (TypeScript) library", "author": { "name": "Amazon Web Services", @@ -76,7 +76,7 @@ "@types/lodash.merge": "^4.6.9" }, "peerDependencies": { - "@aws-lambda-powertools/jmespath": "2.x", + "@aws-lambda-powertools/jmespath": "2.24.0", "@middy/core": "4.x || 5.x || 6.x" }, "peerDependenciesMeta": { @@ -98,7 +98,7 @@ "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" }, "dependencies": { - "@aws-lambda-powertools/commons": "2.23.0", + "@aws-lambda-powertools/commons": "2.24.0", "lodash.merge": "^4.6.2" }, "keywords": [ diff --git a/packages/logger/src/Logger.ts b/packages/logger/src/Logger.ts index 139839abcf..c62d91d0b7 100644 --- a/packages/logger/src/Logger.ts +++ b/packages/logger/src/Logger.ts @@ -1,6 +1,6 @@ import { Console } from 'node:console'; import { randomInt } from 'node:crypto'; -import { Utility, isNullOrUndefined } from '@aws-lambda-powertools/commons'; +import { isNullOrUndefined, Utility } from '@aws-lambda-powertools/commons'; import type { AsyncHandler, HandlerMethodDecorator, @@ -26,10 +26,10 @@ import type { InjectLambdaContextOptions, LogAttributes, LogFunction, + LoggerInterface, LogItemExtraInput, LogItemMessage, LogLevel, - LoggerInterface, } from './types/Logger.js'; import type { LogKeys, @@ -545,12 +545,7 @@ class Logger extends Utility implements LoggerInterface { options?: InjectLambdaContextOptions ): void { logger.addContext(context); - - let shouldLogEvent = undefined; - if (options && Object.hasOwn(options, 'logEvent')) { - shouldLogEvent = options.logEvent; - } - logger.logEventIfEnabled(event, shouldLogEvent); + logger.logEventIfEnabled(event, options?.logEvent); } /* v8 ignore stop */ /** diff --git a/packages/logger/src/formatter/LogFormatter.ts b/packages/logger/src/formatter/LogFormatter.ts index d63c5f4572..9bae4fbaa4 100644 --- a/packages/logger/src/formatter/LogFormatter.ts +++ b/packages/logger/src/formatter/LogFormatter.ts @@ -1,6 +1,6 @@ import type { EnvironmentVariablesService } from '../config/EnvironmentVariablesService.js'; -import type { LogAttributes } from '../types/Logger.js'; import type { LogFormatterOptions } from '../types/formatters.js'; +import type { LogAttributes } from '../types/Logger.js'; import type { UnformattedAttributes } from '../types/logKeys.js'; import type { LogItem } from './LogItem.js'; @@ -120,10 +120,7 @@ abstract class LogFormatter { this.envVarsService?.isDevMode() && typeof stack === 'string' ? stack?.split('\n') : stack, - cause: - error.cause instanceof Error - ? this.formatError(error.cause) - : error.cause, + cause: cause instanceof Error ? this.formatError(cause) : cause, }; for (const key in error) { if ( diff --git a/packages/logger/src/middleware/middy.ts b/packages/logger/src/middleware/middy.ts index fe36bfaf18..3bd10004ac 100644 --- a/packages/logger/src/middleware/middy.ts +++ b/packages/logger/src/middleware/middy.ts @@ -3,8 +3,8 @@ import type { MiddlewareLikeObj, MiddyLikeRequest, } from '@aws-lambda-powertools/commons/types'; -import { Logger } from '../Logger.js'; import { UncaughtErrorLogMessage } from '../constants.js'; +import { Logger } from '../Logger.js'; import type { InjectLambdaContextOptions } from '../types/Logger.js'; /** diff --git a/packages/logger/tests/e2e/advancedUses.test.ts b/packages/logger/tests/e2e/advancedUses.test.ts index 6682042226..6592e08204 100644 --- a/packages/logger/tests/e2e/advancedUses.test.ts +++ b/packages/logger/tests/e2e/advancedUses.test.ts @@ -1,8 +1,8 @@ import { join } from 'node:path'; import { + invokeFunction, TestInvocationLogs, TestStack, - invokeFunction, } from '@aws-lambda-powertools/testing-utils'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; import { LoggerTestNodejsFunction } from '../helpers/resources.js'; @@ -104,7 +104,7 @@ describe('Logger E2E - Advanced uses', () => { try { JSON.parse(log); return true; - } catch (error) { + } catch { return false; } }); diff --git a/packages/logger/tests/e2e/basicFeatures.middy.test.FunctionCode.ts b/packages/logger/tests/e2e/basicFeatures.middy.test.FunctionCode.ts index 4db33bef6b..258c89299b 100644 --- a/packages/logger/tests/e2e/basicFeatures.middy.test.FunctionCode.ts +++ b/packages/logger/tests/e2e/basicFeatures.middy.test.FunctionCode.ts @@ -26,7 +26,10 @@ const logger = new Logger({ }, }); -const testFunction = async (event: TestEvent, context: Context): TestOutput => { +const testFunction = async ( + _event: TestEvent, + context: Context +): TestOutput => { // Test feature 1: Context data injection (all logs should have the same context data) // Test feature 2: Event log (this log should have the event data) // Test feature 3: Log level filtering (log level is set to INFO) diff --git a/packages/logger/tests/e2e/basicFeatures.middy.test.ts b/packages/logger/tests/e2e/basicFeatures.middy.test.ts index 04a6eb5200..81071435b8 100644 --- a/packages/logger/tests/e2e/basicFeatures.middy.test.ts +++ b/packages/logger/tests/e2e/basicFeatures.middy.test.ts @@ -1,17 +1,17 @@ import { join } from 'node:path'; import { + invokeFunction, TestInvocationLogs, TestStack, - invokeFunction, } from '@aws-lambda-powertools/testing-utils'; import type { APIGatewayAuthorizerResult } from 'aws-lambda'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; import { LoggerTestNodejsFunction } from '../helpers/resources.js'; import { + commonEnvironmentVars, RESOURCE_NAME_PREFIX, STACK_OUTPUT_LOG_GROUP, XRAY_TRACE_ID_REGEX, - commonEnvironmentVars, } from './constants.js'; describe('Logger E2E tests, basic functionalities middy usage', () => { diff --git a/packages/logger/tests/e2e/childLogger.manual.test.ts b/packages/logger/tests/e2e/childLogger.manual.test.ts index 57dd63c926..cc90c4be84 100644 --- a/packages/logger/tests/e2e/childLogger.manual.test.ts +++ b/packages/logger/tests/e2e/childLogger.manual.test.ts @@ -1,15 +1,15 @@ import { join } from 'node:path'; import { + invokeFunction, TestInvocationLogs, TestStack, - invokeFunction, } from '@aws-lambda-powertools/testing-utils'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; import { LoggerTestNodejsFunction } from '../helpers/resources.js'; import { + commonEnvironmentVars, RESOURCE_NAME_PREFIX, STACK_OUTPUT_LOG_GROUP, - commonEnvironmentVars, } from './constants.js'; describe('Logger E2E tests, child logger', () => { diff --git a/packages/logger/tests/e2e/logEventEnvVarSetting.middy.test.ts b/packages/logger/tests/e2e/logEventEnvVarSetting.middy.test.ts index 3a3efe2609..63d1ed86ad 100644 --- a/packages/logger/tests/e2e/logEventEnvVarSetting.middy.test.ts +++ b/packages/logger/tests/e2e/logEventEnvVarSetting.middy.test.ts @@ -1,8 +1,8 @@ import { join } from 'node:path'; import { + invokeFunction, TestInvocationLogs, TestStack, - invokeFunction, } from '@aws-lambda-powertools/testing-utils'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; import { LoggerTestNodejsFunction } from '../helpers/resources.js'; diff --git a/packages/logger/tests/e2e/sampleRate.decorator.test.ts b/packages/logger/tests/e2e/sampleRate.decorator.test.ts index d6e848f06e..2be3ea594a 100644 --- a/packages/logger/tests/e2e/sampleRate.decorator.test.ts +++ b/packages/logger/tests/e2e/sampleRate.decorator.test.ts @@ -1,9 +1,9 @@ import { randomUUID } from 'node:crypto'; import { join } from 'node:path'; import { + invokeFunction, TestInvocationLogs, TestStack, - invokeFunction, } from '@aws-lambda-powertools/testing-utils'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; import { LoggerTestNodejsFunction } from '../helpers/resources.js'; diff --git a/packages/logger/tests/tsconfig.json b/packages/logger/tests/tsconfig.json index 195239b807..39f442212e 100644 --- a/packages/logger/tests/tsconfig.json +++ b/packages/logger/tests/tsconfig.json @@ -4,9 +4,5 @@ "rootDir": "../../", "noEmit": true }, - "include": [ - "../../testing/src/setupEnv.ts", - "../src/**/*", - "./**/*" - ] -} \ No newline at end of file + "include": ["../../testing/src/setupEnv.ts", "../src/**/*", "./**/*"] +} diff --git a/packages/logger/tests/unit/formatters.test.ts b/packages/logger/tests/unit/formatters.test.ts index 0d2d218c21..19cfb2685e 100644 --- a/packages/logger/tests/unit/formatters.test.ts +++ b/packages/logger/tests/unit/formatters.test.ts @@ -4,9 +4,9 @@ import { EnvironmentVariablesService } from '../../src/config/EnvironmentVariabl import { PowertoolsLogFormatter } from '../../src/formatter/PowertoolsLogFormatter.js'; import { LogFormatter, + Logger, LogItem, LogLevelThreshold, - Logger, } from '../../src/index.js'; import type { CustomJsonReplacerFn, @@ -15,7 +15,6 @@ import type { } from '../../src/types/Logger.js'; import type { LogKey, UnformattedAttributes } from '../../src/types/logKeys.js'; -const fileNameRegexp = new RegExp(/index.js:\d+$/); const fileNameRegexpWithLine = new RegExp(/formatters.test.ts:\d+:\d+/); const formatter = new PowertoolsLogFormatter(); const formatterWithEnv = new PowertoolsLogFormatter({ diff --git a/packages/logger/tests/unit/initializeLogger.test.ts b/packages/logger/tests/unit/initializeLogger.test.ts index e133ae71f0..2a1a53c76b 100644 --- a/packages/logger/tests/unit/initializeLogger.test.ts +++ b/packages/logger/tests/unit/initializeLogger.test.ts @@ -1,6 +1,6 @@ -import { type Mock, beforeEach, describe, expect, it, vi } from 'vitest'; -import { Logger } from '../../src/Logger.js'; +import { beforeEach, describe, expect, it, type Mock, vi } from 'vitest'; import { LogJsonIndent, LogLevel } from '../../src/constants.js'; +import { Logger } from '../../src/Logger.js'; describe('Log levels', () => { const ENVIRONMENT_VARIABLES = process.env; diff --git a/packages/logger/tests/unit/injectLambdaContext.test.ts b/packages/logger/tests/unit/injectLambdaContext.test.ts index 03dec2cb66..606ce60ca2 100644 --- a/packages/logger/tests/unit/injectLambdaContext.test.ts +++ b/packages/logger/tests/unit/injectLambdaContext.test.ts @@ -2,8 +2,8 @@ import context from '@aws-lambda-powertools/testing-utils/context'; import middy from '@middy/core'; import type { Context } from 'aws-lambda'; import { beforeEach, describe, expect, it, vi } from 'vitest'; -import { Logger } from '../../src/Logger.js'; import { search } from '../../src/correlationId.js'; +import { Logger } from '../../src/Logger.js'; import { injectLambdaContext } from '../../src/middleware/middy.js'; const event = { diff --git a/packages/logger/tests/unit/logBuffer.test.ts b/packages/logger/tests/unit/logBuffer.test.ts index ebe7d838c2..550e92f911 100644 --- a/packages/logger/tests/unit/logBuffer.test.ts +++ b/packages/logger/tests/unit/logBuffer.test.ts @@ -1,9 +1,9 @@ import context from '@aws-lambda-powertools/testing-utils/context'; import type { Context } from 'aws-lambda'; import middy from 'middy5'; -import { type Mock, beforeEach, describe, expect, it, vi } from 'vitest'; -import { Logger } from '../../src/Logger.js'; +import { beforeEach, describe, expect, it, type Mock, vi } from 'vitest'; import { LogLevel, UncaughtErrorLogMessage } from '../../src/constants.js'; +import { Logger } from '../../src/Logger.js'; import { injectLambdaContext } from '../../src/middleware/middy.js'; describe('Buffer logs', () => { diff --git a/packages/logger/tests/unit/logEvent.test.ts b/packages/logger/tests/unit/logEvent.test.ts index 17140c238c..85f7e40728 100644 --- a/packages/logger/tests/unit/logEvent.test.ts +++ b/packages/logger/tests/unit/logEvent.test.ts @@ -86,7 +86,7 @@ describe('Log event', () => { const logger = new Logger(); class Test { @logger.injectLambdaContext({ logEvent: true }) - async handler(event: unknown, context: Context) { + async handler(event: unknown, _context: Context) { return event; } } diff --git a/packages/logger/tests/unit/logLevels.test.ts b/packages/logger/tests/unit/logLevels.test.ts index 04aa73e192..af28510dad 100644 --- a/packages/logger/tests/unit/logLevels.test.ts +++ b/packages/logger/tests/unit/logLevels.test.ts @@ -1,6 +1,6 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'; -import { Logger } from '../../src/Logger.js'; import { LogLevel, LogLevelThreshold } from '../../src/constants.js'; +import { Logger } from '../../src/Logger.js'; import type { ConfigServiceInterface } from '../../src/types/ConfigServiceInterface.js'; import type { LogFunction, diff --git a/packages/logger/tests/unit/sampling.test.ts b/packages/logger/tests/unit/sampling.test.ts index 2179e4d041..0373329b71 100644 --- a/packages/logger/tests/unit/sampling.test.ts +++ b/packages/logger/tests/unit/sampling.test.ts @@ -1,6 +1,6 @@ import { beforeEach, describe, expect, it } from 'vitest'; import { EnvironmentVariablesService } from '../../src/config/EnvironmentVariablesService.js'; -import { LogLevel, LogLevelThreshold, Logger } from '../../src/index.js'; +import { Logger, LogLevel, LogLevelThreshold } from '../../src/index.js'; class CustomConfigService extends EnvironmentVariablesService { #sampleRateValue = 1; diff --git a/packages/logger/tests/unit/workingWithkeys.test.ts b/packages/logger/tests/unit/workingWithkeys.test.ts index e4d4bbc1ec..45a13bff3e 100644 --- a/packages/logger/tests/unit/workingWithkeys.test.ts +++ b/packages/logger/tests/unit/workingWithkeys.test.ts @@ -478,7 +478,7 @@ describe('Working with keys', () => { }); class Test { @logger.injectLambdaContext({ resetKeys: true }) - async handler(addKey: boolean, context: Context) { + async handler(addKey: boolean, _context: Context) { if (addKey) { logger.appendKeys({ foo: 'baz', diff --git a/packages/logger/tsconfig.cjs.json b/packages/logger/tsconfig.cjs.json index 7d570c8dbe..a8fadd417f 100644 --- a/packages/logger/tsconfig.cjs.json +++ b/packages/logger/tsconfig.cjs.json @@ -7,7 +7,5 @@ "rootDir": "./src", "tsBuildInfoFile": ".tsbuildinfo/cjs.json" }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/logger/tsconfig.json b/packages/logger/tsconfig.json index 204ff253d4..e1c2fb1dc4 100644 --- a/packages/logger/tsconfig.json +++ b/packages/logger/tsconfig.json @@ -8,7 +8,5 @@ "composite": true, "declaration": true }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/metrics/CHANGELOG.md b/packages/metrics/CHANGELOG.md index 2d39e677ec..e1970be261 100644 --- a/packages/metrics/CHANGELOG.md +++ b/packages/metrics/CHANGELOG.md @@ -1,288 +1,159 @@ # Change Log -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.24.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.23.0...v2.24.0) (2025-07-15) -# [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) - -**Note:** Version bump only for package @aws-lambda-powertools/metrics +### Improvements +- optimize `addDimensions` method to avoid O(n²) complexity ([#4156](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4156)) ([3982b4a](https://github.com/aws-powertools/powertools-lambda-typescript/commit/3982b4a6b25e82fa1b5001c73d238cf62eda1137)) +### Bug Fixes +- addDimensions() documentation and tests ([#3964](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3964)) ([a801636](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a80163614e4a0ef7106beaa5cf91161d50a09fea)) +# [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) +**Note:** Version bump only for package @aws-lambda-powertools/metrics # [2.22.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.21.0...v2.22.0) (2025-06-20) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - # [2.21.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.20.0...v2.21.0) (2025-06-03) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - # [2.20.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.1...v2.20.0) (2025-05-20) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - ## [2.19.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.0...v2.19.1) (2025-05-05) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - # [2.19.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.18.0...v2.19.0) (2025-04-24) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - # [2.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.17.0...v2.18.0) (2025-04-07) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - # [2.17.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.16.0...v2.17.0) (2025-03-25) - ### Features * **metrics:** allow setting functionName via constructor parameter and environment variable ([#3696](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3696)) ([3176fa0](https://github.com/aws-powertools/powertools-lambda-typescript/commit/3176fa08e1886d5c86e7b327134cc988b82cf8d8)) - - - - # [2.16.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.15.0...v2.16.0) (2025-03-07) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - # [2.15.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.14.0...v2.15.0) (2025-02-25) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - # [2.14.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.1...v2.14.0) (2025-02-10) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - ## [2.13.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.0...v2.13.1) (2025-01-28) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - # [2.13.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.12.0...v2.13.0) (2025-01-14) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - # [2.12.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.11.0...v2.12.0) (2024-12-17) - ### Features * **metrics:** disable metrics with `POWERTOOLS_METRICS_DISABLED` ([#3351](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3351)) ([7e8578e](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7e8578e630218c9a987754bf789895ab63c3547f)) * **metrics:** warn when overwriting dimension ([#3352](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3352)) ([12f3e44](https://github.com/aws-powertools/powertools-lambda-typescript/commit/12f3e448d8104b08518370a71db12646dededa4f)) - - - - # [2.11.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.10.0...v2.11.0) (2024-11-20) - ### Bug Fixes * **metrics:** skip empty string dimension values ([#3319](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3319)) ([924d49d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/924d49dcac8cc999782db51e61d8e854b752cd5c)) - ### Features * **metrics:** ability to set custom timestamp with `setTimestamp` for metrics ([#3310](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3310)) ([0fb94c3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/0fb94c38cbead6333ff4a17354c81ce73fe51afd)) * **metrics:** add ability to pass custom logger ([#3057](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3057)) ([a531b90](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a531b90031826970673eb8bfad78dee6edd0a359)) - - - - # [2.10.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.9.0...v2.10.0) (2024-10-22) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - # [2.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.8.0...v2.9.0) (2024-10-07) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - # [2.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.7.0...v2.8.0) (2024-09-16) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - # [2.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.6.0...v2.7.0) (2024-08-08) - ### Features * **metrics:** add unit None for CloudWatch EMF Metrics ([#2904](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2904)) ([fa27cba](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fa27cba5ffdb9d123b25d206c189ad17eeb8b44b)) - - - - # [2.6.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.5.0...v2.6.0) (2024-07-25) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - # [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) - ### Features * **internal:** support Middy.js 5.x ([#2748](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2748)) ([1d7ad61](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1d7ad61a569a4b1421dbe1754b0179f676cfede7)) * **maintenance:** drop support for Node.js 16.x ([#2717](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2717)) ([e4eee73](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e4eee73770ffccead9212a566335ec256a31af7d)) - - - - # [2.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.2.0...v2.3.0) (2024-06-27) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - # [2.2.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.1...v2.2.0) (2024-06-13) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - ## [2.1.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.0...v2.1.1) (2024-05-14) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - # [2.1.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.0.4...v2.1.0) (2024-04-17) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - ## 2.0.4 (2024-04-10) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - ## 2.0.3 (2024-03-15) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - ## 2.0.2 (2024-03-05) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - - ## 2.0.1 (2024-03-04) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - # [2.0.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.18.1...v2.0.0) (2024-03-04) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - ## 1.18.1 (2024-02-20) **Note:** Version bump only for package @aws-lambda-powertools/metrics - - - - ## [1.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.17.0...v1.18.0) (2024-01-26) **Note:** Version bump only for package @aws-lambda-powertools/metrics @@ -299,14 +170,14 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **maintenance:** add support for nodejs20.x runtime ([#1790](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1790)) ([6b9b1bc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b9b1bcb9baf4b3d8e0e5ec6709594aca09bb033)) -- **metrics:** log directly to stdout ([#1786](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1786)) ([75dc5b1](https://github.com/aws-powertools/powertools-lambda-typescript/commit/75dc5b1e16944416a287628c50ec4a0cf82c3023)) +* **maintenance:** add support for nodejs20.x runtime ([#1790](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1790)) ([6b9b1bc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b9b1bcb9baf4b3d8e0e5ec6709594aca09bb033)) +* **metrics:** log directly to stdout ([#1786](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1786)) ([75dc5b1](https://github.com/aws-powertools/powertools-lambda-typescript/commit/75dc5b1e16944416a287628c50ec4a0cf82c3023)) ## [1.14.2](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.14.1...v1.14.2) (2023-11-03) ### Bug Fixes -- **metrics:** deduplicate dimensions when serialising ([#1780](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1780)) ([8181b48](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8181b481ba96fa7a91959ff2d40bdedfe80b451b)) +* **metrics:** deduplicate dimensions when serialising ([#1780](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1780)) ([8181b48](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8181b481ba96fa7a91959ff2d40bdedfe80b451b)) ## [1.14.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.14.0...v1.14.1) (2023-10-31) @@ -316,13 +187,13 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **layers:** add `arm64` to integration test matrix ([#1720](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1720)) ([61ad5ac](https://github.com/aws-powertools/powertools-lambda-typescript/commit/61ad5ac3bcf7742684aeec28553ec294696f3301)) +* **layers:** add `arm64` to integration test matrix ([#1720](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1720)) ([61ad5ac](https://github.com/aws-powertools/powertools-lambda-typescript/commit/61ad5ac3bcf7742684aeec28553ec294696f3301)) ## [1.13.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.13.0...v1.13.1) (2023-09-21) ### Bug Fixes -- **maintenance:** remove upper peer dependency Middy ([#1705](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1705)) ([df21ec8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/df21ec8761b1be511c13c28fedd41bf0e2851061)) +* **maintenance:** remove upper peer dependency Middy ([#1705](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1705)) ([df21ec8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/df21ec8761b1be511c13c28fedd41bf0e2851061)) # [1.13.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.12.1...v1.13.0) (2023-09-18) @@ -348,11 +219,11 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- **metrics:** flush metrics when data points array reaches max size ([#1548](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1548)) ([24c247c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/24c247c39c0ac29774ac3fcf09902916f3936e1e)) +* **metrics:** flush metrics when data points array reaches max size ([#1548](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1548)) ([24c247c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/24c247c39c0ac29774ac3fcf09902916f3936e1e)) ### Features -- **metrics:** publish metrics when other middlewares return early ([#1546](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1546)) ([58b0877](https://github.com/aws-powertools/powertools-lambda-typescript/commit/58b087713814f1c5f56a86aa815d04372e98ebd0)) +* **metrics:** publish metrics when other middlewares return early ([#1546](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1546)) ([58b0877](https://github.com/aws-powertools/powertools-lambda-typescript/commit/58b087713814f1c5f56a86aa815d04372e98ebd0)) # [1.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.8.0...v1.9.0) (2023-06-09) @@ -362,13 +233,13 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **metrics:** log warning on empty metrics ([#1397](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1397)) ([31ae936](https://github.com/aws-powertools/powertools-lambda-typescript/commit/31ae936831177f58edff43ce3850ed13c964fc87)) +* **metrics:** log warning on empty metrics ([#1397](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1397)) ([31ae936](https://github.com/aws-powertools/powertools-lambda-typescript/commit/31ae936831177f58edff43ce3850ed13c964fc87)) # [1.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.6.0...v1.7.0) (2023-03-20) ### Features -- **metrics:** support high resolution metrics ([#1369](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1369)) ([79a321b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/79a321b199ef51a024dc25b83673baf2eb03de69)) +* **metrics:** support high resolution metrics ([#1369](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1369)) ([79a321b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/79a321b199ef51a024dc25b83673baf2eb03de69)) # [1.6.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.5.1...v1.6.0) (2023-03-02) @@ -386,28 +257,28 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- **metrics:** store service name in defaultDimensions to avoid clearing it ([#1146](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1146)) ([a979202](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a979202ae0563f8ce00dee98bbf15d0bcfcfd3cc)) +* **metrics:** store service name in defaultDimensions to avoid clearing it ([#1146](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1146)) ([a979202](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a979202ae0563f8ce00dee98bbf15d0bcfcfd3cc)) # [1.4.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.3.0...v1.4.0) (2022-10-27) ### Bug Fixes -- **metrics:** metadata and dimensions not cleared on publish ([#1129](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1129)) ([b209c30](https://github.com/aws-powertools/powertools-lambda-typescript/commit/b209c30df92da07875f204f7f211294feea729db)) +* **metrics:** metadata and dimensions not cleared on publish ([#1129](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1129)) ([b209c30](https://github.com/aws-powertools/powertools-lambda-typescript/commit/b209c30df92da07875f204f7f211294feea729db)) ### Features -- **all:** moved EnvService to commons + exposed getXrayTraceId in tracer ([#1123](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1123)) ([c8e3c15](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c8e3c15b64142ebe6f43835a5917ecba26293a32)) +* **all:** moved EnvService to commons + exposed getXrayTraceId in tracer ([#1123](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1123)) ([c8e3c15](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c8e3c15b64142ebe6f43835a5917ecba26293a32)) # [1.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.2.1...v1.3.0) (2022-10-17) ### Bug Fixes -- **all:** update version command to use lint-fix ([#1119](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1119)) ([6f14fb3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6f14fb3229882b1dd0c20d18c87a542993432da9)) -- captureColdStartMetric and throwOnEmptyMetrics when set to false was interpreted as true ([#1090](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1090)) ([127aad4](https://github.com/aws-powertools/powertools-lambda-typescript/commit/127aad4698412d72368c093812dd4034839119ca)) +* **all:** update version command to use lint-fix ([#1119](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1119)) ([6f14fb3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6f14fb3229882b1dd0c20d18c87a542993432da9)) +* captureColdStartMetric and throwOnEmptyMetrics when set to false was interpreted as true ([#1090](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1090)) ([127aad4](https://github.com/aws-powertools/powertools-lambda-typescript/commit/127aad4698412d72368c093812dd4034839119ca)) ### Reverts -- Revert "chore(release): v1.3.0 [skip ci]" ([237b99f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/237b99f9f6eff5e6e26d779603cf13cd4422c156)) +* Revert "chore(release): v1.3.0 [skip ci]" ([237b99f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/237b99f9f6eff5e6e26d779603cf13cd4422c156)) ## [1.2.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.2.0...v1.2.1) (2022-08-25) @@ -417,7 +288,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **metrics:** increase maximum dimensions to 29 ([#1072](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1072)) ([7b9a027](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7b9a0278ccf801a521cab3f74372a4748231fd11)) +* **metrics:** increase maximum dimensions to 29 ([#1072](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1072)) ([7b9a027](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7b9a0278ccf801a521cab3f74372a4748231fd11)) ## [1.1.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.1.0...v1.1.1) (2022-08-18) @@ -443,8 +314,8 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Reverts -- Revert "chore(release): v0.12.0-rc.0 [skip ci]" ([9397f1d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9397f1d3624eb0bfbeb5e4c2702ae51e558a5b4a)) -- Revert "chore(release): v0.12.0-rc.0 [skip ci]" (#1017) ([51c18da](https://github.com/aws-powertools/powertools-lambda-typescript/commit/51c18da20db434f8b12f320e5074e3e0a146046e)), closes [#1017](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1017) +* Revert "chore(release): v0.12.0-rc.0 [skip ci]" ([9397f1d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9397f1d3624eb0bfbeb5e4c2702ae51e558a5b4a)) +* Revert "chore(release): v0.12.0-rc.0 [skip ci]" (#1017) ([51c18da](https://github.com/aws-powertools/powertools-lambda-typescript/commit/51c18da20db434f8b12f320e5074e3e0a146046e)), closes [#1017](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1017) ## [0.11.1-rc.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.11.0...v0.11.1-rc.0) (2022-06-24) @@ -458,7 +329,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **all:** nodejs16x support ([#877](https://github.com/aws-powertools/powertools-lambda-typescript/issues/877)) ([d2b13c9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d2b13c945adb1a74b7c5f76d45f28a6979ce6429)) +* **all:** nodejs16x support ([#877](https://github.com/aws-powertools/powertools-lambda-typescript/issues/877)) ([d2b13c9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d2b13c945adb1a74b7c5f76d45f28a6979ce6429)) ## [0.9.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.9.0...v0.9.1) (2022-05-24) @@ -484,13 +355,13 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- **tracer, metrics:** use polling instead of fixed wait in e2e tests ([#654](https://github.com/aws-powertools/powertools-lambda-typescript/issues/654)) ([6d4ab75](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6d4ab751bc98eb823d2a68b4973fa9f8405971a2)) +* **tracer, metrics:** use polling instead of fixed wait in e2e tests ([#654](https://github.com/aws-powertools/powertools-lambda-typescript/issues/654)) ([6d4ab75](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6d4ab751bc98eb823d2a68b4973fa9f8405971a2)) # [0.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.6.0...v0.7.0) (2022-03-08) ### Features -- **metrics:** adopted Utility class ([#548](https://github.com/aws-powertools/powertools-lambda-typescript/issues/548)) ([672e6a8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/672e6a82a2c66f99153c63a53e9d31481afd897a)) +* **metrics:** adopted Utility class ([#548](https://github.com/aws-powertools/powertools-lambda-typescript/issues/548)) ([672e6a8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/672e6a82a2c66f99153c63a53e9d31481afd897a)) # [0.6.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.5.1...v0.6.0) (2022-02-17) @@ -500,19 +371,19 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Reverts -- Revert "build(deps-dev): bump aws-cdk from 1.139.0 to 1.143.0 (#532)" (#544) ([e96c9ba](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e96c9ba5bd4f738e5ed7c5850e06856a8c69bff1)), closes [#532](https://github.com/aws-powertools/powertools-lambda-typescript/issues/532) [#544](https://github.com/aws-powertools/powertools-lambda-typescript/issues/544) -- Revert "build(deps-dev): bump @aws-cdk/aws-lambda-nodejs from 1.139.0 to 1.143.0 (#531)" (#545) ([7dffbd8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7dffbd8708555fcc9817ea4373ccf71b0aea3c89)), closes [#531](https://github.com/aws-powertools/powertools-lambda-typescript/issues/531) [#545](https://github.com/aws-powertools/powertools-lambda-typescript/issues/545) +* Revert "build(deps-dev): bump aws-cdk from 1.139.0 to 1.143.0 (#532)" (#544) ([e96c9ba](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e96c9ba5bd4f738e5ed7c5850e06856a8c69bff1)), closes [#532](https://github.com/aws-powertools/powertools-lambda-typescript/issues/532) [#544](https://github.com/aws-powertools/powertools-lambda-typescript/issues/544) +* Revert "build(deps-dev): bump @aws-cdk/aws-lambda-nodejs from 1.139.0 to 1.143.0 (#531)" (#545) ([7dffbd8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7dffbd8708555fcc9817ea4373ccf71b0aea3c89)), closes [#531](https://github.com/aws-powertools/powertools-lambda-typescript/issues/531) [#545](https://github.com/aws-powertools/powertools-lambda-typescript/issues/545) # [0.5.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.4.0...v0.5.0) (2022-01-26) ### Bug Fixes -- **examples:** fix errors in logger and metrics examples ([#509](https://github.com/aws-powertools/powertools-lambda-typescript/issues/509)) ([c19b47c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c19b47cb4cdb71e0ae404e9302226256d02fb7d5)) -- **logger|metrics:** properly return decorated class ([#489](https://github.com/aws-powertools/powertools-lambda-typescript/issues/489)) ([014c5bd](https://github.com/aws-powertools/powertools-lambda-typescript/commit/014c5bd7d5c807064af8f04c16d297a8fe3bc0d9)) +* **examples:** fix errors in logger and metrics examples ([#509](https://github.com/aws-powertools/powertools-lambda-typescript/issues/509)) ([c19b47c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c19b47cb4cdb71e0ae404e9302226256d02fb7d5)) +* **logger|metrics:** properly return decorated class ([#489](https://github.com/aws-powertools/powertools-lambda-typescript/issues/489)) ([014c5bd](https://github.com/aws-powertools/powertools-lambda-typescript/commit/014c5bd7d5c807064af8f04c16d297a8fe3bc0d9)) ### Features -- **all:** make `@middy/core` optional ([#511](https://github.com/aws-powertools/powertools-lambda-typescript/issues/511)) ([1107f96](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1107f96e9b4c678d34ee36757366f150d99be4dc)) +* **all:** make `@middy/core` optional ([#511](https://github.com/aws-powertools/powertools-lambda-typescript/issues/511)) ([1107f96](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1107f96e9b4c678d34ee36757366f150d99be4dc)) # [0.4.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.3.3...v0.4.0) (2022-01-20) @@ -530,26 +401,26 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- **all:** fix latest release broken by change of npm pack result on common ([#470](https://github.com/aws-powertools/powertools-lambda-typescript/issues/470)) ([2c3df93](https://github.com/aws-powertools/powertools-lambda-typescript/commit/2c3df9378ac191f6da6cb5f458f6227d6466cafa)), closes [#417](https://github.com/aws-powertools/powertools-lambda-typescript/issues/417) +* **all:** fix latest release broken by change of npm pack result on common ([#470](https://github.com/aws-powertools/powertools-lambda-typescript/issues/470)) ([2c3df93](https://github.com/aws-powertools/powertools-lambda-typescript/commit/2c3df9378ac191f6da6cb5f458f6227d6466cafa)), closes [#417](https://github.com/aws-powertools/powertools-lambda-typescript/issues/417) # [0.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.2.0...v0.3.0) (2022-01-14) ### Bug Fixes -- **build:** Fix linting issue and add linting to the pre-push hook ([#440](https://github.com/aws-powertools/powertools-lambda-typescript/issues/440)) ([e7bc53c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e7bc53c38b2a906c6952a83c5262db521ea468fb)) -- **build:** Update contributing.md and fix npm ci ([#417](https://github.com/aws-powertools/powertools-lambda-typescript/issues/417)) ([279ad98](https://github.com/aws-powertools/powertools-lambda-typescript/commit/279ad984f71d5b157a13cffeab52602f2c09c1f8)), closes [#415](https://github.com/aws-powertools/powertools-lambda-typescript/issues/415) [#415](https://github.com/aws-powertools/powertools-lambda-typescript/issues/415) -- **metrics:** Rename purgeStoredMetrics() function usage in CDK example ([#424](https://github.com/aws-powertools/powertools-lambda-typescript/issues/424)) ([02f0eae](https://github.com/aws-powertools/powertools-lambda-typescript/commit/02f0eae2c378bd5562facf032fb94a25c69f66df)) +* **build:** Fix linting issue and add linting to the pre-push hook ([#440](https://github.com/aws-powertools/powertools-lambda-typescript/issues/440)) ([e7bc53c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e7bc53c38b2a906c6952a83c5262db521ea468fb)) +* **build:** Update contributing.md and fix npm ci ([#417](https://github.com/aws-powertools/powertools-lambda-typescript/issues/417)) ([279ad98](https://github.com/aws-powertools/powertools-lambda-typescript/commit/279ad984f71d5b157a13cffeab52602f2c09c1f8)), closes [#415](https://github.com/aws-powertools/powertools-lambda-typescript/issues/415) [#415](https://github.com/aws-powertools/powertools-lambda-typescript/issues/415) +* **metrics:** Rename purgeStoredMetrics() function usage in CDK example ([#424](https://github.com/aws-powertools/powertools-lambda-typescript/issues/424)) ([02f0eae](https://github.com/aws-powertools/powertools-lambda-typescript/commit/02f0eae2c378bd5562facf032fb94a25c69f66df)) ### Features -- **all:** Update to examples use released version (0.2.0) ([#405](https://github.com/aws-powertools/powertools-lambda-typescript/issues/405)) ([d5e0620](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d5e0620473f31d0839c027a76a88dcdcb98c84de)) +* **all:** Update to examples use released version (0.2.0) ([#405](https://github.com/aws-powertools/powertools-lambda-typescript/issues/405)) ([d5e0620](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d5e0620473f31d0839c027a76a88dcdcb98c84de)) # 0.2.0 (2022-01-05) ### Features -- _metrics:_ beta release (#25 (https://github.com/aws-powertools/powertools-lambda-python/issues/25)) +* _metrics:_ beta release (#25 ()) -### Contributor List: +### Contributor List @alan-churley, @bahrmichael, @dreamorosi, @flochaz, @heitorlessa, @ijemmy and @saragerion diff --git a/packages/metrics/package.json b/packages/metrics/package.json index 867e816627..42e920da35 100644 --- a/packages/metrics/package.json +++ b/packages/metrics/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/metrics", - "version": "2.23.0", + "version": "2.24.0", "description": "The metrics package for the Powertools for AWS Lambda (TypeScript) library", "author": { "name": "Amazon Web Services", @@ -65,7 +65,7 @@ "main": "./lib/cjs/index.js", "devDependencies": { "@aws-lambda-powertools/testing-utils": "file:../testing", - "@aws-sdk/client-cloudwatch": "^3.840.0", + "@aws-sdk/client-cloudwatch": "^3.844.0", "@types/promise-retry": "^1.1.3", "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.23.0" + "@aws-lambda-powertools/commons": "2.24.0" }, "keywords": [ "aws", diff --git a/packages/metrics/src/Metrics.ts b/packages/metrics/src/Metrics.ts index a3a743e96d..ff5974c1c3 100644 --- a/packages/metrics/src/Metrics.ts +++ b/packages/metrics/src/Metrics.ts @@ -1,5 +1,5 @@ import { Console } from 'node:console'; -import { Utility, isIntegerNumber } from '@aws-lambda-powertools/commons'; +import { isIntegerNumber, Utility } from '@aws-lambda-powertools/commons'; import type { GenericLogger, HandlerMethodDecorator, @@ -12,8 +12,8 @@ import { EMF_MAX_TIMESTAMP_FUTURE_AGE, EMF_MAX_TIMESTAMP_PAST_AGE, MAX_DIMENSION_COUNT, - MAX_METRICS_SIZE, MAX_METRIC_VALUES_SIZE, + MAX_METRICS_SIZE, MetricResolution as MetricResolutions, MetricUnit as MetricUnits, } from './constants.js'; @@ -24,9 +24,9 @@ import type { ExtraOptions, MetricDefinition, MetricResolution, - MetricUnit, MetricsInterface, MetricsOptions, + MetricUnit, StoredMetrics, } from './types/index.js'; @@ -154,6 +154,12 @@ class Metrics extends Utility implements MetricsInterface { */ private dimensions: Dimensions = {}; + /** + * Additional dimension sets for the current metrics context + * @default [] + */ + private dimensionSets: Dimensions[] = []; + /** * Service for accessing environment variables */ @@ -267,9 +273,35 @@ class Metrics extends Utility implements MetricsInterface { * @param dimensions - An object with key-value pairs of dimensions */ public addDimensions(dimensions: Dimensions): void { - for (const [name, value] of Object.entries(dimensions)) { - this.addDimension(name, value); + const newDimensionSet: Dimensions = {}; + for (const [key, value] of Object.entries(dimensions)) { + if (!value) { + this.#logger.warn( + `The dimension ${key} doesn't meet the requirements and won't be added. Ensure the dimension name and value are non empty strings` + ); + continue; + } + if ( + Object.hasOwn(this.dimensions, key) || + Object.hasOwn(this.defaultDimensions, key) || + Object.hasOwn(newDimensionSet, key) + ) { + this.#logger.warn( + `Dimension "${key}" has already been added. The previous value will be overwritten.` + ); + } + newDimensionSet[key] = value; + } + + const currentCount = this.getCurrentDimensionsCount(); + const newSetCount = Object.keys(newDimensionSet).length; + if (currentCount + newSetCount >= MAX_DIMENSION_COUNT) { + throw new RangeError( + `The number of metric dimensions must be lower than ${MAX_DIMENSION_COUNT}` + ); } + + this.dimensionSets.push(newDimensionSet); } /** @@ -447,6 +479,7 @@ class Metrics extends Utility implements MetricsInterface { */ public clearDimensions(): void { this.dimensions = {}; + this.dimensionSets = []; } /** @@ -692,26 +725,52 @@ class Metrics extends Utility implements MetricsInterface { {} ); - const dimensionNames = [ - ...new Set([ + const dimensionNames = []; + + const allDimensionKeys = new Set([ + ...Object.keys(this.defaultDimensions), + ...Object.keys(this.dimensions), + ]); + + if (Object.keys(this.dimensions).length > 0) { + dimensionNames.push([...allDimensionKeys]); + } + + for (const dimensionSet of this.dimensionSets) { + const dimensionSetKeys = new Set([ ...Object.keys(this.defaultDimensions), - ...Object.keys(this.dimensions), - ]), - ]; + ...Object.keys(dimensionSet), + ]); + dimensionNames.push([...dimensionSetKeys]); + } + + if ( + dimensionNames.length === 0 && + Object.keys(this.defaultDimensions).length > 0 + ) { + dimensionNames.push([...Object.keys(this.defaultDimensions)]); + } return { _aws: { - Timestamp: this.#timestamp ?? new Date().getTime(), + Timestamp: this.#timestamp ?? Date.now(), CloudWatchMetrics: [ { Namespace: this.namespace || DEFAULT_NAMESPACE, - Dimensions: [dimensionNames], + Dimensions: dimensionNames as [string[]], Metrics: metricDefinitions, }, ], }, ...this.defaultDimensions, ...this.dimensions, + // Merge all dimension sets efficiently by mutating the accumulator + ...this.dimensionSets.reduce((acc, dims) => { + for (const [key, value] of Object.entries(dims)) { + acc[key] = value; + } + return acc; + }, {} as Dimensions), ...metricValues, ...this.metadata, }; @@ -824,9 +883,14 @@ class Metrics extends Utility implements MetricsInterface { * Gets the current number of dimensions count. */ private getCurrentDimensionsCount(): number { + const dimensionSetsCount = this.dimensionSets.reduce( + (total, dimensionSet) => total + Object.keys(dimensionSet).length, + 0 + ); return ( Object.keys(this.dimensions).length + - Object.keys(this.defaultDimensions).length + Object.keys(this.defaultDimensions).length + + dimensionSetsCount ); } @@ -1043,7 +1107,7 @@ class Metrics extends Utility implements MetricsInterface { } const timestampMs = isDate ? timestamp.getTime() : timestamp; - const currentTime = new Date().getTime(); + const currentTime = Date.now(); const minValidTimestamp = currentTime - EMF_MAX_TIMESTAMP_PAST_AGE; const maxValidTimestamp = currentTime + EMF_MAX_TIMESTAMP_FUTURE_AGE; diff --git a/packages/metrics/src/index.ts b/packages/metrics/src/index.ts index 3db8841fd4..e68ba670d1 100644 --- a/packages/metrics/src/index.ts +++ b/packages/metrics/src/index.ts @@ -1,2 +1,2 @@ +export { MetricResolution, MetricUnit } from './constants.js'; export { Metrics } from './Metrics.js'; -export { MetricUnit, MetricResolution } from './constants.js'; diff --git a/packages/metrics/src/types/index.ts b/packages/metrics/src/types/index.ts index 6cb26881a1..ced7349ffd 100644 --- a/packages/metrics/src/types/index.ts +++ b/packages/metrics/src/types/index.ts @@ -1,13 +1,13 @@ +export type { ConfigServiceInterface } from './ConfigServiceInterface.js'; export type { - MetricsOptions, Dimensions, EmfOutput, ExtraOptions, - StoredMetrics, - StoredMetric, MetricDefinition, MetricResolution, - MetricUnit, MetricsInterface, + MetricsOptions, + MetricUnit, + StoredMetric, + StoredMetrics, } from './Metrics.js'; -export type { ConfigServiceInterface } from './ConfigServiceInterface.js'; diff --git a/packages/metrics/tests/e2e/basicFeatures.decorator.test.functionCode.ts b/packages/metrics/tests/e2e/basicFeatures.decorator.test.functionCode.ts index d2f4a391eb..aa098a4abf 100644 --- a/packages/metrics/tests/e2e/basicFeatures.decorator.test.functionCode.ts +++ b/packages/metrics/tests/e2e/basicFeatures.decorator.test.functionCode.ts @@ -1,6 +1,6 @@ import type { LambdaInterface } from '@aws-lambda-powertools/commons/types'; import type { Context } from 'aws-lambda'; -import { MetricUnit, Metrics } from '../../src/index.js'; +import { Metrics, MetricUnit } from '../../src/index.js'; import type { MetricUnit as MetricUnitType } from '../../src/types/index.js'; const namespace = process.env.EXPECTED_NAMESPACE ?? 'CdkExample'; diff --git a/packages/metrics/tests/e2e/basicFeatures.decorators.test.ts b/packages/metrics/tests/e2e/basicFeatures.decorators.test.ts index 39ce36248a..2858aec832 100644 --- a/packages/metrics/tests/e2e/basicFeatures.decorators.test.ts +++ b/packages/metrics/tests/e2e/basicFeatures.decorators.test.ts @@ -1,7 +1,7 @@ import { join } from 'node:path'; import { - TestStack, invokeFunction, + TestStack, } from '@aws-lambda-powertools/testing-utils'; import { CloudWatchClient, @@ -10,7 +10,7 @@ import { import { afterAll, beforeAll, describe, expect, it } from 'vitest'; import { getMetrics, sortDimensions } from '../helpers/metricsUtils.js'; import { MetricsTestNodejsFunction } from '../helpers/resources.js'; -import { RESOURCE_NAME_PREFIX, commonEnvironmentVars } from './constants.js'; +import { commonEnvironmentVars, RESOURCE_NAME_PREFIX } from './constants.js'; describe('Metrics E2E tests, basic features decorator usage', () => { const testStack = new TestStack({ @@ -92,7 +92,7 @@ describe('Metrics E2E tests, basic features decorator usage', () => { // Check coldstart metric value const adjustedStartTime = new Date(startTime.getTime() - 60 * 1000); - const endTime = new Date(new Date().getTime() + 60 * 1000); + const endTime = new Date(Date.now() + 60 * 1000); const coldStartMetricStat = await cloudwatchClient.send( new GetMetricStatisticsCommand({ Namespace: expectedNamespace, @@ -150,7 +150,7 @@ describe('Metrics E2E tests, basic features decorator usage', () => { // Check coldstart metric value const adjustedStartTime = new Date(startTime.getTime() - 3 * 60 * 1000); - const endTime = new Date(new Date().getTime() + 60 * 1000); + const endTime = new Date(Date.now() + 60 * 1000); const metricStat = await cloudwatchClient.send( new GetMetricStatisticsCommand({ Namespace: expectedNamespace, diff --git a/packages/metrics/tests/e2e/basicFeatures.manual.test.functionCode.ts b/packages/metrics/tests/e2e/basicFeatures.manual.test.functionCode.ts index 4091a2691a..e72736189d 100644 --- a/packages/metrics/tests/e2e/basicFeatures.manual.test.functionCode.ts +++ b/packages/metrics/tests/e2e/basicFeatures.manual.test.functionCode.ts @@ -1,5 +1,5 @@ import type { Context } from 'aws-lambda'; -import { MetricUnit, Metrics } from '../../src/index.js'; +import { Metrics, MetricUnit } from '../../src/index.js'; import type { MetricUnit as MetricUnitType } from '../../src/types/index.js'; const namespace = process.env.EXPECTED_NAMESPACE ?? 'CdkExample'; diff --git a/packages/metrics/tests/e2e/basicFeatures.manual.test.ts b/packages/metrics/tests/e2e/basicFeatures.manual.test.ts index 694d444847..1fb1e40528 100644 --- a/packages/metrics/tests/e2e/basicFeatures.manual.test.ts +++ b/packages/metrics/tests/e2e/basicFeatures.manual.test.ts @@ -1,7 +1,7 @@ import { join } from 'node:path'; import { - TestStack, invokeFunction, + TestStack, } from '@aws-lambda-powertools/testing-utils'; import { CloudWatchClient, @@ -10,7 +10,7 @@ import { import { afterAll, beforeAll, describe, expect, it } from 'vitest'; import { getMetrics, sortDimensions } from '../helpers/metricsUtils.js'; import { MetricsTestNodejsFunction } from '../helpers/resources.js'; -import { RESOURCE_NAME_PREFIX, commonEnvironmentVars } from './constants.js'; +import { commonEnvironmentVars, RESOURCE_NAME_PREFIX } from './constants.js'; describe('Metrics E2E tests, manual usage', () => { const testStack = new TestStack({ @@ -78,7 +78,7 @@ describe('Metrics E2E tests, manual usage', () => { // Check coldstart metric value const adjustedStartTime = new Date(startTime.getTime() - 60 * 1000); - const endTime = new Date(new Date().getTime() + 60 * 1000); + const endTime = new Date(Date.now() + 60 * 1000); const coldStartMetricStat = await cloudwatchClient.send( new GetMetricStatisticsCommand({ Namespace: expectedNamespace, @@ -136,7 +136,7 @@ describe('Metrics E2E tests, manual usage', () => { // Check coldstart metric value const adjustedStartTime = new Date(startTime.getTime() - 3 * 60 * 1000); - const endTime = new Date(new Date().getTime() + 60 * 1000); + const endTime = new Date(Date.now() + 60 * 1000); const metricStat = await cloudwatchClient.send( new GetMetricStatisticsCommand({ Namespace: expectedNamespace, diff --git a/packages/metrics/tests/tsconfig.json b/packages/metrics/tests/tsconfig.json index 76e267d72e..39f442212e 100644 --- a/packages/metrics/tests/tsconfig.json +++ b/packages/metrics/tests/tsconfig.json @@ -4,9 +4,5 @@ "rootDir": "../../", "noEmit": true }, - "include": [ - "../../testing/src/setupEnv.ts", - "../src/**/*", - "./**/*" - ] + "include": ["../../testing/src/setupEnv.ts", "../src/**/*", "./**/*"] } diff --git a/packages/metrics/tests/unit/coldStartMetric.test.ts b/packages/metrics/tests/unit/coldStartMetric.test.ts index e63ee9eb72..5dbcd61f11 100644 --- a/packages/metrics/tests/unit/coldStartMetric.test.ts +++ b/packages/metrics/tests/unit/coldStartMetric.test.ts @@ -1,6 +1,6 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'; import { COLD_START_METRIC, DEFAULT_NAMESPACE } from '../../src/constants.js'; -import { MetricUnit, Metrics } from '../../src/index.js'; +import { Metrics, MetricUnit } from '../../src/index.js'; describe('ColdStart metric', () => { const ENVIRONMENT_VARIABLES = process.env; diff --git a/packages/metrics/tests/unit/creatingMetrics.test.ts b/packages/metrics/tests/unit/creatingMetrics.test.ts index 2b5a84aeaf..c26ed5e66e 100644 --- a/packages/metrics/tests/unit/creatingMetrics.test.ts +++ b/packages/metrics/tests/unit/creatingMetrics.test.ts @@ -4,7 +4,7 @@ import { MAX_METRICS_SIZE, MetricResolution, } from '../../src/constants.js'; -import { MetricUnit, Metrics } from '../../src/index.js'; +import { Metrics, MetricUnit } from '../../src/index.js'; describe('Creating metrics', () => { const ENVIRONMENT_VARIABLES = process.env; diff --git a/packages/metrics/tests/unit/customTimestamp.test.ts b/packages/metrics/tests/unit/customTimestamp.test.ts index 59ffd4159e..61e3ffa221 100644 --- a/packages/metrics/tests/unit/customTimestamp.test.ts +++ b/packages/metrics/tests/unit/customTimestamp.test.ts @@ -4,7 +4,7 @@ import { EMF_MAX_TIMESTAMP_FUTURE_AGE, EMF_MAX_TIMESTAMP_PAST_AGE, } from '../../src/constants.js'; -import { MetricUnit, Metrics } from '../../src/index.js'; +import { Metrics, MetricUnit } from '../../src/index.js'; describe('Setting custom timestamp', () => { const ENVIRONMENT_VARIABLES = process.env; diff --git a/packages/metrics/tests/unit/dimensions.test.ts b/packages/metrics/tests/unit/dimensions.test.ts index fd5fbdb7c3..5b3a7c3df5 100644 --- a/packages/metrics/tests/unit/dimensions.test.ts +++ b/packages/metrics/tests/unit/dimensions.test.ts @@ -1,6 +1,6 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'; import { DEFAULT_NAMESPACE, MAX_DIMENSION_COUNT } from '../../src/constants.js'; -import { MetricUnit, Metrics } from '../../src/index.js'; +import { Metrics, MetricUnit } from '../../src/index.js'; describe('Working with dimensions', () => { const ENVIRONMENT_VARIABLES = process.env; @@ -14,6 +14,42 @@ describe('Working with dimensions', () => { vi.clearAllMocks(); }); + it('creates a new dimension set', () => { + // Prepare + const metrics = new Metrics({ + namespace: DEFAULT_NAMESPACE, + }); + + // Act + metrics.addDimension('environment', 'prod'); + + metrics.addDimensions({ + dimension1: '1', + dimension2: '2', + }); + + metrics.addMetric('foo', MetricUnit.Count, 1); + metrics.publishStoredMetrics(); + + // Assess + expect(console.log).toHaveEmittedEMFWith( + expect.objectContaining({ + environment: 'prod', + dimension1: '1', + dimension2: '2', + foo: 1, + }) + ); + expect(console.log).toHaveEmittedMetricWith( + expect.objectContaining({ + Dimensions: [ + ['service', 'environment'], + ['service', 'dimension1', 'dimension2'], + ], + }) + ); + }); + it('adds default dimensions to the metric via constructor', () => { // Prepare const metrics = new Metrics({ @@ -65,6 +101,45 @@ describe('Working with dimensions', () => { ); }); + it('handles dimension sets with default dimensions and overrides', () => { + // Prepare + const metrics = new Metrics({ + namespace: DEFAULT_NAMESPACE, + defaultDimensions: { + environment: 'prod', + region: 'us-east-1', + }, + }); + + // Act + // Add a dimension set that overrides one of the default dimensions + metrics.addDimensions({ + environment: 'staging', // This should override the default 'prod' value + feature: 'search', + }); + + metrics.addMetric('api_calls', MetricUnit.Count, 1); + metrics.publishStoredMetrics(); + + // Assess + expect(console.log).toHaveEmittedEMFWith( + expect.objectContaining({ + service: 'hello-world', + environment: 'staging', // Should use the overridden value + region: 'us-east-1', // Should keep the default value + feature: 'search', // Should add the new dimension + api_calls: 1, + }) + ); + expect(console.log).toHaveEmittedMetricWith( + expect.objectContaining({ + Dimensions: [ + ['service', 'environment', 'region', 'feature'], // Should include all dimensions + ], + }) + ); + }); + it('adds one dimension to the metric', () => { // Prepare const metrics = new Metrics({ @@ -257,12 +332,13 @@ describe('Working with dimensions', () => { }, }); - // Act & Assess - let i = 1; + // Act // We start with 2 dimensions because the default dimension & service name are already added - for (i = 2; i < MAX_DIMENSION_COUNT; i++) { + for (let i = 2; i < MAX_DIMENSION_COUNT; i++) { metrics.addDimension(`dimension-${i}`, 'test'); } + + // Assess expect(() => metrics.addDimension('extra', 'test')).toThrowError( `The number of metric dimensions must be lower than ${MAX_DIMENSION_COUNT}` ); @@ -279,11 +355,95 @@ describe('Working with dimensions', () => { for (let i = 1; i < MAX_DIMENSION_COUNT - 1; i++) { metrics.setDefaultDimensions({ [`dimension-${i}`]: 'test' }); } + + // Assess expect(() => metrics.setDefaultDimensions({ extra: 'test' })).toThrowError( 'Max dimension count hit' ); }); + it('throws when adding dimension sets would exceed the limit', () => { + // Prepare + const metrics = new Metrics({ + singleMetric: true, + defaultDimensions: { + environment: 'test', + }, + }); + + // Act + // We start with 2 dimensions because the default dimension & service name are already added + for (let i = 2; i < MAX_DIMENSION_COUNT; i++) { + metrics.addDimension(`dimension-${i}`, 'test'); + } + + // Assess + // Adding a dimension set with 3 dimensions would exceed the limit + expect(() => + metrics.addDimensions({ + 'dimension-extra-1': 'test', + 'dimension-extra-2': 'test', + 'dimension-extra-3': 'test', + }) + ).toThrowError( + `The number of metric dimensions must be lower than ${MAX_DIMENSION_COUNT}` + ); + }); + + it('handles dimension overrides across multiple dimension sets', () => { + // Prepare + const metrics = new Metrics({ + namespace: DEFAULT_NAMESPACE, + }); + + // Act + // First add a single dimension + metrics.addDimension('d', '3'); + + // First dimension set + metrics.addDimensions({ + a: '1', + b: '2', + }); + + // Second dimension set with some overlapping keys + metrics.addDimensions({ + a: '3', + c: '5', + d: '8', + }); + + // Third dimension set with more overlapping keys + metrics.addDimensions({ + b: '5', + d: '1', + }); + + metrics.addMetric('foo', MetricUnit.Count, 1); + metrics.publishStoredMetrics(); + + // Assess + expect(console.log).toHaveEmittedEMFWith( + expect.objectContaining({ + a: '3', // Last value from second set + b: '5', // Last value from third set + c: '5', // Only value from second set + d: '1', // Last value from third set (overriding both the initial d:3 and second set's d:8) + foo: 1, + }) + ); + expect(console.log).toHaveEmittedMetricWith( + expect.objectContaining({ + Dimensions: [ + ['service', 'd'], + ['service', 'a', 'b'], + ['service', 'a', 'c', 'd'], + ['service', 'b', 'd'], + ], + }) + ); + }); + it.each([ { value: undefined, name: 'undefined' }, { value: null, name: 'null' }, @@ -313,4 +473,70 @@ describe('Working with dimensions', () => { expect.not.objectContaining({ Dimensions: [['test']] }) ); }); + + it.each([ + { value: undefined, name: 'undefined' }, + { value: null, name: 'null' }, + { + value: '', + name: 'empty string', + }, + ])('skips invalid dimension values in addDimensions ($name)', ({ value }) => { + // Prepare + const metrics = new Metrics({ + singleMetric: true, + namespace: DEFAULT_NAMESPACE, + }); + + // Act & Assess + metrics.addDimensions({ + validDimension: 'valid', + invalidDimension: value as string, + }); + metrics.addMetric('test', MetricUnit.Count, 1); + metrics.publishStoredMetrics(); + + expect(console.warn).toHaveBeenCalledWith( + `The dimension invalidDimension doesn't meet the requirements and won't be added. Ensure the dimension name and value are non empty strings` + ); + expect(console.log).toHaveEmittedEMFWith( + expect.objectContaining({ validDimension: 'valid' }) + ); + expect(console.log).toHaveEmittedEMFWith( + expect.not.objectContaining({ invalidDimension: value }) + ); + }); + + it('warns when addDimensions overwrites existing dimensions', () => { + // Prepare + const metrics = new Metrics({ + namespace: DEFAULT_NAMESPACE, + defaultDimensions: { environment: 'prod' }, + }); + + // Act + metrics.addDimension('region', 'us-east-1'); + metrics.addDimensions({ + environment: 'staging', // overwrites default dimension + region: 'us-west-2', // overwrites regular dimension + newDim: 'value', + }); + metrics.addMetric('test', MetricUnit.Count, 1); + metrics.publishStoredMetrics(); + + // Assess + expect(console.warn).toHaveBeenCalledWith( + 'Dimension "environment" has already been added. The previous value will be overwritten.' + ); + expect(console.warn).toHaveBeenCalledWith( + 'Dimension "region" has already been added. The previous value will be overwritten.' + ); + expect(console.log).toHaveEmittedEMFWith( + expect.objectContaining({ + environment: 'staging', + region: 'us-west-2', + newDim: 'value', + }) + ); + }); }); diff --git a/packages/metrics/tests/unit/initializeMetrics.test.ts b/packages/metrics/tests/unit/initializeMetrics.test.ts index a6b4a62a9d..b1193e99da 100644 --- a/packages/metrics/tests/unit/initializeMetrics.test.ts +++ b/packages/metrics/tests/unit/initializeMetrics.test.ts @@ -1,6 +1,6 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'; import { COLD_START_METRIC, DEFAULT_NAMESPACE } from '../../src/constants.js'; -import { MetricUnit, Metrics } from '../../src/index.js'; +import { Metrics, MetricUnit } from '../../src/index.js'; import type { ConfigServiceInterface } from '../../src/types/index.js'; describe('Initialize Metrics', () => { diff --git a/packages/metrics/tests/unit/logMetrics.test.ts b/packages/metrics/tests/unit/logMetrics.test.ts index a0e2a33447..97c6ba7be9 100644 --- a/packages/metrics/tests/unit/logMetrics.test.ts +++ b/packages/metrics/tests/unit/logMetrics.test.ts @@ -3,7 +3,7 @@ import middy from '@middy/core'; import type { Context } from 'aws-lambda'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { COLD_START_METRIC, DEFAULT_NAMESPACE } from '../../src/constants.js'; -import { MetricUnit, Metrics } from '../../src/index.js'; +import { Metrics, MetricUnit } from '../../src/index.js'; import { logMetrics } from '../../src/middleware/middy.js'; const contextFunctionName = 'context-function-name'; diff --git a/packages/metrics/tests/unit/metadata.test.ts b/packages/metrics/tests/unit/metadata.test.ts index 7af4074de6..91cfa83b49 100644 --- a/packages/metrics/tests/unit/metadata.test.ts +++ b/packages/metrics/tests/unit/metadata.test.ts @@ -1,5 +1,5 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'; -import { MetricUnit, Metrics } from '../../src/index.js'; +import { Metrics, MetricUnit } from '../../src/index.js'; describe('Working with metadata', () => { const ENVIRONMENT_VARIABLES = process.env; diff --git a/packages/metrics/tsconfig.cjs.json b/packages/metrics/tsconfig.cjs.json index f81fe3fbd1..dfd6c269b2 100644 --- a/packages/metrics/tsconfig.cjs.json +++ b/packages/metrics/tsconfig.cjs.json @@ -7,7 +7,5 @@ "rootDir": "./src", "tsBuildInfoFile": ".tsbuildinfo/cjs.json" }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/metrics/tsconfig.json b/packages/metrics/tsconfig.json index 204ff253d4..e1c2fb1dc4 100644 --- a/packages/metrics/tsconfig.json +++ b/packages/metrics/tsconfig.json @@ -8,7 +8,5 @@ "composite": true, "declaration": true }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/metrics/typedoc.json b/packages/metrics/typedoc.json index dd6ff840a1..7df20e3456 100644 --- a/packages/metrics/typedoc.json +++ b/packages/metrics/typedoc.json @@ -6,4 +6,4 @@ "./src/middleware/middy.ts" ], "readme": "README.md" -} \ No newline at end of file +} diff --git a/packages/parameters/CHANGELOG.md b/packages/parameters/CHANGELOG.md index daf40aa5de..07d163d52c 100644 --- a/packages/parameters/CHANGELOG.md +++ b/packages/parameters/CHANGELOG.md @@ -1,280 +1,149 @@ # Change Log -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.24.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.23.0...v2.24.0) (2025-07-15) + +**Note:** Version bump only for this package # [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - # [2.22.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.21.0...v2.22.0) (2025-06-20) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - # [2.21.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.20.0...v2.21.0) (2025-06-03) - ### Bug Fixes * **parameters:** preserve original stack trace on transform failures … ([#3982](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3982)) ([583e3ae](https://github.com/aws-powertools/powertools-lambda-typescript/commit/583e3ae9a5095a1185b2bd9dff31e6f3f50ff577)) - - - - # [2.20.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.1...v2.20.0) (2025-05-20) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - ## [2.19.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.0...v2.19.1) (2025-05-05) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - # [2.19.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.18.0...v2.19.0) (2025-04-24) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - # [2.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.17.0...v2.18.0) (2025-04-07) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - # [2.17.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.16.0...v2.17.0) (2025-03-25) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - # [2.16.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.15.0...v2.16.0) (2025-03-07) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - # [2.15.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.14.0...v2.15.0) (2025-02-25) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - # [2.14.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.1...v2.14.0) (2025-02-10) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - ## [2.13.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.0...v2.13.1) (2025-01-28) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - # [2.13.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.12.0...v2.13.0) (2025-01-14) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - # [2.12.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.11.0...v2.12.0) (2024-12-17) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - # [2.11.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.10.0...v2.11.0) (2024-11-20) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - # [2.10.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.9.0...v2.10.0) (2024-10-22) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - # [2.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.8.0...v2.9.0) (2024-10-07) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - # [2.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.7.0...v2.8.0) (2024-09-16) - ### Features * **parameters:** adds setParameter function to store SSM parameters ([#3020](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3020)) ([8fd5479](https://github.com/aws-powertools/powertools-lambda-typescript/commit/8fd5479c6da2d60921df92fe7e5e72a0e03d5745)) - - - - # [2.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.6.0...v2.7.0) (2024-08-08) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - # [2.6.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.5.0...v2.6.0) (2024-07-25) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - # [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) - ### Features * **internal:** support Middy.js 5.x ([#2748](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2748)) ([1d7ad61](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1d7ad61a569a4b1421dbe1754b0179f676cfede7)) * **maintenance:** drop support for Node.js 16.x ([#2717](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2717)) ([e4eee73](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e4eee73770ffccead9212a566335ec256a31af7d)) - - - - # [2.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.2.0...v2.3.0) (2024-06-27) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - # [2.2.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.1...v2.2.0) (2024-06-13) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - ## [2.1.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.0...v2.1.1) (2024-05-14) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - # [2.1.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.0.4...v2.1.0) (2024-04-17) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - ## 2.0.4 (2024-04-10) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - ## 2.0.3 (2024-03-15) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - ## 2.0.2 (2024-03-05) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - - ## 2.0.1 (2024-03-04) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - # [2.0.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.18.1...v2.0.0) (2024-03-04) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - ## 1.18.1 (2024-02-20) **Note:** Version bump only for package @aws-lambda-powertools/parameters - - - - ## [1.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.17.0...v1.18.0) (2024-01-26) ### Bug Fixes -- **parameters:** refresh AppConfig session token after 24 hrs ([#1916](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1916)) ([559ef2d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/559ef2dd0d012cb8c4e378b2a1457a6f52885a17)) +* **parameters:** refresh AppConfig session token after 24 hrs ([#1916](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1916)) ([559ef2d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/559ef2dd0d012cb8c4e378b2a1457a6f52885a17)) ## [1.17.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.16.0...v1.17.0) (2023-11-24) @@ -288,7 +157,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **maintenance:** add support for nodejs20.x runtime ([#1790](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1790)) ([6b9b1bc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b9b1bcb9baf4b3d8e0e5ec6709594aca09bb033)) +* **maintenance:** add support for nodejs20.x runtime ([#1790](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1790)) ([6b9b1bc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b9b1bcb9baf4b3d8e0e5ec6709594aca09bb033)) ## [1.14.2](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.14.1...v1.14.2) (2023-11-03) @@ -302,19 +171,19 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **layers:** add `arm64` to integration test matrix ([#1720](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1720)) ([61ad5ac](https://github.com/aws-powertools/powertools-lambda-typescript/commit/61ad5ac3bcf7742684aeec28553ec294696f3301)) +* **layers:** add `arm64` to integration test matrix ([#1720](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1720)) ([61ad5ac](https://github.com/aws-powertools/powertools-lambda-typescript/commit/61ad5ac3bcf7742684aeec28553ec294696f3301)) ## [1.13.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.13.0...v1.13.1) (2023-09-21) ### Bug Fixes -- **maintenance:** remove upper peer dependency Middy ([#1705](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1705)) ([df21ec8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/df21ec8761b1be511c13c28fedd41bf0e2851061)) +* **maintenance:** remove upper peer dependency Middy ([#1705](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1705)) ([df21ec8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/df21ec8761b1be511c13c28fedd41bf0e2851061)) # [1.13.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.12.1...v1.13.0) (2023-09-18) ### Bug Fixes -- **parameters:** return type when options without transform is used ([#1671](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1671)) ([b2fe341](https://github.com/aws-powertools/powertools-lambda-typescript/commit/b2fe34150a0d896f1755ca30cbe89175cdb66ff2)) +* **parameters:** return type when options without transform is used ([#1671](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1671)) ([b2fe341](https://github.com/aws-powertools/powertools-lambda-typescript/commit/b2fe34150a0d896f1755ca30cbe89175cdb66ff2)) ## [1.12.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.12.0...v1.12.1) (2023-07-25) @@ -336,28 +205,28 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **parameters:** review types and exports ([#1528](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1528)) ([6f96711](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6f96711625e212898b1c227c651beba7e709c9d1)) +* **parameters:** review types and exports ([#1528](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1528)) ([6f96711](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6f96711625e212898b1c227c651beba7e709c9d1)) # [1.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.8.0...v1.9.0) (2023-06-09) ### Features -- **parameters:** add adaptive types to SecretsProvider ([#1411](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1411)) ([5c6d527](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5c6d527b0ad983e893ba07f8a334b4085b6ae6a7)) +* **parameters:** add adaptive types to SecretsProvider ([#1411](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1411)) ([5c6d527](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5c6d527b0ad983e893ba07f8a334b4085b6ae6a7)) # [1.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.7.0...v1.8.0) (2023-04-07) ### Bug Fixes -- **parameters:** type import path in AppConfigProvider ([#1388](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1388)) ([40a1a24](https://github.com/aws-powertools/powertools-lambda-typescript/commit/40a1a24de50ee086f76ab9c78d5fc03e5e7945cf)) +* **parameters:** type import path in AppConfigProvider ([#1388](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1388)) ([40a1a24](https://github.com/aws-powertools/powertools-lambda-typescript/commit/40a1a24de50ee086f76ab9c78d5fc03e5e7945cf)) ### Features -- **parameters:** ability to set `maxAge` and `decrypt` via environment variables ([#1384](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1384)) ([dcf6620](https://github.com/aws-powertools/powertools-lambda-typescript/commit/dcf6620f55004b69186cd69b0c42b1cdd9fd1ce4)) -- **parameters:** add `clearCaches` function ([#1382](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1382)) ([ec49023](https://github.com/aws-powertools/powertools-lambda-typescript/commit/ec49023c44c3873ba5396a45ee9b2a8ee031e84b)) -- **parameters:** stronger types for SSM getParameter ([#1387](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1387)) ([9d53942](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9d53942fdd272213cf39c7fa87ffa78513dff37d)) +* **parameters:** ability to set `maxAge` and `decrypt` via environment variables ([#1384](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1384)) ([dcf6620](https://github.com/aws-powertools/powertools-lambda-typescript/commit/dcf6620f55004b69186cd69b0c42b1cdd9fd1ce4)) +* **parameters:** add `clearCaches` function ([#1382](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1382)) ([ec49023](https://github.com/aws-powertools/powertools-lambda-typescript/commit/ec49023c44c3873ba5396a45ee9b2a8ee031e84b)) +* **parameters:** stronger types for SSM getParameter ([#1387](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1387)) ([9d53942](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9d53942fdd272213cf39c7fa87ffa78513dff37d)) # [1.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.6.0...v1.7.0) (2023-03-20) ### Features -- **parameters:** AppConfigProvider to return the last valid value when the API returns empty value on subsequent calls ([#1365](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1365)) ([97339d9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/97339d9336ec67568e9e7fd079b3cfe006da1bba)) +* **parameters:** AppConfigProvider to return the last valid value when the API returns empty value on subsequent calls ([#1365](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1365)) ([97339d9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/97339d9336ec67568e9e7fd079b3cfe006da1bba)) diff --git a/packages/parameters/package.json b/packages/parameters/package.json index 6e6e32e37d..5b180e9b8a 100644 --- a/packages/parameters/package.json +++ b/packages/parameters/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/parameters", - "version": "2.23.0", + "version": "2.24.0", "description": "The parameters package for the Powertools for AWS Lambda (TypeScript) library", "author": { "name": "Amazon Web Services", @@ -156,16 +156,16 @@ ], "devDependencies": { "@aws-lambda-powertools/testing-utils": "file:../testing", - "@aws-sdk/client-appconfigdata": "^3.840.0", - "@aws-sdk/client-dynamodb": "^3.840.0", - "@aws-sdk/client-secrets-manager": "^3.840.0", - "@aws-sdk/client-ssm": "^3.840.0", - "@aws-sdk/util-dynamodb": "^3.840.0", + "@aws-sdk/client-appconfigdata": "^3.844.0", + "@aws-sdk/client-dynamodb": "^3.844.0", + "@aws-sdk/client-secrets-manager": "^3.844.0", + "@aws-sdk/client-ssm": "^3.844.0", + "@aws-sdk/util-dynamodb": "^3.844.0", "@smithy/util-base64": "^4.0.0", "aws-sdk-client-mock": "^4.1.0" }, "dependencies": { - "@aws-lambda-powertools/commons": "2.23.0" + "@aws-lambda-powertools/commons": "2.24.0" }, "peerDependencies": { "@aws-sdk/client-appconfigdata": ">=3.x", diff --git a/packages/parameters/src/appconfig/AppConfigProvider.ts b/packages/parameters/src/appconfig/AppConfigProvider.ts index 0ef520a1e2..0bfa989865 100644 --- a/packages/parameters/src/appconfig/AppConfigProvider.ts +++ b/packages/parameters/src/appconfig/AppConfigProvider.ts @@ -1,9 +1,9 @@ +import type { StartConfigurationSessionCommandInput } from '@aws-sdk/client-appconfigdata'; import { AppConfigDataClient, GetLatestConfigurationCommand, StartConfigurationSessionCommand, } from '@aws-sdk/client-appconfigdata'; -import type { StartConfigurationSessionCommandInput } from '@aws-sdk/client-appconfigdata'; import { BaseProvider } from '../base/BaseProvider.js'; import { APPCONFIG_TOKEN_EXPIRATION } from '../constants.js'; import type { diff --git a/packages/parameters/src/base/index.ts b/packages/parameters/src/base/index.ts index 760ba42344..f61ae4d2b4 100644 --- a/packages/parameters/src/base/index.ts +++ b/packages/parameters/src/base/index.ts @@ -1,4 +1,4 @@ export { BaseProvider } from './BaseProvider.js'; export { DEFAULT_PROVIDERS } from './DefaultProviders.js'; -export { GetOptions } from './GetOptions.js'; export { GetMultipleOptions } from './GetMultipleOptions.js'; +export { GetOptions } from './GetOptions.js'; diff --git a/packages/parameters/src/dynamodb/DynamoDBProvider.ts b/packages/parameters/src/dynamodb/DynamoDBProvider.ts index 6f0e2ce7ec..cbdea3580e 100644 --- a/packages/parameters/src/dynamodb/DynamoDBProvider.ts +++ b/packages/parameters/src/dynamodb/DynamoDBProvider.ts @@ -1,14 +1,14 @@ import type { JSONValue } from '@aws-lambda-powertools/commons/types'; +import type { + GetItemCommandInput, + QueryCommandInput, +} from '@aws-sdk/client-dynamodb'; import { DynamoDBClient, type DynamoDBPaginationConfiguration, GetItemCommand, paginateQuery, } from '@aws-sdk/client-dynamodb'; -import type { - GetItemCommandInput, - QueryCommandInput, -} from '@aws-sdk/client-dynamodb'; import { marshall, unmarshall } from '@aws-sdk/util-dynamodb'; import { BaseProvider } from '../base/BaseProvider.js'; import type { diff --git a/packages/parameters/src/index.ts b/packages/parameters/src/index.ts index 58580e1e1a..970be22b81 100644 --- a/packages/parameters/src/index.ts +++ b/packages/parameters/src/index.ts @@ -1,3 +1,3 @@ export { clearCaches } from './base/DefaultProviders.js'; -export { GetParameterError, TransformParameterError } from './errors.js'; export { Transform } from './constants.js'; +export { GetParameterError, TransformParameterError } from './errors.js'; diff --git a/packages/parameters/src/secrets/SecretsProvider.ts b/packages/parameters/src/secrets/SecretsProvider.ts index fd1e62a51c..134e788536 100644 --- a/packages/parameters/src/secrets/SecretsProvider.ts +++ b/packages/parameters/src/secrets/SecretsProvider.ts @@ -1,8 +1,8 @@ +import type { GetSecretValueCommandInput } from '@aws-sdk/client-secrets-manager'; import { GetSecretValueCommand, SecretsManagerClient, } from '@aws-sdk/client-secrets-manager'; -import type { GetSecretValueCommandInput } from '@aws-sdk/client-secrets-manager'; import { BaseProvider } from '../base/BaseProvider.js'; import type { SecretsGetOptions, diff --git a/packages/parameters/src/secrets/index.ts b/packages/parameters/src/secrets/index.ts index 6bb75d813f..f0a74b5571 100644 --- a/packages/parameters/src/secrets/index.ts +++ b/packages/parameters/src/secrets/index.ts @@ -1,2 +1,2 @@ -export { SecretsProvider } from './SecretsProvider.js'; export { getSecret } from './getSecret.js'; +export { SecretsProvider } from './SecretsProvider.js'; diff --git a/packages/parameters/src/ssm/SSMProvider.ts b/packages/parameters/src/ssm/SSMProvider.ts index 490174522f..0ba511681f 100644 --- a/packages/parameters/src/ssm/SSMProvider.ts +++ b/packages/parameters/src/ssm/SSMProvider.ts @@ -1,11 +1,4 @@ import type { JSONValue } from '@aws-lambda-powertools/commons/types'; -import { - GetParameterCommand, - GetParametersCommand, - PutParameterCommand, - SSMClient, - paginateGetParametersByPath, -} from '@aws-sdk/client-ssm'; import type { GetParameterCommandInput, GetParametersByPathCommandInput, @@ -15,6 +8,13 @@ import type { PutParameterCommandOutput, SSMPaginationConfiguration, } from '@aws-sdk/client-ssm'; +import { + GetParameterCommand, + GetParametersCommand, + PutParameterCommand, + paginateGetParametersByPath, + SSMClient, +} from '@aws-sdk/client-ssm'; import { BaseProvider } from '../base/BaseProvider.js'; import { transformValue } from '../base/transformValue.js'; import { DEFAULT_MAX_AGE_SECS } from '../constants.js'; diff --git a/packages/parameters/src/ssm/index.ts b/packages/parameters/src/ssm/index.ts index a4459d0c18..fe6585709d 100644 --- a/packages/parameters/src/ssm/index.ts +++ b/packages/parameters/src/ssm/index.ts @@ -1,5 +1,5 @@ -export { SSMProvider } from './SSMProvider.js'; export { getParameter } from './getParameter.js'; -export { setParameter } from './setParameter.js'; export { getParameters } from './getParameters.js'; export { getParametersByName } from './getParametersByName.js'; +export { SSMProvider } from './SSMProvider.js'; +export { setParameter } from './setParameter.js'; diff --git a/packages/parameters/tests/e2e/appConfigProvider.class.test.ts b/packages/parameters/tests/e2e/appConfigProvider.class.test.ts index 5159600f79..af28e69110 100644 --- a/packages/parameters/tests/e2e/appConfigProvider.class.test.ts +++ b/packages/parameters/tests/e2e/appConfigProvider.class.test.ts @@ -1,8 +1,8 @@ import { join } from 'node:path'; import { + invokeFunctionOnce, TestInvocationLogs, TestStack, - invokeFunctionOnce, } from '@aws-lambda-powertools/testing-utils'; import { TestNodejsFunction } from '@aws-lambda-powertools/testing-utils/resources/lambda'; import { toBase64 } from '@smithy/util-base64'; diff --git a/packages/parameters/tests/e2e/dynamoDBProvider.class.test.ts b/packages/parameters/tests/e2e/dynamoDBProvider.class.test.ts index 333bbb7fce..f4fa7c4ba4 100644 --- a/packages/parameters/tests/e2e/dynamoDBProvider.class.test.ts +++ b/packages/parameters/tests/e2e/dynamoDBProvider.class.test.ts @@ -1,8 +1,8 @@ import { join } from 'node:path'; import { + invokeFunctionOnce, TestInvocationLogs, TestStack, - invokeFunctionOnce, } from '@aws-lambda-powertools/testing-utils'; import { TestNodejsFunction } from '@aws-lambda-powertools/testing-utils/resources/lambda'; import { AttributeType } from 'aws-cdk-lib/aws-dynamodb'; diff --git a/packages/parameters/tests/e2e/secretsProvider.class.test.ts b/packages/parameters/tests/e2e/secretsProvider.class.test.ts index 87467a9b06..b52481cbed 100644 --- a/packages/parameters/tests/e2e/secretsProvider.class.test.ts +++ b/packages/parameters/tests/e2e/secretsProvider.class.test.ts @@ -1,8 +1,8 @@ import { join } from 'node:path'; import { + invokeFunctionOnce, TestInvocationLogs, TestStack, - invokeFunctionOnce, } from '@aws-lambda-powertools/testing-utils'; import { TestNodejsFunction } from '@aws-lambda-powertools/testing-utils/resources/lambda'; import { SecretValue } from 'aws-cdk-lib'; diff --git a/packages/parameters/tests/e2e/ssmProvider.class.test.ts b/packages/parameters/tests/e2e/ssmProvider.class.test.ts index fa5bf8931b..c5a28619fc 100644 --- a/packages/parameters/tests/e2e/ssmProvider.class.test.ts +++ b/packages/parameters/tests/e2e/ssmProvider.class.test.ts @@ -1,8 +1,8 @@ import { join } from 'node:path'; import { + invokeFunctionOnce, TestInvocationLogs, TestStack, - invokeFunctionOnce, } from '@aws-lambda-powertools/testing-utils'; import { TestNodejsFunction } from '@aws-lambda-powertools/testing-utils/resources/lambda'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; diff --git a/packages/parameters/tests/helpers/resources.ts b/packages/parameters/tests/helpers/resources.ts index 366e07da1e..955d9da4be 100644 --- a/packages/parameters/tests/helpers/resources.ts +++ b/packages/parameters/tests/helpers/resources.ts @@ -1,9 +1,9 @@ import { randomUUID } from 'node:crypto'; import { - type TestStack, concatenateResourceName, getArchitectureKey, getRuntimeKey, + type TestStack, } from '@aws-lambda-powertools/testing-utils'; import { TestDynamodbTable } from '@aws-lambda-powertools/testing-utils/resources/dynamodb'; import type { TestNodejsFunction } from '@aws-lambda-powertools/testing-utils/resources/lambda'; diff --git a/packages/parameters/tests/tsconfig.json b/packages/parameters/tests/tsconfig.json index 316509ab78..39f442212e 100644 --- a/packages/parameters/tests/tsconfig.json +++ b/packages/parameters/tests/tsconfig.json @@ -4,9 +4,5 @@ "rootDir": "../../", "noEmit": true }, - "include": [ - "../../testing/src/setupEnv.ts", - "../src/**/*", - "./**/*", - ] -} \ No newline at end of file + "include": ["../../testing/src/setupEnv.ts", "../src/**/*", "./**/*"] +} diff --git a/packages/parameters/tests/unit/BaseProvider.test.ts b/packages/parameters/tests/unit/BaseProvider.test.ts index 424f8f687a..c85d43dc47 100644 --- a/packages/parameters/tests/unit/BaseProvider.test.ts +++ b/packages/parameters/tests/unit/BaseProvider.test.ts @@ -10,9 +10,9 @@ import { import type { EnvironmentVariablesService } from '../../src/config/EnvironmentVariablesService.js'; import { DEFAULT_MAX_AGE_SECS } from '../../src/constants.js'; import { + clearCaches, GetParameterError, TransformParameterError, - clearCaches, } from '../../src/index.js'; const encoder = new TextEncoder(); diff --git a/packages/parameters/tests/unit/DynamoDBProvider.test.ts b/packages/parameters/tests/unit/DynamoDBProvider.test.ts index 50f89b93c1..195a766d3d 100644 --- a/packages/parameters/tests/unit/DynamoDBProvider.test.ts +++ b/packages/parameters/tests/unit/DynamoDBProvider.test.ts @@ -1,13 +1,13 @@ import { addUserAgentMiddleware } from '@aws-lambda-powertools/commons'; +import type { + GetItemCommandInput, + QueryCommandInput, +} from '@aws-sdk/client-dynamodb'; import { DynamoDBClient, GetItemCommand, QueryCommand, } from '@aws-sdk/client-dynamodb'; -import type { - GetItemCommandInput, - QueryCommandInput, -} from '@aws-sdk/client-dynamodb'; import { marshall } from '@aws-sdk/util-dynamodb'; import { mockClient } from 'aws-sdk-client-mock'; import { beforeEach, describe, expect, it, vi } from 'vitest'; diff --git a/packages/parameters/tests/unit/SSMProvider.test.ts b/packages/parameters/tests/unit/SSMProvider.test.ts index b3d247c4f8..28471110c1 100644 --- a/packages/parameters/tests/unit/SSMProvider.test.ts +++ b/packages/parameters/tests/unit/SSMProvider.test.ts @@ -1,4 +1,5 @@ import { addUserAgentMiddleware } from '@aws-lambda-powertools/commons'; +import type { GetParametersCommandOutput } from '@aws-sdk/client-ssm'; import { GetParameterCommand, GetParametersByPathCommand, @@ -6,7 +7,6 @@ import { PutParameterCommand, SSMClient, } from '@aws-sdk/client-ssm'; -import type { GetParametersCommandOutput } from '@aws-sdk/client-ssm'; import { toBase64 } from '@smithy/util-base64'; import { mockClient } from 'aws-sdk-client-mock'; import { beforeEach, describe, expect, it, vi } from 'vitest'; diff --git a/packages/parameters/tests/unit/SecretsProvider.test.ts b/packages/parameters/tests/unit/SecretsProvider.test.ts index 4635b67c75..7a9bc71a4f 100644 --- a/packages/parameters/tests/unit/SecretsProvider.test.ts +++ b/packages/parameters/tests/unit/SecretsProvider.test.ts @@ -1,9 +1,9 @@ import { addUserAgentMiddleware } from '@aws-lambda-powertools/commons'; +import type { GetSecretValueCommandInput } from '@aws-sdk/client-secrets-manager'; import { GetSecretValueCommand, SecretsManagerClient, } from '@aws-sdk/client-secrets-manager'; -import type { GetSecretValueCommandInput } from '@aws-sdk/client-secrets-manager'; import { mockClient } from 'aws-sdk-client-mock'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { SecretsProvider } from '../../src/secrets/index.js'; diff --git a/packages/parameters/tests/unit/getParameter.test.ts b/packages/parameters/tests/unit/getParameter.test.ts index e1bd035103..765ba8e772 100644 --- a/packages/parameters/tests/unit/getParameter.test.ts +++ b/packages/parameters/tests/unit/getParameter.test.ts @@ -2,7 +2,7 @@ import { GetParameterCommand, SSMClient } from '@aws-sdk/client-ssm'; import { mockClient } from 'aws-sdk-client-mock'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { DEFAULT_PROVIDERS } from '../../src/base/index.js'; -import { SSMProvider, getParameter } from '../../src/ssm/index.js'; +import { getParameter, SSMProvider } from '../../src/ssm/index.js'; describe('Function: getParameter', () => { const client = mockClient(SSMClient); diff --git a/packages/parameters/tests/unit/getParameters.test.ts b/packages/parameters/tests/unit/getParameters.test.ts index 8058fb7972..c224fd5457 100644 --- a/packages/parameters/tests/unit/getParameters.test.ts +++ b/packages/parameters/tests/unit/getParameters.test.ts @@ -2,7 +2,7 @@ import { GetParametersByPathCommand, SSMClient } from '@aws-sdk/client-ssm'; import { mockClient } from 'aws-sdk-client-mock'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { DEFAULT_PROVIDERS } from '../../src/base/index.js'; -import { SSMProvider, getParameters } from '../../src/ssm/index.js'; +import { getParameters, SSMProvider } from '../../src/ssm/index.js'; describe('Function: getParameters', () => { beforeEach(() => { diff --git a/packages/parameters/tests/unit/getParametersByName.test.ts b/packages/parameters/tests/unit/getParametersByName.test.ts index a31d41959e..6fc1621bb6 100644 --- a/packages/parameters/tests/unit/getParametersByName.test.ts +++ b/packages/parameters/tests/unit/getParametersByName.test.ts @@ -2,7 +2,7 @@ import { GetParametersCommand, SSMClient } from '@aws-sdk/client-ssm'; import { mockClient } from 'aws-sdk-client-mock'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { DEFAULT_PROVIDERS } from '../../src/base/index.js'; -import { SSMProvider, getParametersByName } from '../../src/ssm/index.js'; +import { getParametersByName, SSMProvider } from '../../src/ssm/index.js'; import type { SSMGetParametersByNameOptions } from '../../src/types/SSMProvider.js'; describe('Function: getParametersByName', () => { diff --git a/packages/parameters/tests/unit/getSecret.test.ts b/packages/parameters/tests/unit/getSecret.test.ts index 22d2f7743d..bcb5afb918 100644 --- a/packages/parameters/tests/unit/getSecret.test.ts +++ b/packages/parameters/tests/unit/getSecret.test.ts @@ -5,7 +5,7 @@ import { import { mockClient } from 'aws-sdk-client-mock'; import { beforeEach, describe, expect, it } from 'vitest'; import { DEFAULT_PROVIDERS } from '../../src/base/index.js'; -import { SecretsProvider, getSecret } from '../../src/secrets/index.js'; +import { getSecret, SecretsProvider } from '../../src/secrets/index.js'; const encoder = new TextEncoder(); diff --git a/packages/parameters/tests/unit/setParameter.test.ts b/packages/parameters/tests/unit/setParameter.test.ts index ac5b97ed7a..b9a0ebf01d 100644 --- a/packages/parameters/tests/unit/setParameter.test.ts +++ b/packages/parameters/tests/unit/setParameter.test.ts @@ -2,8 +2,8 @@ import { PutParameterCommand, SSMClient } from '@aws-sdk/client-ssm'; import { mockClient } from 'aws-sdk-client-mock'; import { beforeEach, describe, expect, it } from 'vitest'; import { DEFAULT_PROVIDERS } from '../../src/base/index.js'; -import { SSMProvider } from '../../src/ssm/SSMProvider.js'; import { setParameter } from '../../src/ssm/index.js'; +import { SSMProvider } from '../../src/ssm/SSMProvider.js'; import type { SSMSetOptions } from '../../src/types/SSMProvider.js'; describe('Function: setParameter', () => { diff --git a/packages/parameters/tsconfig.cjs.json b/packages/parameters/tsconfig.cjs.json index 7d570c8dbe..a8fadd417f 100644 --- a/packages/parameters/tsconfig.cjs.json +++ b/packages/parameters/tsconfig.cjs.json @@ -7,7 +7,5 @@ "rootDir": "./src", "tsBuildInfoFile": ".tsbuildinfo/cjs.json" }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/parameters/tsconfig.json b/packages/parameters/tsconfig.json index 204ff253d4..e1c2fb1dc4 100644 --- a/packages/parameters/tsconfig.json +++ b/packages/parameters/tsconfig.json @@ -8,7 +8,5 @@ "composite": true, "declaration": true }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/parser/CHANGELOG.md b/packages/parser/CHANGELOG.md index 3b6c146b40..ccd88f9d13 100644 --- a/packages/parser/CHANGELOG.md +++ b/packages/parser/CHANGELOG.md @@ -1,129 +1,86 @@ # Change Log -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.24.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.23.0...v2.24.0) (2025-07-15) -# [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) - -**Note:** Version bump only for package @aws-lambda-powertools/parser +### Bug Fixes +- remove nullable from md5OfMessageAttributes in SqsRecordSchema ([#4165](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4165)) ([d6cbde0](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d6cbde0fe977bb1ce011a80f31369e5f7161df08)) +### Features +- support Standard Schema and upgrade to Zod v4 ([#4164](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4164)) ([67549f6](https://github.com/aws-powertools/powertools-lambda-typescript/commit/67549f61cd77e23a66e3338576efc96839833329)) +### Maintenance -# [2.22.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.21.0...v2.22.0) (2025-06-20) +- remove deprecated parser type ([#4154](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4154)) ([a59db36](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a59db36e7816d8587b91acf282582204ccc78845)) +# [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) **Note:** Version bump only for package @aws-lambda-powertools/parser +# [2.22.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.21.0...v2.22.0) (2025-06-20) - - +**Note:** Version bump only for package @aws-lambda-powertools/parser # [2.21.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.20.0...v2.21.0) (2025-06-03) **Note:** Version bump only for package @aws-lambda-powertools/parser - - - - # [2.20.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.1...v2.20.0) (2025-05-20) - ### Features * **parser:** add schemas for AppSync Events ([#3907](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3907)) ([2554800](https://github.com/aws-powertools/powertools-lambda-typescript/commit/2554800b6905811e1fb9ca254196a67138e765bc)) * **parser:** add support for tumbling windows in Kinesis and DynamoDB events ([#3931](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3931)) ([0205a87](https://github.com/aws-powertools/powertools-lambda-typescript/commit/0205a87f6f4c8d597e27684b224c3b3a37887987)) - - - - ## [2.19.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.0...v2.19.1) (2025-05-05) **Note:** Version bump only for package @aws-lambda-powertools/parser - - - - # [2.19.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.18.0...v2.19.0) (2025-04-24) - ### Bug Fixes * **parser:** Make Kafka key property optional ([#3855](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3855)) ([68fa1eb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/68fa1eb66abf4ccdb2b4f3789862e2380b8340aa)) - - - - # [2.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.17.0...v2.18.0) (2025-04-07) - ### Features * **parser:** add Cognito pre-signup trigger schema ([#3729](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3729)) ([4116f65](https://github.com/aws-powertools/powertools-lambda-typescript/commit/4116f65dda099a38b780ce26e005ccea90abdd7b)) * **parser:** add schema support for API Gateway WebSocket events ([#3807](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3807)) ([663d328](https://github.com/aws-powertools/powertools-lambda-typescript/commit/663d32866cdbf1225260fbf1372e126c42a962e1)) - - - - # [2.17.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.16.0...v2.17.0) (2025-03-25) - ### Bug Fixes * **parser:** ddb base schema + other exports ([#3741](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3741)) ([51a3410](https://github.com/aws-powertools/powertools-lambda-typescript/commit/51a3410be8502496362d5ed13a64fe55691604ba)) - - - - # [2.16.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.15.0...v2.16.0) (2025-03-07) - ### Bug Fixes * **parser:** envelope sub-path exports regression ([#3667](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3667)) ([beac102](https://github.com/aws-powertools/powertools-lambda-typescript/commit/beac1021107f4c117a561829b3b9ab1f404a4e14)) * **parser:** update S3 Event Schema ([#3671](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3671)) ([c14c7b3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c14c7b3e7e1366379cd5062c91e09a62ddf7a42a)) - - - - # [2.15.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.14.0...v2.15.0) (2025-02-25) - ### Features * **parser:** provide sub-path exports ([#3598](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3598)) ([09f0aaa](https://github.com/aws-powertools/powertools-lambda-typescript/commit/09f0aaaf92233d326acd9e5fbd21a5c241cdbfe7)) - - - - # [2.14.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.1...v2.14.0) (2025-02-10) - ### Bug Fixes * **parser:** parse sqs record body field as JSON and S3Schema in S3SqsEventNoificationRecordSchema ([#3529](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3529)) ([bcd4b9f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/bcd4b9f7864543b25c57143c2903ed68c16d3987)) - ### Features * **parser:** add TransferFamilySchema for AWS Transfer Family events ([#3575](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3575)) ([2c27c5e](https://github.com/aws-powertools/powertools-lambda-typescript/commit/2c27c5e717ff6a8f9b54148dbde3ab7dc83b5baf)) * **parser:** simplify `ParseResult` and `parse` inference ([#3568](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3568)) ([95762ad](https://github.com/aws-powertools/powertools-lambda-typescript/commit/95762ade4b51fc40860302dd77a97819dac44a98)) - - - - ## [2.13.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.0...v2.13.1) (2025-01-28) - ### Bug Fixes * **parser:** allow Kinesis envelopes to handle non-JSON strings ([#3531](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3531)) ([d18e03d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d18e03d06e4fa4970aa24c4c041793d58a7cde79)) @@ -141,147 +98,84 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline * **parser:** set min length of 1 to s3 event lists ([#3524](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3524)) ([937be64](https://github.com/aws-powertools/powertools-lambda-typescript/commit/937be641b3ee82748fc1bdec0291abe5ef0e7a97)) * **parser:** SNS Envelope handles non-JSON ([#3506](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3506)) ([4d7f05f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/4d7f05f7415cc52fae42de643ceaffcf764c2472)) - - - - # [2.13.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.12.0...v2.13.0) (2025-01-14) - ### Features * **parser:** `DynamoDBMarshalled` helper to parse DynamoDB data structure ([#3442](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3442)) ([e154e58](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e154e58986187d8210d18f6ca79d8b710d87d600)) - - - - # [2.12.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.11.0...v2.12.0) (2024-12-17) - ### Bug Fixes * **parser:** make SNS subject field nullish ([#3415](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3415)) ([0da9cea](https://github.com/aws-powertools/powertools-lambda-typescript/commit/0da9ceaeccd088af09963690959871a2ca165729)) - ### Features * **parser:** Add appsync resolver event Zod schemas ([#3301](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3301)) ([318f34b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/318f34b40331df7665939f92370797feb7b22dd0)) * **parser:** add schema for DynamoDB - Kinesis Stream event ([#3328](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3328)) ([a8dfa74](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a8dfa74bff22dcde273f11295c1defcc904e98d3)) - - - - # [2.11.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.10.0...v2.11.0) (2024-11-20) - ### Bug Fixes * **parser:** add aws region to kinesis event ([#3260](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3260)) ([246f132](https://github.com/aws-powertools/powertools-lambda-typescript/commit/246f13253bdba1f6963cf53605b0ae10698f063e)) * **parser:** event type literal for selfManagedKafka ([#3325](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3325)) ([5350afe](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5350afed92d02b7b8d47f387705f70c59deeeb65)) * **parser:** fix cause errors nested structure ([#3250](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3250)) ([1ff97cb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1ff97cb758b2e44a76ce108d8e54c9335088abba)) - - - - # [2.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.8.0...v2.9.0) (2024-10-07) **Note:** Version bump only for package @aws-lambda-powertools/parser - - - - # [2.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.7.0...v2.8.0) (2024-09-16) **Note:** Version bump only for package @aws-lambda-powertools/parser - - - - # [2.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.6.0...v2.7.0) (2024-08-08) - ### Features * **parser:** add helper function to handle JSON stringified fields ([#2901](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2901)) ([806b884](https://github.com/aws-powertools/powertools-lambda-typescript/commit/806b884f51684fa4654d357fafdf8ebeda4de01b)) - - - - # [2.6.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.5.0...v2.6.0) (2024-07-25) - ### Features * **parser:** allow parser set event type of handler with middy ([#2786](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2786)) ([9973f09](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9973f09da260305ce8fd18780a9a474f3404ca1a)) - - - - # [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) - ### Features * **internal:** support Middy.js 5.x ([#2748](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2748)) ([1d7ad61](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1d7ad61a569a4b1421dbe1754b0179f676cfede7)) * **maintenance:** drop support for Node.js 16.x ([#2717](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2717)) ([e4eee73](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e4eee73770ffccead9212a566335ec256a31af7d)) - - - - # [2.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.2.0...v2.3.0) (2024-06-27) - ### Features * **parser:** enhance API Gateway schemas ([#2665](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2665)) ([b3bc1f0](https://github.com/aws-powertools/powertools-lambda-typescript/commit/b3bc1f0a173233fdcf50f2573949b17a312813b4)) - - - - # [2.2.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.1...v2.2.0) (2024-06-13) - ### Bug Fixes * **parser:** handle API Gateway Test UI sourceIp ([#2531](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2531)) ([cd6c512](https://github.com/aws-powertools/powertools-lambda-typescript/commit/cd6c512c3a3b799debdafabac1558c8d40c8dc93)) - - - - ## [2.1.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.0...v2.1.1) (2024-05-14) - ### Bug Fixes * **parser:** lambda function url cognitoIdentity and principalOrgId nullable ([#2430](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2430)) ([3c3e393](https://github.com/aws-powertools/powertools-lambda-typescript/commit/3c3e393df47d28a6bddb2a9d01cd6fefea3db15e)) * **parser:** set APIGatewayProxyEventSchema body and query string keys to be nullable ([#2465](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2465)) ([7ce5b3c](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7ce5b3cff88b6eadeda1041b4eb076af2ebd848d)) * **parser:** set etag optional for delete object notifications ([#2429](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2429)) ([100e223](https://github.com/aws-powertools/powertools-lambda-typescript/commit/100e2238b45e224a369cc7a349f78cafda3f94b7)) - - - - # [2.1.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.0.4...v2.1.0) (2024-04-17) **Note:** Version bump only for package @aws-lambda-powertools/parser diff --git a/packages/parser/README.md b/packages/parser/README.md index 2b79ea02f4..091e48fabd 100644 --- a/packages/parser/README.md +++ b/packages/parser/README.md @@ -7,7 +7,7 @@ You can use the package in both TypeScript and JavaScript code bases. - [Intro](#intro) - [Key features](#key-features) - [Usage](#usage) - - [Middleware](#middleware) + - [Middy.js Middleware](#middyjs-middleware) - [Decorator](#decorator) - [Manual parsing](#manual-parsing) - [Safe parsing](#safe-parsing) @@ -23,96 +23,112 @@ You can use the package in both TypeScript and JavaScript code bases. ## Intro -The parser utility provides data validation and parsing using [Zod](https://zod.dev), a TypeScript-first schema declaration and validation library. +This utility provides data validation and parsing for [Standard Schema](https://github.com/standard-schema/standard-schema), together with a collection of built-in [Zod](https://zod.dev) schemas and envelopes to parse and unwrap popular AWS event source payloads. ## Key features -- Define data schema as Zod schema, then parse, validate and extract only what you want -- Built-in envelopes to unwrap and validate popular AWS event sources payloads -- Extend and customize envelopes to fit your needs -- Safe parsing option to avoid throwing errors and custom error handling -- Available for Middy.js middleware and TypeScript method decorators +- Accept a [Standard Schema](https://github.com/standard-schema/standard-schema) and parse incoming payloads +- Built-in Zod schemas and envelopes to unwrap and validate popular AWS event sources payloads +- Extend and customize built-in Zod schemas to fit your needs +- Safe parsing option to avoid throwing errors and allow custom error handling +- Available as Middy.js middleware and TypeScript class method decorator ## Usage To get started, install the library by running: ```sh -npm install @aws-lambda-powertools/parser zod@~3 +npm install @aws-lambda-powertools/parser zod ``` -Then, define your schema using Zod: +You can parse inbound events using the `parser` decorator, Middy.js middleware, or [manually](#manual-parsing) using built-in envelopes and schemas. + +When using the decorator or middleware, you can specify a schema to parse the event: this can be a [built-in Zod schema](https://docs.powertools.aws.dev/lambda/typescript/latest/features/parser/#built-in-schemas) or a custom schema you defined. Custom schemas can be defined using Zod or any other [Standard Schema compatible library](https://standardschema.dev/#what-schema-libraries-implement-the-spec). + +### Middy.js Middleware + +Using Zod schemas: ```typescript +import { Logger } from '@aws-lambda-powertools/logger'; +import { parser } from '@aws-lambda-powertools/parser/middleware'; +import middy from '@middy/core'; import { z } from 'zod'; +const logger = new Logger(); + const orderSchema = z.object({ id: z.number().positive(), description: z.string(), items: z.array( z.object({ id: z.number().positive(), - quantity: z.number(), + quantity: z.number().positive(), description: z.string(), }) ), optionalField: z.string().optional(), }); -export { orderSchema }; +export const handler = middy() + .use(parser({ schema: orderSchema })) + .handler(async (event): Promise => { + for (const item of event.items) { + // item is parsed as OrderItem + logger.info('Processing item', { item }); + } + }); ``` -Next, you can parse incoming events using the `parser` decorator or Middy.js middleware: - -### Middleware +Using Valibot schemas: ```typescript -import type { Context } from 'aws-lambda'; +import { Logger } from '@aws-lambda-powertools/logger'; import { parser } from '@aws-lambda-powertools/parser/middleware'; -import { z } from 'zod'; import middy from '@middy/core'; -import { Logger } from '@aws-lambda-powertools/logger'; +import { + array, + number, + object, + optional, + pipe, + string, + toMinValue, +} from 'valibot'; const logger = new Logger(); -const orderSchema = z.object({ - id: z.number().positive(), - description: z.string(), - items: z.array( - z.object({ - id: z.number().positive(), - quantity: z.number(), - description: z.string(), +const orderSchema = object({ + id: pipe(number(), toMinValue(0)), + description: string(), + items: array( + object({ + id: pipe(number(), toMinValue(0)), + quantity: pipe(number(), toMinValue(1)), + description: string(), }) ), - optionalField: z.string().optional(), + optionalField: optional(string()), }); -type Order = z.infer; - -const lambdaHandler = async ( - event: Order, - _context: Context -): Promise => { - for (const item of event.items) { - // item is parsed as OrderItem - logger.info('Processing item', { item }); - } -}; - -export const handler = middy(lambdaHandler).use( - parser({ schema: orderSchema }) -); +export const handler = middy() + .use(parser({ schema: orderSchema })) + .handler(async (event): Promise => { + for (const item of event.items) { + // item is parsed as OrderItem + logger.info('Processing item', { item }); + } + }); ``` ### Decorator ```typescript -import type { Context } from 'aws-lambda'; import type { LambdaInterface } from '@aws-lambda-powertools/commons/types'; +import { Logger } from '@aws-lambda-powertools/logger'; import { parser } from '@aws-lambda-powertools/parser'; +import type { Context } from 'aws-lambda'; import { z } from 'zod'; -import { Logger } from '@aws-lambda-powertools/logger'; const logger = new Logger(); @@ -147,7 +163,7 @@ export const handler = myFunction.handler.bind(myFunction); ### Manual parsing -If you don't want to add an additional dependency, or you prefer the manual approach, you can `parse` the event directly by calling the `parse` method on schemas and envelopes: +If you don't want to add an additional middleware dependency, or you prefer the manual approach, you can parse the event directly by calling the `parse` method on schemas and envelopes: ```typescript import type { Context } from 'aws-lambda'; diff --git a/packages/parser/package.json b/packages/parser/package.json index 6ae674fc65..d76db7a109 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/parser", - "version": "2.23.0", + "version": "2.24.0", "description": "The parser package for the Powertools for AWS Lambda (TypeScript) library.", "author": { "name": "Amazon Web Services", @@ -200,11 +200,12 @@ "nodejs" ], "dependencies": { - "@aws-lambda-powertools/commons": "2.23.0" + "@aws-lambda-powertools/commons": "2.24.0", + "@standard-schema/spec": "^1.0.0" }, "peerDependencies": { "@middy/core": "4.x || 5.x || 6.x", - "zod": ">=3.x" + "zod": "^3.25.0 || ^4.0.0" }, "peerDependenciesMeta": { "zod": { @@ -213,5 +214,8 @@ "@middy/core": { "optional": true } + }, + "devDependencies": { + "zod": "^4.0.5" } } diff --git a/packages/parser/src/envelopes/api-gateway.ts b/packages/parser/src/envelopes/api-gateway.ts index 0abaecc6d8..b464ed561d 100644 --- a/packages/parser/src/envelopes/api-gateway.ts +++ b/packages/parser/src/envelopes/api-gateway.ts @@ -1,4 +1,4 @@ -import type { ZodSchema, z } from 'zod'; +import type { ZodType } from 'zod'; import { ParseError } from '../errors.js'; import { APIGatewayProxyEventSchema } from '../schemas/api-gateway.js'; import type { ParsedResult } from '../types/parser.js'; @@ -13,7 +13,7 @@ export const ApiGatewayEnvelope = { * @hidden */ [envelopeDiscriminator]: 'object' as const, - parse(data: unknown, schema: T): z.infer { + parse(data: unknown, schema: ZodType): T { try { return APIGatewayProxyEventSchema.extend({ body: schema, @@ -25,10 +25,7 @@ export const ApiGatewayEnvelope = { } }, - safeParse( - data: unknown, - schema: T - ): ParsedResult> { + safeParse(data: unknown, schema: ZodType): ParsedResult { const result = APIGatewayProxyEventSchema.extend({ body: schema, }).safeParse(data); diff --git a/packages/parser/src/envelopes/api-gatewayv2.ts b/packages/parser/src/envelopes/api-gatewayv2.ts index 408bcde42c..828bfaab0c 100644 --- a/packages/parser/src/envelopes/api-gatewayv2.ts +++ b/packages/parser/src/envelopes/api-gatewayv2.ts @@ -1,4 +1,4 @@ -import type { ZodSchema, z } from 'zod'; +import type { ZodType } from 'zod'; import { ParseError } from '../errors.js'; import { APIGatewayProxyEventV2Schema } from '../schemas/api-gatewayv2.js'; import type { ParsedResult } from '../types/index.js'; @@ -13,7 +13,7 @@ export const ApiGatewayV2Envelope = { * @hidden */ [envelopeDiscriminator]: 'object' as const, - parse(data: unknown, schema: T): z.infer { + parse(data: unknown, schema: ZodType): T { try { return APIGatewayProxyEventV2Schema.extend({ body: schema, @@ -25,10 +25,7 @@ export const ApiGatewayV2Envelope = { } }, - safeParse( - data: unknown, - schema: T - ): ParsedResult> { + safeParse(data: unknown, schema: ZodType): ParsedResult { const result = APIGatewayProxyEventV2Schema.extend({ body: schema, }).safeParse(data); diff --git a/packages/parser/src/envelopes/cloudwatch.ts b/packages/parser/src/envelopes/cloudwatch.ts index 36a57ffaf3..55a6b81056 100644 --- a/packages/parser/src/envelopes/cloudwatch.ts +++ b/packages/parser/src/envelopes/cloudwatch.ts @@ -1,4 +1,4 @@ -import { ZodError, type ZodIssue, type ZodSchema, type z } from 'zod'; +import { ZodError, type ZodType, type z } from 'zod'; import { ParseError } from '../errors.js'; import { CloudWatchLogsSchema } from '../schemas/index.js'; import type { ParsedResult } from '../types/index.js'; @@ -13,7 +13,7 @@ export const CloudWatchEnvelope = { * @hidden */ [envelopeDiscriminator]: 'array' as const, - parse(data: unknown, schema: T): z.infer[] { + parse(data: unknown, schema: ZodType): T[] { const parsedEnvelope = CloudWatchLogsSchema.parse(data); return parsedEnvelope.awslogs.data.logEvents.map((record, index) => { @@ -42,19 +42,8 @@ export const CloudWatchEnvelope = { }); }, - safeParse( - data: unknown, - schema: T - ): ParsedResult[]> { - let parsedEnvelope: ParsedResult>; - try { - parsedEnvelope = CloudWatchLogsSchema.safeParse(data); - } catch (error) { - parsedEnvelope = { - success: false, - error: error as Error, - }; - } + safeParse(data: unknown, schema: ZodType): ParsedResult { + const parsedEnvelope = CloudWatchLogsSchema.safeParse(data); if (!parsedEnvelope.success) { return { @@ -70,8 +59,8 @@ export const CloudWatchEnvelope = { ( acc: { success: boolean; - messages: z.infer; - errors: { [key: number]: { issues: ZodIssue[] } }; + messages: T[]; + errors: { [key: number]: { issues: z.core.$ZodIssue[] } }; }, record: { message: string }, index: number @@ -114,7 +103,6 @@ export const CloudWatchEnvelope = { ? `Failed to parse CloudWatch Log messages at indexes ${Object.keys(result.errors).join(', ')}` : `Failed to parse CloudWatch Log message at index ${Object.keys(result.errors)[0]}`; const errorCause = new ZodError( - // @ts-expect-error - issues are assigned because success is false Object.values(result.errors).flatMap((error) => error.issues) ); diff --git a/packages/parser/src/envelopes/dynamodb.ts b/packages/parser/src/envelopes/dynamodb.ts index bbe0914303..bcf951d647 100644 --- a/packages/parser/src/envelopes/dynamodb.ts +++ b/packages/parser/src/envelopes/dynamodb.ts @@ -1,4 +1,4 @@ -import { ZodError, type ZodIssue, type ZodSchema, type z } from 'zod'; +import { ZodError, type ZodType, type z } from 'zod'; import { ParseError } from '../errors.js'; import { DynamoDBStreamSchema } from '../schemas/index.js'; import type { DynamoDBStreamEnvelopeResponse } from '../types/envelope.js'; @@ -17,10 +17,10 @@ export const DynamoDBStreamEnvelope = { * @hidden */ [envelopeDiscriminator]: 'array' as const, - parse( + parse( data: unknown, - schema: T - ): DynamoDBStreamEnvelopeResponse>[] { + schema: ZodType + ): DynamoDBStreamEnvelopeResponse[] { const parsedEnvelope = DynamoDBStreamSchema.parse(data); const processImage = ( @@ -57,10 +57,10 @@ export const DynamoDBStreamEnvelope = { })); }, - safeParse( + safeParse( data: unknown, - schema: T - ): ParsedResult>[]> { + schema: ZodType + ): ParsedResult[]> { const parsedEnvelope = DynamoDBStreamSchema.safeParse(data); if (!parsedEnvelope.success) { return { @@ -77,15 +77,15 @@ export const DynamoDBStreamEnvelope = { const result = parsedEnvelope.data.Records.reduce<{ success: boolean; - records: DynamoDBStreamEnvelopeResponse>[]; - errors: { index?: number; issues?: ZodIssue[] }; + records: DynamoDBStreamEnvelopeResponse[]; + errors: { [key: number]: { issues: z.core.$ZodIssue[] } }; }>( (acc, record, index) => { const newImage = processImage(record.dynamodb.NewImage); const oldImage = processImage(record.dynamodb.OldImage); if (newImage?.success === false || oldImage?.success === false) { - const issues: ZodIssue[] = []; + const issues: z.core.$ZodIssue[] = []; for (const key of ['NewImage', 'OldImage']) { const image = key === 'NewImage' ? newImage : oldImage; if (image?.success === false) { @@ -98,7 +98,6 @@ export const DynamoDBStreamEnvelope = { } } acc.success = false; - // @ts-expect-error - index is assigned acc.errors[index] = { issues }; return acc; } @@ -121,7 +120,6 @@ export const DynamoDBStreamEnvelope = { ? `Failed to parse records at indexes ${Object.keys(result.errors).join(', ')}` : `Failed to parse record at index ${Object.keys(result.errors)[0]}`; const errorCause = new ZodError( - // @ts-expect-error - issues are assigned because success is false Object.values(result.errors).flatMap((error) => error.issues) ); diff --git a/packages/parser/src/envelopes/eventbridge.ts b/packages/parser/src/envelopes/eventbridge.ts index adc47d75b3..601c04b6b2 100644 --- a/packages/parser/src/envelopes/eventbridge.ts +++ b/packages/parser/src/envelopes/eventbridge.ts @@ -1,4 +1,4 @@ -import type { ZodError, ZodSchema, z } from 'zod'; +import type { ZodType } from 'zod'; import { ParseError } from '../errors.js'; import { EventBridgeSchema } from '../schemas/index.js'; import type { ParsedResult } from '../types/index.js'; @@ -13,29 +13,22 @@ export const EventBridgeEnvelope = { * @hidden */ [envelopeDiscriminator]: 'object' as const, - parse(data: unknown, schema: T): z.infer { - const extendedSchema = EventBridgeSchema.extend({ - detail: schema, - }); + parse(data: unknown, schema: ZodType): T { try { - const parsed = extendedSchema.parse(data); - return parsed.detail; + return EventBridgeSchema.extend({ + detail: schema, + }).parse(data).detail; } catch (error) { throw new ParseError('Failed to parse EventBridge envelope', { - cause: error as ZodError, + cause: error, }); } }, - safeParse( - data: unknown, - schema: T - ): ParsedResult> { - const extendedSchema = EventBridgeSchema.extend({ + safeParse(data: unknown, schema: ZodType): ParsedResult { + const parsedResult = EventBridgeSchema.extend({ detail: schema, - }); - - const parsedResult = extendedSchema.safeParse(data); + }).safeParse(data); if (!parsedResult.success) { return { success: false, diff --git a/packages/parser/src/envelopes/index.ts b/packages/parser/src/envelopes/index.ts index 5e42fb172c..08e77b8756 100644 --- a/packages/parser/src/envelopes/index.ts +++ b/packages/parser/src/envelopes/index.ts @@ -4,11 +4,11 @@ export { CloudWatchEnvelope } from './cloudwatch.js'; export { DynamoDBStreamEnvelope } from './dynamodb.js'; export { EventBridgeEnvelope } from './eventbridge.js'; export { KafkaEnvelope } from './kafka.js'; -export { KinesisFirehoseEnvelope } from './kinesis-firehose.js'; export { KinesisEnvelope } from './kinesis.js'; +export { KinesisFirehoseEnvelope } from './kinesis-firehose.js'; export { LambdaFunctionUrlEnvelope } from './lambda.js'; -export { SnsSqsEnvelope } from './sns-sqs.js'; export { SnsEnvelope } from './sns.js'; +export { SnsSqsEnvelope } from './sns-sqs.js'; export { SqsEnvelope } from './sqs.js'; export { VpcLatticeEnvelope } from './vpc-lattice.js'; export { VpcLatticeV2Envelope } from './vpc-latticev2.js'; diff --git a/packages/parser/src/envelopes/kafka.ts b/packages/parser/src/envelopes/kafka.ts index 04fbb678d6..055d8091c1 100644 --- a/packages/parser/src/envelopes/kafka.ts +++ b/packages/parser/src/envelopes/kafka.ts @@ -1,4 +1,4 @@ -import { ZodError, type ZodIssue, type ZodSchema, z } from 'zod'; +import { ZodError, type ZodType, z } from 'zod'; import { ParseError } from '../errors.js'; import { KafkaMskEventSchema, @@ -43,7 +43,7 @@ export const KafkaEnvelope = { * @hidden */ [envelopeDiscriminator]: 'array' as const, - parse(data: unknown, schema: T): z.infer[] { + parse(data: unknown, schema: ZodType): z.infer>[] { const eventSource = extractEventSource(data); const parsedEnvelope = @@ -51,7 +51,7 @@ export const KafkaEnvelope = { ? KafkaMskEventSchema.parse(data) : KafkaSelfManagedEventSchema.parse(data); - const values: z.infer[] = []; + const values: z.infer>[] = []; for (const topicRecord of Object.values(parsedEnvelope.records)) { for (const record of topicRecord) { values.push(schema.parse(record.value)); @@ -61,10 +61,10 @@ export const KafkaEnvelope = { return values; }, - safeParse( + safeParse( data: unknown, - schema: T - ): ParsedResult[]> { + schema: ZodType + ): ParsedResult>[]> { // manually fetch event source to deside between Msk or SelfManaged const eventSource = (data as KafkaMskEvent).eventSource; @@ -83,8 +83,8 @@ export const KafkaEnvelope = { }; } - const values: z.infer[] = []; - const issues: ZodIssue[] = []; + const values: z.infer>[] = []; + const issues: z.core.$ZodIssue[] = []; for (const [topicKey, topicRecord] of Object.entries( parsedEnvelope.data.records )) { @@ -92,11 +92,12 @@ export const KafkaEnvelope = { const parsedRecord = schema.safeParse(record.value); if (!parsedRecord.success) { issues.push( - ...(parsedRecord.error as ZodError).issues.map((issue) => ({ + ...parsedRecord.error.issues.map((issue) => ({ ...issue, path: ['records', topicKey, ...issue.path], })) ); + continue; } values.push(parsedRecord.data); } diff --git a/packages/parser/src/envelopes/kinesis-firehose.ts b/packages/parser/src/envelopes/kinesis-firehose.ts index 859f5b15f3..0a7a905607 100644 --- a/packages/parser/src/envelopes/kinesis-firehose.ts +++ b/packages/parser/src/envelopes/kinesis-firehose.ts @@ -1,9 +1,6 @@ -import { ZodError, type ZodIssue, type ZodSchema, type z } from 'zod'; +import { ZodError, type ZodType, type z } from 'zod'; import { ParseError } from '../errors.js'; -import { - type KinesisFirehoseRecordSchema, - KinesisFirehoseSchema, -} from '../schemas/index.js'; +import { KinesisFirehoseSchema } from '../schemas/index.js'; import type { ParsedResult } from '../types/index.js'; import { envelopeDiscriminator } from './envelope.js'; @@ -25,7 +22,7 @@ export const KinesisFirehoseEnvelope = { * @hidden */ [envelopeDiscriminator]: 'array' as const, - parse(data: unknown, schema: T): z.infer[] { + parse(data: unknown, schema: ZodType): T[] { let parsedEnvelope: z.infer; try { parsedEnvelope = KinesisFirehoseSchema.parse(data); @@ -36,7 +33,7 @@ export const KinesisFirehoseEnvelope = { } return parsedEnvelope.records.map((record, recordIndex) => { - let parsedRecord: z.infer; + let parsedRecord: T; try { parsedRecord = schema.parse(record.data); } catch (error) { @@ -56,10 +53,7 @@ export const KinesisFirehoseEnvelope = { }); }, - safeParse( - data: unknown, - schema: T - ): ParsedResult[]> { + safeParse(data: unknown, schema: ZodType): ParsedResult { const parsedEnvelope = KinesisFirehoseSchema.safeParse(data); if (!parsedEnvelope.success) { return { @@ -73,9 +67,9 @@ export const KinesisFirehoseEnvelope = { const result = parsedEnvelope.data.records.reduce<{ success: boolean; - records: z.infer[]; + records: T[]; errors: { - [key: number | string]: { issues: ZodIssue[] }; + [key: number | string]: { issues: z.core.$ZodIssue[] }; }; }>( (acc, record, index) => { diff --git a/packages/parser/src/envelopes/kinesis.ts b/packages/parser/src/envelopes/kinesis.ts index 9259a56f0b..a7cbfc461b 100644 --- a/packages/parser/src/envelopes/kinesis.ts +++ b/packages/parser/src/envelopes/kinesis.ts @@ -1,9 +1,6 @@ -import { ZodError, type ZodIssue, type ZodSchema, type z } from 'zod'; +import { ZodError, type ZodType, type z } from 'zod'; import { ParseError } from '../errors.js'; -import { - type KinesisDataStreamRecord, - KinesisDataStreamSchema, -} from '../schemas/kinesis.js'; +import { KinesisDataStreamSchema } from '../schemas/kinesis.js'; import type { ParsedResult } from '../types/index.js'; import { envelopeDiscriminator } from './envelope.js'; @@ -23,7 +20,7 @@ export const KinesisEnvelope = { * @hidden */ [envelopeDiscriminator]: 'array' as const, - parse(data: unknown, schema: T): z.infer[] { + parse(data: unknown, schema: ZodType): T[] { let parsedEnvelope: z.infer; try { parsedEnvelope = KinesisDataStreamSchema.parse(data); @@ -34,7 +31,7 @@ export const KinesisEnvelope = { } return parsedEnvelope.Records.map((record, recordIndex) => { - let parsedRecord: z.infer; + let parsedRecord: T; try { parsedRecord = schema.parse(record.kinesis.data); } catch (error) { @@ -60,10 +57,7 @@ export const KinesisEnvelope = { }); }, - safeParse( - data: unknown, - schema: T - ): ParsedResult[]> { + safeParse(data: unknown, schema: ZodType): ParsedResult { const parsedEnvelope = KinesisDataStreamSchema.safeParse(data); if (!parsedEnvelope.success) { return { @@ -77,8 +71,8 @@ export const KinesisEnvelope = { const result = parsedEnvelope.data.Records.reduce<{ success: boolean; - records: z.infer[]; - errors: { index?: number; issues?: ZodIssue[] }; + records: T[]; + errors: { [key: number]: { issues: z.core.$ZodIssue[] } }; }>( (acc, record, index) => { const parsedRecord = schema.safeParse(record.kinesis.data); @@ -89,7 +83,6 @@ export const KinesisEnvelope = { path: ['Records', index, 'kinesis', 'data', ...issue.path], })); acc.success = false; - // @ts-expect-error - index is assigned acc.errors[index] = { issues }; return acc; } @@ -112,7 +105,6 @@ export const KinesisEnvelope = { success: false, error: new ParseError(errorMessage, { cause: new ZodError( - // @ts-expect-error - issues are assigned because success is false Object.values(result.errors).flatMap((error) => error.issues) ), }), diff --git a/packages/parser/src/envelopes/lambda.ts b/packages/parser/src/envelopes/lambda.ts index d68af29a88..96a1f13268 100644 --- a/packages/parser/src/envelopes/lambda.ts +++ b/packages/parser/src/envelopes/lambda.ts @@ -1,4 +1,4 @@ -import type { ZodSchema, z } from 'zod'; +import type { ZodType } from 'zod'; import { ParseError } from '../errors.js'; import { LambdaFunctionUrlSchema } from '../schemas/index.js'; import type { ParsedResult } from '../types/index.js'; @@ -13,22 +13,19 @@ export const LambdaFunctionUrlEnvelope = { * @hidden */ [envelopeDiscriminator]: 'object' as const, - parse(data: unknown, schema: T): z.infer { + parse(data: unknown, schema: ZodType): T { try { return LambdaFunctionUrlSchema.extend({ body: schema, }).parse(data).body; } catch (error) { throw new ParseError('Failed to parse Lambda function URL body', { - cause: error as Error, + cause: error, }); } }, - safeParse( - data: unknown, - schema: T - ): ParsedResult> { + safeParse(data: unknown, schema: ZodType): ParsedResult { const results = LambdaFunctionUrlSchema.extend({ body: schema, }).safeParse(data); diff --git a/packages/parser/src/envelopes/sns-sqs.ts b/packages/parser/src/envelopes/sns-sqs.ts index a75a709f31..1aa17288e0 100644 --- a/packages/parser/src/envelopes/sns-sqs.ts +++ b/packages/parser/src/envelopes/sns-sqs.ts @@ -1,11 +1,11 @@ -import { ZodError, type ZodIssue, type ZodSchema, type z } from 'zod'; +import { ZodError, type ZodType, type z } from 'zod'; import { ParseError } from '../errors.js'; import { SnsSqsNotificationSchema } from '../schemas/sns.js'; import { SqsSchema } from '../schemas/sqs.js'; import type { ParsedResult, SnsSqsNotification } from '../types/index.js'; import { envelopeDiscriminator } from './envelope.js'; -const createError = (index: number, issues: ZodIssue[]) => ({ +const createError = (index: number, issues: z.core.$ZodIssue[]) => ({ issues: issues.map((issue) => ({ ...issue, path: ['Records', index, 'body', ...issue.path], @@ -19,13 +19,13 @@ type ParseStepSuccess = { type ParseStepError = { success: false; - error: { issues: ZodIssue[] }; + error: { issues: z.core.$ZodIssue[] }; }; type ParseStepResult = ParseStepSuccess | ParseStepError; const parseStep = ( - parser: (data: unknown) => z.SafeParseReturnType, + parser: (data: unknown) => z.ZodSafeParseResult, data: unknown, index: number ): ParseStepResult => { @@ -56,7 +56,7 @@ export const SnsSqsEnvelope = { * @hidden */ [envelopeDiscriminator]: 'array' as const, - parse(data: unknown, schema: T): z.infer[] { + parse(data: unknown, schema: ZodType): T[] { let parsedEnvelope: z.infer; try { parsedEnvelope = SqsSchema.parse(data); @@ -84,7 +84,8 @@ export const SnsSqsEnvelope = { : [ { code: 'custom', - message: 'Invalid JSON', + input: record.body, + message: `Invalid JSON - ${(error as Error).message}`, path: ['Records', recordIndex, 'body'], }, ] @@ -95,10 +96,7 @@ export const SnsSqsEnvelope = { }); }, - safeParse( - data: unknown, - schema: T - ): ParsedResult[]> { + safeParse(data: unknown, schema: ZodType): ParsedResult { const parsedEnvelope = SqsSchema.safeParse(data); if (!parsedEnvelope.success) { return { @@ -113,7 +111,7 @@ export const SnsSqsEnvelope = { const parseRecord = ( record: { body: string }, index: number - ): ParseStepResult> => { + ): ParseStepResult => { try { const body = JSON.parse(record.body); const notification = parseStep( @@ -123,18 +121,19 @@ export const SnsSqsEnvelope = { ); if (!notification.success) return notification; - return parseStep>( + return parseStep( (data) => schema.safeParse(data), notification.data.Message, index ); - } catch { + } catch (error) { return { success: false, error: createError(index, [ { code: 'custom', - message: 'Invalid JSON', + message: `Invalid JSON - ${(error as Error).message}`, + input: record.body, path: [], }, ]), @@ -144,9 +143,9 @@ export const SnsSqsEnvelope = { const result = parsedEnvelope.data.Records.reduce<{ success: boolean; - records: z.infer[]; + records: T[]; errors: { - [key: number | string]: { issues: ZodIssue[] }; + [key: number | string]: { issues: z.core.$ZodIssue[] }; }; }>( (acc, record, index) => { diff --git a/packages/parser/src/envelopes/sns.ts b/packages/parser/src/envelopes/sns.ts index 3a7d40cb32..038b2b1f13 100644 --- a/packages/parser/src/envelopes/sns.ts +++ b/packages/parser/src/envelopes/sns.ts @@ -1,4 +1,4 @@ -import { ZodError, type ZodIssue, type ZodSchema, type z } from 'zod'; +import { ZodError, type ZodType, type z } from 'zod'; import { ParseError } from '../errors.js'; import { SnsSchema } from '../schemas/sns.js'; import type { ParsedResult } from '../types/index.js'; @@ -19,7 +19,7 @@ export const SnsEnvelope = { * @hidden */ [envelopeDiscriminator]: 'array' as const, - parse(data: unknown, schema: T): z.infer[] { + parse(data: unknown, schema: ZodType): T[] { const parsedEnvelope = SnsSchema.parse(data); return parsedEnvelope.Records.map((record, index) => { @@ -38,10 +38,7 @@ export const SnsEnvelope = { }); }, - safeParse( - data: unknown, - schema: T - ): ParsedResult[]> { + safeParse(data: unknown, schema: ZodType): ParsedResult { const parsedEnvelope = SnsSchema.safeParse(data); if (!parsedEnvelope.success) { @@ -56,8 +53,8 @@ export const SnsEnvelope = { const result = parsedEnvelope.data.Records.reduce<{ success: boolean; - messages: z.infer[]; - errors: { index?: number; issues?: ZodIssue[] }; + messages: T[]; + errors: { [key: number]: { issues: z.core.$ZodIssue[] } }; }>( (acc, message, index) => { const parsedMessage = schema.safeParse(message.Sns.Message); @@ -67,7 +64,6 @@ export const SnsEnvelope = { ...issue, path: ['Records', index, 'Sns', 'Message', ...issue.path], })); - // @ts-expect-error - index is assigned acc.errors[index] = { issues }; return acc; } @@ -87,7 +83,6 @@ export const SnsEnvelope = { ? `Failed to parse SNS messages at indexes ${Object.keys(result.errors).join(', ')}` : `Failed to parse SNS message at index ${Object.keys(result.errors)[0]}`; const errorCause = new ZodError( - // @ts-expect-error - issues are assigned because success is false Object.values(result.errors).flatMap((error) => error.issues) ); diff --git a/packages/parser/src/envelopes/sqs.ts b/packages/parser/src/envelopes/sqs.ts index 6d57606f7b..71472ffd4a 100644 --- a/packages/parser/src/envelopes/sqs.ts +++ b/packages/parser/src/envelopes/sqs.ts @@ -1,6 +1,6 @@ -import { ZodError, type ZodIssue, type ZodSchema, type z } from 'zod'; +import { ZodError, type ZodType, type z } from 'zod'; import { ParseError } from '../errors.js'; -import { type SqsRecordSchema, SqsSchema } from '../schemas/sqs.js'; +import { SqsSchema } from '../schemas/sqs.js'; import type { ParsedResult } from '../types/index.js'; import { envelopeDiscriminator } from './envelope.js'; @@ -29,7 +29,7 @@ const SqsEnvelope = { * @hidden */ [envelopeDiscriminator]: 'array' as const, - parse(data: unknown, schema: T): z.infer[] { + parse(data: unknown, schema: ZodType): T[] { let parsedEnvelope: z.infer; try { parsedEnvelope = SqsSchema.parse(data); @@ -40,7 +40,7 @@ const SqsEnvelope = { } return parsedEnvelope.Records.map((record, recordIndex) => { - let parsedRecord: z.infer; + let parsedRecord: T; try { parsedRecord = schema.parse(record.body); } catch (error) { @@ -60,10 +60,7 @@ const SqsEnvelope = { }); }, - safeParse( - data: unknown, - schema: T - ): ParsedResult[]> { + safeParse(data: unknown, schema: ZodType): ParsedResult { const parsedEnvelope = SqsSchema.safeParse(data); if (!parsedEnvelope.success) { return { @@ -77,8 +74,8 @@ const SqsEnvelope = { const result = parsedEnvelope.data.Records.reduce<{ success: boolean; - records: z.infer[]; - errors: { index?: number; issues?: ZodIssue[] }; + records: T[]; + errors: { index?: number; issues?: z.core.$ZodIssue[] }; }>( (acc, record, index) => { const parsedRecord = schema.safeParse(record.body); diff --git a/packages/parser/src/envelopes/vpc-lattice.ts b/packages/parser/src/envelopes/vpc-lattice.ts index 6c8190ae8c..7a686f64b0 100644 --- a/packages/parser/src/envelopes/vpc-lattice.ts +++ b/packages/parser/src/envelopes/vpc-lattice.ts @@ -1,4 +1,4 @@ -import type { ZodSchema, z } from 'zod'; +import type { ZodType, z } from 'zod'; import { ParseError } from '../errors.js'; import { VpcLatticeSchema } from '../schemas/index.js'; import type { ParsedResult } from '../types/index.js'; @@ -7,14 +7,13 @@ import { envelopeDiscriminator } from './envelope.js'; /** * Amazon VPC Lattice envelope to extract data within body key */ - export const VpcLatticeEnvelope = { /** * This is a discriminator to differentiate whether an envelope returns an array or an object * @hidden */ [envelopeDiscriminator]: 'object' as const, - parse(data: unknown, schema: T): z.infer { + parse(data: unknown, schema: ZodType): z.infer> { try { return VpcLatticeSchema.extend({ body: schema, @@ -26,10 +25,10 @@ export const VpcLatticeEnvelope = { } }, - safeParse( + safeParse( data: unknown, - schema: T - ): ParsedResult> { + schema: ZodType + ): ParsedResult>> { const result = VpcLatticeSchema.extend({ body: schema, }).safeParse(data); diff --git a/packages/parser/src/envelopes/vpc-latticev2.ts b/packages/parser/src/envelopes/vpc-latticev2.ts index 0ff99dffe6..7a7f245518 100644 --- a/packages/parser/src/envelopes/vpc-latticev2.ts +++ b/packages/parser/src/envelopes/vpc-latticev2.ts @@ -1,4 +1,4 @@ -import type { ZodSchema, z } from 'zod'; +import type { ZodType } from 'zod'; import { ParseError } from '../errors.js'; import { VpcLatticeV2Schema } from '../schemas/index.js'; import type { ParsedResult } from '../types/index.js'; @@ -13,7 +13,7 @@ export const VpcLatticeV2Envelope = { * @hidden */ [envelopeDiscriminator]: 'object' as const, - parse(data: unknown, schema: T): z.infer { + parse(data: unknown, schema: ZodType): T { try { return VpcLatticeV2Schema.extend({ body: schema, @@ -25,10 +25,7 @@ export const VpcLatticeV2Envelope = { } }, - safeParse( - data: unknown, - schema: T - ): ParsedResult> { + safeParse(data: unknown, schema: ZodType): ParsedResult { const result = VpcLatticeV2Schema.extend({ body: schema, }).safeParse(data); diff --git a/packages/parser/src/errors.ts b/packages/parser/src/errors.ts index d4aac4d7ad..089d414a93 100644 --- a/packages/parser/src/errors.ts +++ b/packages/parser/src/errors.ts @@ -3,23 +3,14 @@ * The cause of the error is included in the message, if possible. */ class ParseError extends Error { - public constructor(message: string, options?: { cause?: Error }) { - const errorMessage = options?.cause - ? `${message}. This error was caused by: ${options?.cause.message}.` - : message; + public constructor(message: string, options?: ErrorOptions) { + const errorMessage = + options?.cause && options.cause instanceof Error + ? `${message}. This error was caused by: ${options?.cause.message}.` + : message; super(errorMessage, options); this.name = 'ParseError'; } } -/** - * Custom error thrown when decompression fails. - */ -class DecompressError extends ParseError { - constructor(message: string, options?: { cause?: Error }) { - super(message, options); - this.name = 'DecompressError'; - } -} - -export { ParseError, DecompressError }; +export { ParseError }; diff --git a/packages/parser/src/helpers/dynamodb.ts b/packages/parser/src/helpers/dynamodb.ts index 7addeca6fa..ace793d3ca 100644 --- a/packages/parser/src/helpers/dynamodb.ts +++ b/packages/parser/src/helpers/dynamodb.ts @@ -1,6 +1,6 @@ import { unmarshallDynamoDB } from '@aws-lambda-powertools/commons/utils/unmarshallDynamoDB'; import type { AttributeValue } from '@aws-sdk/client-dynamodb'; -import { type ZodTypeAny, z } from 'zod'; +import { type ZodType, z } from 'zod'; /** * A helper function to unmarshall DynamoDB stream events and validate them against a schema. @@ -61,7 +61,7 @@ import { type ZodTypeAny, z } from 'zod'; * * @param schema - The schema to validate the JSON string against */ -const DynamoDBMarshalled = (schema: T) => +const DynamoDBMarshalled = (schema: ZodType) => z .union([ z.custom(), @@ -70,7 +70,7 @@ const DynamoDBMarshalled = (schema: T) => .transform((str, ctx) => { try { return unmarshallDynamoDB(str); - } catch (err) { + } catch { ctx.addIssue({ code: 'custom', message: 'Could not unmarshall DynamoDB stream record', diff --git a/packages/parser/src/helpers/index.ts b/packages/parser/src/helpers/index.ts index f24424d17b..4098233df2 100644 --- a/packages/parser/src/helpers/index.ts +++ b/packages/parser/src/helpers/index.ts @@ -1,4 +1,4 @@ -import { type ZodTypeAny, z } from 'zod'; +import { type ZodType, z } from 'zod'; /** * A helper function to parse a JSON string and validate it against a schema. @@ -38,16 +38,17 @@ import { type ZodTypeAny, z } from 'zod'; * * @param schema - The schema to validate the JSON string against */ -const JSONStringified = (schema: T) => +const JSONStringified = (schema: T) => z .string() .transform((str, ctx) => { try { return JSON.parse(str); - } catch (err) { + } catch (error) { ctx.addIssue({ code: 'custom', - message: 'Invalid JSON', + message: `Invalid JSON - ${(error as Error).message}`, + fatal: true, }); } }) diff --git a/packages/parser/src/index.ts b/packages/parser/src/index.ts index e181735190..d932877eba 100644 --- a/packages/parser/src/index.ts +++ b/packages/parser/src/index.ts @@ -1,2 +1,2 @@ -export { parser } from './parserDecorator.js'; export { ParseError } from './errors.js'; +export { parser } from './parserDecorator.js'; diff --git a/packages/parser/src/middleware/index.ts b/packages/parser/src/middleware/index.ts index 3a31e0992f..c57cdf34cd 100644 --- a/packages/parser/src/middleware/index.ts +++ b/packages/parser/src/middleware/index.ts @@ -1,12 +1,12 @@ import type { MiddyLikeRequest } from '@aws-lambda-powertools/commons/types'; import type { MiddlewareObj } from '@middy/core'; -import type { ZodType } from 'zod'; +import type { StandardSchemaV1 } from '@standard-schema/spec'; import { parse } from '../parser.js'; import type { Envelope } from '../types/envelope.js'; import type { ParserOptions, ParserOutput } from '../types/parser.js'; /** - * A middiy middleware to parse your event. + * A Middy.js middleware to parse incoming events using a specified schema and optional envelope. * * @example * ```typescript @@ -22,19 +22,17 @@ import type { ParserOptions, ParserOutput } from '../types/parser.js'; * * type Order = z.infer; * - * export const handler = middy( - * async (event: Order, _context: unknown): Promise => { - * // event is validated as sqs message envelope - * // the body is unwrapped and parsed into object ready to use - * // you can now use event as Order in your code - * } - * ).use(parser({ schema: oderSchema, envelope: sqsEnvelope })); + * export const handler = middy() + * .use(parser({ schema: oderSchema, envelope: sqsEnvelope })) + * .handler(async (event) => { + * // ^ event is inferred as Order[] + * }) * ``` * - * @param options + * @param options - options for the parser */ const parser = < - TSchema extends ZodType, + TSchema extends StandardSchemaV1, TEnvelope extends Envelope, TSafeParse extends boolean = false, >( diff --git a/packages/parser/src/parser.ts b/packages/parser/src/parser.ts index dccb6fd8f9..9a7077f8c1 100644 --- a/packages/parser/src/parser.ts +++ b/packages/parser/src/parser.ts @@ -1,10 +1,15 @@ -import type { ZodSchema, z } from 'zod'; +import type { StandardSchemaV1 } from '@standard-schema/spec'; import { ParseError } from './errors.js'; -import type { Envelope } from './types/index.js'; -import type { ParseFunction } from './types/parser.js'; +import type { + ArrayEnvelope, + DynamoDBArrayEnvelope, + DynamoDBStreamEnvelopeResponse, + Envelope, +} from './types/index.js'; +import type { InferOutput, ParsedResult } from './types/parser.js'; /** - * Parse the data using the provided schema, envelope and safeParse flag + * Parse the data using the provided schema and optional envelope. * * @example * ```typescript @@ -20,55 +25,128 @@ import type { ParseFunction } from './types/parser.js'; * * const handler = async (event: SqsEvent, context: unknown): Promise => { * const parsedEvent = parse(event, SqsEnvelope, Order); - * - * const parsedSafe: ParsedResult = parse(event, SqsEnvelope, Order, true) * } - * @param data the data to parse - * @param envelope the envelope to use, can be undefined - * @param schema the schema to use - * @param safeParse whether to use safeParse or not, if true it will return a ParsedResult with the original event if the parsing fails + * ``` + * + * @param data - the data to parse + * @param envelope - optional envelope to use when parsing the data + * @param schema - the schema to use + * @param safeParse - whether to throw on error, if `true` it will return a `ParsedResult` with the original event if the parsing fails */ -const parse: ParseFunction = ( - data: z.infer, +function parse( + data: unknown, + envelope: undefined, + schema: T, + safeParse?: false +): InferOutput; + +// No envelope, with safeParse +function parse( + data: unknown, + envelope: undefined, + schema: T, + safeParse: true +): ParsedResult>; + +// No envelope, with boolean safeParse +function parse( + data: unknown, + envelope: undefined, + schema: T, + safeParse: boolean +): InferOutput | ParsedResult>; + +// With envelope, no safeParse +function parse( + data: unknown, + envelope: E, + schema: T, + safeParse?: false +): E extends DynamoDBArrayEnvelope + ? DynamoDBStreamEnvelopeResponse>[] + : E extends ArrayEnvelope + ? InferOutput[] + : InferOutput; + +// With envelope, with safeParse +function parse( + data: unknown, + envelope: E, + schema: T, + safeParse: true +): E extends DynamoDBArrayEnvelope + ? ParsedResult>[]> + : E extends ArrayEnvelope + ? ParsedResult[]> + : ParsedResult>; + +// No envelope, with boolean | undefined safeParse +function parse( + data: unknown, + envelope: undefined, + schema: T, + safeParse?: boolean +): InferOutput | ParsedResult>; + +// With envelope, with boolean | undefined safeParse +function parse( + data: unknown, + envelope: E, + schema: T, + safeParse?: boolean +): E extends DynamoDBArrayEnvelope + ? + | DynamoDBStreamEnvelopeResponse>[] + | ParsedResult>[]> + : E extends ArrayEnvelope + ? InferOutput[] | ParsedResult[]> + : InferOutput | ParsedResult>; + +// Implementation +function parse( + data: unknown, envelope: E | undefined, schema: T, safeParse?: boolean -) => { +): InferOutput | ParsedResult> { if (envelope && safeParse) { - return envelope.safeParse(data, schema); + // biome-ignore lint/suspicious/noExplicitAny: at least for now, we need to broaden the type because the envelope's parse and safeParse methods are not typed with StandardSchemaV1 but with ZodSchema + return envelope.safeParse(data, schema as any); } if (envelope) { - return envelope.parse(data, schema); + // biome-ignore lint/suspicious/noExplicitAny: at least for now, we need to broaden the type because the envelope's parse and safeParse methods are not typed with StandardSchemaV1 but with ZodSchema + return envelope.parse(data, schema as any); } - if (safeParse) { - return safeParseSchema(data, schema); - } - try { - return schema.parse(data); - } catch (error) { - throw new ParseError('Failed to parse schema', { cause: error as Error }); - } -}; -/** - * Parse the data safely using the provided schema. - * This function will not throw an error if the parsing fails, instead it will return a ParsedResultError with the original event. - * Otherwise, it will return ParsedResultSuccess with the parsed data. - * @param data the data to parse - * @param schema the zod schema to use - */ -const safeParseSchema = (data: z.infer, schema: T) => { - const result = schema.safeParse(data); + const result = schema['~standard'].validate(data); + /* v8 ignore start */ + if (result instanceof Promise) { + throw new ParseError('Schema parsing supports only synchronous validation'); + } + /* v8 ignore stop */ - return result.success - ? result - : { + if (result.issues) { + const error = new ParseError('Failed to parse schema', { + cause: result.issues, + }); + if (safeParse) { + return { success: false, - error: new ParseError('Failed to parse schema safely', { - cause: result.error, - }), + error, originalEvent: data, }; -}; + } + throw error; + } + + if (safeParse) { + return { + success: true, + data: result.value, + }; + } + + return result.value; +} export { parse }; diff --git a/packages/parser/src/parserDecorator.ts b/packages/parser/src/parserDecorator.ts index 0e9ee7ed87..bb9656ca2a 100644 --- a/packages/parser/src/parserDecorator.ts +++ b/packages/parser/src/parserDecorator.ts @@ -1,6 +1,6 @@ import type { HandlerMethodDecorator } from '@aws-lambda-powertools/commons/types'; +import type { StandardSchemaV1 } from '@standard-schema/spec'; import type { Context, Handler } from 'aws-lambda'; -import type { ZodSchema } from 'zod'; import { parse } from './parser.js'; import type { Envelope, ParserOptions } from './types/index.js'; import type { ParserOutput } from './types/parser.js'; @@ -69,7 +69,7 @@ import type { ParserOutput } from './types/parser.js'; * @param options Configure the parser with the `schema`, `envelope` and whether to `safeParse` or not */ export const parser = < - TSchema extends ZodSchema, + TSchema extends StandardSchemaV1, TEnvelope extends Envelope = undefined, TSafeParse extends boolean = false, >( diff --git a/packages/parser/src/schemas/alb.ts b/packages/parser/src/schemas/alb.ts index f22e53fcbb..9b61825ba4 100644 --- a/packages/parser/src/schemas/alb.ts +++ b/packages/parser/src/schemas/alb.ts @@ -1,4 +1,5 @@ import { z } from 'zod'; +import type { ALBEvent } from '../types/schema.js'; /** * Zod schema for Application Load Balancer events. @@ -59,7 +60,7 @@ import { z } from 'zod'; * } * ``` * - * @see {@link types.ALBEvent | ALBEvent} + * @see {@link ALBEvent | `ALBEvent`} * @see {@link https://docs.aws.amazon.com/elasticloadbalancing/latest/application/lambda-functions.html} * @see {@link https://docs.aws.amazon.com/lambda/latest/dg/services-alb.html} */ @@ -82,7 +83,7 @@ const AlbSchema = z.object({ }); /** - * @deprecated Use `AlbSchema` instead, which handles both types of headers & querystring parameters. + * @deprecated Use {@link AlbSchema | `AlbSchema`} instead, which handles both types of headers & querystring parameters. * * This schema will be removed in a future major release. */ diff --git a/packages/parser/src/schemas/api-gateway-websocket.ts b/packages/parser/src/schemas/api-gateway-websocket.ts index d6e56fed24..ca26281e79 100644 --- a/packages/parser/src/schemas/api-gateway-websocket.ts +++ b/packages/parser/src/schemas/api-gateway-websocket.ts @@ -1,4 +1,6 @@ import { z } from 'zod'; +import type { APIGatewayProxyWebsocketEvent } from '../types/schema.js'; +import { APIGatewayRecord, APIGatewayStringArray } from './apigw-proxy.js'; /** * A zod schema for API Gateway Proxy WebSocket events. @@ -59,22 +61,25 @@ import { z } from 'zod'; * } * ``` * + * @see {@link APIGatewayProxyWebsocketEvent | `APIGatewayProxyWebsocketEvent`} * @see {@link https://docs.aws.amazon.com/apigateway/latest/developerguide/websocket-api-develop-integrations.html} */ export const APIGatewayProxyWebsocketEventSchema = z.object({ type: z.string(), methodArn: z.string(), - headers: z.record(z.string()), - multiValueHeaders: z.record(z.array(z.string())), - queryStringParameters: z.record(z.string()).nullable().optional(), - multiValueQueryStringParameters: z.record(z.array(z.string())).nullable().optional(), - stageVariables: z.record(z.string()).nullable().optional(), + headers: z.record(z.string(), z.string()).nullish(), + multiValueHeaders: z.record(z.string(), APIGatewayStringArray), + queryStringParameters: APIGatewayRecord.nullable(), + multiValueQueryStringParameters: z + .record(z.string(), APIGatewayStringArray) + .nullable(), + stageVariables: APIGatewayRecord.nullable().optional(), requestContext: z.object({ routeKey: z.string(), - eventType: z.enum(["CONNECT", "DISCONNECT", "MESSAGE"]), + eventType: z.enum(['CONNECT', 'DISCONNECT', 'MESSAGE']), extendedRequestId: z.string(), requestTime: z.string(), - messageDirection: z.enum(["IN", "OUT"]), + messageDirection: z.enum(['IN', 'OUT']), stage: z.string(), connectedAt: z.number(), requestTimeEpoch: z.number(), @@ -89,4 +94,4 @@ export const APIGatewayProxyWebsocketEventSchema = z.object({ }), isBase64Encoded: z.boolean(), body: z.string().optional().nullable(), -}); \ No newline at end of file +}); diff --git a/packages/parser/src/schemas/api-gateway.ts b/packages/parser/src/schemas/api-gateway.ts index 991cd88bcb..9baa7c322e 100644 --- a/packages/parser/src/schemas/api-gateway.ts +++ b/packages/parser/src/schemas/api-gateway.ts @@ -1,4 +1,5 @@ import { z } from 'zod'; +import type { APIGatewayProxyEvent } from '../types/schema.js'; import { APIGatewayCert, APIGatewayHttpMethod, @@ -29,9 +30,7 @@ const APIGatewayEventIdentity = z.object({ * * See aws-powertools/powertools-lambda-python#1562 for more information. */ - sourceIp: z - .union([z.string().ip(), z.literal('test-invoke-source-ip')]) - .optional(), + sourceIp: z.union([z.ipv4(), z.literal('test-invoke-source-ip')]).optional(), user: z.string().nullish(), userAgent: z.string().nullish(), userArn: z.string().nullish(), @@ -147,8 +146,7 @@ const APIGatewayEventRequestContextSchema = z * "apiId": "abcdef123" * } * ``` - * @see {@link types.APIGatewayProxyEvent | APIGatewayProxyEvent} - * + * @see {@link APIGatewayProxyEvent | `APIGatewayProxyEvent`} * @see {@link https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html} */ const APIGatewayProxyEventSchema = z.object({ @@ -156,9 +154,11 @@ const APIGatewayProxyEventSchema = z.object({ path: z.string(), httpMethod: APIGatewayHttpMethod, headers: APIGatewayRecord.nullish(), - multiValueHeaders: z.record(APIGatewayStringArray).nullish(), + multiValueHeaders: z.record(z.string(), APIGatewayStringArray).nullish(), queryStringParameters: APIGatewayRecord.nullable(), - multiValueQueryStringParameters: z.record(APIGatewayStringArray).nullable(), + multiValueQueryStringParameters: z + .record(z.string(), APIGatewayStringArray) + .nullable(), pathParameters: APIGatewayRecord.nullish(), stageVariables: APIGatewayRecord.nullish(), requestContext: APIGatewayEventRequestContextSchema, @@ -227,9 +227,9 @@ const APIGatewayRequestAuthorizerEventSchema = z.object({ path: z.string(), httpMethod: APIGatewayHttpMethod, headers: APIGatewayRecord, - multiValueHeaders: z.record(APIGatewayStringArray), + multiValueHeaders: z.record(z.string(), APIGatewayStringArray), queryStringParameters: APIGatewayRecord, - multiValueQueryStringParameters: z.record(APIGatewayStringArray), + multiValueQueryStringParameters: z.record(z.string(), APIGatewayStringArray), pathParameters: APIGatewayRecord, stageVariables: APIGatewayRecord, requestContext: APIGatewayEventRequestContextSchema, diff --git a/packages/parser/src/schemas/api-gatewayv2.ts b/packages/parser/src/schemas/api-gatewayv2.ts index 6bab874fb0..bff5fdfdd6 100644 --- a/packages/parser/src/schemas/api-gatewayv2.ts +++ b/packages/parser/src/schemas/api-gatewayv2.ts @@ -1,4 +1,8 @@ import { z } from 'zod'; +import { + APIGatewayProxyEventV2, + APIGatewayRequestAuthorizerEventV2, +} from '../types/schema.js'; import { APIGatewayCert, APIGatewayHttpMethod, @@ -106,7 +110,7 @@ const APIGatewayRequestContextV2Schema = z.object({ method: APIGatewayHttpMethod, path: z.string(), protocol: z.string(), - sourceIp: z.string().ip(), + sourceIp: z.ipv4(), userAgent: z.string(), }), requestId: z.string(), @@ -161,6 +165,7 @@ const APIGatewayRequestContextV2Schema = z.object({ * } * ``` * + * @see {@link APIGatewayProxyEventV2 | `APIGatewayProxyEventV2`} * @see {@link https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html} */ const APIGatewayProxyEventV2Schema = z.object({ @@ -224,6 +229,7 @@ const APIGatewayProxyEventV2Schema = z.object({ * } * ``` * + * @see {@link APIGatewayRequestAuthorizerEventV2 | `APIGatewayRequestAuthorizerEventV2`} * @see {@link https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-lambda-authorizer.html} */ const APIGatewayRequestAuthorizerEventV2Schema = z.object({ diff --git a/packages/parser/src/schemas/apigw-proxy.ts b/packages/parser/src/schemas/apigw-proxy.ts index ea35ee5191..35ce6b5110 100644 --- a/packages/parser/src/schemas/apigw-proxy.ts +++ b/packages/parser/src/schemas/apigw-proxy.ts @@ -17,7 +17,7 @@ const APIGatewayCert = z.object({ /** * A zod schema for an object with string keys and string values */ -const APIGatewayRecord = z.record(z.string()); +const APIGatewayRecord = z.record(z.string(), z.string()); /** * A zod schema for an array of strings diff --git a/packages/parser/src/schemas/appsync-events.ts b/packages/parser/src/schemas/appsync-events.ts index 7c90d68a99..5c7b39f809 100644 --- a/packages/parser/src/schemas/appsync-events.ts +++ b/packages/parser/src/schemas/appsync-events.ts @@ -1,4 +1,8 @@ import { z } from 'zod'; +import type { + AppSyncEventsPublishEvent, + AppSyncEventsSubscribeEvent, +} from '../types/schema.js'; import { AppSyncCognitoIdentity, AppSyncIamIdentity, @@ -105,6 +109,8 @@ const AppSyncEventsBaseSchema = z.object({ * ] * } * ``` + * + * @see {@link AppSyncEventsPublishEvent | `AppSyncEventsPublishEvent`} */ const AppSyncEventsPublishSchema = AppSyncEventsBaseSchema.extend({ info: AppSyncEventsInfoSchema.extend({ @@ -151,6 +157,8 @@ const AppSyncEventsPublishSchema = AppSyncEventsBaseSchema.extend({ * "events": null, * } * ``` + * + * @see {@link AppSyncEventsSubscribeEvent | `AppSyncEventsSubscribeEvent`} */ const AppSyncEventsSubscribeSchema = AppSyncEventsBaseSchema.extend({ info: AppSyncEventsInfoSchema.extend({ diff --git a/packages/parser/src/schemas/appsync-shared.ts b/packages/parser/src/schemas/appsync-shared.ts index c04d4916e9..7e7278bf49 100644 --- a/packages/parser/src/schemas/appsync-shared.ts +++ b/packages/parser/src/schemas/appsync-shared.ts @@ -16,7 +16,7 @@ const AppSyncCognitoIdentity = z.object({ issuer: z.string(), username: z.string(), claims: z.record(z.string(), z.unknown()), - sourceIp: z.array(z.string().ip()), + sourceIp: z.array(z.ipv4()), defaultAuthStrategy: z.string().nullable(), groups: z.array(z.string()).nullable(), }); diff --git a/packages/parser/src/schemas/appsync.ts b/packages/parser/src/schemas/appsync.ts index 610c507d75..ca2c554bec 100644 --- a/packages/parser/src/schemas/appsync.ts +++ b/packages/parser/src/schemas/appsync.ts @@ -1,4 +1,8 @@ import { z } from 'zod'; +import type { + AppSyncBatchResolverEvent, + AppSyncResolverEvent, +} from '../types/schema.js'; import { AppSyncCognitoIdentity, AppSyncIamIdentity, @@ -80,30 +84,30 @@ const AppSyncIdentity = z.union([ * } * ``` * + * @see {@link AppSyncResolverEvent | `AppSyncResolverEvent`} * @see {@link https://docs.aws.amazon.com/appsync/latest/devguide/resolver-context-reference-js.html} */ - const AppSyncResolverSchema = z.object({ - arguments: z.record(z.any()), + arguments: z.record(z.string(), z.any()), identity: z.optional(AppSyncIdentity), - source: z.record(z.any()).nullable(), + source: z.record(z.string(), z.any()).nullable(), request: z.object({ domainName: z.string().nullable(), - headers: z.record(z.string()), + headers: z.record(z.string(), z.string()), }), info: z.object({ selectionSetList: z.array(z.string()), selectionSetGraphQL: z.string(), parentTypeName: z.string(), fieldName: z.string(), - variables: z.record(z.any()), + variables: z.record(z.string(), z.any()), }), prev: z .object({ - result: z.record(z.any()), + result: z.record(z.string(), z.any()), }) .nullable(), - stash: z.record(z.any()), + stash: z.record(z.string(), z.any()), }); /** @@ -224,9 +228,9 @@ const AppSyncResolverSchema = z.object({ * }] * ``` * + * @see {@link AppSyncBatchResolverEvent | `AppSyncBatchResolverEvent`} * @see {@link https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-lambda-resolvers.html#advanced-use-case-batching} */ - const AppSyncBatchResolverSchema = z.array(AppSyncResolverSchema); export { diff --git a/packages/parser/src/schemas/cloudformation-custom-resource.ts b/packages/parser/src/schemas/cloudformation-custom-resource.ts index cb18cad58c..ac88f3c03d 100644 --- a/packages/parser/src/schemas/cloudformation-custom-resource.ts +++ b/packages/parser/src/schemas/cloudformation-custom-resource.ts @@ -1,13 +1,18 @@ import { z } from 'zod'; +import type { + CloudFormationCustomResourceCreateEvent, + CloudFormationCustomResourceDeleteEvent, + CloudFormationCustomResourceUpdateEvent, +} from '../types/schema.js'; const CloudFormationCustomResourceBaseSchema = z.object({ ServiceToken: z.string(), - ResponseURL: z.string().url(), + ResponseURL: z.url(), StackId: z.string(), RequestId: z.string(), LogicalResourceId: z.string(), ResourceType: z.string(), - ResourceProperties: z.record(z.any()), + ResourceProperties: z.record(z.string(), z.any()), }); /** @@ -29,15 +34,13 @@ const CloudFormationCustomResourceBaseSchema = z.object({ * } * } * ``` - * @see {@link types.CloudFormationCustomResourceCreateEvent | CloudFormationCustomResourceCreateEvent} + * @see {@link CloudFormationCustomResourceCreateEvent | `CloudFormationCustomResourceCreateEvent`} * @see {@link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/crpg-ref-requesttypes-create.html} */ -const CloudFormationCustomResourceCreateSchema = - CloudFormationCustomResourceBaseSchema.merge( - z.object({ - RequestType: z.literal('Create'), - }) - ); +const CloudFormationCustomResourceCreateSchema = z.object({ + ...CloudFormationCustomResourceBaseSchema.shape, + RequestType: z.literal('Create'), +}); /** * Zod schema for CloudFormation Custom Resource event with RequestType = 'Delete' @@ -58,15 +61,13 @@ const CloudFormationCustomResourceCreateSchema = * } * } * ``` - * @see {@link types.CloudFormationCustomResourceDeleteEvent | CloudFormationCustomResourceDeleteEvent} + * @see {@link CloudFormationCustomResourceDeleteEvent | `CloudFormationCustomResourceDeleteEvent`} * @see {@link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/crpg-ref-requesttypes-delete.html} */ -const CloudFormationCustomResourceDeleteSchema = - CloudFormationCustomResourceBaseSchema.merge( - z.object({ - RequestType: z.literal('Delete'), - }) - ); +const CloudFormationCustomResourceDeleteSchema = z.object({ + ...CloudFormationCustomResourceBaseSchema.shape, + RequestType: z.literal('Delete'), +}); /** * Zod schema for CloudFormation Custom Resource event with RequestType = 'Update' @@ -91,16 +92,14 @@ const CloudFormationCustomResourceDeleteSchema = * } * } * ``` - * @see {@link types.CloudFormationCustomResourceUpdateEvent | CloudFormationCustomResourceUpdateEvent} + * @see {@link CloudFormationCustomResourceUpdateEvent | `CloudFormationCustomResourceUpdateEvent`} * @see {@link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/crpg-ref-requesttypes-update.html} */ -const CloudFormationCustomResourceUpdateSchema = - CloudFormationCustomResourceBaseSchema.merge( - z.object({ - RequestType: z.literal('Update'), - OldResourceProperties: z.record(z.any()), - }) - ); +const CloudFormationCustomResourceUpdateSchema = z.object({ + ...CloudFormationCustomResourceBaseSchema.shape, + RequestType: z.literal('Update'), + OldResourceProperties: z.record(z.string(), z.any()), +}); export { CloudFormationCustomResourceCreateSchema, diff --git a/packages/parser/src/schemas/cloudwatch.ts b/packages/parser/src/schemas/cloudwatch.ts index cc3963fe0a..b599160bf5 100644 --- a/packages/parser/src/schemas/cloudwatch.ts +++ b/packages/parser/src/schemas/cloudwatch.ts @@ -1,6 +1,6 @@ import { gunzipSync } from 'node:zlib'; import { z } from 'zod'; -import { DecompressError } from '../errors.js'; +import type { CloudWatchLogsEvent } from '../types/schema.js'; const CloudWatchLogEventSchema = z.object({ id: z.string(), @@ -14,23 +14,9 @@ const CloudWatchLogsDecodeSchema = z.object({ logGroup: z.string(), logStream: z.string(), subscriptionFilters: z.array(z.string()), - logEvents: z.array(CloudWatchLogEventSchema).min(1), + logEvents: z.array(CloudWatchLogEventSchema).nonempty(), }); -const decompressRecordToJSON = ( - data: string -): z.infer => { - try { - const uncompressed = gunzipSync(Buffer.from(data, 'base64')).toString( - 'utf8' - ); - - return CloudWatchLogsDecodeSchema.parse(JSON.parse(uncompressed)); - } catch (error) { - throw new DecompressError('Failed to decompress CloudWatch log data'); - } -}; - /** * Zod schema for CloudWatch Logs. * @@ -74,18 +60,33 @@ const decompressRecordToJSON = ( * } * ``` * - * @see {@link types.CloudWatchLogsEvent | CloudWatchLogsEvent} + * @see {@link CloudWatchLogsEvent | `CloudWatchLogsEvent`} * @see {@link https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SubscriptionFilters.html#LambdaFunctionExample} */ const CloudWatchLogsSchema = z.object({ awslogs: z.object({ - data: z.string().transform((data) => decompressRecordToJSON(data)), + data: z.base64().transform((data, ctx) => { + try { + const uncompressed = gunzipSync(Buffer.from(data, 'base64')).toString( + 'utf8' + ); + + return CloudWatchLogsDecodeSchema.parse(JSON.parse(uncompressed)); + } catch { + ctx.addIssue({ + code: 'custom', + message: 'Failed to decompress CloudWatch log data', + fatal: true, + }); + + return z.NEVER; + } + }), }), }); export { CloudWatchLogsSchema, CloudWatchLogsDecodeSchema, - decompressRecordToJSON, CloudWatchLogEventSchema, }; diff --git a/packages/parser/src/schemas/cognito.ts b/packages/parser/src/schemas/cognito.ts index d38b582722..a19ab0db52 100644 --- a/packages/parser/src/schemas/cognito.ts +++ b/packages/parser/src/schemas/cognito.ts @@ -568,8 +568,8 @@ const CreateAuthChallengeTriggerSchema = CognitoTriggerBaseSchema.extend({ userNotFound: z.boolean().optional(), }), response: z.object({ - publicChallengeParameters: z.record(z.string()).nullish(), - privateChallengeParameters: z.record(z.string()).nullish(), + publicChallengeParameters: z.record(z.string(), z.string()).nullish(), + privateChallengeParameters: z.record(z.string(), z.string()).nullish(), challengeMetadata: z.string().nullish(), }), }); diff --git a/packages/parser/src/schemas/dynamodb.ts b/packages/parser/src/schemas/dynamodb.ts index 5d735ee5bf..445bb749a5 100644 --- a/packages/parser/src/schemas/dynamodb.ts +++ b/packages/parser/src/schemas/dynamodb.ts @@ -2,6 +2,7 @@ import { unmarshallDynamoDB } from '@aws-lambda-powertools/commons/utils/unmarsh import { z } from 'zod'; import type { KinesisEnvelope } from '../envelopes/kinesis.js'; import type { DynamoDBMarshalled } from '../helpers/dynamodb.js'; +import type { DynamoDBStreamEvent } from '../types/schema.js'; const DynamoDBStreamChangeRecordBase = z.object({ ApproximateCreationDateTime: z.number().optional(), @@ -40,7 +41,7 @@ const unmarshallDynamoDBTransform = ( try { // @ts-expect-error return unmarshallDynamoDB(image) as Record; - } catch (err) { + } catch { ctx.addIssue({ code: 'custom', message: `Could not unmarshall ${imageName} in DynamoDB stream record`, @@ -251,15 +252,15 @@ const DynamoDBStreamToKinesisRecord = DynamoDBStreamRecord.extend({ * } * ``` * - * @see {@link types.DynamoDBStreamEvent | DynamoDBStreamEvent} + * @see {@link DynamoDBStreamEvent | DynamoDBStreamEvent} * @see {@link https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html} */ const DynamoDBStreamSchema = z.object({ - Records: z.array(DynamoDBStreamRecord).min(1), + Records: z.array(DynamoDBStreamRecord).nonempty(), window: z .object({ - start: z.string().datetime(), - end: z.string().datetime(), + start: z.iso.datetime(), + end: z.iso.datetime(), }) .optional(), state: z.record(z.string(), z.string()).optional(), diff --git a/packages/parser/src/schemas/eventbridge.ts b/packages/parser/src/schemas/eventbridge.ts index 82b3a48674..fae595dda9 100644 --- a/packages/parser/src/schemas/eventbridge.ts +++ b/packages/parser/src/schemas/eventbridge.ts @@ -1,4 +1,5 @@ import { z } from 'zod'; +import type { EventBridgeEvent } from '../types/schema.js'; /** * Zod schema for EventBridge event @@ -24,7 +25,7 @@ import { z } from 'zod'; * } * ``` * - * @see {@link types.EventBridgeEvent | EventBridgeEvent} + * @see {@link EventBridgeEvent | `EventBridgeEvent`} * @see {@link https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-events.html} */ const EventBridgeSchema = z.object({ @@ -32,7 +33,7 @@ const EventBridgeSchema = z.object({ id: z.string(), source: z.string(), account: z.string(), - time: z.string().datetime(), + time: z.iso.datetime(), region: z.string(), resources: z.array(z.string()), 'detail-type': z.string(), diff --git a/packages/parser/src/schemas/index.ts b/packages/parser/src/schemas/index.ts index 22854cf653..a43571279f 100644 --- a/packages/parser/src/schemas/index.ts +++ b/packages/parser/src/schemas/index.ts @@ -1,28 +1,28 @@ -export { AlbSchema, AlbMultiValueHeadersSchema } from './alb.js'; +export { AlbMultiValueHeadersSchema, AlbSchema } from './alb.js'; export { + APIGatewayEventRequestContextSchema, APIGatewayProxyEventSchema, APIGatewayRequestAuthorizerEventSchema, APIGatewayTokenAuthorizerEventSchema, - APIGatewayEventRequestContextSchema, } from './api-gateway.js'; export { APIGatewayProxyWebsocketEventSchema } from './api-gateway-websocket.js'; export { - AppSyncResolverSchema, + APIGatewayProxyEventV2Schema, + APIGatewayRequestAuthorizerEventV2Schema, + APIGatewayRequestAuthorizerV2Schema, + APIGatewayRequestContextV2Schema, +} from './api-gatewayv2.js'; +export { AppSyncBatchResolverSchema, + AppSyncResolverSchema, } from './appsync.js'; export { AppSyncEventsBaseSchema, - AppSyncEventsRequestSchema, AppSyncEventsInfoSchema, AppSyncEventsPublishSchema, + AppSyncEventsRequestSchema, AppSyncEventsSubscribeSchema, } from './appsync-events.js'; -export { - APIGatewayProxyEventV2Schema, - APIGatewayRequestAuthorizerEventV2Schema, - APIGatewayRequestAuthorizerV2Schema, - APIGatewayRequestContextV2Schema, -} from './api-gatewayv2.js'; export { CloudFormationCustomResourceCreateSchema, CloudFormationCustomResourceDeleteSchema, @@ -34,18 +34,18 @@ export { CloudWatchLogsSchema, } from './cloudwatch.js'; export { - PreSignupTriggerSchema, + CreateAuthChallengeTriggerSchema, + CustomEmailSenderTriggerSchema, + CustomMessageTriggerSchema, + CustomSMSSenderTriggerSchema, + DefineAuthChallengeTriggerSchema, + MigrateUserTriggerSchema, + PostAuthenticationTriggerSchema, PostConfirmationTriggerSchema, PreAuthenticationTriggerSchema, - PostAuthenticationTriggerSchema, + PreSignupTriggerSchema, PreTokenGenerationTriggerSchemaV1, PreTokenGenerationTriggerSchemaV2AndV3, - MigrateUserTriggerSchema, - CustomMessageTriggerSchema, - CustomEmailSenderTriggerSchema, - CustomSMSSenderTriggerSchema, - DefineAuthChallengeTriggerSchema, - CreateAuthChallengeTriggerSchema, VerifyAuthChallengeTriggerSchema, } from './cognito.js'; export { @@ -55,40 +55,40 @@ export { export { EventBridgeSchema } from './eventbridge.js'; export { KafkaMskEventSchema, - KafkaSelfManagedEventSchema, KafkaRecordSchema, + KafkaSelfManagedEventSchema, } from './kafka.js'; export { + KinesisDataStreamRecord, KinesisDataStreamSchema, KinesisDynamoDBStreamSchema, - KinesisDataStreamRecord, } from './kinesis.js'; export { - KinesisFirehoseSchema, - KinesisFirehoseSqsSchema, KinesisFirehoseRecordSchema, + KinesisFirehoseSchema, KinesisFirehoseSqsRecordSchema, + KinesisFirehoseSqsSchema, } from './kinesis-firehose.js'; export { LambdaFunctionUrlSchema } from './lambda.js'; export { - S3SqsEventNotificationSchema, S3EventNotificationEventBridgeSchema, S3ObjectLambdaEventSchema, S3Schema, + S3SqsEventNotificationSchema, } from './s3.js'; -export { SesSchema, SesRecordSchema } from './ses.js'; +export { SesRecordSchema, SesSchema } from './ses.js'; export { - SnsSchema, + SnsNotificationSchema, SnsRecordSchema, + SnsSchema, SnsSqsNotificationSchema, - SnsNotificationSchema, } from './sns.js'; export { - SqsSchema, - SqsRecordSchema, - SqsMsgAttributeSchema, - SqsMsgAttributeDataTypeSchema, SqsAttributesSchema, + SqsMsgAttributeDataTypeSchema, + SqsMsgAttributeSchema, + SqsRecordSchema, + SqsSchema, } from './sqs.js'; export { TransferFamilySchema } from './transfer-family.js'; export { VpcLatticeSchema } from './vpc-lattice.js'; diff --git a/packages/parser/src/schemas/kafka.ts b/packages/parser/src/schemas/kafka.ts index eb23e78e3d..3747755a2d 100644 --- a/packages/parser/src/schemas/kafka.ts +++ b/packages/parser/src/schemas/kafka.ts @@ -1,4 +1,5 @@ import { z } from 'zod'; +import type { KafkaMskEvent, KafkaSelfManagedEvent } from '../types/schema.js'; /** * Zod schema for a Kafka record from an Kafka event. @@ -33,7 +34,7 @@ const KafkaBaseEventSchema = z.object({ .string() .transform((bootstrapServers) => bootstrapServers.split(',')) .nullish(), - records: z.record(z.string(), z.array(KafkaRecordSchema).min(1)), + records: z.record(z.string(), z.array(KafkaRecordSchema).nonempty()), }); /** Zod schema for Kafka event from Self Managed Kafka @@ -76,7 +77,7 @@ const KafkaBaseEventSchema = z.object({ * } * ``` * - * @see {@link types.KafkaSelfManagedEvent | KafkaSelfManagedEvent} + * @see {@link KafkaSelfManagedEvent | `KafkaSelfManagedEvent`} * @see {@link https://docs.aws.amazon.com/lambda/latest/dg/with-kafka.html} */ const KafkaSelfManagedEventSchema = KafkaBaseEventSchema.extend({ @@ -125,7 +126,7 @@ const KafkaSelfManagedEventSchema = KafkaBaseEventSchema.extend({ * } * ``` * - * @see {@link types.KafkaMskEvent | KafkaMskEvent} + * @see {@link KafkaMskEvent | `KafkaMskEvent`} * @see {@link https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html} */ const KafkaMskEventSchema = KafkaBaseEventSchema.extend({ diff --git a/packages/parser/src/schemas/kinesis-firehose.ts b/packages/parser/src/schemas/kinesis-firehose.ts index cb0bbab57b..2b63ef2e01 100644 --- a/packages/parser/src/schemas/kinesis-firehose.ts +++ b/packages/parser/src/schemas/kinesis-firehose.ts @@ -1,4 +1,8 @@ import { z } from 'zod'; +import type { + KinesisFireHoseEvent, + KinesisFireHoseSqsEvent, +} from '../types/schema.js'; import { SqsRecordSchema } from './sqs.js'; const KinesisRecordMetadata = z.object({ @@ -27,7 +31,7 @@ const KinesisFireHoseBaseSchema = z.object({ */ const KinesisFirehoseRecordSchema = KinesisFireHoseRecordBase.extend({ data: z - .string() + .base64() .transform((data) => Buffer.from(data, 'base64').toString('utf8')), }); @@ -40,9 +44,9 @@ const KinesisFirehoseSqsRecordSchema = KinesisFireHoseRecordBase.extend({ return SqsRecordSchema.parse( JSON.parse(Buffer.from(data, 'base64').toString('utf8')) ); - } catch (e) { + } catch { ctx.addIssue({ - code: z.ZodIssueCode.custom, + code: 'custom', message: 'Failed to parse SQS record', fatal: true, }); @@ -91,11 +95,11 @@ const KinesisFirehoseSqsRecordSchema = KinesisFireHoseRecordBase.extend({ * } * ``` * - * @see {@link types.KinesisFireHoseEvent | KinesisFireHoseEvent} + * @see {@link KinesisFireHoseEvent | `KinesisFireHoseEvent`} * @see {@link https://docs.aws.amazon.com/lambda/latest/dg/services-kinesisfirehose.html} */ const KinesisFirehoseSchema = KinesisFireHoseBaseSchema.extend({ - records: z.array(KinesisFirehoseRecordSchema).min(1), + records: z.array(KinesisFirehoseRecordSchema).nonempty(), }); /** @@ -117,10 +121,10 @@ const KinesisFirehoseSchema = KinesisFireHoseBaseSchema.extend({ * } * ``` * - * @see {@link types.KinesisFireHoseSqsEvent | KinesisFireHoseSqsEvent} + * @see {@link KinesisFireHoseSqsEvent | `KinesisFireHoseSqsEvent`} */ const KinesisFirehoseSqsSchema = KinesisFireHoseBaseSchema.extend({ - records: z.array(KinesisFirehoseSqsRecordSchema).min(1), + records: z.array(KinesisFirehoseSqsRecordSchema).nonempty(), }); export { diff --git a/packages/parser/src/schemas/kinesis.ts b/packages/parser/src/schemas/kinesis.ts index 9e0b8ba8e2..882812e3ff 100644 --- a/packages/parser/src/schemas/kinesis.ts +++ b/packages/parser/src/schemas/kinesis.ts @@ -1,6 +1,7 @@ import { gunzipSync } from 'node:zlib'; import { fromBase64 } from '@aws-lambda-powertools/commons/utils/base64'; import { z } from 'zod'; +import type { KinesisDataStreamEvent } from '../types/schema.js'; import { DynamoDBStreamToKinesisRecord } from './dynamodb.js'; const decoder = new TextDecoder(); @@ -16,7 +17,7 @@ const KinesisDataStreamRecordPayload = z.object({ try { // If data was not compressed, try to parse it as JSON otherwise it must be string return decompressed === data ? JSON.parse(decoded) : decompressed; - } catch (e) { + } catch { return decoded; } }), @@ -25,7 +26,7 @@ const KinesisDataStreamRecordPayload = z.object({ const decompress = (data: string): string => { try { return JSON.parse(gunzipSync(fromBase64(data, 'base64')).toString('utf8')); - } catch (e) { + } catch { return data; } }; @@ -95,7 +96,7 @@ const KinesisDynamoDBStreamSchema = z.object({ * "isWindowTerminatedEarly": false * } *``` - * @see {@link types.KinesisDataStreamEvent | KinesisDataStreamEvent} + * @see {@link KinesisDataStreamEvent | `KinesisDataStreamEvent`} * @see {@link https://docs.aws.amazon.com/lambda/latest/dg/services-kinesis-windows.html#streams-tumbling-processing} * */ @@ -103,8 +104,8 @@ const KinesisDataStreamSchema = z.object({ Records: z.array(KinesisDataStreamRecord).min(1), window: z .object({ - start: z.string().datetime(), - end: z.string().datetime(), + start: z.iso.datetime(), + end: z.iso.datetime(), }) .optional(), state: z.record(z.string(), z.unknown()).optional(), diff --git a/packages/parser/src/schemas/lambda.ts b/packages/parser/src/schemas/lambda.ts index e5fe679329..471e6a09e4 100644 --- a/packages/parser/src/schemas/lambda.ts +++ b/packages/parser/src/schemas/lambda.ts @@ -1,3 +1,4 @@ +import type { LambdaFunctionUrlEvent } from '../types/schema.js'; import { APIGatewayProxyEventV2Schema } from './api-gatewayv2.js'; /** @@ -56,7 +57,7 @@ import { APIGatewayProxyEventV2Schema } from './api-gatewayv2.js'; * } * ``` * - * @see {@link types.LambdaFunctionUrlEvent | LambdaFunctionUrlEvent} + * @see {@link LambdaFunctionUrlEvent | `LambdaFunctionUrlEvent`} * @see {@link https://docs.aws.amazon.com/lambda/latest/dg/urls-invocation.html#urls-payloads} */ const LambdaFunctionUrlSchema = APIGatewayProxyEventV2Schema.extend({}); diff --git a/packages/parser/src/schemas/s3.ts b/packages/parser/src/schemas/s3.ts index 650712a78a..66fd81ee7a 100644 --- a/packages/parser/src/schemas/s3.ts +++ b/packages/parser/src/schemas/s3.ts @@ -1,5 +1,11 @@ import { z } from 'zod'; import { JSONStringified } from '../helpers/index.js'; +import type { + S3Event, + S3EventNotificationEventBridge, + S3ObjectLambdaEvent, + S3SqsEventNotification, +} from '../types/schema.js'; import { EventBridgeSchema } from './eventbridge.js'; import { SqsRecordSchema } from './sqs.js'; @@ -8,7 +14,7 @@ const S3Identity = z.object({ }); const S3RequestParameters = z.object({ - sourceIPAddress: z.union([z.string().ip(), z.literal('s3.amazonaws.com')]), + sourceIPAddress: z.union([z.ipv4(), z.literal('s3.amazonaws.com')]), }); const S3ResponseElements = z.object({ @@ -45,7 +51,7 @@ const S3RecordSchema = z.object({ eventVersion: z.string(), eventSource: z.literal('aws:s3'), awsRegion: z.string(), - eventTime: z.string().datetime(), + eventTime: z.iso.datetime(), eventName: z.string(), userIdentity: S3Identity, requestParameters: S3RequestParameters, @@ -68,7 +74,7 @@ const S3EventNotificationEventBridgeDetailSchema = z.object({ }), 'request-id': z.string(), requester: z.string(), - 'source-ip-address': z.string().ip().optional(), + 'source-ip-address': z.ipv4().optional(), reason: z.string().optional(), 'deletion-type': z.string().optional(), 'restore-expiry-time': z.string().optional(), @@ -112,7 +118,7 @@ const S3EventNotificationEventBridgeDetailSchema = z.object({ * } * ``` * - * @see {@link types.S3EventNotificationEventBridge | S3EventNotificationEventBridge } + * @see {@link S3EventNotificationEventBridge | `S3EventNotificationEventBridge` } * @see {@link https://docs.aws.amazon.com/AmazonS3/latest/userguide/ev-events.html#ev-events-list} */ const S3EventNotificationEventBridgeSchema = EventBridgeSchema.extend({ @@ -163,7 +169,7 @@ const S3EventNotificationEventBridgeSchema = EventBridgeSchema.extend({ * ] * } * ``` - * @see {@link types.S3Event | S3Event } + * @see {@link S3Event | `S3Event` } * @see {@link https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-content-structure.html} */ const S3Schema = z.object({ @@ -205,14 +211,14 @@ const S3SqsEventNotificationRecordSchema = SqsRecordSchema.extend({ * } * ``` * - * @see {@link types.S3SqsEventNotification | S3SqsEventNotification } + * @see {@link S3SqsEventNotification | `S3SqsEventNotification` } */ const S3SqsEventNotificationSchema = z.object({ - Records: z.array(S3SqsEventNotificationRecordSchema).min(1), + Records: z.array(S3SqsEventNotificationRecordSchema).nonempty(), }); const S3ObjectContext = z.object({ - inputS3Url: z.string().url(), + inputS3Url: z.string(), outputRoute: z.string(), outputToken: z.string(), }); @@ -291,8 +297,8 @@ const S3ObjectUserIdentity = z.object({ * } * ``` * + * @see {@link S3ObjectLambdaEvent | `S3ObjectLambdaEvent` } * @see {@link https://docs.aws.amazon.com/AmazonS3/latest/userguide/olap-event-context.html} - * @see {@link types.S3ObjectLambdaEvent | S3ObjectLambdaEvent } */ const S3ObjectLambdaEventSchema = z.object({ xAmzRequestId: z.string(), diff --git a/packages/parser/src/schemas/ses.ts b/packages/parser/src/schemas/ses.ts index 8121d70c70..09dc915492 100644 --- a/packages/parser/src/schemas/ses.ts +++ b/packages/parser/src/schemas/ses.ts @@ -1,11 +1,12 @@ import { z } from 'zod'; +import type { SesEvent } from '../types/schema.js'; const SesReceiptVerdict = z.object({ status: z.enum(['PASS', 'FAIL', 'GRAY', 'PROCESSING_FAILED']), }); const SesReceipt = z.object({ - timestamp: z.string().datetime(), + timestamp: z.iso.datetime(), processingTimeMillis: z.number().int().positive(), recipients: z.array(z.string()), spamVerdict: SesReceiptVerdict, @@ -22,7 +23,7 @@ const SesReceipt = z.object({ }); const SesMail = z.object({ - timestamp: z.string().datetime(), + timestamp: z.iso.datetime(), source: z.string(), messageId: z.string(), destination: z.array(z.string()), @@ -169,11 +170,11 @@ const SesRecordSchema = z.object({ * } * ``` * - * @see {@link types.SesEvent | SesEvent} + * @see {@link SesEvent | SesEvent} * @see {@link https://docs.aws.amazon.com/ses/latest/dg/receiving-email-notifications-examples.html} */ const SesSchema = z.object({ - Records: z.array(SesRecordSchema).min(1), + Records: z.array(SesRecordSchema).nonempty(), }); export { SesSchema, SesRecordSchema }; diff --git a/packages/parser/src/schemas/sns.ts b/packages/parser/src/schemas/sns.ts index a76711e014..b62cb950a1 100644 --- a/packages/parser/src/schemas/sns.ts +++ b/packages/parser/src/schemas/sns.ts @@ -1,4 +1,5 @@ import { z } from 'zod'; +import type { SnsEvent, SnsSqsNotification } from '../types/schema.js'; const SnsMsgAttribute = z.object({ Type: z.string(), @@ -11,17 +12,17 @@ const SnsMsgAttribute = z.object({ const SnsNotificationSchema = z.object({ Subject: z.string().nullish(), TopicArn: z.string(), - UnsubscribeUrl: z.string().url(), - UnsubscribeURL: z.string().url().optional(), - SigningCertUrl: z.string().url().optional(), - SigningCertURL: z.string().url().optional(), + UnsubscribeUrl: z.url(), + UnsubscribeURL: z.url().optional(), + SigningCertUrl: z.url().optional(), + SigningCertURL: z.url().optional(), Type: z.literal('Notification'), MessageAttributes: z.record(z.string(), SnsMsgAttribute).optional(), Message: z.string(), MessageId: z.string(), Signature: z.string().optional(), SignatureVersion: z.string().optional(), - Timestamp: z.string().datetime(), + Timestamp: z.iso.datetime(), }); /** @@ -51,11 +52,11 @@ const SnsNotificationSchema = z.object({ * } * ``` * - * @see {@link types.SnsSqsNotification | SnsSqsNotification} + * @see {@link SnsSqsNotification | `SnsSqsNotification`} */ const SnsSqsNotificationSchema = SnsNotificationSchema.extend({ UnsubscribeURL: z.string().optional(), - SigningCertURL: z.string().url().optional(), + SigningCertURL: z.url().optional(), }).omit({ UnsubscribeUrl: true, SigningCertUrl: true, @@ -109,11 +110,11 @@ const SnsRecordSchema = z.object({ * } * ``` * - * @see {@link types.SnsEvent | SnsEvent} + * @see {@link SnsEvent | `SnsEvent`} * @see {@link https://docs.aws.amazon.com/lambda/latest/dg/with-sns.html#sns-sample-event} */ const SnsSchema = z.object({ - Records: z.array(SnsRecordSchema).min(1), + Records: z.array(SnsRecordSchema).nonempty(), }); export { diff --git a/packages/parser/src/schemas/sqs.ts b/packages/parser/src/schemas/sqs.ts index 83fde66e6c..7c7df01731 100644 --- a/packages/parser/src/schemas/sqs.ts +++ b/packages/parser/src/schemas/sqs.ts @@ -1,4 +1,5 @@ import { z } from 'zod'; +import type { SqsEvent } from '../types/schema.js'; const SqsMsgAttributeDataTypeSchema = z.union([ z.literal('String'), @@ -40,7 +41,7 @@ const SqsRecordSchema = z.object({ attributes: SqsAttributesSchema, messageAttributes: z.record(z.string(), SqsMsgAttributeSchema), md5OfBody: z.string(), - md5OfMessageAttributes: z.string().optional().nullable(), + md5OfMessageAttributes: z.string().optional(), eventSource: z.literal('aws:sqs'), eventSourceARN: z.string(), awsRegion: z.string(), @@ -96,11 +97,11 @@ const SqsRecordSchema = z.object({ * } * ``` * - * @see {@link types.SqsEvent | SqsEvent} + * @see {@link SqsEvent | `SqsEvent`} * @see {@link https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html#example-standard-queue-message-event} */ const SqsSchema = z.object({ - Records: z.array(SqsRecordSchema).min(1), + Records: z.array(SqsRecordSchema).nonempty(), }); export { diff --git a/packages/parser/src/schemas/transfer-family.ts b/packages/parser/src/schemas/transfer-family.ts index 145a45d43a..feb272f01a 100644 --- a/packages/parser/src/schemas/transfer-family.ts +++ b/packages/parser/src/schemas/transfer-family.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; +import type { TransferFamilyEvent } from '../types/schema.js'; /** - * * Zod schema for AWS Transfer Family events. * * @example @@ -15,15 +15,15 @@ import { z } from 'zod'; * } * ``` * - * TransferFamilySchema validates events coming from AWS Transfer Family. - * + * @see {@link TransferFamilyEvent | `TransferFamilyEvent`} + * @see {@link https://docs.aws.amazon.com/transfer/latest/userguide/custom-lambda-idp.html} */ const TransferFamilySchema = z.object({ username: z.string(), password: z.string(), protocol: z.string(), serverId: z.string(), - sourceIp: z.string().ip(), + sourceIp: z.ipv4(), }); export { TransferFamilySchema }; diff --git a/packages/parser/src/schemas/vpc-lattice.ts b/packages/parser/src/schemas/vpc-lattice.ts index 569caf2c93..c9bf434ad1 100644 --- a/packages/parser/src/schemas/vpc-lattice.ts +++ b/packages/parser/src/schemas/vpc-lattice.ts @@ -1,4 +1,5 @@ import { z } from 'zod'; +import type { VpcLatticeEvent } from '../types/schema.js'; /** * Zod schema for VPC Lattice event @@ -22,7 +23,7 @@ import { z } from 'zod'; *} * ``` * - * @see {@link types.VpcLatticeEvent | VpcLatticeEvent} + * @see {@link VpcLatticeEvent | `VpcLatticeEvent`} * @see {@link https://docs.aws.amazon.com/vpc-lattice/latest/ug/lambda-functions.html#receive-event-from-service} */ const VpcLatticeSchema = z.object({ diff --git a/packages/parser/src/schemas/vpc-latticev2.ts b/packages/parser/src/schemas/vpc-latticev2.ts index ef80f0a8e3..19c4d80c40 100644 --- a/packages/parser/src/schemas/vpc-latticev2.ts +++ b/packages/parser/src/schemas/vpc-latticev2.ts @@ -1,4 +1,5 @@ import { z } from 'zod'; +import type { VpcLatticeEventV2 } from '../types/schema.js'; const VpcLatticeV2RequestContextIdentity = z.object({ sourceVpcArn: z.string().optional(), @@ -58,7 +59,7 @@ const VpcLatticeV2RequestContext = z.object({ * } * } * ``` - * @see {@link types.VpcLatticeEventV2 | VpcLatticeEventV2} + * @see {@link VpcLatticeEventV2 | `VpcLatticeEventV2`} * @see {@link https://docs.aws.amazon.com/vpc-lattice/latest/ug/lambda-functions.html#receive-event-from-service} */ const VpcLatticeV2Schema = z.object({ diff --git a/packages/parser/src/types/envelope.ts b/packages/parser/src/types/envelope.ts index 4659ccad76..6d5669fb5e 100644 --- a/packages/parser/src/types/envelope.ts +++ b/packages/parser/src/types/envelope.ts @@ -1,34 +1,45 @@ -import type { ZodSchema, z } from 'zod'; +import type { ZodType } from 'zod'; import type { envelopeDiscriminator } from '../envelopes/envelope.js'; import type { ParsedResult } from './parser.js'; -type DynamoDBStreamEnvelopeResponse = { - NewImage?: z.infer; - OldImage?: z.infer; +type DynamoDBStreamEnvelopeResponse = { + NewImage?: T; + OldImage?: T; }; interface ArrayEnvelope { [envelopeDiscriminator]: 'array'; - parse(data: unknown, schema: T): z.infer[]; - safeParse( + parse(data: unknown, schema: ZodType): T[]; + safeParse(data: unknown, schema: ZodType): ParsedResult; +} + +interface DynamoDBArrayEnvelope { + [envelopeDiscriminator]: 'array'; + parse( data: unknown, - schema: T - ): ParsedResult[]>; + schema: ZodType + ): DynamoDBStreamEnvelopeResponse[]; + safeParse( + data: unknown, + schema: ZodType + ): ParsedResult[]>; } interface ObjectEnvelope { [envelopeDiscriminator]: 'object'; - parse(data: unknown, schema: T): z.infer; - safeParse( - data: unknown, - schema: T - ): ParsedResult>; + parse(data: unknown, schema: ZodType): T; + safeParse(data: unknown, schema: ZodType): ParsedResult; } -type Envelope = ArrayEnvelope | ObjectEnvelope | undefined; +type Envelope = + | ArrayEnvelope + | DynamoDBArrayEnvelope + | ObjectEnvelope + | undefined; export type { ArrayEnvelope, + DynamoDBArrayEnvelope, DynamoDBStreamEnvelopeResponse, Envelope, ObjectEnvelope, diff --git a/packages/parser/src/types/index.ts b/packages/parser/src/types/index.ts index 40c2308be8..d325dadc81 100644 --- a/packages/parser/src/types/index.ts +++ b/packages/parser/src/types/index.ts @@ -5,22 +5,27 @@ export type { ParseFunction, ParserOptions, } from '../types/parser.js'; -export type { Envelope } from './envelope.js'; +export type { + ArrayEnvelope, + DynamoDBArrayEnvelope, + DynamoDBStreamEnvelopeResponse, + Envelope, + ObjectEnvelope, +} from './envelope.js'; export type { ALBEvent, - ALBMultiValueHeadersEvent, APIGatewayEventRequestContext, APIGatewayProxyEvent, APIGatewayProxyEventV2, + APIGatewayProxyWebsocketEvent, APIGatewayRequestAuthorizerEvent, - APIGatewayRequestAuthorizerV2, - APIGatewayRequestContextV2, + APIGatewayRequestAuthorizerEventV2, APIGatewayTokenAuthorizerEvent, AppSyncBatchResolverEvent, - AppSyncResolverEvent, AppSyncEventsPublishEvent, AppSyncEventsSubscribeEvent, + AppSyncResolverEvent, CloudFormationCustomResourceCreateEvent, CloudFormationCustomResourceDeleteEvent, CloudFormationCustomResourceUpdateEvent, @@ -37,8 +42,8 @@ export type { KinesisDataStreamRecordEvent, KinesisDynamoDBStreamEvent, KinesisFireHoseEvent, - KinesisFirehoseRecord, KinesisFireHoseSqsEvent, + KinesisFirehoseRecord, KinesisFirehoseSqsRecord, LambdaFunctionUrlEvent, S3Event, diff --git a/packages/parser/src/types/parser.ts b/packages/parser/src/types/parser.ts index 91b423e8cc..56f4f1d109 100644 --- a/packages/parser/src/types/parser.ts +++ b/packages/parser/src/types/parser.ts @@ -1,11 +1,16 @@ -import type { ZodError, ZodSchema, z } from 'zod'; -import type { ArrayEnvelope, Envelope } from './envelope.js'; +import type { StandardSchemaV1 } from '@standard-schema/spec'; +import type { + ArrayEnvelope, + DynamoDBArrayEnvelope, + DynamoDBStreamEnvelopeResponse, + Envelope, +} from './envelope.js'; /** * Options for the parser used in middy middleware and decorator */ type ParserOptions< - TSchema extends ZodSchema, + TSchema extends StandardSchemaV1, TEnvelope extends Envelope, TSafeParse extends boolean, > = { @@ -27,7 +32,7 @@ type ParsedResultSuccess = { */ type ParsedResultError = { success: false; - error: ZodError | Error; + error: Error; originalEvent?: Input; }; @@ -42,28 +47,35 @@ type ParsedResult = * The inferred result of the schema, can be either an array or a single object depending on the envelope */ type ZodInferredResult< - TSchema extends ZodSchema, + TSchema extends StandardSchemaV1, TEnvelope extends Envelope, > = undefined extends TEnvelope - ? z.infer - : TEnvelope extends ArrayEnvelope - ? z.infer[] - : z.infer; + ? InferOutput + : TEnvelope extends DynamoDBArrayEnvelope + ? DynamoDBStreamEnvelopeResponse>[] + : TEnvelope extends ArrayEnvelope + ? InferOutput[] + : InferOutput; type ZodInferredSafeParseResult< - TSchema extends ZodSchema, + TSchema extends StandardSchemaV1, TEnvelope extends Envelope, > = undefined extends TEnvelope - ? ParsedResult, z.infer> - : TEnvelope extends ArrayEnvelope - ? ParsedResult[]> - : ParsedResult>; + ? ParsedResult, InferOutput> + : TEnvelope extends DynamoDBArrayEnvelope + ? ParsedResult< + unknown, + DynamoDBStreamEnvelopeResponse>[] + > + : TEnvelope extends ArrayEnvelope + ? ParsedResult[]> + : ParsedResult>; /** * The output of the parser function, can be either schema inferred type or a ParsedResult */ type ParserOutput< - TSchema extends ZodSchema, + TSchema extends StandardSchemaV1, TEnvelope extends Envelope, TSafeParse = false, > = TSafeParse extends true @@ -75,55 +87,54 @@ type ParserOutput< * we use function overloads to provide the correct return type based on the provided envelope **/ type ParseFunction = { - // No envelope cases - ( - data: z.infer, + // No envelope, no safeParse + ( + data: unknown, envelope: undefined, schema: T, safeParse?: false - ): z.infer; + ): InferOutput; - ( - data: z.infer, + // No envelope, with safeParse + ( + data: unknown, envelope: undefined, schema: T, safeParse: true - ): ParsedResult>; + ): ParsedResult>; - // Generic envelope case - ( + // With envelope, no safeParse + ( data: unknown, envelope: E, schema: T, safeParse?: false - ): E extends ArrayEnvelope ? z.infer[] : z.infer; + ): E extends DynamoDBArrayEnvelope + ? DynamoDBStreamEnvelopeResponse>[] + : E extends ArrayEnvelope + ? InferOutput[] + : InferOutput; - ( + // With envelope, with safeParse + ( data: unknown, envelope: E, schema: T, safeParse: true - ): E extends ArrayEnvelope - ? ParsedResult[]> - : ParsedResult>; - - // Generic envelope case with safeParse - ( - data: unknown, - envelope: E, - schema: T, - safeParse?: S - ): S extends true - ? E extends ArrayEnvelope - ? ParsedResult[]> - : ParsedResult> + ): E extends DynamoDBArrayEnvelope + ? ParsedResult>[]> : E extends ArrayEnvelope - ? z.infer[] - : z.infer; + ? ParsedResult[]> + : ParsedResult>; }; +type InferOutput = NonNullable< + Schema['~standard']['types'] +>['output']; + export type { ParseFunction, + InferOutput, ParsedResult, ParsedResultError, ParsedResultSuccess, diff --git a/packages/parser/src/types/schema.ts b/packages/parser/src/types/schema.ts index 7679abf43b..f40ee9a269 100644 --- a/packages/parser/src/types/schema.ts +++ b/packages/parser/src/types/schema.ts @@ -1,15 +1,13 @@ import type { z } from 'zod'; import type { + AlbSchema, APIGatewayEventRequestContextSchema, APIGatewayProxyEventSchema, APIGatewayProxyEventV2Schema, APIGatewayProxyWebsocketEventSchema, APIGatewayRequestAuthorizerEventSchema, - APIGatewayRequestAuthorizerV2Schema, - APIGatewayRequestContextV2Schema, + APIGatewayRequestAuthorizerEventV2Schema, APIGatewayTokenAuthorizerEventSchema, - AlbMultiValueHeadersSchema, - AlbSchema, AppSyncBatchResolverSchema, AppSyncEventsPublishSchema, AppSyncEventsSubscribeSchema, @@ -53,8 +51,6 @@ import type { type ALBEvent = z.infer; -type ALBMultiValueHeadersEvent = z.infer; - type APIGatewayProxyEvent = z.infer; type APIGatewayRequestAuthorizerEvent = z.infer< @@ -75,12 +71,8 @@ type APIGatewayProxyWebsocketEvent = z.infer< typeof APIGatewayProxyWebsocketEventSchema >; -type APIGatewayRequestAuthorizerV2 = z.infer< - typeof APIGatewayRequestAuthorizerV2Schema ->; - -type APIGatewayRequestContextV2 = z.infer< - typeof APIGatewayRequestContextV2Schema +type APIGatewayRequestAuthorizerEventV2 = z.infer< + typeof APIGatewayRequestAuthorizerEventV2Schema >; type AppSyncResolverEvent = z.infer; @@ -173,14 +165,12 @@ type VpcLatticeEventV2 = z.infer; export type { ALBEvent, - ALBMultiValueHeadersEvent, APIGatewayEventRequestContext, APIGatewayProxyEvent, APIGatewayProxyEventV2, APIGatewayProxyWebsocketEvent, APIGatewayRequestAuthorizerEvent, - APIGatewayRequestAuthorizerV2, - APIGatewayRequestContextV2, + APIGatewayRequestAuthorizerEventV2, APIGatewayTokenAuthorizerEvent, AppSyncBatchResolverEvent, AppSyncResolverEvent, diff --git a/packages/parser/tests/events/alb/base.json b/packages/parser/tests/events/alb/base.json index 0ce1b680f0..9328cb39e1 100644 --- a/packages/parser/tests/events/alb/base.json +++ b/packages/parser/tests/events/alb/base.json @@ -25,4 +25,4 @@ }, "body": "Test", "isBase64Encoded": false -} \ No newline at end of file +} diff --git a/packages/parser/tests/events/alb/multi-fields.json b/packages/parser/tests/events/alb/multi-fields.json index e555b7840b..ca32152119 100644 --- a/packages/parser/tests/events/alb/multi-fields.json +++ b/packages/parser/tests/events/alb/multi-fields.json @@ -8,28 +8,16 @@ "path": "/lambda", "multiValueQueryStringParameters": {}, "multiValueHeaders": { - "accept": [ - "*/*" - ], + "accept": ["*/*"], "host": [ "alb-c-LoadB-14POFKYCLBNSF-1815800096.eu-central-1.elb.amazonaws.com" ], - "user-agent": [ - "curl/7.79.1" - ], - "x-amzn-trace-id": [ - "Root=1-62fa9327-21cdd4da4c6db451490a5fb7" - ], - "x-forwarded-for": [ - "123.123.123.123" - ], - "x-forwarded-port": [ - "80" - ], - "x-forwarded-proto": [ - "http" - ] + "user-agent": ["curl/7.79.1"], + "x-amzn-trace-id": ["Root=1-62fa9327-21cdd4da4c6db451490a5fb7"], + "x-forwarded-for": ["123.123.123.123"], + "x-forwarded-port": ["80"], + "x-forwarded-proto": ["http"] }, "body": "Test", "isBase64Encoded": false -} \ No newline at end of file +} diff --git a/packages/parser/tests/events/apigw-websocket/connectEvent.json b/packages/parser/tests/events/apigw-websocket/connectEvent.json index 409859eab7..1cd48c1858 100644 --- a/packages/parser/tests/events/apigw-websocket/connectEvent.json +++ b/packages/parser/tests/events/apigw-websocket/connectEvent.json @@ -1,43 +1,42 @@ { - "type": "REQUEST", - "methodArn": "arn:aws:execute-api:us-east-1:123456789012:abcdef123/default/$connect", - "headers": { - "Connection": "upgrade", - "content-length": "0", - "Host": "abcdef123.execute-api.us-east-1.amazonaws.com", - "Upgrade": "websocket" + "type": "REQUEST", + "methodArn": "arn:aws:execute-api:us-east-1:123456789012:abcdef123/default/$connect", + "headers": { + "Connection": "upgrade", + "content-length": "0", + "Host": "abcdef123.execute-api.us-east-1.amazonaws.com", + "Upgrade": "websocket" + }, + "multiValueHeaders": { + "Connection": ["upgrade"], + "content-length": ["0"], + "Host": ["abcdef123.execute-api.us-east-1.amazonaws.com"], + "Upgrade": ["websocket"] + }, + "queryStringParameters": { + "QueryString1": "queryValue1" + }, + "multiValueQueryStringParameters": { + "QueryString1": ["queryValue1"] + }, + "stageVariables": {}, + "requestContext": { + "routeKey": "$connect", + "eventType": "CONNECT", + "extendedRequestId": "XYZ123=", + "requestTime": "10/Oct/2024:22:56:18 +0000", + "messageDirection": "IN", + "stage": "default", + "connectedAt": 1674162806344, + "requestTimeEpoch": 1674162806345, + "identity": { + "sourceIp": "192.0.2.1" }, - "multiValueHeaders": { - "Connection": ["upgrade"], - "content-length": ["0"], - "Host": ["abcdef123.execute-api.us-east-1.amazonaws.com"], - "Upgrade": ["websocket"] - }, - "queryStringParameters": { - "QueryString1": "queryValue1" - }, - "multiValueQueryStringParameters": { - "QueryString1": ["queryValue1"] - }, - "stageVariables": {}, - "requestContext": { - "routeKey": "$connect", - "eventType": "CONNECT", - "extendedRequestId": "XYZ123=", - "requestTime": "10/Oct/2024:22:56:18 +0000", - "messageDirection": "IN", - "stage": "default", - "connectedAt": 1674162806344, - "requestTimeEpoch": 1674162806345, - "identity": { - "sourceIp": "192.0.2.1" - }, - "requestId": "abc123", - "domainName": "abcdef123.execute-api.us-east-1.amazonaws.com", - "connectionId": "def456", - "apiId": "abcdef123" - }, - "isBase64Encoded": false, - "body": null - } - \ No newline at end of file + "requestId": "abc123", + "domainName": "abcdef123.execute-api.us-east-1.amazonaws.com", + "connectionId": "def456", + "apiId": "abcdef123" + }, + "isBase64Encoded": false, + "body": null +} diff --git a/packages/parser/tests/events/appsync-events/base.json b/packages/parser/tests/events/appsync-events/base.json index 3c1ac13542..60e0262284 100644 --- a/packages/parser/tests/events/appsync-events/base.json +++ b/packages/parser/tests/events/appsync-events/base.json @@ -10,10 +10,7 @@ "info": { "channel": { "path": "/request/channel", - "segments": [ - "request", - "channel" - ] + "segments": ["request", "channel"] }, "channelNamespace": { "name": "request" @@ -25,4 +22,4 @@ "stash": {}, "outErrors": [], "events": null -} \ No newline at end of file +} diff --git a/packages/parser/tests/events/cloudwatch/base.json b/packages/parser/tests/events/cloudwatch/base.json index e0eed9de38..2e09f805cc 100644 --- a/packages/parser/tests/events/cloudwatch/base.json +++ b/packages/parser/tests/events/cloudwatch/base.json @@ -2,4 +2,4 @@ "awslogs": { "data": "H4sIAAAAAAAAE6WRTU/bQBCG/0q06jEmO7uzX76lNAGqtkjY6qEYRWt7Eqz6I7U3oQjx3ysbqDgUCam31ewzo2feeWANDYPfUXq/JxazT8t0ufm6SpLl2YrNWXfXUs9ipqQWCgVHEJrNWd3tzvrusGcxW/i7YVH7Ji/9YugairpwS33U+oaewCT05BsWM8EFLoAvBCwuR2bdXn/4skxXSXoDugCjvNpaJ1B770tVWGM95Z7IF4bN2XDIh6Kv9qHq2nVVB+oHFl+z07vQV7sd9Unwxc/o633yijt1egXrjyoqYHl+mwo82s+37GbSWh2pDeOIB1aVLGbSKu00R+MsKglKGo0ASmjLDUotUVsEB+gUGOBSobQguBvTCFVDQ/DNnsVghFOCW6dA2flLts/LR8AjASlgLGwM6gSU/ZEF8mXhoLCRFUZG6EUZ5WB4lHNvrJW5BkdZuPi2vszCOdV1N9v2XTObYj4JQ9ayx/n/7WDeuUOSLq/S2RX9OtAQLsp49h712Xfqh6pr49nzsd8SNgoVKu4kSOOsdkZxxTmCNCgEaIVacXTGCQX4trB7LfyQsZqOVGcsztiUIJtnL/9T8V+Bjszgm31dtbtN78NI8rFG/bEqnvqe35tDW9K2aqmcuv46TcybJx/R372/34TeF7SpygmHSBvQGrfbSLucU2G0QBSSOCrEggu5zdjjmN7N4x+T93ZttgMAAA==" } -} \ No newline at end of file +} diff --git a/packages/parser/tests/events/cognito/base.json b/packages/parser/tests/events/cognito/base.json index 0ea414d08e..95fabe78c4 100644 --- a/packages/parser/tests/events/cognito/base.json +++ b/packages/parser/tests/events/cognito/base.json @@ -10,4 +10,4 @@ "triggerSource": "", "request": {}, "response": {} -} \ No newline at end of file +} diff --git a/packages/parser/tests/events/dynamodb/base.json b/packages/parser/tests/events/dynamodb/base.json index db182d3b9a..3c7eda20f7 100644 --- a/packages/parser/tests/events/dynamodb/base.json +++ b/packages/parser/tests/events/dynamodb/base.json @@ -62,4 +62,4 @@ "eventSource": "aws:dynamodb" } ] -} \ No newline at end of file +} diff --git a/packages/parser/tests/events/kinesis/firehose-sqs.json b/packages/parser/tests/events/kinesis/firehose-sqs.json index a9e36f554d..13ada8dabc 100644 --- a/packages/parser/tests/events/kinesis/firehose-sqs.json +++ b/packages/parser/tests/events/kinesis/firehose-sqs.json @@ -6,7 +6,7 @@ { "recordId": "49640912821178817833517986466168945147170627572855734274000000", "approximateArrivalTimestamp": 1684864917398, - "data": "eyJtZXNzYWdlSWQiOiI1YWI4MDdkNC01NjQ0LTRjNTUtOTdhMy00NzM5NjYzNWFjNzQiLCJyZWNlaXB0SGFuZGxlIjoiQVFFQndKbkt5ckhpZ1VNWmo2cllpZ0NneGxhUzNTTHkwYS4uLiIsImJvZHkiOiJUZXN0IG1lc3NhZ2UuIiwiYXR0cmlidXRlcyI6eyJBcHByb3hpbWF0ZVJlY2VpdmVDb3VudCI6IjEiLCJTZW50VGltZXN0YW1wIjoiMTY4NDg2NDg1MjQ5MSIsIlNlbmRlcklkIjoiQUlEQUlFTlFaSk9MTzIzWVZKNFZPIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNjg0ODY0ODcyNDkxIn0sIm1lc3NhZ2VBdHRyaWJ1dGVzIjp7fSwibWQ1T2ZNZXNzYWdlQXR0cmlidXRlcyI6bnVsbCwibWQ1T2ZCb2R5IjoiYzhiNmJjNjBjOGI4YjNhOTA0ZTQ1YzFmYWJkZjUyM2QiLCJldmVudFNvdXJjZSI6ImF3czpzcXMiLCJldmVudFNvdXJjZUFSTiI6ImFybjphd3M6c3FzOnVzLWVhc3QtMToyMDA5ODQxMTIzODY6U05TIiwiYXdzUmVnaW9uIjoidXMtZWFzdC0xIn0K" + "data": "eyJtZXNzYWdlSWQiOiI1YWI4MDdkNC01NjQ0LTRjNTUtOTdhMy00NzM5NjYzNWFjNzQiLCJyZWNlaXB0SGFuZGxlIjoiQVFFQndKbkt5ckhpZ1VNWmo2cllpZ0NneGxhUzNTTHkwYS4uLiIsImJvZHkiOiJUZXN0IG1lc3NhZ2UuIiwiYXR0cmlidXRlcyI6eyJBcHByb3hpbWF0ZVJlY2VpdmVDb3VudCI6IjEiLCJTZW50VGltZXN0YW1wIjoiMTY4NDg2NDg1MjQ5MSIsIlNlbmRlcklkIjoiQUlEQUlFTlFaSk9MTzIzWVZKNFZPIiwiQXBwcm94aW1hdGVGaXJzdFJlY2VpdmVUaW1lc3RhbXAiOiIxNjg0ODY0ODcyNDkxIn0sIm1lc3NhZ2VBdHRyaWJ1dGVzIjp7fSwibWQ1T2ZCb2R5IjoiYzhiNmJjNjBjOGI4YjNhOTA0ZTQ1YzFmYWJkZjUyM2QiLCJldmVudFNvdXJjZSI6ImF3czpzcXMiLCJldmVudFNvdXJjZUFSTiI6ImFybjphd3M6c3FzOnVzLWVhc3QtMToyMDA5ODQxMTIzODY6U05TIiwiYXdzUmVnaW9uIjoidXMtZWFzdC0xIn0=" } ] } diff --git a/packages/parser/tests/events/sns/base.json b/packages/parser/tests/events/sns/base.json index 9cf3ec939a..553154d29c 100644 --- a/packages/parser/tests/events/sns/base.json +++ b/packages/parser/tests/events/sns/base.json @@ -28,4 +28,4 @@ } } ] -} \ No newline at end of file +} diff --git a/packages/parser/tests/events/transfer-family/base.json b/packages/parser/tests/events/transfer-family/base.json index e0bf0bd4ae..867c1f6520 100644 --- a/packages/parser/tests/events/transfer-family/base.json +++ b/packages/parser/tests/events/transfer-family/base.json @@ -1,8 +1,7 @@ { - "username": "value", - "password": "value", - "protocol": "SFTP", - "serverId": "s-abcd123456", - "sourceIp": "192.168.0.100" - } - \ No newline at end of file + "username": "value", + "password": "value", + "protocol": "SFTP", + "serverId": "s-abcd123456", + "sourceIp": "192.168.0.100" +} diff --git a/packages/parser/tests/events/vpc-lattice/base.json b/packages/parser/tests/events/vpc-lattice/base.json index 39880b4365..fb2e3f8d91 100644 --- a/packages/parser/tests/events/vpc-lattice/base.json +++ b/packages/parser/tests/events/vpc-lattice/base.json @@ -12,4 +12,4 @@ }, "body": "{\"message\": \"Hello from Lambda!\"}", "is_base64_encoded": false -} \ No newline at end of file +} diff --git a/packages/parser/tests/types/envelopes.test.ts b/packages/parser/tests/types/envelopes.test-d.ts similarity index 63% rename from packages/parser/tests/types/envelopes.test.ts rename to packages/parser/tests/types/envelopes.test-d.ts index 7ba2f9387e..00870efe23 100644 --- a/packages/parser/tests/types/envelopes.test.ts +++ b/packages/parser/tests/types/envelopes.test-d.ts @@ -1,19 +1,20 @@ -import { describe, expect, expectTypeOf, it } from 'vitest'; +import { describe, expectTypeOf, it } from 'vitest'; import { z } from 'zod'; import { ApiGatewayEnvelope } from '../../src/envelopes/api-gateway.js'; import { ApiGatewayV2Envelope } from '../../src/envelopes/api-gatewayv2.js'; import { CloudWatchEnvelope } from '../../src/envelopes/cloudwatch.js'; -import { DynamoDBStreamEnvelope } from '../../src/envelopes/dynamodb.js'; +import type { DynamoDBStreamEnvelope } from '../../src/envelopes/dynamodb.js'; import { EventBridgeEnvelope } from '../../src/envelopes/eventbridge.js'; import { KafkaEnvelope } from '../../src/envelopes/kafka.js'; -import { KinesisFirehoseEnvelope } from '../../src/envelopes/kinesis-firehose.js'; import { KinesisEnvelope } from '../../src/envelopes/kinesis.js'; +import { KinesisFirehoseEnvelope } from '../../src/envelopes/kinesis-firehose.js'; import { LambdaFunctionUrlEnvelope } from '../../src/envelopes/lambda.js'; -import { SnsSqsEnvelope } from '../../src/envelopes/sns-sqs.js'; import { SnsEnvelope } from '../../src/envelopes/sns.js'; +import { SnsSqsEnvelope } from '../../src/envelopes/sns-sqs.js'; import { SqsEnvelope } from '../../src/envelopes/sqs.js'; import { VpcLatticeEnvelope } from '../../src/envelopes/vpc-lattice.js'; import { VpcLatticeV2Envelope } from '../../src/envelopes/vpc-latticev2.js'; +import type { DynamoDBStreamEnvelopeResponse } from '../../src/types/envelope.js'; import type { ParserOutput } from '../../src/types/parser.js'; describe('Types ', () => { @@ -29,44 +30,56 @@ describe('Types ', () => { { envelope: LambdaFunctionUrlEnvelope, name: 'LambdaFunctionUrl' }, { envelope: VpcLatticeEnvelope, name: 'VpcLattice' }, { envelope: VpcLatticeV2Envelope, name: 'VpcLatticeV2' }, - ])('infers object types for $name envelope', (testCase) => { - type Result = ParserOutput; - // Define the expected type + ])('infers object types for $name envelope', ({ envelope }) => { + // Prepare + type Result = ParserOutput; - // This will fail TypeScript compilation if Result is is an array + // Act const result = { name: 'John', age: 30 } satisfies Result; - // Runtime checks to ensure it's an array with single element - expect(Array.isArray(result)).toBe(false); - expect(result).toEqual({ name: 'John', age: 30 }); - - // Type assertion to ensure it's specifically User[] - type AssertIsUserArray = T extends z.infer[] - ? true - : false; - type Test = AssertIsUserArray; + // Assess + expectTypeOf(result).toEqualTypeOf>(); }); it.each([ { envelope: CloudWatchEnvelope, name: 'CloudWatch' }, - { envelope: DynamoDBStreamEnvelope, name: 'DynamoDBStream' }, { envelope: KafkaEnvelope, name: 'Kafka' }, { envelope: KinesisFirehoseEnvelope, name: 'KinesisFirehose' }, { envelope: KinesisEnvelope, name: 'Kinesis' }, { envelope: SqsEnvelope, name: 'Sqs' }, { envelope: SnsEnvelope, name: 'Sns' }, { envelope: SnsSqsEnvelope, name: 'SnsSqs' }, - ])('infers array types with $name envelope', (testCase) => { - // Define the expected type - type Result = ParserOutput; + ])('infers array types with $name envelope', ({ envelope }) => { + // Prepare + type Result = ParserOutput; - // This will fail TypeScript compilation if Result is is an array + // Act const result = [{ name: 'John', age: 30 }] satisfies Result; - // Runtime checks to ensure it's an array with single element - expect(Array.isArray(result)).toBe(true); - expect(result).toEqual([{ name: 'John', age: 30 }]); - + // Assess expectTypeOf(result).toEqualTypeOf[]>(); }); + + it('infers DynamoDB stream envelope response type', () => { + // Prepare + type Result = ParserOutput< + typeof userSchema, + typeof DynamoDBStreamEnvelope + >; + + // Act + const result: Result = [ + { + NewImage: { name: 'John', age: 30 }, + }, + { + OldImage: { name: 'Jane', age: 25 }, + }, + ]; + + // Assess + expectTypeOf(result).toEqualTypeOf< + DynamoDBStreamEnvelopeResponse>[] + >(); + }); }); diff --git a/packages/parser/tests/types/parser.test-d.ts b/packages/parser/tests/types/parser.test-d.ts new file mode 100644 index 0000000000..6ac8f86cf5 --- /dev/null +++ b/packages/parser/tests/types/parser.test-d.ts @@ -0,0 +1,80 @@ +import middy from '@middy/core'; +import { describe, expectTypeOf, it } from 'vitest'; +import { z } from 'zod'; +import { EventBridgeEnvelope } from '../../src/envelopes/eventbridge.js'; +import { SqsEnvelope } from '../../src/envelopes/sqs.js'; +import { JSONStringified } from '../../src/helpers/index.js'; +import { parser } from '../../src/middleware/index.js'; +import { parse } from '../../src/parser.js'; + +describe('Parser types', () => { + const userSchema = z.object({ + name: z.string(), + age: z.number(), + }); + type User = z.infer; + + it('infers return type for schema and safeParse', () => { + // Act + const result = parse({}, undefined, userSchema, true); + + // Assess + if (result.success) { + expectTypeOf(result.data).toEqualTypeOf(); + } else { + expectTypeOf(result.error).toEqualTypeOf(); + expectTypeOf(result.originalEvent).toEqualTypeOf(); + } + }); + + it('infers return type for schema', () => { + // Act + const result = parse({}, undefined, userSchema); + + // Assess + expectTypeOf(result).toEqualTypeOf(); + }); + + it('infers return type for schema and object envelope', () => { + // Act + const result = parse({}, EventBridgeEnvelope, userSchema); + + // Assess + expectTypeOf(result).toEqualTypeOf(); + }); + + it('infers return type for schema and array envelope', () => { + // Act + const result = parse({}, SqsEnvelope, JSONStringified(userSchema)); + + // Assess + expectTypeOf(result).toEqualTypeOf(); + }); + + it('infers return type for schema, object envelope and safeParse $case', () => { + // Act + const result = parse({}, EventBridgeEnvelope, userSchema, true); + + // Assess + expectTypeOf(result.success).toEqualTypeOf(); + if (result.success) { + expectTypeOf(result.data).toEqualTypeOf(); + } else { + expectTypeOf(result.error).toEqualTypeOf(); + expectTypeOf(result.originalEvent).toEqualTypeOf(); + } + }); + + it('infers the return type when using parse middleware', () => { + middy() + .use( + parser({ + schema: JSONStringified(userSchema), + envelope: SqsEnvelope, + }) + ) + .handler(async (event) => { + expectTypeOf(event).toEqualTypeOf(); + }); + }); +}); diff --git a/packages/parser/tests/types/parser.test.ts b/packages/parser/tests/types/parser.test.ts deleted file mode 100644 index fb49248bcc..0000000000 --- a/packages/parser/tests/types/parser.test.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { describe } from 'node:test'; -import { expect, expectTypeOf, it } from 'vitest'; -import { z } from 'zod'; -import { EventBridgeEnvelope } from '../../src/envelopes/eventbridge.js'; -import { SqsEnvelope } from '../../src/envelopes/sqs.js'; -import { parse } from '../../src/parser.js'; -import type { EventBridgeEvent, SqsEvent } from '../../src/types/schema.js'; -import { getTestEvent } from '../unit/helpers/utils.js'; - -describe('Parser types', () => { - const userSchema = z.object({ - name: z.string(), - age: z.number(), - }); - type User = z.infer; - const input = { name: 'John', age: 30 }; - - const eventBridgeBaseEvent = getTestEvent({ - eventsPath: 'eventbridge', - filename: 'base', - }); - - const sqsBaseEvent = getTestEvent({ - eventsPath: 'sqs', - filename: 'base', - }); - it('infers return type for schema and safeParse', () => { - // Act - const result = parse(input, undefined, userSchema, true); - - // Assert - if (result.success) { - expectTypeOf(result.data).toEqualTypeOf(); - } else { - expectTypeOf(result.originalEvent).toEqualTypeOf(); - } - }); - - it('infers return type for schema', () => { - // Act - const result = parse(input, undefined, userSchema); - - // Assert - expectTypeOf(result).toEqualTypeOf(); - }); - - it('infers return type for schema and envelope', () => { - // Prepare - const event = structuredClone(eventBridgeBaseEvent); - event.detail = input; - - // Act - const result = parse(event, EventBridgeEnvelope, userSchema); - - // Assert - expectTypeOf(result).toEqualTypeOf(); - }); - - it('infert return type for schema, object envelope and safeParse', () => { - // Prepare - const event = structuredClone(eventBridgeBaseEvent); - event.detail = input; - - // Act - const result = parse(event, EventBridgeEnvelope, userSchema, true); - - // Assert - if (result.success) { - expectTypeOf(result.data).toEqualTypeOf(); - expect(result.data).toEqual(input); - } else { - throw new Error('Parsing failed'); - } - }); - - it('infers return type for schema, array envelope and safeParse', () => { - // Prepare - const event = structuredClone(sqsBaseEvent); - event.Records[0].body = JSON.stringify(input); - - // Act - const result = parse(input, SqsEnvelope, userSchema, true); - - // Assert - if (result.success) { - expectTypeOf(result.data).toEqualTypeOf(); - } - }); -}); diff --git a/packages/parser/tests/unit/envelopes/api-gateway.test.ts b/packages/parser/tests/unit/envelopes/api-gateway.test.ts index 83c6b3b455..8360bbdb5c 100644 --- a/packages/parser/tests/unit/envelopes/api-gateway.test.ts +++ b/packages/parser/tests/unit/envelopes/api-gateway.test.ts @@ -1,7 +1,6 @@ import { describe, expect, it } from 'vitest'; -import { ZodError, z } from 'zod'; +import { z } from 'zod'; import { ApiGatewayEnvelope } from '../../../src/envelopes/index.js'; -import { ParseError } from '../../../src/errors.js'; import { JSONStringified } from '../../../src/helpers/index.js'; import type { APIGatewayProxyEvent } from '../../../src/types/schema.js'; import { getTestEvent, omit } from '../helpers/utils.js'; @@ -31,9 +30,8 @@ describe('Envelope: API Gateway REST', () => { { code: 'invalid_type', expected: 'object', - received: 'null', path: ['body'], - message: 'Expected object, received null', + message: 'Invalid input: expected object, received null', }, ], }), @@ -108,25 +106,27 @@ describe('Envelope: API Gateway REST', () => { const result = ApiGatewayEnvelope.safeParse(event, schema); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse API Gateway body', { - cause: new ZodError([ - { - code: 'invalid_type', - expected: 'string', - received: 'undefined', - path: ['path'], - message: 'Required', - }, - { - code: 'invalid_type', - expected: 'object', - received: 'null', - path: ['body'], - message: 'Expected object, received null', - }, - ]), + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining('Failed to parse API Gateway body'), + cause: expect.objectContaining({ + issues: [ + { + code: 'invalid_type', + expected: 'string', + path: ['path'], + message: 'Invalid input: expected string, received undefined', + }, + { + code: 'invalid_type', + expected: 'object', + path: ['body'], + message: 'Invalid input: expected object, received null', + }, + ], + }), }), originalEvent: event, }); diff --git a/packages/parser/tests/unit/envelopes/api-gatewayv2.test.ts b/packages/parser/tests/unit/envelopes/api-gatewayv2.test.ts index 4d03b6f2f1..2e3b4ec832 100644 --- a/packages/parser/tests/unit/envelopes/api-gatewayv2.test.ts +++ b/packages/parser/tests/unit/envelopes/api-gatewayv2.test.ts @@ -1,7 +1,6 @@ import { describe, expect, it } from 'vitest'; -import { ZodError, z } from 'zod'; +import { z } from 'zod'; import { ApiGatewayV2Envelope } from '../../../src/envelopes/api-gatewayv2.js'; -import { ParseError } from '../../../src/errors.js'; import { JSONStringified } from '../../../src/helpers/index.js'; import type { APIGatewayProxyEventV2 } from '../../../src/types/schema.js'; import { getTestEvent, omit } from '../helpers/utils.js'; @@ -33,9 +32,8 @@ describe('Envelope: API Gateway HTTP', () => { { code: 'invalid_type', expected: 'object', - received: 'undefined', path: ['body'], - message: 'Required', + message: 'Invalid input: expected object, received undefined', }, ], }), @@ -109,25 +107,29 @@ describe('Envelope: API Gateway HTTP', () => { const result = ApiGatewayV2Envelope.safeParse(event, schema); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse API Gateway HTTP body', { - cause: new ZodError([ - { - code: 'invalid_type', - expected: 'string', - received: 'undefined', - path: ['rawPath'], - message: 'Required', - }, - { - code: 'invalid_type', - expected: 'object', - received: 'undefined', - path: ['body'], - message: 'Required', - }, - ]), + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse API Gateway HTTP body' + ), + cause: expect.objectContaining({ + issues: [ + { + expected: 'string', + code: 'invalid_type', + path: ['rawPath'], + message: 'Invalid input: expected string, received undefined', + }, + { + expected: 'object', + code: 'invalid_type', + path: ['body'], + message: 'Invalid input: expected object, received undefined', + }, + ], + }), }), originalEvent: event, }); diff --git a/packages/parser/tests/unit/envelopes/cloudwatch.test.ts b/packages/parser/tests/unit/envelopes/cloudwatch.test.ts index 139666b57d..87e06836f5 100644 --- a/packages/parser/tests/unit/envelopes/cloudwatch.test.ts +++ b/packages/parser/tests/unit/envelopes/cloudwatch.test.ts @@ -1,10 +1,8 @@ import { gunzipSync, gzipSync } from 'node:zlib'; import { describe, expect, it } from 'vitest'; -import { ZodError, z } from 'zod'; -import { ParseError } from '../../../src'; +import { z } from 'zod'; import { CloudWatchEnvelope } from '../../../src/envelopes/cloudwatch.js'; -import { DecompressError } from '../../../src/errors.js'; -import { JSONStringified } from '../../../src/helpers/index'; +import { JSONStringified } from '../../../src/helpers/index.js'; import { getTestEvent } from '../helpers/utils.js'; const decompressRecordToJSON = ( @@ -92,9 +90,8 @@ describe('Envelope: CloudWatch', () => { { code: 'invalid_type', expected: 'object', - received: 'string', path: ['awslogs', 'data', 'logEvents', 0, 'message'], - message: 'Expected object, received string', + message: 'Invalid input: expected object, received string', }, ], }), @@ -159,12 +156,29 @@ describe('Envelope: CloudWatch', () => { const result = CloudWatchEnvelope.safeParse(event, z.object({})); // Assess - expect(result).toStrictEqual({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse CloudWatch Log envelope', { - cause: new DecompressError( - 'Failed to decompress CloudWatch log data' + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse CloudWatch Log envelope' ), + cause: expect.objectContaining({ + issues: [ + { + code: 'invalid_format', + format: 'base64', + path: ['awslogs', 'data'], + message: 'Invalid base64-encoded string', + }, + { + code: 'custom', + message: 'Failed to decompress CloudWatch log data', + fatal: true, + path: ['awslogs', 'data'], + }, + ], + }), }), originalEvent: event, }); @@ -203,20 +217,24 @@ describe('Envelope: CloudWatch', () => { ); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError( - 'Failed to parse CloudWatch Log message at index 0', - { - cause: new ZodError([ + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse CloudWatch Log message at index 0' + ), + cause: expect.objectContaining({ + issues: [ { code: 'custom', - message: 'Invalid JSON', + fatal: true, + message: expect.stringMatching(/^Invalid JSON - /), path: ['awslogs', 'data', 'logEvents', 0, 'message'], }, - ]), - } - ), + ], + }), + }), originalEvent: event, }); }); @@ -234,36 +252,36 @@ describe('Envelope: CloudWatch', () => { ); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError( - 'Failed to parse CloudWatch Log messages at indexes 0, 1, 2', - { - cause: new ZodError([ + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse CloudWatch Log messages at indexes 0, 1, 2' + ), + cause: expect.objectContaining({ + issues: [ { code: 'invalid_type', expected: 'object', - received: 'string', path: ['awslogs', 'data', 'logEvents', 0, 'message'], - message: 'Expected object, received string', + message: 'Invalid input: expected object, received string', }, { code: 'invalid_type', expected: 'object', - received: 'string', path: ['awslogs', 'data', 'logEvents', 1, 'message'], - message: 'Expected object, received string', + message: 'Invalid input: expected object, received string', }, { code: 'invalid_type', expected: 'object', - received: 'string', path: ['awslogs', 'data', 'logEvents', 2, 'message'], - message: 'Expected object, received string', + message: 'Invalid input: expected object, received string', }, - ]), - } - ), + ], + }), + }), originalEvent: event, }); }); diff --git a/packages/parser/tests/unit/envelopes/dynamodb.test.ts b/packages/parser/tests/unit/envelopes/dynamodb.test.ts index 3eb745bc8b..dc5b920904 100644 --- a/packages/parser/tests/unit/envelopes/dynamodb.test.ts +++ b/packages/parser/tests/unit/envelopes/dynamodb.test.ts @@ -1,8 +1,7 @@ import { marshall } from '@aws-sdk/util-dynamodb'; import { describe, expect, it } from 'vitest'; -import { ZodError, z } from 'zod'; +import { z } from 'zod'; import { DynamoDBStreamEnvelope } from '../../../src/envelopes/dynamodb.js'; -import { ParseError } from '../../../src/errors.js'; import type { DynamoDBStreamEvent } from '../../../src/types/schema.js'; import { getTestEvent } from '../helpers/utils.js'; @@ -43,7 +42,7 @@ describe('Envelope: DynamoDB Stream', () => { { code: 'unrecognized_keys', keys: ['Id'], - message: "Unrecognized key(s) in object: 'Id'", + message: 'Unrecognized key: "Id"', path: ['Records', 0, 'dynamodb', 'NewImage'], }, ], @@ -121,18 +120,23 @@ describe('Envelope: DynamoDB Stream', () => { const result = DynamoDBStreamEnvelope.safeParse(event, schema); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse DynamoDB Stream envelope', { - cause: new ZodError([ - { - code: 'invalid_type', - expected: 'object', - received: 'undefined', - path: ['Records', 0, 'dynamodb'], - message: 'Required', - }, - ]), + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse DynamoDB Stream envelope' + ), + cause: expect.objectContaining({ + issues: [ + { + code: 'invalid_type', + expected: 'object', + path: ['Records', 0, 'dynamodb'], + message: 'Invalid input: expected object, received undefined', + }, + ], + }), }), originalEvent: event, }); @@ -150,18 +154,21 @@ describe('Envelope: DynamoDB Stream', () => { const result = DynamoDBStreamEnvelope.safeParse(event, schema); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse record at index 1', { - cause: new ZodError([ - { - code: 'invalid_type', - expected: 'string', - received: 'number', - path: ['Records', 1, 'dynamodb', 'NewImage', 'Message'], - message: 'Expected string, received number', - }, - ]), + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining('Failed to parse record at index 1'), + cause: expect.objectContaining({ + issues: [ + { + code: 'invalid_type', + expected: 'string', + path: ['Records', 1, 'dynamodb', 'NewImage', 'Message'], + message: 'Invalid input: expected string, received number', + }, + ], + }), }), originalEvent: event, }); @@ -180,25 +187,29 @@ describe('Envelope: DynamoDB Stream', () => { const result = DynamoDBStreamEnvelope.safeParse(event, schema); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse records at indexes 0, 1', { - cause: new ZodError([ - { - code: 'invalid_type', - expected: 'string', - received: 'undefined', - path: ['Records', 0, 'dynamodb', 'NewImage', 'Message'], - message: 'Required', - }, - { - code: 'invalid_type', - expected: 'string', - received: 'number', - path: ['Records', 1, 'dynamodb', 'NewImage', 'Message'], - message: 'Expected string, received number', - }, - ]), + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse records at indexes 0, 1' + ), + cause: expect.objectContaining({ + issues: [ + { + code: 'invalid_type', + expected: 'string', + path: ['Records', 0, 'dynamodb', 'NewImage', 'Message'], + message: 'Invalid input: expected string, received undefined', + }, + { + code: 'invalid_type', + expected: 'string', + path: ['Records', 1, 'dynamodb', 'NewImage', 'Message'], + message: 'Invalid input: expected string, received number', + }, + ], + }), }), originalEvent: event, }); diff --git a/packages/parser/tests/unit/envelopes/event-bridge.test.ts b/packages/parser/tests/unit/envelopes/event-bridge.test.ts index 25137e39ad..47278afbdd 100644 --- a/packages/parser/tests/unit/envelopes/event-bridge.test.ts +++ b/packages/parser/tests/unit/envelopes/event-bridge.test.ts @@ -1,7 +1,6 @@ import { describe, expect, it } from 'vitest'; -import { ZodError, z } from 'zod'; +import { z } from 'zod'; import { EventBridgeEnvelope } from '../../../src/envelopes/eventbridge.js'; -import { ParseError } from '../../../src/errors.js'; import type { EventBridgeEvent } from '../../../src/types/schema.js'; import { getTestEvent, omit } from '../helpers/utils.js'; @@ -39,9 +38,8 @@ describe('Envelope: EventBridgeEnvelope', () => { { code: 'invalid_type', expected: 'string', - received: 'undefined', path: ['detail', 'owner'], - message: 'Required', + message: 'Invalid input: expected string, received undefined', }, ], }), @@ -90,18 +88,23 @@ describe('Envelope: EventBridgeEnvelope', () => { const result = EventBridgeEnvelope.safeParse(event, schema); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse EventBridge envelope', { - cause: new ZodError([ - { - code: 'invalid_type', - expected: 'object', - received: 'undefined', - path: ['detail'], - message: 'Required', - }, - ]), + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse EventBridge envelope' + ), + cause: expect.objectContaining({ + issues: [ + { + code: 'invalid_type', + expected: 'object', + path: ['detail'], + message: 'Invalid input: expected object, received undefined', + }, + ], + }), }), originalEvent: event, }); diff --git a/packages/parser/tests/unit/envelopes/kafka.test.ts b/packages/parser/tests/unit/envelopes/kafka.test.ts index 284bd89ea9..9961c8491a 100644 --- a/packages/parser/tests/unit/envelopes/kafka.test.ts +++ b/packages/parser/tests/unit/envelopes/kafka.test.ts @@ -1,7 +1,6 @@ import { describe, expect, it } from 'vitest'; -import { ZodError, z } from 'zod'; +import { z } from 'zod'; import { KafkaEnvelope } from '../../../src/envelopes/kafka.js'; -import { ParseError } from '../../../src/errors.js'; import { JSONStringified } from '../../../src/helpers/index.js'; import { getTestEvent } from '../helpers/utils.js'; @@ -84,20 +83,23 @@ describe('Envelope: Kafka', () => { const result = KafkaEnvelope.safeParse(event, z.string()); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse Kafka envelope', { - cause: new ZodError([ - { - code: 'too_small', - minimum: 1, - type: 'array', - inclusive: true, - exact: false, - message: 'Array must contain at least 1 element(s)', - path: ['records', 'mytopic-0'], - }, - ]), + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining('Failed to parse Kafka envelope'), + cause: expect.objectContaining({ + issues: [ + { + origin: 'array', + code: 'too_small', + minimum: 1, + inclusive: true, + message: 'Too small: expected array to have >=1 items', + path: ['records', 'mytopic-0'], + }, + ], + }), }), originalEvent: event, }); @@ -111,18 +113,11 @@ describe('Envelope: Kafka', () => { const result = KafkaEnvelope.safeParse(event, z.number()); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse Kafka envelope', { - cause: new ZodError([ - { - code: 'invalid_type', - expected: 'number', - received: 'string', - path: ['records', 'mytopic-0'], - message: 'Expected number, received string', - }, - ]), + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining('Failed to parse Kafka envelope'), }), originalEvent: event, }); diff --git a/packages/parser/tests/unit/envelopes/kinesis-firehose.test.ts b/packages/parser/tests/unit/envelopes/kinesis-firehose.test.ts index 77e788d87c..b040673524 100644 --- a/packages/parser/tests/unit/envelopes/kinesis-firehose.test.ts +++ b/packages/parser/tests/unit/envelopes/kinesis-firehose.test.ts @@ -1,7 +1,6 @@ import { describe, expect, it } from 'vitest'; -import { ZodError, z } from 'zod'; +import { z } from 'zod'; import { KinesisFirehoseEnvelope } from '../../../src/envelopes/kinesis-firehose.js'; -import { ParseError } from '../../../src/errors.js'; import { JSONStringified } from '../../../src/helpers/index.js'; import type { KinesisFireHoseEvent, @@ -38,9 +37,8 @@ describe('Envelope: Kinesis Firehose', () => { { code: 'invalid_type', expected: 'number', - received: 'string', path: ['records', 0, 'data'], - message: 'Expected number, received string', + message: 'Invalid input: expected number, received string', }, ], }), @@ -82,18 +80,24 @@ describe('Envelope: Kinesis Firehose', () => { // Act & Assess expect(() => KinesisFirehoseEnvelope.parse(event, z.string())).toThrow( - new ParseError('Failed to parse Kinesis Firehose envelope', { - cause: new ZodError([ - { - code: 'too_small', - minimum: 1, - type: 'array', - inclusive: true, - exact: false, - message: 'Array must contain at least 1 element(s)', - path: ['records'], - }, - ]), + expect.objectContaining({ + name: 'ParseError', + + message: expect.stringContaining( + 'Failed to parse Kinesis Firehose envelope' + ), + cause: expect.objectContaining({ + issues: [ + { + origin: 'array', + code: 'too_small', + minimum: 1, + inclusive: true, + path: ['records'], + message: 'Too small: expected array to have >=1 items', + }, + ], + }), }) ); }); @@ -136,18 +140,23 @@ describe('Envelope: Kinesis Firehose', () => { const result = KinesisFirehoseEnvelope.safeParse(event, z.string()); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse Kinesis Firehose envelope', { - cause: new ZodError([ - { - code: 'invalid_type', - expected: 'string', - received: 'undefined', - path: ['invocationId'], - message: 'Required', - }, - ]), + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse Kinesis Firehose envelope' + ), + cause: expect.objectContaining({ + issues: [ + { + expected: 'string', + code: 'invalid_type', + path: ['invocationId'], + message: 'Invalid input: expected string, received undefined', + }, + ], + }), }), originalEvent: event, }); @@ -169,22 +178,24 @@ describe('Envelope: Kinesis Firehose', () => { ); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError( - 'Failed to parse Kinesis Firehose record at index 1', - { - cause: new ZodError([ + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse Kinesis Firehose record at index 1' + ), + cause: expect.objectContaining({ + issues: [ { code: 'invalid_type', expected: 'string', - received: 'undefined', path: ['records', 1, 'data', 'foo'], - message: 'Required', + message: 'Invalid input: expected string, received undefined', }, - ]), - } - ), + ], + }), + }), originalEvent: event, }); }); @@ -202,29 +213,30 @@ describe('Envelope: Kinesis Firehose', () => { ); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError( - 'Failed to parse Kinesis Firehose records at indexes 0, 1', - { - cause: new ZodError([ + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse Kinesis Firehose records at indexes 0, 1' + ), + cause: expect.objectContaining({ + issues: [ { code: 'invalid_type', expected: 'object', - received: 'string', path: ['records', 0, 'data'], - message: 'Expected object, received string', + message: 'Invalid input: expected object, received string', }, { code: 'invalid_type', expected: 'object', - received: 'string', path: ['records', 1, 'data'], - message: 'Expected object, received string', + message: 'Invalid input: expected object, received string', }, - ]), - } - ), + ], + }), + }), originalEvent: event, }); }); diff --git a/packages/parser/tests/unit/envelopes/kinesis.test.ts b/packages/parser/tests/unit/envelopes/kinesis.test.ts index 57ae688888..517ec91a98 100644 --- a/packages/parser/tests/unit/envelopes/kinesis.test.ts +++ b/packages/parser/tests/unit/envelopes/kinesis.test.ts @@ -1,7 +1,6 @@ import { describe, expect, it } from 'vitest'; -import { ZodError, z } from 'zod'; +import { z } from 'zod'; import { KinesisEnvelope } from '../../../src/envelopes/kinesis.js'; -import { ParseError } from '../../../src/errors.js'; import type { KinesisDataStreamEvent } from '../../../src/types/schema.js'; import { getTestEvent } from '../helpers/utils.js'; @@ -30,9 +29,8 @@ describe('Envelope: Kinesis', () => { { code: 'invalid_type', expected: 'number', - received: 'string', path: ['Records', 0, 'kinesis', 'data'], - message: 'Expected number, received string', + message: 'Invalid input: expected number, received string', }, ], }), @@ -62,18 +60,23 @@ describe('Envelope: Kinesis', () => { // Act & Assess expect(() => KinesisEnvelope.parse(event, z.string())).toThrow( - new ParseError('Failed to parse Kinesis Data Stream envelope', { - cause: new ZodError([ - { - code: 'too_small', - minimum: 1, - type: 'array', - inclusive: true, - exact: false, - message: 'Array must contain at least 1 element(s)', - path: ['Records'], - }, - ]), + expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse Kinesis Data Stream envelope' + ), + cause: expect.objectContaining({ + issues: [ + { + origin: 'array', + code: 'too_small', + minimum: 1, + inclusive: true, + path: ['Records'], + message: 'Too small: expected array to have >=1 items', + }, + ], + }), }) ); }); @@ -104,20 +107,25 @@ describe('Envelope: Kinesis', () => { const result = KinesisEnvelope.safeParse(event, z.string()); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse Kinesis Data Stream envelope', { - cause: new ZodError([ - { - code: 'too_small', - minimum: 1, - type: 'array', - inclusive: true, - exact: false, - message: 'Array must contain at least 1 element(s)', - path: ['Records'], - }, - ]), + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse Kinesis Data Stream envelope' + ), + cause: expect.objectContaining({ + issues: [ + { + origin: 'array', + code: 'too_small', + minimum: 1, + inclusive: true, + path: ['Records'], + message: 'Too small: expected array to have >=1 items', + }, + ], + }), }), originalEvent: event, }); @@ -137,22 +145,24 @@ describe('Envelope: Kinesis', () => { ); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError( - 'Failed to parse Kinesis Data Stream record at index 1', - { - cause: new ZodError([ + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse Kinesis Data Stream record at index 1' + ), + cause: expect.objectContaining({ + issues: [ { code: 'invalid_type', expected: 'object', - received: 'string', path: ['Records', 1, 'kinesis', 'data'], - message: 'Expected object, received string', + message: 'Invalid input: expected object, received string', }, - ]), - } - ), + ], + }), + }), originalEvent: event, }); }); @@ -170,29 +180,30 @@ describe('Envelope: Kinesis', () => { ); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError( - 'Failed to parse Kinesis Data Stream records at indexes 0, 1', - { - cause: new ZodError([ + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse Kinesis Data Stream records at indexes 0, 1' + ), + cause: expect.objectContaining({ + issues: [ { code: 'invalid_type', expected: 'object', - received: 'string', path: ['Records', 0, 'kinesis', 'data'], - message: 'Expected object, received string', + message: 'Invalid input: expected object, received string', }, { code: 'invalid_type', expected: 'object', - received: 'string', path: ['Records', 1, 'kinesis', 'data'], - message: 'Expected object, received string', + message: 'Invalid input: expected object, received string', }, - ]), - } - ), + ], + }), + }), originalEvent: event, }); }); diff --git a/packages/parser/tests/unit/envelopes/lambda.test.ts b/packages/parser/tests/unit/envelopes/lambda.test.ts index ff5f954a74..1e20fe3c8b 100644 --- a/packages/parser/tests/unit/envelopes/lambda.test.ts +++ b/packages/parser/tests/unit/envelopes/lambda.test.ts @@ -1,9 +1,8 @@ import { describe, expect, it } from 'vitest'; -import { ZodError, z } from 'zod'; -import { ParseError } from '../../../src'; +import { z } from 'zod'; import { LambdaFunctionUrlEnvelope } from '../../../src/envelopes/lambda.js'; -import { JSONStringified } from '../../../src/helpers'; -import type { LambdaFunctionUrlEvent } from '../../../src/types'; +import { JSONStringified } from '../../../src/helpers/index.js'; +import type { LambdaFunctionUrlEvent } from '../../../src/types/schema.js'; import { getTestEvent, omit } from '../helpers/utils.js'; describe('Envelope: Lambda function URL', () => { @@ -26,6 +25,7 @@ describe('Envelope: Lambda function URL', () => { // Act & Assess expect(() => LambdaFunctionUrlEnvelope.parse(event, schema)).toThrow( expect.objectContaining({ + name: 'ParseError', message: expect.stringContaining( 'Failed to parse Lambda function URL body' ), @@ -34,9 +34,8 @@ describe('Envelope: Lambda function URL', () => { { code: 'invalid_type', expected: 'object', - received: 'null', path: ['body'], - message: 'Expected object, received null', + message: 'Invalid input: expected object, received null', }, ], }), @@ -85,6 +84,7 @@ describe('Envelope: Lambda function URL', () => { expect(result).toEqual('aGVsbG8gd29ybGQ='); }); }); + describe('Method: safeParse', () => { it('parses Lambda function URL event', () => { // Prepare @@ -112,25 +112,29 @@ describe('Envelope: Lambda function URL', () => { const result = LambdaFunctionUrlEnvelope.safeParse(event, schema); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse Lambda function URL body', { - cause: new ZodError([ - { - code: 'invalid_type', - expected: 'string', - received: 'undefined', - path: ['rawPath'], - message: 'Required', - }, - { - code: 'invalid_type', - expected: 'object', - received: 'null', - path: ['body'], - message: 'Expected object, received null', - }, - ]), + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse Lambda function URL body' + ), + cause: expect.objectContaining({ + issues: [ + { + code: 'invalid_type', + expected: 'string', + path: ['rawPath'], + message: 'Invalid input: expected string, received undefined', + }, + { + code: 'invalid_type', + expected: 'object', + path: ['body'], + message: 'Invalid input: expected object, received null', + }, + ], + }), }), originalEvent: event, }); diff --git a/packages/parser/tests/unit/envelopes/sns-sqs.test.ts b/packages/parser/tests/unit/envelopes/sns-sqs.test.ts index 8d8c0d7e07..9630379fd4 100644 --- a/packages/parser/tests/unit/envelopes/sns-sqs.test.ts +++ b/packages/parser/tests/unit/envelopes/sns-sqs.test.ts @@ -1,7 +1,6 @@ import { describe, expect, it } from 'vitest'; -import { ZodError, z } from 'zod'; +import { z } from 'zod'; import { SnsSqsEnvelope } from '../../../src/envelopes/sns-sqs.js'; -import { ParseError } from '../../../src/errors.js'; import { JSONStringified } from '../../../src/helpers/index.js'; import type { SqsEvent } from '../../../src/types/schema.js'; import { getTestEvent } from '../helpers/utils.js'; @@ -28,15 +27,16 @@ describe('Envelope: SnsSqsEnvelope', () => { message: expect.stringContaining( 'Failed to parse SQS Record at index 0' ), - cause: new ZodError([ - { - code: 'invalid_type', - expected: 'number', - received: 'string', - path: ['Records', 0, 'body'], - message: 'Expected number, received string', - }, - ]), + cause: expect.objectContaining({ + issues: [ + { + code: 'invalid_type', + expected: 'number', + path: ['Records', 0, 'body'], + message: 'Invalid input: expected number, received string', + }, + ], + }), }) ); }); @@ -60,18 +60,21 @@ describe('Envelope: SnsSqsEnvelope', () => { // Act & Assess expect(() => SnsSqsEnvelope.parse(event, schema)).toThrow( - new ParseError('Failed to parse SQS Envelope', { - cause: new ZodError([ - { - code: 'too_small', - minimum: 1, - type: 'array', - inclusive: true, - exact: false, - message: 'Array must contain at least 1 element(s)', - path: ['Records'], - }, - ]), + expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining('Failed to parse SQS Envelope'), + cause: expect.objectContaining({ + issues: [ + { + origin: 'array', + code: 'too_small', + minimum: 1, + inclusive: true, + path: ['Records'], + message: 'Too small: expected array to have >=1 items', + }, + ], + }), }) ); }); @@ -83,14 +86,21 @@ describe('Envelope: SnsSqsEnvelope', () => { // Act & Assess expect(() => SnsSqsEnvelope.parse(event, schema)).toThrow( - new ParseError('Failed to parse SQS Record at index 0', { - cause: new ZodError([ - { - code: 'custom', - message: 'Invalid JSON', - path: ['Records', 0, 'body'], - }, - ]), + expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse SQS Record at index 0' + ), + cause: expect.objectContaining({ + issues: [ + { + code: 'custom', + input: 'invalid', + message: expect.stringMatching(/^Invalid JSON - /), + path: ['Records', 0, 'body'], + }, + ], + }), }) ); }); @@ -102,44 +112,45 @@ describe('Envelope: SnsSqsEnvelope', () => { // Act & Assess expect(() => SnsSqsEnvelope.parse(event, schema)).toThrow( - new ParseError('Failed to parse SQS Record at index 0', { - cause: new ZodError([ - { - code: 'invalid_type', - expected: 'string', - received: 'undefined', - path: ['Records', 0, 'body', 'TopicArn'], - message: 'Required', - }, - { - code: 'invalid_literal', - expected: 'Notification', - path: ['Records', 0, 'body', 'Type'], - message: 'Invalid literal value, expected "Notification"', - received: undefined, - }, - { - code: 'invalid_type', - expected: 'string', - received: 'undefined', - path: ['Records', 0, 'body', 'Message'], - message: 'Required', - }, - { - code: 'invalid_type', - expected: 'string', - received: 'undefined', - path: ['Records', 0, 'body', 'MessageId'], - message: 'Required', - }, - { - code: 'invalid_type', - expected: 'string', - received: 'undefined', - path: ['Records', 0, 'body', 'Timestamp'], - message: 'Required', - }, - ]), + expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse SQS Record at index 0' + ), + cause: expect.objectContaining({ + issues: [ + { + code: 'invalid_type', + expected: 'string', + path: ['Records', 0, 'body', 'TopicArn'], + message: 'Invalid input: expected string, received undefined', + }, + { + code: 'invalid_value', + values: ['Notification'], + path: ['Records', 0, 'body', 'Type'], + message: 'Invalid input: expected "Notification"', + }, + { + code: 'invalid_type', + expected: 'string', + path: ['Records', 0, 'body', 'Message'], + message: 'Invalid input: expected string, received undefined', + }, + { + code: 'invalid_type', + expected: 'string', + path: ['Records', 0, 'body', 'MessageId'], + message: 'Invalid input: expected string, received undefined', + }, + { + code: 'invalid_type', + expected: 'string', + path: ['Records', 0, 'body', 'Timestamp'], + message: 'Invalid input: expected string, received undefined', + }, + ], + }), }) ); }); @@ -170,20 +181,23 @@ describe('Envelope: SnsSqsEnvelope', () => { const result = SnsSqsEnvelope.safeParse(event, schema); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse SQS envelope', { - cause: new ZodError([ - { - code: 'too_small', - minimum: 1, - type: 'array', - inclusive: true, - exact: false, - message: 'Array must contain at least 1 element(s)', - path: ['Records'], - }, - ]), + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining('Failed to parse SQS envelope'), + cause: expect.objectContaining({ + issues: [ + { + origin: 'array', + code: 'too_small', + minimum: 1, + inclusive: true, + path: ['Records'], + message: 'Too small: expected array to have >=1 items', + }, + ], + }), }), originalEvent: event, }); @@ -198,16 +212,23 @@ describe('Envelope: SnsSqsEnvelope', () => { const result = SnsSqsEnvelope.safeParse(event, schema); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse SQS Record at index 0', { - cause: new ZodError([ - { - code: 'custom', - message: 'Invalid JSON', - path: ['Records', 0, 'body'], - }, - ]), + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse SQS Record at index 0' + ), + cause: expect.objectContaining({ + issues: [ + { + code: 'custom', + input: 'invalid', + message: expect.stringMatching(/^Invalid JSON - /), + path: ['Records', 0, 'body'], + }, + ], + }), }), originalEvent: event, }); @@ -222,46 +243,48 @@ describe('Envelope: SnsSqsEnvelope', () => { const result = SnsSqsEnvelope.safeParse(event, schema); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse SQS Record at index 0', { - cause: new ZodError([ - { - code: 'invalid_type', - expected: 'string', - received: 'undefined', - path: ['Records', 0, 'body', 'TopicArn'], - message: 'Required', - }, - { - code: 'invalid_literal', - expected: 'Notification', - path: ['Records', 0, 'body', 'Type'], - message: 'Invalid literal value, expected "Notification"', - received: undefined, - }, - { - code: 'invalid_type', - expected: 'string', - received: 'undefined', - path: ['Records', 0, 'body', 'Message'], - message: 'Required', - }, - { - code: 'invalid_type', - expected: 'string', - received: 'undefined', - path: ['Records', 0, 'body', 'MessageId'], - message: 'Required', - }, - { - code: 'invalid_type', - expected: 'string', - received: 'undefined', - path: ['Records', 0, 'body', 'Timestamp'], - message: 'Required', - }, - ]), + + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse SQS Record at index 0' + ), + cause: expect.objectContaining({ + issues: [ + { + code: 'invalid_type', + expected: 'string', + path: ['Records', 0, 'body', 'TopicArn'], + message: 'Invalid input: expected string, received undefined', + }, + { + code: 'invalid_value', + values: ['Notification'], + path: ['Records', 0, 'body', 'Type'], + message: 'Invalid input: expected "Notification"', + }, + { + code: 'invalid_type', + expected: 'string', + path: ['Records', 0, 'body', 'Message'], + message: 'Invalid input: expected string, received undefined', + }, + { + code: 'invalid_type', + expected: 'string', + path: ['Records', 0, 'body', 'MessageId'], + message: 'Invalid input: expected string, received undefined', + }, + { + code: 'invalid_type', + expected: 'string', + path: ['Records', 0, 'body', 'Timestamp'], + message: 'Invalid input: expected string, received undefined', + }, + ], + }), }), originalEvent: event, }); @@ -282,16 +305,23 @@ describe('Envelope: SnsSqsEnvelope', () => { const result = SnsSqsEnvelope.safeParse(event, JSONStringified(schema)); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse SQS Record at index 1', { - cause: new ZodError([ - { - code: 'custom', - message: 'Invalid JSON', - path: ['Records', 1, 'body'], - }, - ]), + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse SQS Record at index 1' + ), + cause: expect.objectContaining({ + issues: [ + { + code: 'custom', + message: expect.stringMatching(/^Invalid JSON - /), + fatal: true, + path: ['Records', 1, 'body'], + }, + ], + }), }), originalEvent: event, }); @@ -323,25 +353,29 @@ describe('Envelope: SnsSqsEnvelope', () => { const result = SnsSqsEnvelope.safeParse(event, z.number()); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse SQS Records at indexes 0, 1', { - cause: new ZodError([ - { - code: 'invalid_type', - expected: 'number', - received: 'string', - path: ['Records', 0, 'body'], - message: 'Expected number, received string', - }, - { - code: 'invalid_type', - expected: 'number', - received: 'string', - path: ['Records', 1, 'body'], - message: 'Expected number, received string', - }, - ]), + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse SQS Records at indexes 0, 1' + ), + cause: expect.objectContaining({ + issues: [ + { + code: 'invalid_type', + expected: 'number', + path: ['Records', 0, 'body'], + message: 'Invalid input: expected number, received string', + }, + { + code: 'invalid_type', + expected: 'number', + path: ['Records', 1, 'body'], + message: 'Invalid input: expected number, received string', + }, + ], + }), }), originalEvent: event, }); diff --git a/packages/parser/tests/unit/envelopes/sns.test.ts b/packages/parser/tests/unit/envelopes/sns.test.ts index 7e4eee6552..75effbb290 100644 --- a/packages/parser/tests/unit/envelopes/sns.test.ts +++ b/packages/parser/tests/unit/envelopes/sns.test.ts @@ -1,7 +1,6 @@ import { describe, expect, it } from 'vitest'; -import { ZodError, z } from 'zod'; +import { z } from 'zod'; import { SnsEnvelope } from '../../../src/envelopes/sns.js'; -import { ParseError } from '../../../src/errors.js'; import { JSONStringified } from '../../../src/helpers/index.js'; import type { SnsEvent } from '../../../src/types/schema.js'; import { getTestEvent } from '../helpers/utils.js'; @@ -29,6 +28,7 @@ describe('Envelope: SnsEnvelope', () => { ) ).toThrow( expect.objectContaining({ + name: 'ParseError', message: expect.stringContaining( 'Failed to parse SNS record at index 0' ), @@ -37,9 +37,8 @@ describe('Envelope: SnsEnvelope', () => { { code: 'invalid_type', expected: 'object', - received: 'string', path: ['Records', 0, 'Sns', 'Message'], - message: 'Expected object, received string', + message: 'Invalid input: expected object, received string', }, ], }), @@ -84,18 +83,21 @@ describe('Envelope: SnsEnvelope', () => { const result = SnsEnvelope.safeParse(event, z.string()); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse SNS envelope', { - cause: new ZodError([ - { - code: 'invalid_type', - expected: 'object', - received: 'undefined', - path: ['Records', 0, 'Sns'], - message: 'Required', - }, - ]), + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining('Failed to parse SNS envelope'), + cause: expect.objectContaining({ + issues: [ + { + code: 'invalid_type', + expected: 'object', + path: ['Records', 0, 'Sns'], + message: 'Invalid input: expected object, received undefined', + }, + ], + }), }), originalEvent: event, }); @@ -119,18 +121,23 @@ describe('Envelope: SnsEnvelope', () => { ); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse SNS message at index 1', { - cause: new ZodError([ - { - code: 'invalid_type', - expected: 'string', - received: 'number', - path: ['Records', 1, 'Sns', 'Message', 'foo'], - message: 'Expected string, received number', - }, - ]), + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse SNS message at index 1' + ), + cause: expect.objectContaining({ + issues: [ + { + code: 'invalid_type', + expected: 'string', + path: ['Records', 1, 'Sns', 'Message', 'foo'], + message: 'Invalid input: expected string, received number', + }, + ], + }), }), originalEvent: event, }); @@ -152,21 +159,29 @@ describe('Envelope: SnsEnvelope', () => { ); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse SNS messages at indexes 0, 1', { - cause: new ZodError([ - { - code: 'custom', - message: 'Invalid JSON', - path: ['Records', 0, 'Sns', 'Message'], - }, - { - code: 'custom', - message: 'Invalid JSON', - path: ['Records', 1, 'Sns', 'Message'], - }, - ]), + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse SNS messages at indexes 0, 1' + ), + cause: expect.objectContaining({ + issues: [ + { + code: 'custom', + message: expect.stringMatching(/^Invalid JSON - /), + fatal: true, + path: ['Records', 0, 'Sns', 'Message'], + }, + { + code: 'custom', + message: expect.stringMatching(/^Invalid JSON - /), + fatal: true, + path: ['Records', 1, 'Sns', 'Message'], + }, + ], + }), }), originalEvent: event, }); diff --git a/packages/parser/tests/unit/envelopes/sqs.test.ts b/packages/parser/tests/unit/envelopes/sqs.test.ts index 99fd3cb35f..6083a2cbe9 100644 --- a/packages/parser/tests/unit/envelopes/sqs.test.ts +++ b/packages/parser/tests/unit/envelopes/sqs.test.ts @@ -1,7 +1,6 @@ import { describe, expect, it } from 'vitest'; -import { ZodError, z } from 'zod'; +import { z } from 'zod'; import { SqsEnvelope } from '../../../src/envelopes/sqs.js'; -import { ParseError } from '../../../src/errors.js'; import { JSONStringified } from '../../../src/helpers/index.js'; import type { SqsEvent } from '../../../src/types/schema.js'; import { getTestEvent } from '../helpers/utils.js'; @@ -25,16 +24,20 @@ describe('Envelope: SqsEnvelope', () => { // Act & Assess expect(() => SqsEnvelope.parse(event, JSONStringified(schema))).toThrow( expect.objectContaining({ + name: 'ParseError', message: expect.stringContaining( 'Failed to parse SQS Record at index 0' ), - cause: new ZodError([ - { - code: 'custom', - message: 'Invalid JSON', - path: ['Records', 0, 'body'], - }, - ]), + cause: expect.objectContaining({ + issues: [ + { + code: 'custom', + message: expect.stringMatching(/^Invalid JSON - /), + fatal: true, + path: ['Records', 0, 'body'], + }, + ], + }), }) ); }); @@ -78,20 +81,23 @@ describe('Envelope: SqsEnvelope', () => { const result = SqsEnvelope.safeParse(event, z.string()); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse SQS envelope', { - cause: new ZodError([ - { - code: 'too_small', - minimum: 1, - type: 'array', - inclusive: true, - exact: false, - message: 'Array must contain at least 1 element(s)', - path: ['Records'], - }, - ]), + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining('Failed to parse SQS envelope'), + cause: expect.objectContaining({ + issues: [ + { + origin: 'array', + code: 'too_small', + minimum: 1, + inclusive: true, + path: ['Records'], + message: 'Too small: expected array to have >=1 items', + }, + ], + }), }), originalEvent: event, }); @@ -105,16 +111,22 @@ describe('Envelope: SqsEnvelope', () => { const result = SqsEnvelope.safeParse(event, JSONStringified(schema)); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse SQS Record at index 0', { - cause: new ZodError([ - { - code: 'custom', - message: 'Invalid JSON', - path: ['Records', 0, 'body'], - }, - ]), + error: expect.objectContaining({ + message: expect.stringContaining( + 'Failed to parse SQS Record at index 0' + ), + cause: expect.objectContaining({ + issues: [ + { + code: 'custom', + message: expect.stringMatching(/^Invalid JSON - /), + fatal: true, + path: ['Records', 0, 'body'], + }, + ], + }), }), originalEvent: event, }); @@ -128,25 +140,29 @@ describe('Envelope: SqsEnvelope', () => { const result = SqsEnvelope.safeParse(event, z.number()); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse SQS Records at indexes 0, 1', { - cause: new ZodError([ - { - code: 'invalid_type', - expected: 'number', - received: 'string', - path: ['Records', 0, 'body'], - message: 'Expected number, received string', - }, - { - code: 'invalid_type', - expected: 'number', - received: 'string', - path: ['Records', 1, 'body'], - message: 'Expected number, received string', - }, - ]), + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse SQS Records at indexes 0, 1' + ), + cause: expect.objectContaining({ + issues: [ + { + code: 'invalid_type', + expected: 'number', + message: 'Invalid input: expected number, received string', + path: ['Records', 0, 'body'], + }, + { + code: 'invalid_type', + expected: 'number', + message: 'Invalid input: expected number, received string', + path: ['Records', 1, 'body'], + }, + ], + }), }), originalEvent: event, }); diff --git a/packages/parser/tests/unit/envelopes/vpc-lattice.test.ts b/packages/parser/tests/unit/envelopes/vpc-lattice.test.ts index 1980db49e9..2702c7c130 100644 --- a/packages/parser/tests/unit/envelopes/vpc-lattice.test.ts +++ b/packages/parser/tests/unit/envelopes/vpc-lattice.test.ts @@ -1,7 +1,6 @@ import { describe, expect, it } from 'vitest'; -import { ZodError, z } from 'zod'; +import { z } from 'zod'; import { VpcLatticeEnvelope } from '../../../src/envelopes/vpc-lattice.js'; -import { ParseError } from '../../../src/errors.js'; import { JSONStringified } from '../../../src/helpers/index.js'; import type { VpcLatticeEvent } from '../../../src/types/index.js'; import { getTestEvent, omit } from '../helpers/utils.js'; @@ -25,15 +24,15 @@ describe('Envelope: VPC Lattice', () => { // Act & Assess expect(() => VpcLatticeEnvelope.parse(event, schema)).toThrow( expect.objectContaining({ + name: 'ParseError', message: expect.stringContaining('Failed to parse VPC Lattice body'), cause: expect.objectContaining({ issues: [ { code: 'invalid_type', expected: 'object', - received: 'string', path: ['body'], - message: 'Expected object, received string', + message: 'Invalid input: expected object, received string', }, ], }), @@ -104,18 +103,21 @@ describe('Envelope: VPC Lattice', () => { const result = VpcLatticeEnvelope.safeParse(event, z.string()); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse VPC Lattice body', { - cause: new ZodError([ - { - code: 'invalid_type', - expected: 'boolean', - received: 'undefined', - path: ['is_base64_encoded'], - message: 'Required', - }, - ]), + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining('Failed to parse VPC Lattice body'), + cause: expect.objectContaining({ + issues: [ + { + code: 'invalid_type', + expected: 'boolean', + path: ['is_base64_encoded'], + message: 'Invalid input: expected boolean, received undefined', + }, + ], + }), }), originalEvent: event, }); diff --git a/packages/parser/tests/unit/envelopes/vpc-latticev2.test.ts b/packages/parser/tests/unit/envelopes/vpc-latticev2.test.ts index 49f5ec81bf..08021ad288 100644 --- a/packages/parser/tests/unit/envelopes/vpc-latticev2.test.ts +++ b/packages/parser/tests/unit/envelopes/vpc-latticev2.test.ts @@ -1,7 +1,6 @@ import { describe, expect, it } from 'vitest'; -import { ZodError, z } from 'zod'; +import { z } from 'zod'; import { VpcLatticeV2Envelope } from '../../../src/envelopes/vpc-latticev2.js'; -import { ParseError } from '../../../src/errors.js'; import { JSONStringified } from '../../../src/helpers/index.js'; import type { VpcLatticeEventV2 } from '../../../src/types/index.js'; import { getTestEvent, omit } from '../helpers/utils.js'; @@ -25,6 +24,7 @@ describe('Envelope: VPC Lattice v2', () => { // Act & Assess expect(() => VpcLatticeV2Envelope.parse(event, schema)).toThrow( expect.objectContaining({ + name: 'ParseError', message: expect.stringContaining( 'Failed to parse VPC Lattice v2 body' ), @@ -33,9 +33,8 @@ describe('Envelope: VPC Lattice v2', () => { { code: 'invalid_type', expected: 'object', - received: 'string', path: ['body'], - message: 'Expected object, received string', + message: 'Invalid input: expected object, received string', }, ], }), @@ -106,18 +105,23 @@ describe('Envelope: VPC Lattice v2', () => { const result = VpcLatticeV2Envelope.safeParse(event, z.string()); // Assess - expect(result).be.deep.equal({ + expect(result).toEqual({ success: false, - error: new ParseError('Failed to parse VPC Lattice v2 body', { - cause: new ZodError([ - { - code: 'invalid_type', - expected: 'string', - received: 'undefined', - path: ['path'], - message: 'Required', - }, - ]), + error: expect.objectContaining({ + name: 'ParseError', + message: expect.stringContaining( + 'Failed to parse VPC Lattice v2 body' + ), + cause: expect.objectContaining({ + issues: [ + { + code: 'invalid_type', + expected: 'string', + message: 'Invalid input: expected string, received undefined', + path: ['path'], + }, + ], + }), }), originalEvent: event, }); diff --git a/packages/parser/tests/unit/parser.decorator.test.ts b/packages/parser/tests/unit/parser.decorator.test.ts index 48a647736e..7955bca551 100644 --- a/packages/parser/tests/unit/parser.decorator.test.ts +++ b/packages/parser/tests/unit/parser.decorator.test.ts @@ -1,7 +1,7 @@ import type { LambdaInterface } from '@aws-lambda-powertools/commons/types'; import type { Context } from 'aws-lambda'; import { describe, expect, it } from 'vitest'; -import { type ZodSchema, z } from 'zod'; +import { z } from 'zod'; import { EventBridgeEnvelope } from '../../src/envelopes/eventbridge.js'; import { ParseError } from '../../src/errors.js'; import { parser } from '../../src/index.js'; @@ -64,9 +64,7 @@ describe('Decorator: parser', () => { return event; } - private async anotherMethod( - event: z.infer - ): Promise> { + private async anotherMethod(event: unknown): Promise { return event; } } diff --git a/packages/parser/tests/unit/schema/apigw-websocket.test.ts b/packages/parser/tests/unit/schema/apigw-websocket.test.ts index 225458e626..021df64a1d 100644 --- a/packages/parser/tests/unit/schema/apigw-websocket.test.ts +++ b/packages/parser/tests/unit/schema/apigw-websocket.test.ts @@ -24,7 +24,8 @@ describe('Schema: APIGatewayProxyWebsocketEvent', () => { // Prepare const invalidEvent = { type: 'REQUEST', - methodArn: 'arn:aws:execute-api:us-east-1:123456789012:abcdef123/default/$connect', + methodArn: + 'arn:aws:execute-api:us-east-1:123456789012:abcdef123/default/$connect', headers: {}, requestContext: { routeKey: '$connect', @@ -33,6 +34,8 @@ describe('Schema: APIGatewayProxyWebsocketEvent', () => { }; // Act & Assess - expect(() => APIGatewayProxyWebsocketEventSchema.parse(invalidEvent)).toThrow(); + expect(() => + APIGatewayProxyWebsocketEventSchema.parse(invalidEvent) + ).toThrow(); }); -}); \ No newline at end of file +}); diff --git a/packages/parser/tests/unit/schema/kinesis.test.ts b/packages/parser/tests/unit/schema/kinesis.test.ts index 0f8817abf3..1e699d0f48 100644 --- a/packages/parser/tests/unit/schema/kinesis.test.ts +++ b/packages/parser/tests/unit/schema/kinesis.test.ts @@ -1,16 +1,16 @@ import { gunzipSync } from 'node:zlib'; import { describe, expect, it } from 'vitest'; +import { + KinesisDataStreamRecord, + KinesisDataStreamSchema, + KinesisDynamoDBStreamSchema, +} from '../../../src/schemas/kinesis.js'; import { KinesisFirehoseRecordSchema, KinesisFirehoseSchema, KinesisFirehoseSqsRecordSchema, KinesisFirehoseSqsSchema, } from '../../../src/schemas/kinesis-firehose.js'; -import { - KinesisDataStreamRecord, - KinesisDataStreamSchema, - KinesisDynamoDBStreamSchema, -} from '../../../src/schemas/kinesis.js'; import type { KinesisDataStreamEvent, KinesisDynamoDBStreamEvent, @@ -59,7 +59,7 @@ describe('Schema: Kinesis', () => { const parsed = KinesisDataStreamSchema.parse(testEvent); const transformedInput = { - Records: testEvent.Records.map((record, index) => { + Records: testEvent.Records.map((record, _index) => { return { ...record, kinesis: { @@ -187,7 +187,7 @@ describe('Schema: Kinesis', () => { const transformedInput = { ...testEvent, - Records: testEvent.Records.map((record, index) => { + Records: testEvent.Records.map((record) => { return { ...record, kinesis: { diff --git a/packages/parser/tests/unit/schema/transfer-family.test.ts b/packages/parser/tests/unit/schema/transfer-family.test.ts index f6041433cc..0d1b977c42 100644 --- a/packages/parser/tests/unit/schema/transfer-family.test.ts +++ b/packages/parser/tests/unit/schema/transfer-family.test.ts @@ -1,7 +1,7 @@ import { describe, expect, it } from 'vitest'; -import { TransferFamilySchema } from '../../../src/schemas/transfer-family'; +import { TransferFamilySchema } from '../../../src/schemas/transfer-family.js'; import type { TransferFamilyEvent } from '../../../src/types/schema.js'; -import { getTestEvent } from '../helpers/utils'; +import { getTestEvent } from '../helpers/utils.js'; describe('Schema: TransferFamily', () => { const baseEvent = getTestEvent({ diff --git a/packages/parser/tsconfig.cjs.json b/packages/parser/tsconfig.cjs.json index 7d570c8dbe..a8fadd417f 100644 --- a/packages/parser/tsconfig.cjs.json +++ b/packages/parser/tsconfig.cjs.json @@ -7,7 +7,5 @@ "rootDir": "./src", "tsBuildInfoFile": ".tsbuildinfo/cjs.json" }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/parser/tsconfig.json b/packages/parser/tsconfig.json index 204ff253d4..e1c2fb1dc4 100644 --- a/packages/parser/tsconfig.json +++ b/packages/parser/tsconfig.json @@ -8,7 +8,5 @@ "composite": true, "declaration": true }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/parser/vitest.config.ts b/packages/parser/vitest.config.ts index 9f1196ef1f..c8737a7bbc 100644 --- a/packages/parser/vitest.config.ts +++ b/packages/parser/vitest.config.ts @@ -4,5 +4,9 @@ export default defineProject({ test: { environment: 'node', setupFiles: ['../testing/src/setupEnv.ts'], + typecheck: { + tsconfig: './tests/tsconfig.json', + include: ['./tests/types/**/*.ts'], + }, }, }); diff --git a/packages/testing/CHANGELOG.md b/packages/testing/CHANGELOG.md index cc0cb47340..34dffd35f9 100644 --- a/packages/testing/CHANGELOG.md +++ b/packages/testing/CHANGELOG.md @@ -1,268 +1,139 @@ # Change Log -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.24.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.23.0...v2.24.0) (2025-07-15) + +**Note:** Version bump only for this package # [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - # [2.22.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.21.0...v2.22.0) (2025-06-20) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - # [2.21.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.20.0...v2.21.0) (2025-06-03) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - # [2.20.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.1...v2.20.0) (2025-05-20) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - ## [2.19.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.0...v2.19.1) (2025-05-05) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - # [2.19.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.18.0...v2.19.0) (2025-04-24) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - # [2.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.17.0...v2.18.0) (2025-04-07) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - # [2.17.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.16.0...v2.17.0) (2025-03-25) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - # [2.16.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.15.0...v2.16.0) (2025-03-07) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - # [2.15.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.14.0...v2.15.0) (2025-02-25) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - # [2.14.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.1...v2.14.0) (2025-02-10) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - ## [2.13.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.0...v2.13.1) (2025-01-28) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - # [2.13.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.12.0...v2.13.0) (2025-01-14) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - # [2.12.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.11.0...v2.12.0) (2024-12-17) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - # [2.11.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.10.0...v2.11.0) (2024-11-20) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - # [2.10.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.9.0...v2.10.0) (2024-10-22) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - # [2.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.8.0...v2.9.0) (2024-10-07) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - # [2.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.7.0...v2.8.0) (2024-09-16) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - # [2.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.6.0...v2.7.0) (2024-08-08) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - # [2.6.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.5.0...v2.6.0) (2024-07-25) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - # [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) - ### Features * **maintenance:** drop support for Node.js 16.x ([#2717](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2717)) ([e4eee73](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e4eee73770ffccead9212a566335ec256a31af7d)) - - - - # [2.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.2.0...v2.3.0) (2024-06-27) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - # [2.2.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.1...v2.2.0) (2024-06-13) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - ## [2.1.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.0...v2.1.1) (2024-05-14) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - # [2.1.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.0.4...v2.1.0) (2024-04-17) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - ## 2.0.4 (2024-04-10) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - ## 2.0.3 (2024-03-15) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - ## 2.0.2 (2024-03-05) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - - ## 2.0.1 (2024-03-04) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - # [2.0.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.18.1...v2.0.0) (2024-03-04) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - ## 1.18.1 (2024-02-20) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils - - - - ## [1.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.17.0...v1.18.0) (2024-01-26) **Note:** Version bump only for package @aws-lambda-powertools/testing-utils @@ -279,7 +150,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **maintenance:** add support for nodejs20.x runtime ([#1790](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1790)) ([6b9b1bc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b9b1bcb9baf4b3d8e0e5ec6709594aca09bb033)) +* **maintenance:** add support for nodejs20.x runtime ([#1790](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1790)) ([6b9b1bc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b9b1bcb9baf4b3d8e0e5ec6709594aca09bb033)) ## [1.14.2](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.14.1...v1.14.2) (2023-11-03) @@ -293,7 +164,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **layers:** add `arm64` to integration test matrix ([#1720](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1720)) ([61ad5ac](https://github.com/aws-powertools/powertools-lambda-typescript/commit/61ad5ac3bcf7742684aeec28553ec294696f3301)) +* **layers:** add `arm64` to integration test matrix ([#1720](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1720)) ([61ad5ac](https://github.com/aws-powertools/powertools-lambda-typescript/commit/61ad5ac3bcf7742684aeec28553ec294696f3301)) ## [1.13.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.13.0...v1.13.1) (2023-09-21) diff --git a/packages/testing/package.json b/packages/testing/package.json index 37b20d1e68..98b6900617 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/testing-utils", - "version": "2.23.0", + "version": "2.24.0", "description": "A package containing utilities to test your serverless workloads", "author": { "name": "Amazon Web Services", @@ -97,11 +97,11 @@ }, "homepage": "https://github.com/aws-powertools/powertools-lambda-typescript/tree/main/packages/testing#readme", "dependencies": { - "@aws-cdk/toolkit-lib": "^1.2.2", - "@aws-sdk/client-lambda": "^3.840.0", + "@aws-cdk/toolkit-lib": "^1.2.4", + "@aws-sdk/client-lambda": "^3.844.0", "@smithy/util-utf8": "^4.0.0", - "aws-cdk-lib": "^2.202.0", - "esbuild": "^0.25.5", + "aws-cdk-lib": "^2.204.0", + "esbuild": "^0.25.6", "promise-retry": "^2.0.1" }, "devDependencies": { diff --git a/packages/testing/src/TestInvocationLogs.ts b/packages/testing/src/TestInvocationLogs.ts index 45c189aa5f..faba42b21d 100644 --- a/packages/testing/src/TestInvocationLogs.ts +++ b/packages/testing/src/TestInvocationLogs.ts @@ -87,7 +87,7 @@ class TestInvocationLogs { const parsedLog = TestInvocationLogs.parseFunctionLog(log); return parsedLog.level === levelToFilter; - } catch (error) { + } catch { // If log is not from structured logging : such as metrics one. return ( (log.split('\t')[2] as keyof typeof LogLevel) === levelToFilter diff --git a/packages/testing/src/helpers.ts b/packages/testing/src/helpers.ts index f0a755b6c5..7df9bc0299 100644 --- a/packages/testing/src/helpers.ts +++ b/packages/testing/src/helpers.ts @@ -1,9 +1,9 @@ import { randomUUID } from 'node:crypto'; import { - TEST_ARCHITECTURES, - TEST_RUNTIMES, defaultArchitecture, defaultRuntime, + TEST_ARCHITECTURES, + TEST_RUNTIMES, } from './constants.js'; const isValidRuntimeKey = ( diff --git a/packages/testing/src/index.ts b/packages/testing/src/index.ts index 89341279d2..069b562a35 100644 --- a/packages/testing/src/index.ts +++ b/packages/testing/src/index.ts @@ -1,18 +1,18 @@ -export { TestStack } from './TestStack.js'; export { - TEST_RUNTIMES, - defaultRuntime, - TEST_ARCHITECTURES, defaultArchitecture, + defaultRuntime, LogLevel, + TEST_ARCHITECTURES, + TEST_RUNTIMES, } from './constants.js'; export { - isValidRuntimeKey, - getRuntimeKey, - generateTestUniqueName, concatenateResourceName, findAndGetStackOutputValue, + generateTestUniqueName, getArchitectureKey, + getRuntimeKey, + isValidRuntimeKey, } from './helpers.js'; export { invokeFunction, invokeFunctionOnce } from './invokeTestFunction.js'; export { TestInvocationLogs } from './TestInvocationLogs.js'; +export { TestStack } from './TestStack.js'; diff --git a/packages/testing/src/resources/TestDynamodbTable.ts b/packages/testing/src/resources/TestDynamodbTable.ts index 6cb3db7379..2589a62250 100644 --- a/packages/testing/src/resources/TestDynamodbTable.ts +++ b/packages/testing/src/resources/TestDynamodbTable.ts @@ -1,8 +1,8 @@ import { randomUUID } from 'node:crypto'; import { CfnOutput, RemovalPolicy } from 'aws-cdk-lib'; import { AttributeType, BillingMode, Table } from 'aws-cdk-lib/aws-dynamodb'; -import type { TestStack } from '../TestStack.js'; import { concatenateResourceName } from '../helpers.js'; +import type { TestStack } from '../TestStack.js'; import type { ExtraTestProps, TestDynamodbTableProps } from '../types.js'; /** diff --git a/packages/testing/src/resources/TestNodejsFunction.ts b/packages/testing/src/resources/TestNodejsFunction.ts index e20ee86183..56b0799a58 100644 --- a/packages/testing/src/resources/TestNodejsFunction.ts +++ b/packages/testing/src/resources/TestNodejsFunction.ts @@ -3,13 +3,13 @@ import { CfnOutput, Duration } from 'aws-cdk-lib'; import { Alias, Tracing } from 'aws-cdk-lib/aws-lambda'; import { NodejsFunction, OutputFormat } from 'aws-cdk-lib/aws-lambda-nodejs'; import { LogGroup, RetentionDays } from 'aws-cdk-lib/aws-logs'; -import type { TestStack } from '../TestStack.js'; import { TEST_ARCHITECTURES, TEST_RUNTIMES } from '../constants.js'; import { concatenateResourceName, getArchitectureKey, getRuntimeKey, } from '../helpers.js'; +import type { TestStack } from '../TestStack.js'; import type { ExtraTestProps, TestNodejsFunctionProps } from '../types.js'; /** diff --git a/packages/testing/src/setupEnv.ts b/packages/testing/src/setupEnv.ts index 9caf9e724f..7363a80828 100644 --- a/packages/testing/src/setupEnv.ts +++ b/packages/testing/src/setupEnv.ts @@ -21,7 +21,7 @@ expect.extend({ const [rawMessage] = call; try { messages[idx] = JSON.parse(rawMessage); - } catch (error) { + } catch { messages[idx] = rawMessage; } if (this.equals(messages[idx], expected)) { @@ -55,7 +55,7 @@ expect.extend({ const [rawMessage] = call; try { messages[idx] = JSON.parse(rawMessage); - } catch (error) { + } catch { messages[idx] = rawMessage; } if (this.equals(messages[idx], expected)) { @@ -119,7 +119,7 @@ expect.extend({ const [rawMessage] = call; try { emfs[idx] = JSON.parse(rawMessage); - } catch (error) { + } catch { emfs[idx] = rawMessage; } const metrics = emfs[idx]._aws.CloudWatchMetrics; diff --git a/packages/testing/tsconfig.cjs.json b/packages/testing/tsconfig.cjs.json index f81fe3fbd1..dfd6c269b2 100644 --- a/packages/testing/tsconfig.cjs.json +++ b/packages/testing/tsconfig.cjs.json @@ -7,7 +7,5 @@ "rootDir": "./src", "tsBuildInfoFile": ".tsbuildinfo/cjs.json" }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/testing/tsconfig.json b/packages/testing/tsconfig.json index 204ff253d4..e1c2fb1dc4 100644 --- a/packages/testing/tsconfig.json +++ b/packages/testing/tsconfig.json @@ -8,7 +8,5 @@ "composite": true, "declaration": true }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/tracer/CHANGELOG.md b/packages/tracer/CHANGELOG.md index 5244761149..1e69f11b5d 100644 --- a/packages/tracer/CHANGELOG.md +++ b/packages/tracer/CHANGELOG.md @@ -1,226 +1,125 @@ # Change Log -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.24.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.23.0...v2.24.0) (2025-07-15) -# [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) - -**Note:** Version bump only for package @aws-lambda-powertools/tracer +### Bug Fixes +- skip tracing CONNECT requests ([#4148](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4148)) ([a147c3b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a147c3b46ff975ed3e94722e21e79e65ae2bbc78)) +### Improvements +- replace class-based env access with functional helpers ([#4146](https://github.com/aws-powertools/powertools-lambda-typescript/issues/4146)) ([51d9b98](https://github.com/aws-powertools/powertools-lambda-typescript/commit/51d9b988488aee01de337669dbfc68d0ab7af9dd)) +# [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) +**Note:** Version bump only for package @aws-lambda-powertools/tracer # [2.22.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.21.0...v2.22.0) (2025-06-20) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - # [2.21.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.20.0...v2.21.0) (2025-06-03) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - # [2.20.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.1...v2.20.0) (2025-05-20) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - ## [2.19.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.0...v2.19.1) (2025-05-05) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - # [2.19.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.18.0...v2.19.0) (2025-04-24) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - # [2.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.17.0...v2.18.0) (2025-04-07) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - # [2.17.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.16.0...v2.17.0) (2025-03-25) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - # [2.16.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.15.0...v2.16.0) (2025-03-07) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - # [2.15.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.14.0...v2.15.0) (2025-02-25) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - # [2.14.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.1...v2.14.0) (2025-02-10) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - ## [2.13.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.13.0...v2.13.1) (2025-01-28) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - # [2.13.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.12.0...v2.13.0) (2025-01-14) - ### Bug Fixes * **tracer:** forward `X-Amzn-Trace-Id` header when instrumenting fetch ([#3470](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3470)) ([4eb3e2d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/4eb3e2d4e0ccbfb0f99c215c61d2b9263ee10870)) - - - - # [2.12.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.11.0...v2.12.0) (2024-12-17) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - # [2.11.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.10.0...v2.11.0) (2024-11-20) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - # [2.10.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.9.0...v2.10.0) (2024-10-22) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - # [2.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.8.0...v2.9.0) (2024-10-07) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - # [2.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.7.0...v2.8.0) (2024-09-16) - ### Bug Fixes * **tracer:** include request pathname in trace data ([#2955](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2955)) ([6864e53](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6864e53d73f49b15fd88ab35a4f6d22263d0c9fd)) - - - - # [2.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.6.0...v2.7.0) (2024-08-08) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - # [2.6.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.5.0...v2.6.0) (2024-07-25) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - # [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) - ### Features * **internal:** support Middy.js 5.x ([#2748](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2748)) ([1d7ad61](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1d7ad61a569a4b1421dbe1754b0179f676cfede7)) * **maintenance:** drop support for Node.js 16.x ([#2717](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2717)) ([e4eee73](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e4eee73770ffccead9212a566335ec256a31af7d)) - - - - # [2.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.2.0...v2.3.0) (2024-06-27) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - # [2.2.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.1...v2.2.0) (2024-06-13) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - ## [2.1.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.1.0...v2.1.1) (2024-05-14) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - # [2.1.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.0.4...v2.1.0) (2024-04-17) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - ## 2.0.4 (2024-04-10) ### Features @@ -231,45 +130,24 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - ## 2.0.2 (2024-03-05) - ### Bug Fixes * **tracer:** modify aws-xray-sdk-core import for js ([#2164](https://github.com/aws-powertools/powertools-lambda-typescript/issues/2164)) ([29630b5](https://github.com/aws-powertools/powertools-lambda-typescript/commit/29630b5b68915ccca1324f3e7ce3e95b85a616be)) - - - - ## 2.0.1 (2024-03-04) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - # [2.0.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.18.1...v2.0.0) (2024-03-04) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - ## 1.18.1 (2024-02-20) **Note:** Version bump only for package @aws-lambda-powertools/tracer - - - - ## [1.17.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.16.0...v1.17.0) (2023-11-24) **maintenance:** drop support for Node.js 14 ([#1664](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1664)) ([e2a0923](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e2a09232f86167b5208be2daf892aa1ea433ce0f)) @@ -282,7 +160,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **maintenance:** add support for nodejs20.x runtime ([#1790](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1790)) ([6b9b1bc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b9b1bcb9baf4b3d8e0e5ec6709594aca09bb033)) +* **maintenance:** add support for nodejs20.x runtime ([#1790](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1790)) ([6b9b1bc](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6b9b1bcb9baf4b3d8e0e5ec6709594aca09bb033)) ## [1.14.2](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.14.1...v1.14.2) (2023-11-03) @@ -296,14 +174,14 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **layers:** add `arm64` to integration test matrix ([#1720](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1720)) ([61ad5ac](https://github.com/aws-powertools/powertools-lambda-typescript/commit/61ad5ac3bcf7742684aeec28553ec294696f3301)) -- **tracer:** add try/catch logic to decorator and middleware close ([#1716](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1716)) ([be16b59](https://github.com/aws-powertools/powertools-lambda-typescript/commit/be16b599b8023f95572234fb222ea70aea5b3f17)) +* **layers:** add `arm64` to integration test matrix ([#1720](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1720)) ([61ad5ac](https://github.com/aws-powertools/powertools-lambda-typescript/commit/61ad5ac3bcf7742684aeec28553ec294696f3301)) +* **tracer:** add try/catch logic to decorator and middleware close ([#1716](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1716)) ([be16b59](https://github.com/aws-powertools/powertools-lambda-typescript/commit/be16b599b8023f95572234fb222ea70aea5b3f17)) ## [1.13.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.13.0...v1.13.1) (2023-09-21) ### Bug Fixes -- **maintenance:** remove upper peer dependency Middy ([#1705](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1705)) ([df21ec8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/df21ec8761b1be511c13c28fedd41bf0e2851061)) +* **maintenance:** remove upper peer dependency Middy ([#1705](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1705)) ([df21ec8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/df21ec8761b1be511c13c28fedd41bf0e2851061)) # [1.13.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.12.1...v1.13.0) (2023-09-18) @@ -329,17 +207,17 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- **idempotency:** skip persistence for optional idempotency key ([#1507](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1507)) ([b9fcef6](https://github.com/aws-powertools/powertools-lambda-typescript/commit/b9fcef66eb4bd9a7ad1eeac5f5db2cdbccc70c71)) +* **idempotency:** skip persistence for optional idempotency key ([#1507](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1507)) ([b9fcef6](https://github.com/aws-powertools/powertools-lambda-typescript/commit/b9fcef66eb4bd9a7ad1eeac5f5db2cdbccc70c71)) ### Features -- **tracer:** close & restore segments when other middlewares return ([#1545](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1545)) ([74ddb09](https://github.com/aws-powertools/powertools-lambda-typescript/commit/74ddb09a3107d9f45f34ccda1e691a9504578c2d)) +* **tracer:** close & restore segments when other middlewares return ([#1545](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1545)) ([74ddb09](https://github.com/aws-powertools/powertools-lambda-typescript/commit/74ddb09a3107d9f45f34ccda1e691a9504578c2d)) # [1.9.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.8.0...v1.9.0) (2023-06-09) ### Features -- **tracer:** add isTraceSampled method ([#1435](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1435)) ([194bbd3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/194bbd366b726a477523225f446add054c20566e)) +* **tracer:** add isTraceSampled method ([#1435](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1435)) ([194bbd3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/194bbd366b726a477523225f446add054c20566e)) # [1.8.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.7.0...v1.8.0) (2023-04-07) @@ -369,22 +247,22 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **all:** moved EnvService to commons + exposed getXrayTraceId in tracer ([#1123](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1123)) ([c8e3c15](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c8e3c15b64142ebe6f43835a5917ecba26293a32)) +* **all:** moved EnvService to commons + exposed getXrayTraceId in tracer ([#1123](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1123)) ([c8e3c15](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c8e3c15b64142ebe6f43835a5917ecba26293a32)) # [1.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.2.1...v1.3.0) (2022-10-17) ### Bug Fixes -- **all:** update version command to use lint-fix ([#1119](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1119)) ([6f14fb3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6f14fb3229882b1dd0c20d18c87a542993432da9)) -- captureMethod correctly detect method name when used with external decorators ([#1109](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1109)) ([a574406](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a574406134b65c17f56dfb3d3130aa237ece4160)) +* **all:** update version command to use lint-fix ([#1119](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1119)) ([6f14fb3](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6f14fb3229882b1dd0c20d18c87a542993432da9)) +* captureMethod correctly detect method name when used with external decorators ([#1109](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1109)) ([a574406](https://github.com/aws-powertools/powertools-lambda-typescript/commit/a574406134b65c17f56dfb3d3130aa237ece4160)) ### Features -- **tracer:** specify subsegment name when capturing class method ([#1092](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1092)) ([d4174eb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d4174eb7a894215e2d37f306016429de3bde8029)) +* **tracer:** specify subsegment name when capturing class method ([#1092](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1092)) ([d4174eb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d4174eb7a894215e2d37f306016429de3bde8029)) ### Reverts -- Revert "chore(release): v1.3.0 [skip ci]" ([237b99f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/237b99f9f6eff5e6e26d779603cf13cd4422c156)) +* Revert "chore(release): v1.3.0 [skip ci]" ([237b99f](https://github.com/aws-powertools/powertools-lambda-typescript/commit/237b99f9f6eff5e6e26d779603cf13cd4422c156)) ## [1.2.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.2.0...v1.2.1) (2022-08-25) @@ -394,19 +272,19 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **tracer:** allow disabling result capture for decorators and middleware ([#1065](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1065)) ([c3b9a37](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c3b9a37b6d5885f1750da4f0b226a18734ff0c29)) +* **tracer:** allow disabling result capture for decorators and middleware ([#1065](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1065)) ([c3b9a37](https://github.com/aws-powertools/powertools-lambda-typescript/commit/c3b9a37b6d5885f1750da4f0b226a18734ff0c29)) ## [1.1.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.1.0...v1.1.1) (2022-08-18) ### Bug Fixes -- **tracer:** decorated class methods cannot access `this` ([#1055](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1055)) ([107fa04](https://github.com/aws-powertools/powertools-lambda-typescript/commit/107fa04148ec86c8a0c0a29b5b2d35a62fe2b4e6)) +* **tracer:** decorated class methods cannot access `this` ([#1055](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1055)) ([107fa04](https://github.com/aws-powertools/powertools-lambda-typescript/commit/107fa04148ec86c8a0c0a29b5b2d35a62fe2b4e6)) # [1.1.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.0.2...v1.1.0) (2022-08-12) ### Bug Fixes -- wrong scope in captureMethod ([#1026](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1026)) ([1a06fed](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1a06fed74db02741c58bc05d8d5fce2e688d7879)) +* wrong scope in captureMethod ([#1026](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1026)) ([1a06fed](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1a06fed74db02741c58bc05d8d5fce2e688d7879)) ## [1.0.2](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v1.0.1...v1.0.2) (2022-07-19) @@ -424,16 +302,16 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- **tracer:** capture method throws errors correctly ([#1016](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1016)) ([fb85238](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fb8523868e8d5e31c00a017ae1102ed31a0a4245)) +* **tracer:** capture method throws errors correctly ([#1016](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1016)) ([fb85238](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fb8523868e8d5e31c00a017ae1102ed31a0a4245)) ### Features -- **tracer:** auto disable when running inside amplify mock ([#1010](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1010)) ([024d628](https://github.com/aws-powertools/powertools-lambda-typescript/commit/024d6286f9b9273becce825b5c6ca0db87d4c63a)) +* **tracer:** auto disable when running inside amplify mock ([#1010](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1010)) ([024d628](https://github.com/aws-powertools/powertools-lambda-typescript/commit/024d6286f9b9273becce825b5c6ca0db87d4c63a)) ### Reverts -- Revert "chore(release): v0.12.0-rc.0 [skip ci]" ([9397f1d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9397f1d3624eb0bfbeb5e4c2702ae51e558a5b4a)) -- Revert "chore(release): v0.12.0-rc.0 [skip ci]" (#1017) ([51c18da](https://github.com/aws-powertools/powertools-lambda-typescript/commit/51c18da20db434f8b12f320e5074e3e0a146046e)), closes [#1017](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1017) +* Revert "chore(release): v0.12.0-rc.0 [skip ci]" ([9397f1d](https://github.com/aws-powertools/powertools-lambda-typescript/commit/9397f1d3624eb0bfbeb5e4c2702ae51e558a5b4a)) +* Revert "chore(release): v0.12.0-rc.0 [skip ci]" (#1017) ([51c18da](https://github.com/aws-powertools/powertools-lambda-typescript/commit/51c18da20db434f8b12f320e5074e3e0a146046e)), closes [#1017](https://github.com/aws-powertools/powertools-lambda-typescript/issues/1017) ## [0.11.1-rc.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.11.0...v0.11.1-rc.0) (2022-06-24) @@ -447,7 +325,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- **all:** nodejs16x support ([#877](https://github.com/aws-powertools/powertools-lambda-typescript/issues/877)) ([d2b13c9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d2b13c945adb1a74b7c5f76d45f28a6979ce6429)) +* **all:** nodejs16x support ([#877](https://github.com/aws-powertools/powertools-lambda-typescript/issues/877)) ([d2b13c9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d2b13c945adb1a74b7c5f76d45f28a6979ce6429)) ## [0.9.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.9.0...v0.9.1) (2022-05-24) @@ -465,7 +343,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Features -- added captureHTTPsRequest feature ([#677](https://github.com/aws-powertools/powertools-lambda-typescript/issues/677)) ([5a36723](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5a367233b3284c4b1c0c18caffd00e585afc9f55)) +* added captureHTTPsRequest feature ([#677](https://github.com/aws-powertools/powertools-lambda-typescript/issues/677)) ([5a36723](https://github.com/aws-powertools/powertools-lambda-typescript/commit/5a367233b3284c4b1c0c18caffd00e585afc9f55)) ## [0.7.2](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.7.1...v0.7.2) (2022-04-01) @@ -475,13 +353,13 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- **tracer, metrics:** use polling instead of fixed wait in e2e tests ([#654](https://github.com/aws-powertools/powertools-lambda-typescript/issues/654)) ([6d4ab75](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6d4ab751bc98eb823d2a68b4973fa9f8405971a2)) +* **tracer, metrics:** use polling instead of fixed wait in e2e tests ([#654](https://github.com/aws-powertools/powertools-lambda-typescript/issues/654)) ([6d4ab75](https://github.com/aws-powertools/powertools-lambda-typescript/commit/6d4ab751bc98eb823d2a68b4973fa9f8405971a2)) # [0.7.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.6.0...v0.7.0) (2022-03-08) ### Features -- **tracer:** adopted Utility class & updated unit tests ([#549](https://github.com/aws-powertools/powertools-lambda-typescript/issues/549)) ([3769a69](https://github.com/aws-powertools/powertools-lambda-typescript/commit/3769a694725cc2a3fe6fb5f90fb045f73ea32a7c)) +* **tracer:** adopted Utility class & updated unit tests ([#549](https://github.com/aws-powertools/powertools-lambda-typescript/issues/549)) ([3769a69](https://github.com/aws-powertools/powertools-lambda-typescript/commit/3769a694725cc2a3fe6fb5f90fb045f73ea32a7c)) # [0.6.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.5.1...v0.6.0) (2022-02-17) @@ -491,25 +369,25 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- **tracer:** properly return DynamoDB.DocumentClient ([#528](https://github.com/aws-powertools/powertools-lambda-typescript/issues/528)) ([3559e7b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/3559e7b19339a4649f235fb4af41c6b182da3df1)) +* **tracer:** properly return DynamoDB.DocumentClient ([#528](https://github.com/aws-powertools/powertools-lambda-typescript/issues/528)) ([3559e7b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/3559e7b19339a4649f235fb4af41c6b182da3df1)) ### Reverts -- Revert "build(deps-dev): bump aws-cdk from 1.139.0 to 1.143.0 (#532)" (#544) ([e96c9ba](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e96c9ba5bd4f738e5ed7c5850e06856a8c69bff1)), closes [#532](https://github.com/aws-powertools/powertools-lambda-typescript/issues/532) [#544](https://github.com/aws-powertools/powertools-lambda-typescript/issues/544) -- Revert "build(deps-dev): bump @aws-cdk/aws-lambda-nodejs from 1.139.0 to 1.143.0 (#531)" (#545) ([7dffbd8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7dffbd8708555fcc9817ea4373ccf71b0aea3c89)), closes [#531](https://github.com/aws-powertools/powertools-lambda-typescript/issues/531) [#545](https://github.com/aws-powertools/powertools-lambda-typescript/issues/545) +* Revert "build(deps-dev): bump aws-cdk from 1.139.0 to 1.143.0 (#532)" (#544) ([e96c9ba](https://github.com/aws-powertools/powertools-lambda-typescript/commit/e96c9ba5bd4f738e5ed7c5850e06856a8c69bff1)), closes [#532](https://github.com/aws-powertools/powertools-lambda-typescript/issues/532) [#544](https://github.com/aws-powertools/powertools-lambda-typescript/issues/544) +* Revert "build(deps-dev): bump @aws-cdk/aws-lambda-nodejs from 1.139.0 to 1.143.0 (#531)" (#545) ([7dffbd8](https://github.com/aws-powertools/powertools-lambda-typescript/commit/7dffbd8708555fcc9817ea4373ccf71b0aea3c89)), closes [#531](https://github.com/aws-powertools/powertools-lambda-typescript/issues/531) [#545](https://github.com/aws-powertools/powertools-lambda-typescript/issues/545) # [0.5.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.4.0...v0.5.0) (2022-01-26) ### Features -- **all:** make `@middy/core` optional ([#511](https://github.com/aws-powertools/powertools-lambda-typescript/issues/511)) ([1107f96](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1107f96e9b4c678d34ee36757366f150d99be4dc)) -- **tracer:** add support for capturing DynamoDB DocumentClient ([#450](https://github.com/aws-powertools/powertools-lambda-typescript/issues/450)) ([621ae50](https://github.com/aws-powertools/powertools-lambda-typescript/commit/621ae50430e4459f90eaaa135eb0ed674b95e108)) +* **all:** make `@middy/core` optional ([#511](https://github.com/aws-powertools/powertools-lambda-typescript/issues/511)) ([1107f96](https://github.com/aws-powertools/powertools-lambda-typescript/commit/1107f96e9b4c678d34ee36757366f150d99be4dc)) +* **tracer:** add support for capturing DynamoDB DocumentClient ([#450](https://github.com/aws-powertools/powertools-lambda-typescript/issues/450)) ([621ae50](https://github.com/aws-powertools/powertools-lambda-typescript/commit/621ae50430e4459f90eaaa135eb0ed674b95e108)) # [0.4.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.3.3...v0.4.0) (2022-01-20) ### Features -- **logger:** JSDOCS support ([#491](https://github.com/aws-powertools/powertools-lambda-typescript/issues/491)) ([cd2c2d9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/cd2c2d93a5822e26d3113a042be1dd0473aa6b2a)) +* **logger:** JSDOCS support ([#491](https://github.com/aws-powertools/powertools-lambda-typescript/issues/491)) ([cd2c2d9](https://github.com/aws-powertools/powertools-lambda-typescript/commit/cd2c2d93a5822e26d3113a042be1dd0473aa6b2a)) ## [0.3.3](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.3.2...v0.3.3) (2022-01-17) @@ -519,25 +397,25 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ### Bug Fixes -- **all:** fix latest release broken by change of npm pack result on common ([#470](https://github.com/aws-powertools/powertools-lambda-typescript/issues/470)) ([2c3df93](https://github.com/aws-powertools/powertools-lambda-typescript/commit/2c3df9378ac191f6da6cb5f458f6227d6466cafa)), closes [#417](https://github.com/aws-powertools/powertools-lambda-typescript/issues/417) +* **all:** fix latest release broken by change of npm pack result on common ([#470](https://github.com/aws-powertools/powertools-lambda-typescript/issues/470)) ([2c3df93](https://github.com/aws-powertools/powertools-lambda-typescript/commit/2c3df9378ac191f6da6cb5f458f6227d6466cafa)), closes [#417](https://github.com/aws-powertools/powertools-lambda-typescript/issues/417) # [0.3.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v0.2.0...v0.3.0) (2022-01-14) ### Bug Fixes -- **build:** Update contributing.md and fix npm ci ([#417](https://github.com/aws-powertools/powertools-lambda-typescript/issues/417)) ([279ad98](https://github.com/aws-powertools/powertools-lambda-typescript/commit/279ad984f71d5b157a13cffeab52602f2c09c1f8)), closes [#415](https://github.com/aws-powertools/powertools-lambda-typescript/issues/415) [#415](https://github.com/aws-powertools/powertools-lambda-typescript/issues/415) -- **tracer:** avoid throwing errors in manual instrumentation when running outside of AWS Lambda ([#442](https://github.com/aws-powertools/powertools-lambda-typescript/issues/442)) ([fd02acb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fd02acbbe7de1cd0d1b00ae1cca68148a5114cbf)) +* **build:** Update contributing.md and fix npm ci ([#417](https://github.com/aws-powertools/powertools-lambda-typescript/issues/417)) ([279ad98](https://github.com/aws-powertools/powertools-lambda-typescript/commit/279ad984f71d5b157a13cffeab52602f2c09c1f8)), closes [#415](https://github.com/aws-powertools/powertools-lambda-typescript/issues/415) [#415](https://github.com/aws-powertools/powertools-lambda-typescript/issues/415) +* **tracer:** avoid throwing errors in manual instrumentation when running outside of AWS Lambda ([#442](https://github.com/aws-powertools/powertools-lambda-typescript/issues/442)) ([fd02acb](https://github.com/aws-powertools/powertools-lambda-typescript/commit/fd02acbbe7de1cd0d1b00ae1cca68148a5114cbf)) ### Features -- **all:** Update to examples use released version (0.2.0) ([#405](https://github.com/aws-powertools/powertools-lambda-typescript/issues/405)) ([d5e0620](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d5e0620473f31d0839c027a76a88dcdcb98c84de)) +* **all:** Update to examples use released version (0.2.0) ([#405](https://github.com/aws-powertools/powertools-lambda-typescript/issues/405)) ([d5e0620](https://github.com/aws-powertools/powertools-lambda-typescript/commit/d5e0620473f31d0839c027a76a88dcdcb98c84de)) # 0.2.0 (2022-01-05) ### Features -- _tracer:_ beta release (#91 (https://github.com/aws-powertools/powertools-lambda-python/issues/91)) +* _tracer:_ beta release (#91 ()) -### Contributor List: +### Contributor List @alan-churley, @bahrmichael, @dreamorosi, @flochaz, @heitorlessa, @ijemmy and @saragerion diff --git a/packages/tracer/package.json b/packages/tracer/package.json index 6e6761c0d8..313b7852a2 100644 --- a/packages/tracer/package.json +++ b/packages/tracer/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/tracer", - "version": "2.23.0", + "version": "2.24.0", "description": "The tracer package for the Powertools for AWS Lambda (TypeScript) library", "author": { "name": "Amazon Web Services", @@ -30,8 +30,8 @@ "license": "MIT-0", "devDependencies": { "@aws-lambda-powertools/testing-utils": "file:../testing", - "@aws-sdk/client-dynamodb": "^3.840.0", - "@aws-sdk/client-xray": "^3.840.0" + "@aws-sdk/client-dynamodb": "^3.844.0", + "@aws-sdk/client-xray": "^3.844.0" }, "peerDependencies": { "@middy/core": "4.x || 5.x || 6.x" @@ -87,7 +87,7 @@ "url": "https://github.com/aws-powertools/powertools-lambda-typescript/issues" }, "dependencies": { - "@aws-lambda-powertools/commons": "2.23.0", + "@aws-lambda-powertools/commons": "2.24.0", "aws-xray-sdk-core": "^3.10.3" }, "keywords": [ diff --git a/packages/tracer/src/Tracer.ts b/packages/tracer/src/Tracer.ts index 281241bdbc..590bb2de95 100644 --- a/packages/tracer/src/Tracer.ts +++ b/packages/tracer/src/Tracer.ts @@ -10,19 +10,22 @@ if ( ) { process.env.AWS_XRAY_CONTEXT_MISSING = 'IGNORE_ERROR'; } + import { Utility } from '@aws-lambda-powertools/commons'; import type { AsyncHandler, HandlerMethodDecorator, SyncHandler, } from '@aws-lambda-powertools/commons/types'; +import { + getServiceName, + getStringFromEnv, + getXRayTraceIdFromEnv, + isRequestXRaySampled, +} from '@aws-lambda-powertools/commons/utils/env'; import type { Handler } from 'aws-lambda'; import type { Segment, Subsegment } from 'aws-xray-sdk-core'; import xraySdk from 'aws-xray-sdk-core'; -import { - type EnvironmentVariablesService, - environmentVariablesService, -} from './config/EnvironmentVariablesService.js'; import { ProviderService } from './provider/ProviderService.js'; import type { ConfigServiceInterface } from './types/ConfigServiceInterface.js'; import type { ProviderServiceInterface } from './types/ProviderService.js'; @@ -34,6 +37,7 @@ import type { TracerInterface, TracerOptions, } from './types/Tracer.js'; + const { Subsegment: XraySubsegment } = xraySdk; /** @@ -172,11 +176,18 @@ class Tracer extends Utility implements TracerInterface { private customConfigService?: ConfigServiceInterface; /** - * The environment variables service used by the Tracer, is always initialized in the constructor in setOptions(). + * Cache environment variables once at init time. */ - private envVarsService!: EnvironmentVariablesService; + readonly #envConfig = { + awsExecutionEnv: '', + samLocal: '', + captureError: '', + captureHTTPsRequests: '', + captureResponse: '', + tracingEnabled: '', + serviceName: '', + }; - // serviceName is always initialized in the constructor in setOptions() /** * The name of the service, is always initialized in the constructor in setOptions(). */ @@ -190,6 +201,7 @@ class Tracer extends Utility implements TracerInterface { public constructor(options: TracerOptions = {}) { super(); + this.#setEnvConfig(); this.setOptions(options); this.provider = new ProviderService(); if (this.isTracingEnabled() && this.captureHTTPsRequests) { @@ -275,6 +287,8 @@ class Tracer extends Utility implements TracerInterface { } /** + * @deprecated Use {@link captureAWSv3Client | `captureAWSv3Client()`} instead. + * * Patch all AWS SDK v2 clients and create traces when your application makes calls to AWS services. * * If you want to patch a specific client use {@link captureAWSClient} and if you are using AWS SDK v3 use {@link captureAWSv3Client} instead. @@ -293,16 +307,17 @@ class Tracer extends Utility implements TracerInterface { * } * ``` * - * @deprecated Use {@link captureAWSv3Client} instead. * @param aws - AWS SDK v2 import */ - public captureAWS(aws: T): T { + /* v8 ignore start */ public captureAWS(aws: T): T { if (!this.isTracingEnabled()) return aws; return this.provider.captureAWS(aws); - } + } /* v8 ignore stop */ /** + * @deprecated Use {@link captureAWSv3Client | `captureAWSv3Client()`} instead. + * * Patch a specific AWS SDK v2 client and create traces when your application makes calls to that AWS service. * * If you want to patch all clients use {@link captureAWS} and if you are using AWS SDK v3 use {@link captureAWSv3Client} instead. @@ -321,7 +336,7 @@ class Tracer extends Utility implements TracerInterface { * ... * } * ``` - * @deprecated Use {@link captureAWSv3Client} instead. + * * @param service - AWS SDK v2 client */ /* v8 ignore start */ public captureAWSClient(service: T): T { @@ -579,7 +594,7 @@ class Tracer extends Utility implements TracerInterface { * ``` */ public getRootXrayTraceId(): string | undefined { - return this.envVarsService.getXrayTraceId(); + return getXRayTraceIdFromEnv(); } /** @@ -626,7 +641,7 @@ class Tracer extends Utility implements TracerInterface { public isTraceSampled(): boolean { if (!this.isTracingEnabled()) return false; - return this.envVarsService.getXrayTraceSampled(); + return isRequestXRaySampled(); } /** @@ -731,23 +746,12 @@ class Tracer extends Utility implements TracerInterface { return this.customConfigService; } - /** - * Get for `envVarsService`. - * Used internally during initialization. - */ - private getEnvVarsService(): EnvironmentVariablesService { - return this.envVarsService; - } - /** * Determine if we are running inside an Amplify CLI process. * Used internally during initialization. */ private isAmplifyCli(): boolean { - return ( - this.getEnvVarsService().getAwsExecutionEnv() === - 'AWS_Lambda_amplify-mock' - ); + return this.#envConfig.awsExecutionEnv === 'AWS_Lambda_amplify-mock'; } /** @@ -755,7 +759,7 @@ class Tracer extends Utility implements TracerInterface { * Used internally during initialization. */ private isLambdaExecutionEnv(): boolean { - return this.getEnvVarsService().getAwsExecutionEnv() !== ''; + return this.#envConfig.awsExecutionEnv !== ''; } /** @@ -763,7 +767,7 @@ class Tracer extends Utility implements TracerInterface { * Used internally during initialization. */ private isLambdaSamCli(): boolean { - return this.getEnvVarsService().getSamLocal() !== ''; + return this.#envConfig.samLocal !== ''; } /** @@ -782,10 +786,8 @@ class Tracer extends Utility implements TracerInterface { return; } - const envVarsValue = this.getEnvVarsService().getTracingCaptureError(); - if (envVarsValue.toLowerCase() === 'false') { + if (this.#envConfig.captureError.toLowerCase() === 'false') { this.captureError = false; - return; } } @@ -818,10 +820,8 @@ class Tracer extends Utility implements TracerInterface { return; } - const envVarsValue = this.getEnvVarsService().getCaptureHTTPsRequests(); - if (envVarsValue.toLowerCase() === 'false') { + if (this.#envConfig.captureHTTPsRequests.toLowerCase() === 'false') { this.captureHTTPsRequests = false; - return; } } @@ -842,10 +842,8 @@ class Tracer extends Utility implements TracerInterface { return; } - const envVarsValue = this.getEnvVarsService().getTracingCaptureResponse(); - if (envVarsValue.toLowerCase() === 'false') { + if (this.#envConfig.captureResponse.toLowerCase() === 'false') { this.captureResponse = false; - return; } } @@ -874,7 +872,6 @@ class Tracer extends Utility implements TracerInterface { const { enabled, serviceName, captureHTTPsRequests, customConfigService } = options; - this.envVarsService = environmentVariablesService; this.setCustomConfigService(customConfigService); this.setTracingEnabled(enabled); this.setCaptureResponse(); @@ -908,10 +905,11 @@ class Tracer extends Utility implements TracerInterface { return; } - const envVarsValue = this.getEnvVarsService().getServiceName(); - if (envVarsValue !== undefined && this.isValidServiceName(envVarsValue)) { - this.serviceName = envVarsValue; - + if ( + this.#envConfig.serviceName !== undefined && + this.isValidServiceName(this.#envConfig.serviceName) + ) { + this.serviceName = this.#envConfig.serviceName; return; } this.serviceName = this.defaultServiceName; @@ -941,10 +939,8 @@ class Tracer extends Utility implements TracerInterface { return; } - const envVarsValue = this.getEnvVarsService().getTracingEnabled(); - if (envVarsValue.toLowerCase() === 'false') { + if (this.#envConfig.tracingEnabled.toLowerCase() === 'false') { this.tracingEnabled = false; - return; } @@ -956,6 +952,38 @@ class Tracer extends Utility implements TracerInterface { this.tracingEnabled = false; } } + + /** + * Set environment variables for the tracer. + * This method is called during initialization to ensure environment variables are available. + */ + #setEnvConfig(): void { + this.#envConfig.awsExecutionEnv = getStringFromEnv({ + key: 'AWS_EXECUTION_ENV', + defaultValue: '', + }); + this.#envConfig.samLocal = getStringFromEnv({ + key: 'AWS_SAM_LOCAL', + defaultValue: '', + }); + this.#envConfig.captureError = getStringFromEnv({ + key: 'POWERTOOLS_TRACER_CAPTURE_ERROR', + defaultValue: '', + }); + this.#envConfig.captureHTTPsRequests = getStringFromEnv({ + key: 'POWERTOOLS_TRACER_CAPTURE_HTTPS_REQUESTS', + defaultValue: '', + }); + this.#envConfig.captureResponse = getStringFromEnv({ + key: 'POWERTOOLS_TRACER_CAPTURE_RESPONSE', + defaultValue: '', + }); + this.#envConfig.tracingEnabled = getStringFromEnv({ + key: 'POWERTOOLS_TRACE_ENABLED', + defaultValue: '', + }); + this.#envConfig.serviceName = getServiceName(); + } } export { Tracer }; diff --git a/packages/tracer/src/config/EnvironmentVariablesService.ts b/packages/tracer/src/config/EnvironmentVariablesService.ts deleted file mode 100644 index 4f48eeef2c..0000000000 --- a/packages/tracer/src/config/EnvironmentVariablesService.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { EnvironmentVariablesService as CommonEnvironmentVariablesService } from '@aws-lambda-powertools/commons'; -import type { ConfigServiceInterface } from '../types/ConfigServiceInterface.js'; - -class EnvironmentVariablesService - extends CommonEnvironmentVariablesService - implements ConfigServiceInterface -{ - // Environment variables - private awsExecutionEnv = 'AWS_EXECUTION_ENV'; - private samLocalVariable = 'AWS_SAM_LOCAL'; - private tracerCaptureErrorVariable = 'POWERTOOLS_TRACER_CAPTURE_ERROR'; - private tracerCaptureHTTPsRequestsVariable = - 'POWERTOOLS_TRACER_CAPTURE_HTTPS_REQUESTS'; - private tracerCaptureResponseVariable = 'POWERTOOLS_TRACER_CAPTURE_RESPONSE'; - private tracingEnabledVariable = 'POWERTOOLS_TRACE_ENABLED'; - - /** - * It returns the value of the AWS_EXECUTION_ENV environment variable. - * - * @returns {string} - */ - public getAwsExecutionEnv(): string { - return this.get(this.awsExecutionEnv); - } - - /** - * It returns the value of the POWERTOOLS_TRACER_CAPTURE_HTTPS_REQUESTS environment variable. - * - * @returns {string} - */ - public getCaptureHTTPsRequests(): string { - return this.get(this.tracerCaptureHTTPsRequestsVariable); - } - - /** - * It returns the value of the AWS_SAM_LOCAL environment variable. - * - * @returns {string} - */ - public getSamLocal(): string { - return this.get(this.samLocalVariable); - } - - /** - * It returns the value of the POWERTOOLS_TRACER_CAPTURE_ERROR environment variable. - * - * @returns {string} - */ - public getTracingCaptureError(): string { - return this.get(this.tracerCaptureErrorVariable); - } - - /** - * It returns the value of the POWERTOOLS_TRACER_CAPTURE_RESPONSE environment variable. - * - * @returns {string} - */ - public getTracingCaptureResponse(): string { - return this.get(this.tracerCaptureResponseVariable); - } - - /** - * It returns the value of the POWERTOOLS_TRACE_ENABLED environment variable. - * - * @returns {string} - */ - public getTracingEnabled(): string { - return this.get(this.tracingEnabledVariable); - } -} - -const environmentVariablesService = new EnvironmentVariablesService(); - -export { EnvironmentVariablesService, environmentVariablesService }; diff --git a/packages/tracer/src/provider/ProviderService.ts b/packages/tracer/src/provider/ProviderService.ts index a080a32278..a17331e3f1 100644 --- a/packages/tracer/src/provider/ProviderService.ts +++ b/packages/tracer/src/provider/ProviderService.ts @@ -6,6 +6,7 @@ import type { HttpSubsegment, ProviderServiceInterface, } from '../types/ProviderService.js'; + const { captureAWS, captureAWSClient, @@ -21,12 +22,13 @@ const { setDaemonAddress, setLogger, } = xraySdk; + import { subscribe } from 'node:diagnostics_channel'; import http from 'node:http'; import https from 'node:https'; import { addUserAgentMiddleware } from '@aws-lambda-powertools/commons'; import type { DiagnosticsChannel } from 'undici-types'; -import { environmentVariablesService } from '../config/EnvironmentVariablesService.js'; +import { getXRayTraceIdFromEnv } from '@aws-lambda-powertools/commons/utils/env'; import { findHeaderAndDecode, getRequestURL, @@ -46,18 +48,18 @@ import { */ class ProviderService implements ProviderServiceInterface { /** - * @deprecated + * @deprecated Use {@link captureAWSv3Client} instead. */ - public captureAWS(awssdk: T): T { + /* v8 ignore start */ public captureAWS(awssdk: T): T { return captureAWS(awssdk); - } + } /* v8 ignore stop */ /** - * @deprecated + * @deprecated Use {@link captureAWSv3Client} instead. */ - public captureAWSClient(service: T): T { + /* v8 ignore start */ public captureAWSClient(service: T): T { return captureAWSClient(service); - } + } /* v8 ignore stop */ public captureAWSv3Client(service: T): T { addUserAgentMiddleware(service, 'tracer'); @@ -117,12 +119,12 @@ class ProviderService implements ProviderServiceInterface { */ const onRequestStart = (message: unknown): void => { const { request } = message as DiagnosticsChannel.RequestCreateMessage; + const method = request.method; + if (method === 'CONNECT') return; const parentSubsegment = this.getSegment(); const requestURL = getRequestURL(request); if (parentSubsegment && requestURL) { - const method = request.method; - const subsegment = parentSubsegment.addNewSubsegment( requestURL.hostname ); @@ -132,7 +134,7 @@ class ProviderService implements ProviderServiceInterface { // @ts-expect-error request.addHeader( 'X-Amzn-Trace-Id', - `Root=${environmentVariablesService.getXrayTraceId()};Parent=${subsegment.id};Sampled=${subsegment.notTraced ? '0' : '1'}` + `Root=${getXRayTraceIdFromEnv()};Parent=${subsegment.id};Sampled=${subsegment.notTraced ? '0' : '1'}` ); (subsegment as HttpSubsegment).http = { diff --git a/packages/tracer/src/types/index.ts b/packages/tracer/src/types/index.ts index 62fd8b99b2..da006b36b6 100644 --- a/packages/tracer/src/types/index.ts +++ b/packages/tracer/src/types/index.ts @@ -1,10 +1,10 @@ export type { - TracerOptions, + AnyClass, + AnyClassMethod, CaptureLambdaHandlerOptions, CaptureMethodOptions, HandlerMethodDecorator, - AnyClass, - AnyClassMethod, MethodDecorator, TracerInterface, + TracerOptions, } from './Tracer.js'; diff --git a/packages/tracer/tests/e2e/decorator.test.ts b/packages/tracer/tests/e2e/decorator.test.ts index 260dfae659..2c5b14a6af 100644 --- a/packages/tracer/tests/e2e/decorator.test.ts +++ b/packages/tracer/tests/e2e/decorator.test.ts @@ -2,12 +2,11 @@ import { join } from 'node:path'; import { TestStack } from '@aws-lambda-powertools/testing-utils'; import { TestDynamodbTable } from '@aws-lambda-powertools/testing-utils/resources/dynamodb'; import { TestNodejsFunction } from '@aws-lambda-powertools/testing-utils/resources/lambda'; +import type { EnrichedXRayTraceDocumentParsed } from '@aws-lambda-powertools/testing-utils/types'; import { getTraces } from '@aws-lambda-powertools/testing-utils/utils/xray-traces'; -import type { EnrichedXRayTraceDocumentParsed } from 'packages/testing/lib/cjs/types.js'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; import { invokeAllTestCases } from '../helpers/invokeAllTests.js'; import { - RESOURCE_NAME_PREFIX, EXPECTED_ANNOTATION_KEY as expectedCustomAnnotationKey, EXPECTED_ANNOTATION_VALUE as expectedCustomAnnotationValue, EXPECTED_ERROR_MESSAGE as expectedCustomErrorMessage, @@ -15,6 +14,7 @@ import { EXPECTED_METADATA_VALUE as expectedCustomMetadataValue, EXPECTED_RESPONSE_VALUE as expectedCustomResponseValue, EXPECTED_SUBSEGMENT_NAME as expectedCustomSubSegmentName, + RESOURCE_NAME_PREFIX, } from './constants.js'; describe('Tracer E2E tests, decorator instrumentation', () => { diff --git a/packages/tracer/tests/e2e/manual.test.ts b/packages/tracer/tests/e2e/manual.test.ts index 52dbab375e..c553a7e181 100644 --- a/packages/tracer/tests/e2e/manual.test.ts +++ b/packages/tracer/tests/e2e/manual.test.ts @@ -2,18 +2,18 @@ import { join } from 'node:path'; import { TestStack } from '@aws-lambda-powertools/testing-utils'; import { TestDynamodbTable } from '@aws-lambda-powertools/testing-utils/resources/dynamodb'; import { TestNodejsFunction } from '@aws-lambda-powertools/testing-utils/resources/lambda'; +import type { EnrichedXRayTraceDocumentParsed } from '@aws-lambda-powertools/testing-utils/types'; import { getTraces } from '@aws-lambda-powertools/testing-utils/utils/xray-traces'; -import type { EnrichedXRayTraceDocumentParsed } from 'packages/testing/lib/cjs/types.js'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; import { invokeAllTestCases } from '../helpers/invokeAllTests.js'; import { - RESOURCE_NAME_PREFIX, EXPECTED_ANNOTATION_KEY as expectedCustomAnnotationKey, EXPECTED_ANNOTATION_VALUE as expectedCustomAnnotationValue, EXPECTED_ERROR_MESSAGE as expectedCustomErrorMessage, EXPECTED_METADATA_KEY as expectedCustomMetadataKey, EXPECTED_METADATA_VALUE as expectedCustomMetadataValue, EXPECTED_RESPONSE_VALUE as expectedCustomResponseValue, + RESOURCE_NAME_PREFIX, } from './constants.js'; describe('Tracer E2E tests, manual instantiation', () => { diff --git a/packages/tracer/tests/e2e/middy.test.ts b/packages/tracer/tests/e2e/middy.test.ts index 361c350166..49f152d1eb 100644 --- a/packages/tracer/tests/e2e/middy.test.ts +++ b/packages/tracer/tests/e2e/middy.test.ts @@ -2,17 +2,17 @@ import { join } from 'node:path'; import { TestStack } from '@aws-lambda-powertools/testing-utils'; import { TestDynamodbTable } from '@aws-lambda-powertools/testing-utils/resources/dynamodb'; import { TestNodejsFunction } from '@aws-lambda-powertools/testing-utils/resources/lambda'; +import type { EnrichedXRayTraceDocumentParsed } from '@aws-lambda-powertools/testing-utils/types'; import { getTraces } from '@aws-lambda-powertools/testing-utils/utils/xray-traces'; -import type { EnrichedXRayTraceDocumentParsed } from 'packages/testing/lib/cjs/types.js'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; import { invokeAllTestCases } from '../helpers/invokeAllTests.js'; import { - RESOURCE_NAME_PREFIX, EXPECTED_ANNOTATION_KEY as expectedCustomAnnotationKey, EXPECTED_ANNOTATION_VALUE as expectedCustomAnnotationValue, EXPECTED_ERROR_MESSAGE as expectedCustomErrorMessage, EXPECTED_METADATA_KEY as expectedCustomMetadataKey, EXPECTED_METADATA_VALUE as expectedCustomMetadataValue, + RESOURCE_NAME_PREFIX, } from './constants.js'; describe('Tracer E2E tests, middy instrumentation', () => { diff --git a/packages/tracer/tests/unit/EnvironmentVariablesService.test.ts b/packages/tracer/tests/unit/EnvironmentVariablesService.test.ts deleted file mode 100644 index 1a6b137465..0000000000 --- a/packages/tracer/tests/unit/EnvironmentVariablesService.test.ts +++ /dev/null @@ -1,99 +0,0 @@ -import { afterAll, beforeEach, describe, expect, it, vi } from 'vitest'; -import { EnvironmentVariablesService } from '../../src/config/EnvironmentVariablesService.js'; - -describe('Class: EnvironmentVariablesService', () => { - const ENVIRONMENT_VARIABLES = process.env; - - beforeEach(() => { - vi.resetModules(); - process.env = { ...ENVIRONMENT_VARIABLES }; - }); - - afterAll(() => { - process.env = ENVIRONMENT_VARIABLES; - }); - - describe('Method: getTracingEnabled', () => { - it('returns the value of the environment variable POWERTOOLS_TRACE_ENABLED', () => { - // Prepare - process.env.POWERTOOLS_TRACE_ENABLED = 'false'; - const service = new EnvironmentVariablesService(); - - // Act - const value = service.getTracingEnabled(); - - // Assess - expect(value).toEqual('false'); - }); - }); - - describe('Method: getTracingCaptureResponse', () => { - it('returns the value of the environment variable POWERTOOLS_TRACER_CAPTURE_RESPONSE', () => { - // Prepare - process.env.POWERTOOLS_TRACER_CAPTURE_RESPONSE = 'false'; - const service = new EnvironmentVariablesService(); - - // Act - const value = service.getTracingCaptureResponse(); - - // Assess - expect(value).toEqual('false'); - }); - }); - - describe('Method: getTracingCaptureError', () => { - it('returns the value of the environment variable POWERTOOLS_TRACER_CAPTURE_ERROR', () => { - // Prepare - process.env.POWERTOOLS_TRACER_CAPTURE_ERROR = 'false'; - const service = new EnvironmentVariablesService(); - - // Act - const value = service.getTracingCaptureError(); - - // Assess - expect(value).toEqual('false'); - }); - }); - - describe('Method: getCaptureHTTPsRequests', () => { - it('returns the value of the environment variable POWERTOOLS_TRACER_CAPTURE_HTTPS_REQUESTS', () => { - // Prepare - process.env.POWERTOOLS_TRACER_CAPTURE_HTTPS_REQUESTS = 'false'; - const service = new EnvironmentVariablesService(); - - // Act - const value = service.getCaptureHTTPsRequests(); - - // Assess - expect(value).toEqual('false'); - }); - }); - - describe('Method: getSamLocal', () => { - it('returns the value of the environment variable AWS_SAM_LOCAL', () => { - // Prepare - process.env.AWS_SAM_LOCAL = 'true'; - const service = new EnvironmentVariablesService(); - - // Act - const value = service.getSamLocal(); - - // Assess - expect(value).toEqual('true'); - }); - }); - - describe('Method: getAwsExecutionEnv', () => { - it('returns the value of the environment variable AWS_EXECUTION_ENV', () => { - // Prepare - process.env.AWS_EXECUTION_ENV = 'nodejs20.x'; - const service = new EnvironmentVariablesService(); - - // Act - const value = service.getAwsExecutionEnv(); - - // Assess - expect(value).toEqual('nodejs20.x'); - }); - }); -}); diff --git a/packages/tracer/tests/unit/ProviderService.test.ts b/packages/tracer/tests/unit/ProviderService.test.ts index 04134bde59..d10ddd4eb1 100644 --- a/packages/tracer/tests/unit/ProviderService.test.ts +++ b/packages/tracer/tests/unit/ProviderService.test.ts @@ -47,34 +47,6 @@ describe('Class: ProviderService', () => { vi.clearAllMocks(); }); - describe('Method: captureAWS', () => { - it('calls the correct underlying function with proper arguments', () => { - // Prepare - const provider: ProviderService = new ProviderService(); - - // Act - provider.captureAWS({}); - - // Assess - expect(mocks.captureAWS).toHaveBeenCalledTimes(1); - expect(mocks.captureAWS).toHaveBeenCalledWith({}); - }); - }); - - describe('Method: captureAWSClient', () => { - it('calls the correct underlying function with proper arguments', () => { - // Prepare - const provider: ProviderService = new ProviderService(); - - // Act - provider.captureAWSClient({}); - - // Assess - expect(mocks.captureAWSClient).toHaveBeenCalledTimes(1); - expect(mocks.captureAWSClient).toHaveBeenCalledWith({}); - }); - }); - describe('Method: captureAWSv3Client', () => { it('calls the correct underlying function with proper arguments', () => { // Prepare @@ -657,4 +629,22 @@ describe('Class: ProviderService', () => { ) ); }); + + it('skips requests with CONNECT method', () => { + // Prepare + const provider: ProviderService = new ProviderService(); + const segment = new Subsegment('## dummySegment'); + vi.spyOn(provider, 'getSegment').mockImplementation(() => segment); + vi.spyOn(segment, 'addNewSubsegment'); + + // Act + provider.instrumentFetch(); + mockFetch({ + origin: 'https://aws.amazon.com', + method: 'CONNECT', + }); + + // Assess + expect(segment.addNewSubsegment).toHaveBeenCalledTimes(0); + }); }); diff --git a/packages/tracer/tests/unit/Tracer.test.ts b/packages/tracer/tests/unit/Tracer.test.ts index c1ebd7c306..042cead86c 100644 --- a/packages/tracer/tests/unit/Tracer.test.ts +++ b/packages/tracer/tests/unit/Tracer.test.ts @@ -7,10 +7,10 @@ import { setContextMissingStrategy, } from 'aws-xray-sdk-core'; import { afterAll, beforeEach, describe, expect, it, vi } from 'vitest'; -import type { ConfigServiceInterface } from '../../src/types/ConfigServiceInterface.js'; -import type { ProviderServiceInterface } from '../../src/types/ProviderService.js'; import { Tracer } from './../../src/index.js'; +import type { ConfigServiceInterface } from '../../src/types/ConfigServiceInterface.js'; import type { CaptureLambdaHandlerOptions } from './../../src/types/index.js'; +import type { ProviderServiceInterface } from '../../src/types/ProviderService.js'; const createCaptureAsyncFuncMock = ( provider: ProviderServiceInterface, @@ -1028,7 +1028,7 @@ describe('Class: Tracer', () => { ); setContextMissingStrategy(() => null); vi.spyOn(tracer.provider, 'captureAsyncFunc').mockImplementation( - async (methodName, callBackFn) => { + async (_methodName, callBackFn) => { await callBackFn(handlerSubsegment); } ); @@ -1419,7 +1419,7 @@ describe('Class: Tracer', () => { ); setContextMissingStrategy(() => null); vi.spyOn(tracer.provider, 'captureAsyncFunc').mockImplementation( - async (methodName, callBackFn) => { + async (_methodName, callBackFn) => { await callBackFn(handlerSubsegment); } ); @@ -1456,41 +1456,8 @@ describe('Class: Tracer', () => { new Error('dummy error') ); }); - }); - describe('Method: captureAWS', () => { - it('does nothing when called while tracing is disabled', () => { - // Prepare - const tracer: Tracer = new Tracer({ enabled: false }); - const captureAWSSpy = vi - .spyOn(tracer.provider, 'captureAWS') - .mockImplementation(() => null); - - // Act - tracer.captureAWS({}); - - // Assess - expect(captureAWSSpy).toBeCalledTimes(0); - }); - - it('returns the decorated object that was passed to it', () => { - // Prepare - const tracer: Tracer = new Tracer(); - const captureAWSSpy = vi - .spyOn(tracer.provider, 'captureAWS') - .mockImplementation(() => null); - - // Act - tracer.captureAWS({}); - - // Assess - expect(captureAWSSpy).toBeCalledTimes(1); - expect(captureAWSSpy).toBeCalledWith({}); - }); - }); - - describe('Method: captureAWSv3Client', () => { - it('does nothing when tracing is disabled', () => { + it('skips tracing AWS SDK clients when tracing is disabled', () => { // Prepare const tracer: Tracer = new Tracer({ enabled: false }); const captureAWSv3ClientSpy = vi @@ -1504,7 +1471,7 @@ describe('Class: Tracer', () => { expect(captureAWSv3ClientSpy).toBeCalledTimes(0); }); - it('returns the decorated object that was passed to it', () => { + it('returns the instrumented AWS SDK client when called', () => { // Prepare const tracer: Tracer = new Tracer(); const captureAWSv3ClientSpy = vi diff --git a/packages/tracer/tests/unit/middy.test.ts b/packages/tracer/tests/unit/middy.test.ts index eebf3cde48..bb529a3af7 100644 --- a/packages/tracer/tests/unit/middy.test.ts +++ b/packages/tracer/tests/unit/middy.test.ts @@ -8,8 +8,8 @@ import { setContextMissingStrategy, } from 'aws-xray-sdk-core'; import { afterAll, beforeEach, describe, expect, it, vi } from 'vitest'; -import { captureLambdaHandler } from '../../src/middleware/middy.js'; import { Tracer } from './../../src/index.js'; +import { captureLambdaHandler } from '../../src/middleware/middy.js'; describe('Middy middleware', () => { const ENVIRONMENT_VARIABLES = process.env; diff --git a/packages/tracer/tsconfig.cjs.json b/packages/tracer/tsconfig.cjs.json index f81fe3fbd1..dfd6c269b2 100644 --- a/packages/tracer/tsconfig.cjs.json +++ b/packages/tracer/tsconfig.cjs.json @@ -7,7 +7,5 @@ "rootDir": "./src", "tsBuildInfoFile": ".tsbuildinfo/cjs.json" }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/tracer/tsconfig.json b/packages/tracer/tsconfig.json index 204ff253d4..e1c2fb1dc4 100644 --- a/packages/tracer/tsconfig.json +++ b/packages/tracer/tsconfig.json @@ -8,7 +8,5 @@ "composite": true, "declaration": true }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/tracer/typedoc.json b/packages/tracer/typedoc.json index bf98d8924a..c1513a9208 100644 --- a/packages/tracer/typedoc.json +++ b/packages/tracer/typedoc.json @@ -1,12 +1,10 @@ { - "extends": [ - "../../typedoc.base.json" - ], + "extends": ["../../typedoc.base.json"], "entryPoints": [ "./src/index.ts", "./src/types/index.ts", "./src/middleware/middy.ts", - "./src/provider/ProviderService.ts", + "./src/provider/ProviderService.ts" ], "readme": "README.md" -} \ No newline at end of file +} diff --git a/packages/validation/CHANGELOG.md b/packages/validation/CHANGELOG.md index fa419bb53b..e86f883ebb 100644 --- a/packages/validation/CHANGELOG.md +++ b/packages/validation/CHANGELOG.md @@ -1,85 +1,49 @@ # Change Log -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.24.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.23.0...v2.24.0) (2025-07-15) + +**Note:** Version bump only for this package # [2.23.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.22.0...v2.23.0) (2025-07-02) **Note:** Version bump only for package @aws-lambda-powertools/validation - - - - # [2.22.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.21.0...v2.22.0) (2025-06-20) **Note:** Version bump only for package @aws-lambda-powertools/validation - - - - # [2.21.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.20.0...v2.21.0) (2025-06-03) **Note:** Version bump only for package @aws-lambda-powertools/validation - - - - # [2.20.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.1...v2.20.0) (2025-05-20) **Note:** Version bump only for package @aws-lambda-powertools/validation - - - - ## [2.19.1](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.19.0...v2.19.1) (2025-05-05) **Note:** Version bump only for package @aws-lambda-powertools/validation - - - - # [2.19.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.18.0...v2.19.0) (2025-04-24) **Note:** Version bump only for package @aws-lambda-powertools/validation - - - - # [2.18.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.17.0...v2.18.0) (2025-04-07) **Note:** Version bump only for package @aws-lambda-powertools/validation - - - - # [2.17.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.16.0...v2.17.0) (2025-03-25) **Note:** Version bump only for package @aws-lambda-powertools/validation - - - - # [2.16.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.15.0...v2.16.0) (2025-03-07) - ### Features * **validation:** add [@validator](https://github.com/validator) decorator for JSON Schema validation ([#3679](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3679)) ([ae6b7cf](https://github.com/aws-powertools/powertools-lambda-typescript/commit/ae6b7cf9dae3e1d233b9c51ca1e1dc04b26efa9a)) * **validation:** Add Middy.js middleware for JSON Schema validation ([#3694](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3694)) ([443202b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/443202bad2672ff26cc8237f417b8bf14bbd02d9)) * **validation:** implement validate function ([#3662](https://github.com/aws-powertools/powertools-lambda-typescript/issues/3662)) ([f55127b](https://github.com/aws-powertools/powertools-lambda-typescript/commit/f55127b7f894b5c673e739da06cbaabe12d0d1ca)) - - - - # [2.15.0](https://github.com/aws-powertools/powertools-lambda-typescript/compare/v2.14.0...v2.15.0) (2025-02-25) **Note:** Version bump only for package @aws-lambda-powertools/validation diff --git a/packages/validation/package.json b/packages/validation/package.json index c3c606b050..37e3b954c1 100644 --- a/packages/validation/package.json +++ b/packages/validation/package.json @@ -1,6 +1,6 @@ { "name": "@aws-lambda-powertools/validation", - "version": "2.23.0", + "version": "2.24.0", "description": "An utility to validate events and responses using JSON Schemas", "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.23.0", - "@aws-lambda-powertools/jmespath": "2.23.0", + "@aws-lambda-powertools/commons": "2.24.0", + "@aws-lambda-powertools/jmespath": "2.24.0", "ajv": "^8.17.1" }, "keywords": [ diff --git a/packages/validation/src/types.ts b/packages/validation/src/types.ts index c5d63d89cc..abe5c7ff97 100644 --- a/packages/validation/src/types.ts +++ b/packages/validation/src/types.ts @@ -1,9 +1,5 @@ import type { Ajv, AnySchema, Format } from 'ajv'; -type Prettify = { - [K in keyof T]: T[K]; -} & {}; - /** * Options to customize the JSON Schema validation. * diff --git a/packages/validation/tests/unit/decorator.test.ts b/packages/validation/tests/unit/decorator.test.ts index b2b6df0562..28e6cd27fd 100644 --- a/packages/validation/tests/unit/decorator.test.ts +++ b/packages/validation/tests/unit/decorator.test.ts @@ -114,7 +114,7 @@ describe('Decorator: validator', () => { // Prepare class TestClassOutbound { @validator({ outboundSchema }) - async process(input: { text: string }): Promise<{ result: number }> { + async process(_input: { text: string }): Promise<{ result: number }> { return { result: 42 }; } } diff --git a/packages/validation/tsconfig.cjs.json b/packages/validation/tsconfig.cjs.json index 7d570c8dbe..a8fadd417f 100644 --- a/packages/validation/tsconfig.cjs.json +++ b/packages/validation/tsconfig.cjs.json @@ -7,7 +7,5 @@ "rootDir": "./src", "tsBuildInfoFile": ".tsbuildinfo/cjs.json" }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/validation/tsconfig.json b/packages/validation/tsconfig.json index 204ff253d4..e1c2fb1dc4 100644 --- a/packages/validation/tsconfig.json +++ b/packages/validation/tsconfig.json @@ -8,7 +8,5 @@ "composite": true, "declaration": true }, - "include": [ - "./src/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"] +} diff --git a/packages/validation/typedoc.json b/packages/validation/typedoc.json index 3032e9d15e..0ce66a9f21 100644 --- a/packages/validation/typedoc.json +++ b/packages/validation/typedoc.json @@ -1,13 +1,11 @@ { - "extends": [ - "../../typedoc.base.json" - ], + "extends": ["../../typedoc.base.json"], "entryPoints": [ "./src/types.ts", "./src/validate.ts", "./src/middleware.ts", "./src/decorator.ts", - "./src/errors.ts", + "./src/errors.ts" ], "readme": "README.md" -} \ No newline at end of file +} diff --git a/tsconfig.cjs.json b/tsconfig.cjs.json index 4ecd072a6e..aea77723c0 100644 --- a/tsconfig.cjs.json +++ b/tsconfig.cjs.json @@ -2,6 +2,6 @@ "extends": "./tsconfig.json", "compilerOptions": { "module": "commonjs", - "moduleResolution": "node", + "moduleResolution": "node" } -} \ No newline at end of file +} diff --git a/tsconfig.json b/tsconfig.json index 1ad4a97d20..0f09959192 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -16,7 +16,7 @@ "forceConsistentCasingInFileNames": true, "strict": true, "skipLibCheck": true, - "pretty": true, // Enable pretty formatting for output messages. + "pretty": true // Enable pretty formatting for output messages. }, "files": [], "references": [ @@ -54,4 +54,4 @@ "path": "./packages/validation" } ] -} \ No newline at end of file +} diff --git a/typedoc.base.json b/typedoc.base.json index 6ee9d0352c..e73f29c266 100644 --- a/typedoc.base.json +++ b/typedoc.base.json @@ -8,4 +8,4 @@ "**/*.json", "examples/snippets" ] -} \ No newline at end of file +} diff --git a/typedoc.json b/typedoc.json index 850a326423..57017cc3fb 100644 --- a/typedoc.json +++ b/typedoc.json @@ -1,7 +1,5 @@ { - "entryPoints": [ - "packages/*" - ], + "entryPoints": ["packages/*"], "entryPointStrategy": "packages", "name": "Powertools for AWS Lambda (Typescript) API Reference", "readme": "README.md", @@ -23,4 +21,4 @@ "inherited": true, "external": true } -} \ No newline at end of file +}