From bf50c29676879e2fe3acee211ad3e0869bc18c25 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Wed, 29 May 2024 19:46:17 +0200 Subject: [PATCH 001/396] ci: use updatecli with GitHub secrets (#4044) --- .../updatecli.d/update-json-specs.yml | 11 +++++----- .ci/updatecli/updatecli.d/update-specs.yml | 11 +++++----- .github/workflows/updatecli.yml | 21 +++++++++---------- 3 files changed, 20 insertions(+), 23 deletions(-) diff --git a/.ci/updatecli/updatecli.d/update-json-specs.yml b/.ci/updatecli/updatecli.d/update-json-specs.yml index e05aaecdb1..ae98167759 100644 --- a/.ci/updatecli/updatecli.d/update-json-specs.yml +++ b/.ci/updatecli/updatecli.d/update-json-specs.yml @@ -5,22 +5,21 @@ scms: default: kind: github spec: - user: '{{ requiredEnv "GIT_USER" }}' - email: '{{ requiredEnv "GIT_EMAIL" }}' + user: '{{ requiredEnv "GITHUB_ACTOR" }}' owner: "{{ .github.owner }}" repository: "{{ .github.repository }}" token: '{{ requiredEnv "GITHUB_TOKEN" }}' - username: '{{ requiredEnv "GIT_USER" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' branch: "{{ .github.branch }}" + commitusingapi: true apm: kind: github spec: - user: '{{ requiredEnv "GIT_USER" }}' - email: '{{ requiredEnv "GIT_EMAIL" }}' + user: '{{ requiredEnv "GITHUB_ACTOR" }}' owner: "{{ .github.owner }}" repository: "{{ .github.apm_repository }}" token: '{{ requiredEnv "GITHUB_TOKEN" }}' - username: '{{ requiredEnv "GIT_USER" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' branch: "{{ .github.branch }}" sources: diff --git a/.ci/updatecli/updatecli.d/update-specs.yml b/.ci/updatecli/updatecli.d/update-specs.yml index 554140da2b..e9bbaf945e 100644 --- a/.ci/updatecli/updatecli.d/update-specs.yml +++ b/.ci/updatecli/updatecli.d/update-specs.yml @@ -5,23 +5,22 @@ scms: default: kind: github spec: - user: '{{ requiredEnv "GIT_USER" }}' - email: '{{ requiredEnv "GIT_EMAIL" }}' + user: '{{ requiredEnv "GITHUB_ACTOR" }}' owner: "{{ .github.owner }}" repository: "{{ .github.repository }}" token: '{{ requiredEnv "GITHUB_TOKEN" }}' - username: '{{ requiredEnv "GIT_USER" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' branch: "{{ .github.branch }}" + commitusingapi: true apm-data: kind: github spec: - user: '{{ requiredEnv "GIT_USER" }}' - email: '{{ requiredEnv "GIT_EMAIL" }}' + user: '{{ requiredEnv "GITHUB_ACTOR" }}' owner: "{{ .github.owner }}" repository: "{{ .github.apm_data_repository }}" token: '{{ requiredEnv "GITHUB_TOKEN" }}' - username: '{{ requiredEnv "GIT_USER" }}' + username: '{{ requiredEnv "GITHUB_ACTOR" }}' branch: "{{ .github.branch }}" sources: diff --git a/.github/workflows/updatecli.yml b/.github/workflows/updatecli.yml index 090d3f8b1d..4c489bcbb5 100644 --- a/.github/workflows/updatecli.yml +++ b/.github/workflows/updatecli.yml @@ -13,17 +13,16 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: elastic/apm-pipeline-library/.github/actions/updatecli@current + + - uses: elastic/oblt-actions/updatecli/run@v1 with: - vaultUrl: ${{ secrets.VAULT_ADDR }} - vaultRoleId: ${{ secrets.VAULT_ROLE_ID }} - vaultSecretId: ${{ secrets.VAULT_SECRET_ID }} - pipeline: .ci/updatecli/updatecli.d - values: .ci/updatecli/values.yml + command: "--experimental apply --config .ci/updatecli/updatecli.d --values .ci/updatecli/values.yml" + env: + GITHUB_TOKEN: ${{ secrets.UPDATECLI_GH_TOKEN }} + - if: failure() - uses: elastic/apm-pipeline-library/.github/actions/notify-build-status@current + uses: elastic/oblt-actions/slack/send@v1 with: - vaultUrl: ${{ secrets.VAULT_ADDR }} - vaultRoleId: ${{ secrets.VAULT_ROLE_ID }} - vaultSecretId: ${{ secrets.VAULT_SECRET_ID }} - slackChannel: "#apm-agent-node" + bot-token: ${{ secrets.SLACK_BOT_TOKEN }} + channel-id: "#apm-agent-node" + message: ":traffic_cone: updatecli failed for `${{ github.repository }}@${{ github.ref_name }}`, @robots-ci please look what's going on " From 3ae01d2f1732ed239bb6870af3da009294110dde Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Thu, 30 May 2024 21:40:00 +0200 Subject: [PATCH 002/396] github: use docker github secrets (#4047) --- .github/workflows/release.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ac315583d0..e45253e6c2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -27,13 +27,12 @@ jobs: with: node-version: 'v16.20.2' - - uses: elastic/apm-pipeline-library/.github/actions/docker-login@current + - name: Log in to the Elastic Container registry + uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 with: - registry: docker.elastic.co - secret: secret/observability-team/ci/docker-registry/prod - url: ${{ secrets.VAULT_ADDR }} - roleId: ${{ secrets.VAULT_ROLE_ID }} - secretId: ${{ secrets.VAULT_SECRET_ID }} + registry: ${{ secrets.ELASTIC_DOCKER_REGISTRY }} + username: ${{ secrets.ELASTIC_DOCKER_USERNAME }} + password: ${{ secrets.ELASTIC_DOCKER_PASSWORD }} - run: make -C .ci env From ec2f58ea9e31fc586a8478145f4a7b13f39f07b7 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Fri, 31 May 2024 09:16:57 -0700 Subject: [PATCH 003/396] fix: patch @smithy/smithy-client@3 for release @aws-sdk/client-* releases (#4036) Recently @aws-sdk/client-* releases started using v3 of smithy/smithy-client. This updates our instr to allow patching v3. --- CHANGELOG.asciidoc | 5 +++++ lib/instrumentation/modules/@smithy/smithy-client.js | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index fde29a4ea2..b6acc77975 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -45,6 +45,11 @@ See the <> guide. [float] ===== Bug fixes +* Fix instrumentation for recent `@aws-sdk/client-*` releases that use + `@smithy/smithy-client` v3. (For example `@aws-sdk/client-s3@3.575.0` released + 2024-05-13 updated to smithy-client v3.) Before this change the APM agent had + been limiting patching of `@smithy/smithy-client` to `>=1 <3`. + * Mark the published AWS Lambda layers as supporting the "nodejs20.x" Lambda Runtime (`--compatible-runtimes`). The "nodejs20.x" runtime was released by AWS on 2023-11-15. ({issues}4033[#4033]) diff --git a/lib/instrumentation/modules/@smithy/smithy-client.js b/lib/instrumentation/modules/@smithy/smithy-client.js index e54b868600..e20eb767c6 100644 --- a/lib/instrumentation/modules/@smithy/smithy-client.js +++ b/lib/instrumentation/modules/@smithy/smithy-client.js @@ -107,10 +107,10 @@ module.exports = function (mod, agent, { name, version, enabled }) { if (!enabled) return mod; // As of `@aws-sdk/*@3.363.0` the underlying smithy-client is under the - // `@smithy/` npm org and is 1.x. + // `@smithy/` npm org. if ( name === '@smithy/smithy-client' && - !semver.satisfies(version, '>=1 <3') + !semver.satisfies(version, '>=1 <4') ) { agent.logger.debug( 'cannot instrument @aws-sdk/client-*: @smithy/smithy-client version %s not supported', From b6ab0f3592976b6e0e9b7ad8888b3820a7e3eed2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 15:39:36 +0200 Subject: [PATCH 004/396] chore(deps-dev): bump mongodb from 6.6.2 to 6.7.0 (#4051) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index ab1853b7e3..d567e7cbe2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13528,9 +13528,9 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "node_modules/mongodb": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.6.2.tgz", - "integrity": "sha512-ZF9Ugo2JCG/GfR7DEb4ypfyJJyiKbg5qBYKRintebj8+DNS33CyGMkWbrS9lara+u+h+yEOGSRiLhFO/g1s1aw==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.7.0.tgz", + "integrity": "sha512-TMKyHdtMcO0fYBNORiYdmM25ijsHs+Njs963r4Tro4OQZzqYigAzYQouwWRg4OIaiLRUEGUh/1UAcH5lxdSLIA==", "dev": true, "dependencies": { "@mongodb-js/saslprep": "^1.1.5", @@ -28700,9 +28700,9 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "mongodb": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.6.2.tgz", - "integrity": "sha512-ZF9Ugo2JCG/GfR7DEb4ypfyJJyiKbg5qBYKRintebj8+DNS33CyGMkWbrS9lara+u+h+yEOGSRiLhFO/g1s1aw==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.7.0.tgz", + "integrity": "sha512-TMKyHdtMcO0fYBNORiYdmM25ijsHs+Njs963r4Tro4OQZzqYigAzYQouwWRg4OIaiLRUEGUh/1UAcH5lxdSLIA==", "dev": true, "requires": { "@mongodb-js/saslprep": "^1.1.5", From d486e828ad279b9b83395aa3a8fd142405b3348d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 15:40:26 +0200 Subject: [PATCH 005/396] chore(deps-dev): bump @types/node from 20.12.2 to 20.14.0 (#4050) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index d567e7cbe2..a66fb385ea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6584,9 +6584,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.12.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.2.tgz", - "integrity": "sha512-zQ0NYO87hyN6Xrclcqp7f8ZbXNbRfoGWNcMvHTPQp9UUrwI0mI7XBz+cu7/W6/VClYo2g63B0cjull/srU7LgQ==", + "version": "20.14.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.0.tgz", + "integrity": "sha512-5cHBxFGJx6L4s56Bubp4fglrEpmyJypsqI6RgzMfBHWUJQGWAAi8cWcgetEbZXHYXo9C2Fa4EEds/uSyS4cxmA==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -23454,9 +23454,9 @@ "dev": true }, "@types/node": { - "version": "20.12.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.2.tgz", - "integrity": "sha512-zQ0NYO87hyN6Xrclcqp7f8ZbXNbRfoGWNcMvHTPQp9UUrwI0mI7XBz+cu7/W6/VClYo2g63B0cjull/srU7LgQ==", + "version": "20.14.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.0.tgz", + "integrity": "sha512-5cHBxFGJx6L4s56Bubp4fglrEpmyJypsqI6RgzMfBHWUJQGWAAi8cWcgetEbZXHYXo9C2Fa4EEds/uSyS4cxmA==", "dev": true, "requires": { "undici-types": "~5.26.4" From 1ebbea08b9d4bc2c4a6b570d4df182d66176f368 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 15:40:59 +0200 Subject: [PATCH 006/396] chore(deps-dev): bump mysql2 from 3.9.8 to 3.10.0 (#4052) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index a66fb385ea..2a99ea482f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13690,9 +13690,9 @@ } }, "node_modules/mysql2": { - "version": "3.9.8", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.8.tgz", - "integrity": "sha512-+5JKNjPuks1FNMoy9TYpl77f+5frbTklz7eb3XDwbpsERRLEeXiW2PDEkakYF50UuKU2qwfGnyXpKYvukv8mGA==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.0.tgz", + "integrity": "sha512-qx0mfWYt1DpTPkw8mAcHW/OwqqyNqBLBHvY5IjN8+icIYTjt6znrgYJ+gxqNNRpVknb5Wc/gcCM4XjbCR0j5tw==", "dev": true, "dependencies": { "denque": "^2.1.0", @@ -28816,9 +28816,9 @@ } }, "mysql2": { - "version": "3.9.8", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.8.tgz", - "integrity": "sha512-+5JKNjPuks1FNMoy9TYpl77f+5frbTklz7eb3XDwbpsERRLEeXiW2PDEkakYF50UuKU2qwfGnyXpKYvukv8mGA==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.0.tgz", + "integrity": "sha512-qx0mfWYt1DpTPkw8mAcHW/OwqqyNqBLBHvY5IjN8+icIYTjt6znrgYJ+gxqNNRpVknb5Wc/gcCM4XjbCR0j5tw==", "dev": true, "requires": { "denque": "^2.1.0", From bf8e783991402f640842430a46c9a2ea6f978bfc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 10:15:32 -0700 Subject: [PATCH 007/396] chore(deps): bump docker/login-action in the github-actions group (#4048) --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e45253e6c2..c09a2211f2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -28,7 +28,7 @@ jobs: node-version: 'v16.20.2' - name: Log in to the Elastic Container registry - uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 + uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446 # v3.2.0 with: registry: ${{ secrets.ELASTIC_DOCKER_REGISTRY }} username: ${{ secrets.ELASTIC_DOCKER_USERNAME }} From b53e45ddbe51c7125d73c9792941345d832f9bea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 20:11:03 +0200 Subject: [PATCH 008/396] chore(deps-dev): bump undici from 6.18.1 to 6.18.2 (#4053) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2a99ea482f..3d90c3e23e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17620,9 +17620,9 @@ } }, "node_modules/undici": { - "version": "6.18.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.18.1.tgz", - "integrity": "sha512-/0BWqR8rJNRysS5lqVmfc7eeOErcOP4tZpATVjJOojjHZ71gSYVAtFhEmadcIjwMIUehh5NFyKGsXCnXIajtbA==", + "version": "6.18.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.18.2.tgz", + "integrity": "sha512-o/MQLTwRm9IVhOqhZ0NQ9oXax1ygPjw6Vs+Vq/4QRjbOAC3B1GCHy7TYxxbExKlb7bzDRzt9vBWU6BDz0RFfYg==", "dev": true, "engines": { "node": ">=18.17" @@ -31873,9 +31873,9 @@ "dev": true }, "undici": { - "version": "6.18.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.18.1.tgz", - "integrity": "sha512-/0BWqR8rJNRysS5lqVmfc7eeOErcOP4tZpATVjJOojjHZ71gSYVAtFhEmadcIjwMIUehh5NFyKGsXCnXIajtbA==", + "version": "6.18.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.18.2.tgz", + "integrity": "sha512-o/MQLTwRm9IVhOqhZ0NQ9oXax1ygPjw6Vs+Vq/4QRjbOAC3B1GCHy7TYxxbExKlb7bzDRzt9vBWU6BDz0RFfYg==", "dev": true }, "undici-types": { From 51b5441746808c88d35be876c19287144ba57ceb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 20:14:17 +0200 Subject: [PATCH 009/396] chore(deps-dev): bump prettier from 3.2.5 to 3.3.0 (#4055) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3d90c3e23e..30f22696a8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15049,9 +15049,9 @@ } }, "node_modules/prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.0.tgz", + "integrity": "sha512-J9odKxERhCQ10OC2yb93583f6UnYutOeiV5i0zEDS7UGTdUt0u+y8erxl3lBKvwo/JHyyoEdXjwp4dke9oyZ/g==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -29849,9 +29849,9 @@ "dev": true }, "prettier": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.0.tgz", + "integrity": "sha512-J9odKxERhCQ10OC2yb93583f6UnYutOeiV5i0zEDS7UGTdUt0u+y8erxl3lBKvwo/JHyyoEdXjwp4dke9oyZ/g==", "dev": true }, "prettier-linter-helpers": { From 829f3e4a198dca06bbb6df4d94b3f20f670facec Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Tue, 4 Jun 2024 19:39:40 +0200 Subject: [PATCH 010/396] github-action: run buildkite action with GH secrets (#4056) --- .github/workflows/microbenchmark.yml | 31 +++++++--------------------- 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/.github/workflows/microbenchmark.yml b/.github/workflows/microbenchmark.yml index 66f33a3074..d8858b1bd0 100644 --- a/.github/workflows/microbenchmark.yml +++ b/.github/workflows/microbenchmark.yml @@ -18,33 +18,16 @@ permissions: jobs: microbenchmark: runs-on: ubuntu-latest - # wait up to 1 hour - timeout-minutes: 60 + timeout-minutes: 5 steps: - - id: buildkite - name: Run buildkite pipeline - uses: elastic/apm-pipeline-library/.github/actions/buildkite@current + - name: Run microbenchmark + uses: elastic/oblt-actions/buildkite/run@v1.5.0 with: - vaultUrl: ${{ secrets.VAULT_ADDR }} - vaultRoleId: ${{ secrets.VAULT_ROLE_ID }} - vaultSecretId: ${{ secrets.VAULT_SECRET_ID }} - pipeline: apm-agent-microbenchmark - triggerMessage: "${{ github.repository }}@${{ github.ref_name }}" - waitFor: true - printBuildLogs: true - buildEnvVars: | + pipeline: "apm-agent-microbenchmark" + token: ${{ secrets.BUILDKITE_TOKEN }} + wait-for: false + env-vars: | script=.ci/scripts/bench.sh repo=apm-agent-nodejs sha=${{ github.sha }} BRANCH_NAME=${{ github.ref_name }} - - - if: ${{ failure() }} - uses: elastic/apm-pipeline-library/.github/actions/slack-message@current - with: - url: ${{ secrets.VAULT_ADDR }} - roleId: ${{ secrets.VAULT_ROLE_ID }} - secretId: ${{ secrets.VAULT_SECRET_ID }} - channel: "#apm-agent-node" - message: | - :ghost: [${{ github.repository }}] microbenchmark *${{ github.ref_name }}* failed to run in Buildkite. - Build: (<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|here>) From da526c1ac2e6ddd956531c551261b19177b7ced7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Jun 2024 10:49:23 -0700 Subject: [PATCH 011/396] chore(deps): bump import-in-the-middle from 1.7.4 to 1.8.0 (#4054) --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 30f22696a8..297595aeb4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "fast-safe-stringify": "^2.0.7", "fast-stream-to-buffer": "^1.0.0", "http-headers": "^3.0.2", - "import-in-the-middle": "1.7.4", + "import-in-the-middle": "1.8.0", "json-bigint": "^1.0.0", "lru-cache": "^10.0.1", "measured-reporting": "^1.51.1", @@ -11595,9 +11595,9 @@ } }, "node_modules/import-in-the-middle": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.7.4.tgz", - "integrity": "sha512-Lk+qzWmiQuRPPulGQeK5qq0v32k2bHnWrRPFgqyvhw7Kkov5L6MOLOIU3pcWeujc9W4q54Cp3Q2WV16eQkc7Bg==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.8.0.tgz", + "integrity": "sha512-/xQjze8szLNnJ5rvHSzn+dcVXqCAU6Plbk4P24U/jwPmg1wy7IIp9OjKIO5tYue8GSPhDpPDiApQjvBUmWwhsQ==", "dependencies": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", @@ -27237,9 +27237,9 @@ } }, "import-in-the-middle": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.7.4.tgz", - "integrity": "sha512-Lk+qzWmiQuRPPulGQeK5qq0v32k2bHnWrRPFgqyvhw7Kkov5L6MOLOIU3pcWeujc9W4q54Cp3Q2WV16eQkc7Bg==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.8.0.tgz", + "integrity": "sha512-/xQjze8szLNnJ5rvHSzn+dcVXqCAU6Plbk4P24U/jwPmg1wy7IIp9OjKIO5tYue8GSPhDpPDiApQjvBUmWwhsQ==", "requires": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", diff --git a/package.json b/package.json index 66bc724c92..563e650966 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "fast-safe-stringify": "^2.0.7", "fast-stream-to-buffer": "^1.0.0", "http-headers": "^3.0.2", - "import-in-the-middle": "1.7.4", + "import-in-the-middle": "1.8.0", "json-bigint": "^1.0.0", "lru-cache": "^10.0.1", "measured-reporting": "^1.51.1", From 24246bf6adf5c95813a6b863b255f981c8a4c97d Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Tue, 4 Jun 2024 20:45:23 +0200 Subject: [PATCH 012/396] github-actions: remove snapshoty (#4057) --- .ci/snapshoty.yml | 36 --------------------------------- .github/workflows/snapshoty.yml | 33 ------------------------------ package.json | 3 +-- 3 files changed, 1 insertion(+), 71 deletions(-) delete mode 100644 .ci/snapshoty.yml delete mode 100644 .github/workflows/snapshoty.yml diff --git a/.ci/snapshoty.yml b/.ci/snapshoty.yml deleted file mode 100644 index 0039a3931e..0000000000 --- a/.ci/snapshoty.yml +++ /dev/null @@ -1,36 +0,0 @@ ---- - -# Version of configuration to use -version: '1.0' - -# You can define a Google Cloud Account to use -account: - # Project id of the service account - project: '${GCS_PROJECT}' - # Private key id of the service account - private_key_id: '${GCS_PRIVATE_KEY_ID}' - # Private key of the service account - private_key: '${GCS_PRIVATE_KEY}' - # Email of the service account - client_email: '${GCS_CLIENT_EMAIL}' - # URI token - token_uri: 'https://oauth2.googleapis.com/token' - -# List of artifacts -artifacts: - # Path to use for artifacts discovery - - path: './build/snapshot' - # Files pattern to match - files_pattern: 'elastic-apm-node-(?P\d+\.\d+\.\d+)\.tgz' - # File layout on GCS bucket - output_pattern: '{project}/{github_branch_name}/elastic-apm-node-{app_version}-{github_sha_short}.tgz' - # List of metadata processors to use. - metadata: - # Define static custom metadata - - name: 'custom' - data: - project: 'apm-agent-nodejs' - # Add git metadata - - name: 'git' - # Add github_actions metadata - - name: 'github_actions' diff --git a/.github/workflows/snapshoty.yml b/.github/workflows/snapshoty.yml deleted file mode 100644 index feddb68d42..0000000000 --- a/.github/workflows/snapshoty.yml +++ /dev/null @@ -1,33 +0,0 @@ ---- -# Publish a snapshot. A "snapshot" is a packaging of the latest *unreleased* APM agent, -# published to a known GCS bucket for use in edge demo/test environments. -name: snapshoty - -on: - push: - branches: - - main - paths-ignore: - - '*.md' - - '*.asciidoc' - - 'docs/**' - -jobs: - upload: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-node@v4 - with: - node-version: '16' - - - run: npm run package:snapshot - - - name: Publish snaphosts - uses: elastic/apm-pipeline-library/.github/actions/snapshoty-simple@current - with: - config: '.ci/snapshoty.yml' - vaultUrl: ${{ secrets.VAULT_ADDR }} - vaultRoleId: ${{ secrets.VAULT_ROLE_ID }} - vaultSecretId: ${{ secrets.VAULT_SECRET_ID }} diff --git a/package.json b/package.json index 563e650966..87ef55ff3f 100644 --- a/package.json +++ b/package.json @@ -28,8 +28,7 @@ "docker:start": "docker compose -f ./test/docker-compose.yml up -d", "docker:stop": "docker compose -f ./test/docker-compose.yml down", "docker:clean": "./test/script/docker/cleanup.sh", - "docker:dev": "docker compose -f ./dev-utils/docker-compose.yml run --workdir=/agent nodejs-agent", - "package:snapshot": "rm -rf ./build/snapshot && mkdir -p ./build/snapshot && npm pack --pack-destination ./build/snapshot" + "docker:dev": "docker compose -f ./dev-utils/docker-compose.yml run --workdir=/agent nodejs-agent" }, "directories": { "test": "test" From 88ee80787891fb90513303e1e7aeeee85d9a0de5 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Wed, 5 Jun 2024 10:39:37 -0700 Subject: [PATCH 013/396] feat: make published Docker images multi-platform, add linux/arm64 plat (#4058) Closes: #4038 --- .github/workflows/release.yml | 7 +++++++ CHANGELOG.asciidoc | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c09a2211f2..c7041d6aeb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -27,6 +27,11 @@ jobs: with: node-version: 'v16.20.2' + # Setup a Docker "buildx" builder container, used by "build-push-action" + # below for multi-platform image builds. Notes on multi-platform images: + # https://github.com/elastic/apm-agent-nodejs/issues/4038#issuecomment-2130406402 + - uses: docker/setup-buildx-action@v3 + - name: Log in to the Elastic Container registry uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446 # v3.2.0 with: @@ -61,6 +66,7 @@ jobs: uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # v5.3.0 with: context: . + platforms: linux/amd64,linux/arm64 file: 'Dockerfile' push: true tags: ${{ steps.docker-meta.outputs.tags }} @@ -94,6 +100,7 @@ jobs: uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # v5.3.0 with: context: . + platforms: linux/amd64,linux/arm64 file: 'Dockerfile.wolfi' push: true tags: ${{ steps.docker-meta-wolfi.outputs.tags }} diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index b6acc77975..2dc0685b9e 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -42,6 +42,12 @@ See the <> guide. [float] ===== Features +* Make published `docker.elastic.co/observability/apm-agent-nodejs` Docker + images multi-platform, with support for `linux/amd64,linux/arm64` for now. + This is necessary for users of the Elastic APM Attacher for Kubernetes, + when deploying to k8s nodes that are ARM64 (e.g. Gravitron on AWS). + ({issues}4038[#4038]) + [float] ===== Bug fixes @@ -49,6 +55,7 @@ See the <> guide. `@smithy/smithy-client` v3. (For example `@aws-sdk/client-s3@3.575.0` released 2024-05-13 updated to smithy-client v3.) Before this change the APM agent had been limiting patching of `@smithy/smithy-client` to `>=1 <3`. + ({pull}4036[#4036]) * Mark the published AWS Lambda layers as supporting the "nodejs20.x" Lambda Runtime (`--compatible-runtimes`). The "nodejs20.x" runtime was released by From 07fb5e35de3f685e41cd22c447bae5582e9f5a53 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Wed, 5 Jun 2024 11:56:31 -0700 Subject: [PATCH 014/396] release 4.6.0 (#4059) --- CHANGELOG.asciidoc | 9 ++------- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 2dc0685b9e..99a29b0b91 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -34,10 +34,8 @@ Notes: See the <> guide. -==== Unreleased - -[float] -===== Breaking changes +[[release-notes-4.6.0]] +==== 4.6.0 - 2024/06/05 [float] ===== Features @@ -65,9 +63,6 @@ Note that this Node.js APM agent supports Node.js 20.x, so the new AWS Lambda runtime was supported when it was released. However, the metadata stating compatible runtimes (which is advisory) was not updated until now. -[float] -===== Chores - [[release-notes-4.5.4]] ==== 4.5.4 - 2024/05/13 diff --git a/package-lock.json b/package-lock.json index 297595aeb4..1f8308ac0e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "elastic-apm-node", - "version": "4.5.4", + "version": "4.6.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "elastic-apm-node", - "version": "4.5.4", + "version": "4.6.0", "license": "BSD-2-Clause", "dependencies": { "@elastic/ecs-pino-format": "^1.5.0", diff --git a/package.json b/package.json index 87ef55ff3f..78153ca87a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "elastic-apm-node", - "version": "4.5.4", + "version": "4.6.0", "description": "The official Elastic APM agent for Node.js", "type": "commonjs", "main": "index.js", From 3e4768cd3d218abc3e1c8081344c0e07a8407d34 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Wed, 5 Jun 2024 13:07:15 -0700 Subject: [PATCH 015/396] chore(release): switch to actions/attest-build-provenance (#4061) This had been done for other uses in this workflow in #4025, and then this additional usage was added a bit later in #4005. --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c7041d6aeb..6749e3e08e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -109,7 +109,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image (wolfi) - uses: github-early-access/generate-build-provenance@main + uses: actions/attest-build-provenance@173725a1209d09b31f9d30a3890cf2757ebbff0d # v1.1.2 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push-wolfi.outputs.digest }} From 55d3a641a72675c5aa24c5ac8311f44330784bf3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 6 Jun 2024 11:02:04 +0200 Subject: [PATCH 016/396] chore(deps-dev): bump eslint from 9.3.0 to 9.4.0 in the eslint group (#4049) --- package-lock.json | 109 ++++++++++++++++++++++++---------------------- 1 file changed, 56 insertions(+), 53 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1f8308ac0e..193c62f40f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4335,6 +4335,20 @@ "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.15.1.tgz", + "integrity": "sha512-K4gzNq+yymn/EVsXYmf+SBcBro8MTf+aXJZUphM96CdzUEr+ClGDvAbpmaEK+cGVigVXIgs9gNmvHAlrzzY5JQ==", + "dev": true, + "dependencies": { + "@eslint/object-schema": "^2.1.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", @@ -4393,9 +4407,18 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.3.0.tgz", - "integrity": "sha512-niBqk8iwv96+yuTwjM6bWg8ovzAPF9qkICsGtcoa5/dmqcEMfdwNAX7+/OHcJHc7wj7XqPxH98oAHytFYlw6Sw==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.4.0.tgz", + "integrity": "sha512-fdI7VJjP3Rvc70lC4xkFXHB0fiPeojiL1PxVG6t1ZvXQrarj893PweuBTujxDUFk0Fxj4R7PIIAZ/aiiyZPZcg==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.3.tgz", + "integrity": "sha512-HAbhAYKfsAC2EkTqve00ibWIZlaU74Z1EHwAjYr4PXF0YU2VEA1zSIKSSpKszRLRWwHzzRZXvK632u+uXzvsvw==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5020,20 +5043,6 @@ "integrity": "sha512-aKmlCO57XFZ26wso4rJsW4oTUnrgTFw2jh3io7CAtO9w4UltBNwRXvXIVzzyfkaaLRo3nluP/19msA8vDUUuKw==", "dev": true }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -5047,12 +5056,6 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "dev": true - }, "node_modules/@humanwhocodes/retry": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", @@ -9331,16 +9334,16 @@ } }, "node_modules/eslint": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.3.0.tgz", - "integrity": "sha512-5Iv4CsZW030lpUqHBapdPo3MJetAPtejVW8B84GIcIIv8+ohFaddXsrn1Gn8uD9ijDb+kcYKFUVmC8qG8B2ORQ==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.4.0.tgz", + "integrity": "sha512-sjc7Y8cUD1IlwYcTS9qPSvGjAC8Ne9LctpxKKu3x/1IC9bnOg98Zy6GxEJUfr1NojMgVPlyANXYns8oE2c1TAA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", + "@eslint/config-array": "^0.15.1", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.3.0", - "@humanwhocodes/config-array": "^0.13.0", + "@eslint/js": "9.4.0", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -21497,6 +21500,17 @@ "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true }, + "@eslint/config-array": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.15.1.tgz", + "integrity": "sha512-K4gzNq+yymn/EVsXYmf+SBcBro8MTf+aXJZUphM96CdzUEr+ClGDvAbpmaEK+cGVigVXIgs9gNmvHAlrzzY5JQ==", + "dev": true, + "requires": { + "@eslint/object-schema": "^2.1.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + } + }, "@eslint/eslintrc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", @@ -21541,9 +21555,15 @@ } }, "@eslint/js": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.3.0.tgz", - "integrity": "sha512-niBqk8iwv96+yuTwjM6bWg8ovzAPF9qkICsGtcoa5/dmqcEMfdwNAX7+/OHcJHc7wj7XqPxH98oAHytFYlw6Sw==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.4.0.tgz", + "integrity": "sha512-fdI7VJjP3Rvc70lC4xkFXHB0fiPeojiL1PxVG6t1ZvXQrarj893PweuBTujxDUFk0Fxj4R7PIIAZ/aiiyZPZcg==", + "dev": true + }, + "@eslint/object-schema": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.3.tgz", + "integrity": "sha512-HAbhAYKfsAC2EkTqve00ibWIZlaU74Z1EHwAjYr4PXF0YU2VEA1zSIKSSpKszRLRWwHzzRZXvK632u+uXzvsvw==", "dev": true }, "@fastify/ajv-compiler": { @@ -22189,29 +22209,12 @@ } } }, - "@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - } - }, "@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true }, - "@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "dev": true - }, "@humanwhocodes/retry": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", @@ -25576,16 +25579,16 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.3.0.tgz", - "integrity": "sha512-5Iv4CsZW030lpUqHBapdPo3MJetAPtejVW8B84GIcIIv8+ohFaddXsrn1Gn8uD9ijDb+kcYKFUVmC8qG8B2ORQ==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.4.0.tgz", + "integrity": "sha512-sjc7Y8cUD1IlwYcTS9qPSvGjAC8Ne9LctpxKKu3x/1IC9bnOg98Zy6GxEJUfr1NojMgVPlyANXYns8oE2c1TAA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", + "@eslint/config-array": "^0.15.1", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.3.0", - "@humanwhocodes/config-array": "^0.13.0", + "@eslint/js": "9.4.0", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", From d1af6b2e9296651f3cad6d803811befef1f80f3f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 10:41:54 +0200 Subject: [PATCH 017/396] chore(deps-dev): bump pg from 8.11.5 to 8.12.0 (#4065) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 193c62f40f..46ab6fc93b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14652,9 +14652,9 @@ "dev": true }, "node_modules/pg": { - "version": "8.11.5", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.5.tgz", - "integrity": "sha512-jqgNHSKL5cbDjFlHyYsCXmQDrfIX/3RsNwYqpd4N0Kt8niLuNoRNH+aazv6cOd43gPh9Y4DjQCtb+X0MH0Hvnw==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.12.0.tgz", + "integrity": "sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==", "dev": true, "dependencies": { "pg-connection-string": "^2.6.4", @@ -29564,9 +29564,9 @@ "dev": true }, "pg": { - "version": "8.11.5", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.5.tgz", - "integrity": "sha512-jqgNHSKL5cbDjFlHyYsCXmQDrfIX/3RsNwYqpd4N0Kt8niLuNoRNH+aazv6cOd43gPh9Y4DjQCtb+X0MH0Hvnw==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.12.0.tgz", + "integrity": "sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==", "dev": true, "requires": { "pg-cloudflare": "^1.1.1", From 9857a187eb29d3e0031929ffc3908274b7aa400a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 10:42:53 +0200 Subject: [PATCH 018/396] chore(deps-dev): bump eslint-plugin-n in the eslint group (#4063) --- package-lock.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 46ab6fc93b..0b1b616dec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9132,9 +9132,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", - "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -9545,13 +9545,13 @@ } }, "node_modules/eslint-plugin-n": { - "version": "17.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.7.0.tgz", - "integrity": "sha512-4Jg4ZKVE4VjHig2caBqPHYNW5na84RVufUuipFLJbgM/G57O6FdpUKJbHakCDJb/yjQuyqVzYWRtU3HNYaZUwg==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.8.1.tgz", + "integrity": "sha512-KdG0h0voZms8UhndNu8DeWx1eM4sY+A4iXtsNo6kOfJLYHNeTGPacGalJ9GcvrbmOL3r/7QOMwVZDSw+1SqsrA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "enhanced-resolve": "^5.15.0", + "enhanced-resolve": "^5.17.0", "eslint-plugin-es-x": "^7.5.0", "get-tsconfig": "^4.7.0", "globals": "^15.0.0", @@ -25414,9 +25414,9 @@ } }, "enhanced-resolve": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", - "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -25861,13 +25861,13 @@ } }, "eslint-plugin-n": { - "version": "17.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.7.0.tgz", - "integrity": "sha512-4Jg4ZKVE4VjHig2caBqPHYNW5na84RVufUuipFLJbgM/G57O6FdpUKJbHakCDJb/yjQuyqVzYWRtU3HNYaZUwg==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.8.1.tgz", + "integrity": "sha512-KdG0h0voZms8UhndNu8DeWx1eM4sY+A4iXtsNo6kOfJLYHNeTGPacGalJ9GcvrbmOL3r/7QOMwVZDSw+1SqsrA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", - "enhanced-resolve": "^5.15.0", + "enhanced-resolve": "^5.17.0", "eslint-plugin-es-x": "^7.5.0", "get-tsconfig": "^4.7.0", "globals": "^15.0.0", From 8c24d00b8f28fe53647f5d0c557e29981dbd735b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 10:44:04 +0200 Subject: [PATCH 019/396] chore(deps-dev): bump prettier from 3.3.0 to 3.3.1 (#4064) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0b1b616dec..25b88c33bd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15052,9 +15052,9 @@ } }, "node_modules/prettier": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.0.tgz", - "integrity": "sha512-J9odKxERhCQ10OC2yb93583f6UnYutOeiV5i0zEDS7UGTdUt0u+y8erxl3lBKvwo/JHyyoEdXjwp4dke9oyZ/g==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.1.tgz", + "integrity": "sha512-7CAwy5dRsxs8PHXT3twixW9/OEll8MLE0VRPCJyl7CkS6VHGPSlsVaWTiASPTyGyYRyApxlaWTzwUxVNrhcwDg==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -29852,9 +29852,9 @@ "dev": true }, "prettier": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.0.tgz", - "integrity": "sha512-J9odKxERhCQ10OC2yb93583f6UnYutOeiV5i0zEDS7UGTdUt0u+y8erxl3lBKvwo/JHyyoEdXjwp4dke9oyZ/g==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.1.tgz", + "integrity": "sha512-7CAwy5dRsxs8PHXT3twixW9/OEll8MLE0VRPCJyl7CkS6VHGPSlsVaWTiASPTyGyYRyApxlaWTzwUxVNrhcwDg==", "dev": true }, "prettier-linter-helpers": { From 06b73ae8d8cc4a9f816f8c24d3381252296949aa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 10:57:08 +0200 Subject: [PATCH 020/396] chore(deps): bump @opentelemetry/core from 1.24.1 to 1.25.0 (#4066) --- package-lock.json | 81 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 72 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 25b88c33bd..48ae168b0e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5478,17 +5478,25 @@ } }, "node_modules/@opentelemetry/core": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.1.tgz", - "integrity": "sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.0.tgz", + "integrity": "sha512-n0B3s8rrqGrasTgNkXLKXzN0fXo+6IYP7M5b7AMsrZM33f/y6DS6kJ0Btd7SespASWq8bgL3taLo0oe0vB52IQ==", "dependencies": { - "@opentelemetry/semantic-conventions": "1.24.1" + "@opentelemetry/semantic-conventions": "1.25.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.0.tgz", + "integrity": "sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ==", + "engines": { + "node": ">=14" } }, "node_modules/@opentelemetry/resources": { @@ -5506,6 +5514,20 @@ "@opentelemetry/api": ">=1.0.0 <1.9.0" } }, + "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/core": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.1.tgz", + "integrity": "sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.24.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, "node_modules/@opentelemetry/sdk-metrics": { "version": "1.24.1", "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.24.1.tgz", @@ -5522,6 +5544,20 @@ "@opentelemetry/api": ">=1.3.0 <1.9.0" } }, + "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/core": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.1.tgz", + "integrity": "sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.24.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.9.0" + } + }, "node_modules/@opentelemetry/semantic-conventions": { "version": "1.24.1", "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.1.tgz", @@ -22539,11 +22575,18 @@ "integrity": "sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==" }, "@opentelemetry/core": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.1.tgz", - "integrity": "sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.0.tgz", + "integrity": "sha512-n0B3s8rrqGrasTgNkXLKXzN0fXo+6IYP7M5b7AMsrZM33f/y6DS6kJ0Btd7SespASWq8bgL3taLo0oe0vB52IQ==", "requires": { - "@opentelemetry/semantic-conventions": "1.24.1" + "@opentelemetry/semantic-conventions": "1.25.0" + }, + "dependencies": { + "@opentelemetry/semantic-conventions": { + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.0.tgz", + "integrity": "sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ==" + } } }, "@opentelemetry/resources": { @@ -22553,6 +22596,16 @@ "requires": { "@opentelemetry/core": "1.24.1", "@opentelemetry/semantic-conventions": "1.24.1" + }, + "dependencies": { + "@opentelemetry/core": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.1.tgz", + "integrity": "sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==", + "requires": { + "@opentelemetry/semantic-conventions": "1.24.1" + } + } } }, "@opentelemetry/sdk-metrics": { @@ -22563,6 +22616,16 @@ "@opentelemetry/core": "1.24.1", "@opentelemetry/resources": "1.24.1", "lodash.merge": "^4.6.2" + }, + "dependencies": { + "@opentelemetry/core": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.1.tgz", + "integrity": "sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==", + "requires": { + "@opentelemetry/semantic-conventions": "1.24.1" + } + } } }, "@opentelemetry/semantic-conventions": { From d8b7512b1fdd9a71cdc8f4082ccf8f7775d68dc7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 12:44:13 +0200 Subject: [PATCH 021/396] chore(deps): bump @opentelemetry/sdk-metrics from 1.24.1 to 1.25.0 (#4068) --- package-lock.json | 119 +++++++++++----------------------------------- 1 file changed, 28 insertions(+), 91 deletions(-) diff --git a/package-lock.json b/package-lock.json index 48ae168b0e..8c71358af8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5491,77 +5491,41 @@ "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, - "node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.0.tgz", - "integrity": "sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ==", - "engines": { - "node": ">=14" - } - }, "node_modules/@opentelemetry/resources": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.24.1.tgz", - "integrity": "sha512-cyv0MwAaPF7O86x5hk3NNgenMObeejZFLJJDVuSeSMIsknlsj3oOZzRv3qSzlwYomXsICfBeFFlxwHQte5mGXQ==", - "dependencies": { - "@opentelemetry/core": "1.24.1", - "@opentelemetry/semantic-conventions": "1.24.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" - } - }, - "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/core": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.1.tgz", - "integrity": "sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.25.0.tgz", + "integrity": "sha512-iHjydPMYJ+Li1auveJCq2rp5U2h6Mhq8BidiyE0jfVlDTFyR1ny8AfJHfmFzJ/RAM8vT8L7T21kcmGybxZC7lQ==", "dependencies": { - "@opentelemetry/semantic-conventions": "1.24.1" + "@opentelemetry/core": "1.25.0", + "@opentelemetry/semantic-conventions": "1.25.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.24.1.tgz", - "integrity": "sha512-FrAqCbbGao9iKI+Mgh+OsC9+U2YMoXnlDHe06yH7dvavCKzE3S892dGtX54+WhSFVxHR/TMRVJiK/CV93GR0TQ==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.0.tgz", + "integrity": "sha512-IF+Sv4VHgBr/BPMKabl+GouJIhEqAOexCHgXVTISdz3q9P9H/uA8ScCF+22gitQ69aFtESbdYOV+Fen5+avQng==", "dependencies": { - "@opentelemetry/core": "1.24.1", - "@opentelemetry/resources": "1.24.1", + "@opentelemetry/core": "1.25.0", + "@opentelemetry/resources": "1.25.0", "lodash.merge": "^4.6.2" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.9.0" - } - }, - "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/core": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.1.tgz", - "integrity": "sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==", - "dependencies": { - "@opentelemetry/semantic-conventions": "1.24.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.1.tgz", - "integrity": "sha512-VkliWlS4/+GHLLW7J/rVBA00uXus1SWvwFvcUDxDwmFxYfg/2VI6ekwdXS28cjI8Qz2ky2BzG8OUHo+WeYIWqw==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.0.tgz", + "integrity": "sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ==", "engines": { "node": ">=14" } @@ -22580,58 +22544,31 @@ "integrity": "sha512-n0B3s8rrqGrasTgNkXLKXzN0fXo+6IYP7M5b7AMsrZM33f/y6DS6kJ0Btd7SespASWq8bgL3taLo0oe0vB52IQ==", "requires": { "@opentelemetry/semantic-conventions": "1.25.0" - }, - "dependencies": { - "@opentelemetry/semantic-conventions": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.0.tgz", - "integrity": "sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ==" - } } }, "@opentelemetry/resources": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.24.1.tgz", - "integrity": "sha512-cyv0MwAaPF7O86x5hk3NNgenMObeejZFLJJDVuSeSMIsknlsj3oOZzRv3qSzlwYomXsICfBeFFlxwHQte5mGXQ==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.25.0.tgz", + "integrity": "sha512-iHjydPMYJ+Li1auveJCq2rp5U2h6Mhq8BidiyE0jfVlDTFyR1ny8AfJHfmFzJ/RAM8vT8L7T21kcmGybxZC7lQ==", "requires": { - "@opentelemetry/core": "1.24.1", - "@opentelemetry/semantic-conventions": "1.24.1" - }, - "dependencies": { - "@opentelemetry/core": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.1.tgz", - "integrity": "sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==", - "requires": { - "@opentelemetry/semantic-conventions": "1.24.1" - } - } + "@opentelemetry/core": "1.25.0", + "@opentelemetry/semantic-conventions": "1.25.0" } }, "@opentelemetry/sdk-metrics": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.24.1.tgz", - "integrity": "sha512-FrAqCbbGao9iKI+Mgh+OsC9+U2YMoXnlDHe06yH7dvavCKzE3S892dGtX54+WhSFVxHR/TMRVJiK/CV93GR0TQ==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.0.tgz", + "integrity": "sha512-IF+Sv4VHgBr/BPMKabl+GouJIhEqAOexCHgXVTISdz3q9P9H/uA8ScCF+22gitQ69aFtESbdYOV+Fen5+avQng==", "requires": { - "@opentelemetry/core": "1.24.1", - "@opentelemetry/resources": "1.24.1", + "@opentelemetry/core": "1.25.0", + "@opentelemetry/resources": "1.25.0", "lodash.merge": "^4.6.2" - }, - "dependencies": { - "@opentelemetry/core": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.1.tgz", - "integrity": "sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==", - "requires": { - "@opentelemetry/semantic-conventions": "1.24.1" - } - } } }, "@opentelemetry/semantic-conventions": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.1.tgz", - "integrity": "sha512-VkliWlS4/+GHLLW7J/rVBA00uXus1SWvwFvcUDxDwmFxYfg/2VI6ekwdXS28cjI8Qz2ky2BzG8OUHo+WeYIWqw==" + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.0.tgz", + "integrity": "sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ==" }, "@pkgjs/parseargs": { "version": "0.11.0", From 358e385d95347f8eff6a1bc7a89fbe1230121625 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 15:54:59 +0200 Subject: [PATCH 022/396] chore(deps): bump @opentelemetry/api from 1.8.0 to 1.9.0 (#4069) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8c71358af8..1f36e09be3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5470,9 +5470,9 @@ } }, "node_modules/@opentelemetry/api": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.8.0.tgz", - "integrity": "sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "engines": { "node": ">=8.0.0" } @@ -22534,9 +22534,9 @@ "dev": true }, "@opentelemetry/api": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.8.0.tgz", - "integrity": "sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==" + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" }, "@opentelemetry/core": { "version": "1.25.0", From 8ba940bbceaba1050be6a36c48c9c992a766df1c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 15:56:03 +0200 Subject: [PATCH 023/396] chore(deps): bump @opentelemetry/api in /test/opentelemetry-bridge (#4070) --- test/opentelemetry-bridge/package-lock.json | 14 +++++++------- test/opentelemetry-bridge/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/test/opentelemetry-bridge/package-lock.json b/test/opentelemetry-bridge/package-lock.json index 0d40942cb4..2e4913de02 100644 --- a/test/opentelemetry-bridge/package-lock.json +++ b/test/opentelemetry-bridge/package-lock.json @@ -8,13 +8,13 @@ "name": "opentelemetry-bridge-tests", "version": "1.0.0", "dependencies": { - "@opentelemetry/api": "^1.7.0" + "@opentelemetry/api": "^1.9.0" } }, "node_modules/@opentelemetry/api": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.8.0.tgz", - "integrity": "sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "engines": { "node": ">=8.0.0" } @@ -22,9 +22,9 @@ }, "dependencies": { "@opentelemetry/api": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.8.0.tgz", - "integrity": "sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==" + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" } } } diff --git a/test/opentelemetry-bridge/package.json b/test/opentelemetry-bridge/package.json index 52089a0c9b..bbecdc6893 100644 --- a/test/opentelemetry-bridge/package.json +++ b/test/opentelemetry-bridge/package.json @@ -3,6 +3,6 @@ "version": "1.0.0", "private": true, "dependencies": { - "@opentelemetry/api": "^1.7.0" + "@opentelemetry/api": "^1.9.0" } } From 63da687af3322b33398c347d850745ce86faecfb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 16:39:58 +0200 Subject: [PATCH 024/396] chore(deps): bump @opentelemetry/api (#4071) --- .../fixtures/package-lock.json | 14 +++++++------- test/opentelemetry-metrics/fixtures/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/test/opentelemetry-metrics/fixtures/package-lock.json b/test/opentelemetry-metrics/fixtures/package-lock.json index d0606b54cf..9baeb9e0a6 100644 --- a/test/opentelemetry-metrics/fixtures/package-lock.json +++ b/test/opentelemetry-metrics/fixtures/package-lock.json @@ -8,15 +8,15 @@ "name": "otel-metrics-fixtures", "version": "1.0.0", "dependencies": { - "@opentelemetry/api": "^1.3.0", + "@opentelemetry/api": "^1.9.0", "@opentelemetry/exporter-prometheus": ">=0.41.2 <2", "@opentelemetry/sdk-metrics": "^1.24.1" } }, "node_modules/@opentelemetry/api": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.8.0.tgz", - "integrity": "sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "engines": { "node": ">=8.0.0" } @@ -98,9 +98,9 @@ }, "dependencies": { "@opentelemetry/api": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.8.0.tgz", - "integrity": "sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==" + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" }, "@opentelemetry/core": { "version": "1.24.1", diff --git a/test/opentelemetry-metrics/fixtures/package.json b/test/opentelemetry-metrics/fixtures/package.json index 72eab99e85..23b6226222 100644 --- a/test/opentelemetry-metrics/fixtures/package.json +++ b/test/opentelemetry-metrics/fixtures/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "private": true, "dependencies": { - "@opentelemetry/api": "^1.3.0", + "@opentelemetry/api": "^1.9.0", "@opentelemetry/exporter-prometheus": ">=0.41.2 <2", "@opentelemetry/sdk-metrics": "^1.24.1" } From ae19115c68d80f73b526c87738abce2bc213a12c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 10:34:03 -0700 Subject: [PATCH 025/396] chore(deps): bump actions/attest-build-provenance (#4062) --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6749e3e08e..fead8ef1d6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -44,7 +44,7 @@ jobs: - run: make -C .ci dist - name: Attest Lambda layer zip - uses: actions/attest-build-provenance@173725a1209d09b31f9d30a3890cf2757ebbff0d # v1.1.2 + uses: actions/attest-build-provenance@49df96e17e918a15956db358890b08e61c704919 # v1.2.0 with: subject-path: "${{ github.workspace }}/build/aws/elastic-apm-node-lambda-layer-*.zip" @@ -75,7 +75,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image - uses: actions/attest-build-provenance@173725a1209d09b31f9d30a3890cf2757ebbff0d # v1.1.2 + uses: actions/attest-build-provenance@49df96e17e918a15956db358890b08e61c704919 # v1.2.0 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push.outputs.digest }} @@ -109,7 +109,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image (wolfi) - uses: actions/attest-build-provenance@173725a1209d09b31f9d30a3890cf2757ebbff0d # v1.1.2 + uses: actions/attest-build-provenance@49df96e17e918a15956db358890b08e61c704919 # v1.2.0 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push-wolfi.outputs.digest }} From d787ab2b18c5692f886ffe3a6659a4f529963d6a Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Mon, 10 Jun 2024 16:28:26 -0700 Subject: [PATCH 026/396] chore, test: fix elasticsearch instr test with Node.js v23 (#4076) Bump transitive agentkeepalive dep to v3.5.3 that avoids using the now-removed 'util._extend'. Fixes: #4075 --- package-lock.json | 151 ++-------------------------------------------- 1 file changed, 6 insertions(+), 145 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1f36e09be3..e620500758 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9021,9 +9021,9 @@ } }, "node_modules/elasticsearch/node_modules/agentkeepalive": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", - "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.3.tgz", + "integrity": "sha512-yqXL+k5rr8+ZRpOAntkaaRgWgE5o8ESAj5DyRmVTCSoZxXmqemb9Dd7T4i5UzwuERdLAJUy6XzR9zFVuf0kzkw==", "dev": true, "dependencies": { "humanize-ms": "^1.2.1" @@ -10335,39 +10335,6 @@ "integrity": "sha512-dlGKiwLzRBKkEf5J5ho0uAD/Jdv8GQVUbriB3tAX3ehRUXE4gTV3lRd5inEg9li1aLzb0EGj8y2K4/8g1TN06g==", "dev": true }, - "node_modules/fastify/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/fastify/node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, "node_modules/fastify/node_modules/fast-json-stringify": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.8.0.tgz", @@ -10396,26 +10363,6 @@ "node": ">=14" } }, - "node_modules/fastify/node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/fastify/node_modules/pino": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/pino/-/pino-9.0.0.tgz", @@ -10438,47 +10385,12 @@ "pino": "bin.js" } }, - "node_modules/fastify/node_modules/pino-abstract-transport": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz", - "integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==", - "dev": true, - "dependencies": { - "readable-stream": "^4.0.0", - "split2": "^4.0.0" - } - }, "node_modules/fastify/node_modules/process-warning": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==", "dev": true }, - "node_modules/fastify/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "dev": true, - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/fastify/node_modules/split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "dev": true, - "engines": { - "node": ">= 10.x" - } - }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -25325,9 +25237,9 @@ }, "dependencies": { "agentkeepalive": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", - "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.3.tgz", + "integrity": "sha512-yqXL+k5rr8+ZRpOAntkaaRgWgE5o8ESAj5DyRmVTCSoZxXmqemb9Dd7T4i5UzwuERdLAJUy6XzR9zFVuf0kzkw==", "dev": true, "requires": { "humanize-ms": "^1.2.1" @@ -26307,22 +26219,6 @@ "toad-cache": "^3.3.0" }, "dependencies": { - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, "fast-json-stringify": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.8.0.tgz", @@ -26348,12 +26244,6 @@ "safe-regex2": "^2.0.0" } }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, "pino": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/pino/-/pino-9.0.0.tgz", @@ -26373,40 +26263,11 @@ "thread-stream": "^2.6.0" } }, - "pino-abstract-transport": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz", - "integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==", - "dev": true, - "requires": { - "readable-stream": "^4.0.0", - "split2": "^4.0.0" - } - }, "process-warning": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==", "dev": true - }, - "readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "dev": true, - "requires": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - } - }, - "split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "dev": true } } }, From 42ad91df8a98fd61346018b236e33427d99592a9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 16:55:01 -0700 Subject: [PATCH 027/396] chore(deps-dev): bump braces from 3.0.2 to 3.0.3 (#4079) --- package-lock.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index e620500758..923c7f571c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7760,12 +7760,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -10419,9 +10419,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -24279,12 +24279,12 @@ } }, "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" } }, "breadth-filter": { @@ -26302,9 +26302,9 @@ } }, "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "requires": { "to-regex-range": "^5.0.1" From 9ae0db30928b425a6007ec185e615f0d01c734f6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Jun 2024 13:56:01 -0700 Subject: [PATCH 028/396] chore(deps-dev): bump @azure/msal-node from 2.6.0 to 2.9.2 (#4080) --- package-lock.json | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 923c7f571c..81a155e767 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2401,17 +2401,26 @@ } }, "node_modules/@azure/msal-node": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.6.0.tgz", - "integrity": "sha512-RWAWCYYrSldIYC47oWtofIun41e6SB9TBYgGYsezq6ednagwo9ZRFyRsvl1NabmdTkdDDXRAABIdveeN2Gtd8w==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.9.2.tgz", + "integrity": "sha512-8tvi6Cos3m+0KmRbPjgkySXi+UQU/QiuVRFnrxIwt5xZlEEFa69O04RTaNESGgImyBBlYbo2mfE8/U8Bbdk1WQ==", "dev": true, "dependencies": { - "@azure/msal-common": "14.5.0", + "@azure/msal-common": "14.12.0", "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" }, "engines": { - "node": "16|| 18 || 20" + "node": ">=16" + } + }, + "node_modules/@azure/msal-node/node_modules/@azure/msal-common": { + "version": "14.12.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.12.0.tgz", + "integrity": "sha512-IDDXmzfdwmDkv4SSmMEyAniJf6fDu3FJ7ncOjlxkDuT85uSnLEhZi3fGZpoR7T4XZpOMx9teM9GXBgrfJgyeBw==", + "dev": true, + "engines": { + "node": ">=0.8.0" } }, "node_modules/@babel/cli": { @@ -20052,14 +20061,22 @@ "dev": true }, "@azure/msal-node": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.6.0.tgz", - "integrity": "sha512-RWAWCYYrSldIYC47oWtofIun41e6SB9TBYgGYsezq6ednagwo9ZRFyRsvl1NabmdTkdDDXRAABIdveeN2Gtd8w==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.9.2.tgz", + "integrity": "sha512-8tvi6Cos3m+0KmRbPjgkySXi+UQU/QiuVRFnrxIwt5xZlEEFa69O04RTaNESGgImyBBlYbo2mfE8/U8Bbdk1WQ==", "dev": true, "requires": { - "@azure/msal-common": "14.5.0", + "@azure/msal-common": "14.12.0", "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" + }, + "dependencies": { + "@azure/msal-common": { + "version": "14.12.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.12.0.tgz", + "integrity": "sha512-IDDXmzfdwmDkv4SSmMEyAniJf6fDu3FJ7ncOjlxkDuT85uSnLEhZi3fGZpoR7T4XZpOMx9teM9GXBgrfJgyeBw==", + "dev": true + } } }, "@babel/cli": { From e312779e32688caba537f91716bbc7dcf149f116 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Thu, 13 Jun 2024 12:01:16 +0200 Subject: [PATCH 029/396] ci(github-secrets): slack and aws lambda publish (#4081) --- .github/workflows/release.yml | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fead8ef1d6..50dc5974c2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,6 +18,9 @@ jobs: runs-on: ubuntu-latest env: DOCKER_IMAGE_NAME: docker.elastic.co/observability/apm-agent-nodejs + # TODO: use keyless + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} steps: - uses: actions/checkout@v4 with: @@ -115,17 +118,6 @@ jobs: subject-digest: ${{ steps.docker-push-wolfi.outputs.digest }} push-to-registry: true - - name: Read AWS vault secrets - uses: hashicorp/vault-action@v3.0.0 - with: - url: ${{ secrets.VAULT_ADDR }} - method: approle - roleId: ${{ secrets.VAULT_ROLE_ID }} - secretId: ${{ secrets.VAULT_SECRET_ID }} - secrets: | - secret/observability-team/ci/service-account/apm-aws-lambda access_key_id | AWS_ACCESS_KEY_ID ; - secret/observability-team/ci/service-account/apm-aws-lambda secret_access_key | AWS_SECRET_ACCESS_KEY - - name: Publish AWS lambda (only for tag release) if: startsWith(github.ref, 'refs/tags') run: make -C .ci publish-in-all-aws-regions create-arn-file @@ -156,10 +148,8 @@ jobs: npm publish --otp=${{ env.TOTP_CODE }} --provenance - if: ${{ always() && startsWith(github.ref, 'refs/tags') }} - uses: elastic/apm-pipeline-library/.github/actions/notify-build-status@current + uses: elastic/oblt-actions/slack/notify-result@v1 with: - vaultUrl: ${{ secrets.VAULT_ADDR }} - vaultRoleId: ${{ secrets.VAULT_ROLE_ID }} - vaultSecretId: ${{ secrets.VAULT_SECRET_ID }} - slackChannel: "#apm-agent-node" + bot-token: ${{ secrets.SLACK_BOT_TOKEN }} + channel-id: "#apm-agent-node" message: '[${{ github.repository }}] Release *${{ github.ref_name }}*' From c884fc9ca88c1bcc5e1f0a28b20ec617b10dda98 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Thu, 13 Jun 2024 08:00:13 -0700 Subject: [PATCH 030/396] feat: support OTel span.addLink, span.addLinks; add similar APIs to the APM agent API (#4078) This also updates a few places for the new otel/api v1.9.0. Refs: #4071 (the dependabot update doesn't get everything) Refs: #4070 Refs: #4069 Refs: #4077 (a separate issue for this other new feature in otel/api@1.9.0) --- docs/span-api.asciidoc | 30 ++++++ docs/supported-technologies.asciidoc | 2 +- docs/transaction-api.asciidoc | 30 ++++++ index.d.ts | 8 +- lib/instrumentation/generic-span.js | 45 +++++---- .../modules/@aws-sdk/client-sqs.js | 2 +- lib/instrumentation/modules/aws-sdk/sqs.js | 2 +- lib/instrumentation/modules/kafkajs.js | 2 +- lib/lambda.js | 4 +- .../OTelBridgeNonRecordingSpan.js | 8 ++ lib/opentelemetry-bridge/OTelSpan.js | 10 ++ test/instrumentation/span.test.js | 36 +++++++ test/instrumentation/transaction.test.js | 31 ++++++ test/opentelemetry-bridge/.tav.yml | 2 +- .../OTelBridgeNonRecordingSpan.test.js | 7 ++ test/opentelemetry-bridge/fixtures.test.js | 18 ++++ .../fixtures/interface-span.js | 13 +++ test/opentelemetry-metrics/fixtures/.tav.yml | 2 +- .../fixtures/package-lock.json | 98 +++++++++---------- test/types/index.ts | 10 ++ 20 files changed, 283 insertions(+), 77 deletions(-) diff --git a/docs/span-api.asciidoc b/docs/span-api.asciidoc index 79d01af262..52a6dff259 100644 --- a/docs/span-api.asciidoc +++ b/docs/span-api.asciidoc @@ -242,3 +242,33 @@ If false-y values (e.g. `null`) are given for both `type` and `name`, then `serv If this method is not called, the service target values are inferred from other span fields (https://github.com/elastic/apm/blob/main/specs/agents/tracing-spans-service-target.md#field-values[spec]). `service.target.*` fields are ignored for APM Server before v8.3. + +[[span-addlink]] +==== `span.addLink(link)` + +[small]#Added in: REPLACEME# + +* `link` +{type-link}+ + +A span can refer to zero or more other transactions or spans (separate +from its parent). Span links will be shown in the Kibana APM app trace view. The +`link` argument is an object with a single "context" field that is a +`Transaction`, `Span`, OpenTelemetry `SpanContext` object, or W3C trace-context +'traceparent' string. +For example: `span.addLink({ context: anotherSpan })`. + +[[span-addlinks]] +==== `span.addLinks([links])` + +[small]#Added in: REPLACEME# + +* `links` +{type-array}+ Span links. + +Add span links to this span. + +A span can refer to zero or more other transactions or spans (separate +from its parent). Span links will be shown in the Kibana APM app trace view. The +`link` argument is an object with a single "context" field that is a +`Transaction`, `Span`, OpenTelemetry `SpanContext` object, or W3C trace-context +'traceparent' string. +For example: `span.addLinks([{ context: anotherSpan }])`. diff --git a/docs/supported-technologies.asciidoc b/docs/supported-technologies.asciidoc index 5461eaec9b..26f4fd0130 100644 --- a/docs/supported-technologies.asciidoc +++ b/docs/supported-technologies.asciidoc @@ -84,7 +84,7 @@ Metrics API and Metrics SDK to allow [options="header"] |======================================================================= | Framework | Version -| <> | >=1.0.0 <1.9.0 +| <> | >=1.0.0 <1.10.0 | https://www.npmjs.com/package/@opentelemetry/sdk-metrics[@opentelemetry/sdk-metrics] | >=1.11.0 <2 |======================================================================= diff --git a/docs/transaction-api.asciidoc b/docs/transaction-api.asciidoc index e834b2ccb1..6d69d8ff67 100644 --- a/docs/transaction-api.asciidoc +++ b/docs/transaction-api.asciidoc @@ -308,3 +308,33 @@ Non-HTTP transactions will begin with an outcome of `unknown`. * `outcome` +{type-string}+ The `setOutcome` method allows an end user to override the Node.js agent's default setting of a transaction's `outcome` property. The `setOutcome` method accepts a string of either `success`, `failure`, or `unknown`, and will force the agent to report this value for a specific span. + +[[transaction-addlink]] +==== `transaction.addLink(link)` + +[small]#Added in: REPLACEME# + +* `link` +{type-link}+ + +A transaction can refer to zero or more other transactions or spans (separate +from its parent). Span links will be shown in the Kibana APM app trace view. The +`link` argument is an object with a single "context" field that is a +`Transaction`, `Span`, OpenTelemetry `SpanContext` object, or W3C trace-context +'traceparent' string. +For example: `transaction.addLink({ context: anotherSpan })`. + +[[transaction-addlinks]] +==== `transaction.addLinks([links])` + +[small]#Added in: REPLACEME# + +* `links` +{type-array}+ Span links. + +Add span links to this transaction. + +A transaction can refer to zero or more other transactions or spans (separate +from its parent). Span links will be shown in the Kibana APM app trace view. The +`link` argument is an object with a single "context" field that is a +`Transaction`, `Span`, OpenTelemetry `SpanContext` object, or W3C trace-context +'traceparent' string. +For example: `transaction.addLinks([{ context: anotherSpan }])`. diff --git a/index.d.ts b/index.d.ts index 7cc33d028e..681c86dc03 100644 --- a/index.d.ts +++ b/index.d.ts @@ -150,6 +150,8 @@ declare namespace apm { setLabel (name: string, value: LabelValue, stringify?: boolean): boolean; addLabels (labels: Labels, stringify?: boolean): boolean; setOutcome(outcome: Outcome): void; + addLink (link: Link): void; + addLinks (links: Link[]): void; startSpan( name?: string | null, @@ -201,6 +203,8 @@ declare namespace apm { addLabels (labels: Labels, stringify?: boolean): boolean; setOutcome(outcome: Outcome): void; setServiceTarget(type?: string | null, name?: string | null): void; + addLink (link: Link): void; + addLinks (links: Link[]): void; end (endTime?: number): void; } @@ -349,8 +353,8 @@ declare namespace apm { // equivalent APIs in "opentelemetry-js-api/src/trace/link.ts". Currently // span link attributes are not supported. export interface Link { - /** A W3C trace-context 'traceparent' string, Transaction, or Span. */ - context: Transaction | Span | string; // This is a SpanContext in OTel. + /** A W3C trace-context 'traceparent' string, Transaction, Span, or OTel SpanContext. */ + context: Transaction | Span | {traceId: string, spanId: string} | string; } export interface TransactionOptions { diff --git a/lib/instrumentation/generic-span.js b/lib/instrumentation/generic-span.js index 0fcd7f43ac..f049167e38 100644 --- a/lib/instrumentation/generic-span.js +++ b/lib/instrumentation/generic-span.js @@ -170,28 +170,31 @@ GenericSpan.prototype.addLabels = function (labels, stringify) { return true; }; -// This method is private because the APM agents spec says that (for OTel -// compat), adding links after span creation should not be allowed. -// https://github.com/elastic/apm/blob/main/specs/agents/span-links.md -// -// To support adding span links for SQS ReceiveMessage and equivalent, the -// message data isn't known until the *response*, after the span has been -// created. +// Add span links. // // @param {Array} links - An array of objects with a `context` property that is -// a Transaction, Span, or TraceParent instance, or a W3C trace-context -// 'traceparent' string. -GenericSpan.prototype._addLinks = function (links) { +// a Transaction, Span, or TraceParent instance; an OTel SpanContext object; +// or a W3C trace-context 'traceparent' string. +GenericSpan.prototype.addLinks = function (links) { if (links) { for (let i = 0; i < links.length; i++) { - const link = linkFromLinkArg(links[i]); - if (link) { - this._links.push(link); - } + this.addLink(links[i]); } } }; +// Add a span link. +// +// @param {Link} link - An object with a `context` property that is +// a Transaction, Span, or TraceParent instance; an OTel SpanContext object; +// or a W3C trace-context 'traceparent' string. +GenericSpan.prototype.addLink = function (linkArg) { + const link = linkFromLinkArg(linkArg); + if (link) { + this._links.push(link); + } +}; + GenericSpan.prototype._freezeOutcome = function () { this._isOutcomeFrozen = true; }; @@ -278,9 +281,9 @@ GenericSpan.prototype._serializeOTel = function (payload) { // span link as it will be serialized and sent to APM server. If the linkArg is // invalid, this will return null. // -// @param {Object} linkArg - An object with a `context` property that is a -// Transaction, Span, or TraceParent instance, or a W3C trace-context -// 'traceparent' string. +// @param {Object} linkArg - An object with a `context` property that is +// a Transaction, Span, or TraceParent instance; an OTel SpanContext object; +// or a W3C trace-context 'traceparent' string. function linkFromLinkArg(linkArg) { if (!linkArg || !linkArg.context) { return null; @@ -290,7 +293,13 @@ function linkFromLinkArg(linkArg) { let traceId; let spanId; - if (ctx._context instanceof TraceContext) { + if (ctx.traceId && ctx.spanId) { + // Duck-typing for an OTel SpanContext. APM intake v2 only supports the + // trace id and span id fields for span links, so we only need care about + // those attributes. + traceId = ctx.traceId; + spanId = ctx.spanId; + } else if (ctx._context instanceof TraceContext) { // Transaction or Span traceId = ctx._context.traceparent.traceId; spanId = ctx._context.traceparent.id; diff --git a/lib/instrumentation/modules/@aws-sdk/client-sqs.js b/lib/instrumentation/modules/@aws-sdk/client-sqs.js index e6fab7dd22..ab3bb5348d 100644 --- a/lib/instrumentation/modules/@aws-sdk/client-sqs.js +++ b/lib/instrumentation/modules/@aws-sdk/client-sqs.js @@ -160,7 +160,7 @@ function sqsMiddlewareFactory(client, agent) { // Links const links = getSpanLinksFromResponseData(result && result.output); if (links) { - span._addLinks(links); + span.addLinks(links); } // Metrics diff --git a/lib/instrumentation/modules/aws-sdk/sqs.js b/lib/instrumentation/modules/aws-sdk/sqs.js index 3586f55210..1ef51f534d 100644 --- a/lib/instrumentation/modules/aws-sdk/sqs.js +++ b/lib/instrumentation/modules/aws-sdk/sqs.js @@ -320,7 +320,7 @@ function instrumentationSqs( if (receiveMsgData) { const links = getSpanLinksFromResponseData(receiveMsgData); if (links) { - span._addLinks(links); + span.addLinks(links); } } diff --git a/lib/instrumentation/modules/kafkajs.js b/lib/instrumentation/modules/kafkajs.js index 8838f3dd64..c0e10b1685 100644 --- a/lib/instrumentation/modules/kafkajs.js +++ b/lib/instrumentation/modules/kafkajs.js @@ -238,7 +238,7 @@ module.exports = function (mod, agent, { version, enabled }) { } } } - trans._addLinks(links); + trans.addLinks(links); } let result, err; diff --git a/lib/lambda.js b/lib/lambda.js index b7d4d9ada5..587e50fbae 100644 --- a/lib/lambda.js +++ b/lib/lambda.js @@ -383,7 +383,7 @@ function setSqsData(agent, trans, event, context, faasId, isColdStart) { trans.setCloudContext(cloudContext); const links = spanLinksFromSqsRecords(event.Records); - trans._addLinks(links); + trans.addLinks(links); } function setSnsData(agent, trans, event, context, faasId, isColdStart) { @@ -424,7 +424,7 @@ function setSnsData(agent, trans, event, context, faasId, isColdStart) { trans.setCloudContext(cloudContext); const links = spanLinksFromSnsRecords(event.Records); - trans._addLinks(links); + trans.addLinks(links); } function setS3SingleData(trans, event, context, faasId, isColdStart) { diff --git a/lib/opentelemetry-bridge/OTelBridgeNonRecordingSpan.js b/lib/opentelemetry-bridge/OTelBridgeNonRecordingSpan.js index 7fef832d71..7b85d87eed 100644 --- a/lib/opentelemetry-bridge/OTelBridgeNonRecordingSpan.js +++ b/lib/opentelemetry-bridge/OTelBridgeNonRecordingSpan.js @@ -127,6 +127,14 @@ class OTelBridgeNonRecordingSpan { return this; } + addLink(_link) { + return this; + } + + addLinks(_links) { + return this; + } + end(_endTime) {} // isRecording always returns false for NonRecordingSpan. diff --git a/lib/opentelemetry-bridge/OTelSpan.js b/lib/opentelemetry-bridge/OTelSpan.js index 7ea1139ca2..62684a3c8e 100644 --- a/lib/opentelemetry-bridge/OTelSpan.js +++ b/lib/opentelemetry-bridge/OTelSpan.js @@ -167,6 +167,16 @@ class OTelSpan { return this; } + addLink(link) { + this._span.addLink(link); + return this; + } + + addLinks(links) { + this._span.addLinks(links); + return this; + } + end(otelEndTime) { oblog.apicall('%s.end(endTime=%s)', this, otelEndTime); const endTime = diff --git a/test/instrumentation/span.test.js b/test/instrumentation/span.test.js index 826bf902a3..5d57f70d52 100644 --- a/test/instrumentation/span.test.js +++ b/test/instrumentation/span.test.js @@ -263,6 +263,38 @@ test('#addLabels', function (t) { t.end(); }); +test('#addLink, #addLinks', function (t) { + var trans = new Transaction(agent); + var span = new Span(trans); + + const theTraceId = '00000000000000000000000000000001'; + span.addLink({ + context: { traceId: theTraceId, spanId: '0000000000000002' }, + }); + t.deepEqual(span._links, [ + { + trace_id: theTraceId, + span_id: '0000000000000002', + }, + ]); + + span.addLinks([ + { + context: { traceId: theTraceId, spanId: '0000000000000003' }, + }, + { + context: { traceId: theTraceId, spanId: '0000000000000004' }, + }, + ]); + t.deepEqual(span._links, [ + { trace_id: theTraceId, span_id: '0000000000000002' }, + { trace_id: theTraceId, span_id: '0000000000000003' }, + { trace_id: theTraceId, span_id: '0000000000000004' }, + ]); + + t.end(); +}); + test('span.sync', function (t) { var trans = agent.startTransaction(); @@ -528,6 +560,10 @@ test('Span API on ended span', function (t) { t.pass('span.addLabels(...) does not blow up'); span.setOutcome('failure'); t.pass('span.setOutcome(...) does not blow up'); + span.addLink({ context: { traceId: '001', spanId: '002' } }); + t.pass('span.addLink(...) does not blow up'); + span.addLinks([{ context: { traceId: '001', spanId: '002' } }]); + t.pass('span.addLinks(...) does not blow up'); span.end(42); t.pass('span.end(...) does not blow up'); diff --git a/test/instrumentation/transaction.test.js b/test/instrumentation/transaction.test.js index 13a36b845b..7fa4f51612 100644 --- a/test/instrumentation/transaction.test.js +++ b/test/instrumentation/transaction.test.js @@ -226,6 +226,37 @@ test('#addLabels', function (t) { t.end(); }); +test('#addLink, #addLinks', function (t) { + var trans = new Transaction(agent); + + const theTraceId = '00000000000000000000000000000001'; + trans.addLink({ + context: { traceId: theTraceId, spanId: '0000000000000002' }, + }); + t.deepEqual(trans._links, [ + { + trace_id: theTraceId, + span_id: '0000000000000002', + }, + ]); + + trans.addLinks([ + { + context: { traceId: theTraceId, spanId: '0000000000000003' }, + }, + { + context: { traceId: theTraceId, spanId: '0000000000000004' }, + }, + ]); + t.deepEqual(trans._links, [ + { trace_id: theTraceId, span_id: '0000000000000002' }, + { trace_id: theTraceId, span_id: '0000000000000003' }, + { trace_id: theTraceId, span_id: '0000000000000004' }, + ]); + + t.end(); +}); + test('#startSpan()', function (t) { t.test('basic', function (t) { var trans = new Transaction(agent); diff --git a/test/opentelemetry-bridge/.tav.yml b/test/opentelemetry-bridge/.tav.yml index 68b2a3b251..f9ac3def64 100644 --- a/test/opentelemetry-bridge/.tav.yml +++ b/test/opentelemetry-bridge/.tav.yml @@ -1,5 +1,5 @@ "@opentelemetry/api": - versions: '>=1.0.0 <1.9.0' + versions: '>=1.0.0 <1.10.0' node: '>=8.0.0' commands: - node OTelBridgeNonRecordingSpan.test.js diff --git a/test/opentelemetry-bridge/OTelBridgeNonRecordingSpan.test.js b/test/opentelemetry-bridge/OTelBridgeNonRecordingSpan.test.js index eaacad4ed0..e8edd46597 100644 --- a/test/opentelemetry-bridge/OTelBridgeNonRecordingSpan.test.js +++ b/test/opentelemetry-bridge/OTelBridgeNonRecordingSpan.test.js @@ -78,6 +78,13 @@ tape.test('OTelBridgeNonRecordingSpan', (suite) => { 'setStatus', ); t.equal(nrsOTelSpan.updateName('anotherName'), nrsOTelSpan, 'updateName'); + const linkContext = { + traceId: '8b46594050c89c3d87248476ed8e0c57', + spanId: 'ffe4cfa94865ee2a', + traceFlags: otel.TraceFlags.SAMPLED, + }; + t.equal(nrsOTelSpan.addLink(linkContext), nrsOTelSpan, 'addLink'); + t.equal(nrsOTelSpan.addLinks([linkContext]), nrsOTelSpan, 'addLinks'); t.equal(nrsOTelSpan.end(), undefined, 'end'); t.equal(nrsOTelSpan.isRecording(), false, 'isRecording'); t.equal( diff --git a/test/opentelemetry-bridge/fixtures.test.js b/test/opentelemetry-bridge/fixtures.test.js index e121884316..e70941062c 100644 --- a/test/opentelemetry-bridge/fixtures.test.js +++ b/test/opentelemetry-bridge/fixtures.test.js @@ -376,6 +376,7 @@ const cases = [ 'sSetStatusChildERROR.outcome', ); + // Span#updateName t.strictEqual( findObjInArray( events, @@ -386,6 +387,23 @@ const cases = [ 'sUpdateName', ); + // Span#addLink, Span#addLinks + t.deepEqual( + findObjInArray(events, 'transaction.name', 'sAddLinks').transaction + .links, + [ + { + trace_id: '8b46594050c89c3d87248476ed8e0c57', + span_id: 'ffe4cfa94865ee2a', + }, + { + trace_id: '8b46594050c89c3d87248476ed8e0c57', + span_id: 'ffe4cfa94865ee2a', + }, + ], + 'sAddLinks links', + ); + // Span#end function spanEndTimeIsApprox(transOrSpanName, t = Date.now()) { const foundTrans = findObjInArray( diff --git a/test/opentelemetry-bridge/fixtures/interface-span.js b/test/opentelemetry-bridge/fixtures/interface-span.js index 0fb136c4d6..3998358ef4 100644 --- a/test/opentelemetry-bridge/fixtures/interface-span.js +++ b/test/opentelemetry-bridge/fixtures/interface-span.js @@ -169,6 +169,19 @@ sUpdateName.updateName('three'); sUpdateName.end(); sUpdateName.updateName('four'); // updateName after end should *not* take +// Span#addLink, Span#addLinks +const sAddLinks = tracer.startSpan('sAddLinks'); +const linkContext = { + traceId: '8b46594050c89c3d87248476ed8e0c57', + spanId: 'ffe4cfa94865ee2a', + traceFlags: otel.TraceFlags.SAMPLED, +}; +rv = sAddLinks.addLink({ context: linkContext }); +assert.strictEqual(rv, sAddLinks, 'addLink return value is the span'); +rv = sAddLinks.addLinks([{ context: linkContext }]); +assert.strictEqual(rv, sAddLinks, 'addLinks return value is the span'); +sAddLinks.end(); + // Span#end // Specify approximately "now" in each of the supported TimeInput formats. // OTel HrTime is `[, ]`. diff --git a/test/opentelemetry-metrics/fixtures/.tav.yml b/test/opentelemetry-metrics/fixtures/.tav.yml index a138bc2416..ce1519300d 100644 --- a/test/opentelemetry-metrics/fixtures/.tav.yml +++ b/test/opentelemetry-metrics/fixtures/.tav.yml @@ -1,5 +1,5 @@ "@opentelemetry/api": - versions: '>=1.3.0 <1.9.0' + versions: '>=1.3.0 <1.10.0' node: '>=14.0.0' commands: - node ../fixtures.test.js diff --git a/test/opentelemetry-metrics/fixtures/package-lock.json b/test/opentelemetry-metrics/fixtures/package-lock.json index 9baeb9e0a6..3dde52bddd 100644 --- a/test/opentelemetry-metrics/fixtures/package-lock.json +++ b/test/opentelemetry-metrics/fixtures/package-lock.json @@ -22,27 +22,27 @@ } }, "node_modules/@opentelemetry/core": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.1.tgz", - "integrity": "sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.0.tgz", + "integrity": "sha512-n0B3s8rrqGrasTgNkXLKXzN0fXo+6IYP7M5b7AMsrZM33f/y6DS6kJ0Btd7SespASWq8bgL3taLo0oe0vB52IQ==", "dependencies": { - "@opentelemetry/semantic-conventions": "1.24.1" + "@opentelemetry/semantic-conventions": "1.25.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "node_modules/@opentelemetry/exporter-prometheus": { - "version": "0.51.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.51.1.tgz", - "integrity": "sha512-c8TrTlLm9JJRIHW6MtFv6ESoZRgXBXD/YrTRYylWiyYBOVbYHo1c5Qaw/j/thXDhkmYOYAn4LAhJZpLl5gBFEQ==", + "version": "0.52.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.52.0.tgz", + "integrity": "sha512-DJoCAtm6J1/rAP9oAjd5q5iq9/IKeiPLCHWOw+2QhPkgHHFvwKeOHnUp3xTC7RvpiuV2GQAV8Hih0CRHjehHJQ==", "dependencies": { - "@opentelemetry/core": "1.24.1", - "@opentelemetry/resources": "1.24.1", - "@opentelemetry/sdk-metrics": "1.24.1" + "@opentelemetry/core": "1.25.0", + "@opentelemetry/resources": "1.25.0", + "@opentelemetry/sdk-metrics": "1.25.0" }, "engines": { "node": ">=14" @@ -52,40 +52,40 @@ } }, "node_modules/@opentelemetry/resources": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.24.1.tgz", - "integrity": "sha512-cyv0MwAaPF7O86x5hk3NNgenMObeejZFLJJDVuSeSMIsknlsj3oOZzRv3qSzlwYomXsICfBeFFlxwHQte5mGXQ==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.25.0.tgz", + "integrity": "sha512-iHjydPMYJ+Li1auveJCq2rp5U2h6Mhq8BidiyE0jfVlDTFyR1ny8AfJHfmFzJ/RAM8vT8L7T21kcmGybxZC7lQ==", "dependencies": { - "@opentelemetry/core": "1.24.1", - "@opentelemetry/semantic-conventions": "1.24.1" + "@opentelemetry/core": "1.25.0", + "@opentelemetry/semantic-conventions": "1.25.0" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.9.0" + "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.24.1.tgz", - "integrity": "sha512-FrAqCbbGao9iKI+Mgh+OsC9+U2YMoXnlDHe06yH7dvavCKzE3S892dGtX54+WhSFVxHR/TMRVJiK/CV93GR0TQ==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.0.tgz", + "integrity": "sha512-IF+Sv4VHgBr/BPMKabl+GouJIhEqAOexCHgXVTISdz3q9P9H/uA8ScCF+22gitQ69aFtESbdYOV+Fen5+avQng==", "dependencies": { - "@opentelemetry/core": "1.24.1", - "@opentelemetry/resources": "1.24.1", + "@opentelemetry/core": "1.25.0", + "@opentelemetry/resources": "1.25.0", "lodash.merge": "^4.6.2" }, "engines": { "node": ">=14" }, "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.9.0" + "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.1.tgz", - "integrity": "sha512-VkliWlS4/+GHLLW7J/rVBA00uXus1SWvwFvcUDxDwmFxYfg/2VI6ekwdXS28cjI8Qz2ky2BzG8OUHo+WeYIWqw==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.0.tgz", + "integrity": "sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ==", "engines": { "node": ">=14" } @@ -103,46 +103,46 @@ "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" }, "@opentelemetry/core": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.24.1.tgz", - "integrity": "sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.0.tgz", + "integrity": "sha512-n0B3s8rrqGrasTgNkXLKXzN0fXo+6IYP7M5b7AMsrZM33f/y6DS6kJ0Btd7SespASWq8bgL3taLo0oe0vB52IQ==", "requires": { - "@opentelemetry/semantic-conventions": "1.24.1" + "@opentelemetry/semantic-conventions": "1.25.0" } }, "@opentelemetry/exporter-prometheus": { - "version": "0.51.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.51.1.tgz", - "integrity": "sha512-c8TrTlLm9JJRIHW6MtFv6ESoZRgXBXD/YrTRYylWiyYBOVbYHo1c5Qaw/j/thXDhkmYOYAn4LAhJZpLl5gBFEQ==", + "version": "0.52.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.52.0.tgz", + "integrity": "sha512-DJoCAtm6J1/rAP9oAjd5q5iq9/IKeiPLCHWOw+2QhPkgHHFvwKeOHnUp3xTC7RvpiuV2GQAV8Hih0CRHjehHJQ==", "requires": { - "@opentelemetry/core": "1.24.1", - "@opentelemetry/resources": "1.24.1", - "@opentelemetry/sdk-metrics": "1.24.1" + "@opentelemetry/core": "1.25.0", + "@opentelemetry/resources": "1.25.0", + "@opentelemetry/sdk-metrics": "1.25.0" } }, "@opentelemetry/resources": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.24.1.tgz", - "integrity": "sha512-cyv0MwAaPF7O86x5hk3NNgenMObeejZFLJJDVuSeSMIsknlsj3oOZzRv3qSzlwYomXsICfBeFFlxwHQte5mGXQ==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.25.0.tgz", + "integrity": "sha512-iHjydPMYJ+Li1auveJCq2rp5U2h6Mhq8BidiyE0jfVlDTFyR1ny8AfJHfmFzJ/RAM8vT8L7T21kcmGybxZC7lQ==", "requires": { - "@opentelemetry/core": "1.24.1", - "@opentelemetry/semantic-conventions": "1.24.1" + "@opentelemetry/core": "1.25.0", + "@opentelemetry/semantic-conventions": "1.25.0" } }, "@opentelemetry/sdk-metrics": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.24.1.tgz", - "integrity": "sha512-FrAqCbbGao9iKI+Mgh+OsC9+U2YMoXnlDHe06yH7dvavCKzE3S892dGtX54+WhSFVxHR/TMRVJiK/CV93GR0TQ==", + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.0.tgz", + "integrity": "sha512-IF+Sv4VHgBr/BPMKabl+GouJIhEqAOexCHgXVTISdz3q9P9H/uA8ScCF+22gitQ69aFtESbdYOV+Fen5+avQng==", "requires": { - "@opentelemetry/core": "1.24.1", - "@opentelemetry/resources": "1.24.1", + "@opentelemetry/core": "1.25.0", + "@opentelemetry/resources": "1.25.0", "lodash.merge": "^4.6.2" } }, "@opentelemetry/semantic-conventions": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.24.1.tgz", - "integrity": "sha512-VkliWlS4/+GHLLW7J/rVBA00uXus1SWvwFvcUDxDwmFxYfg/2VI6ekwdXS28cjI8Qz2ky2BzG8OUHo+WeYIWqw==" + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.0.tgz", + "integrity": "sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ==" }, "lodash.merge": { "version": "4.6.2", diff --git a/test/types/index.ts b/test/types/index.ts index fbcd03cd5f..e71936eb2a 100644 --- a/test/types/index.ts +++ b/test/types/index.ts @@ -192,6 +192,11 @@ apm.logger.fatal('') trans.startSpan('foo', 'type', 'subtype', { exitSpan: true }) trans.startSpan('foo', { links: [{ context: '00-12345678901234567890123456789012-1234567890123456-01' }] }) + trans.addLink({ context: '00-12345678901234567890123456789012-1234567890123456-01' }) + trans.addLink({ context: { traceId: '12345678901234567890123456789012', spanId: '1234567890123456' }}) + trans.addLinks([{ context: '00-12345678901234567890123456789012-1234567890123456-01' }]) + trans.addLinks([{ context: { traceId: '12345678901234567890123456789012', spanId: '1234567890123456' }}]) + function ensureParentId (id: string) {} ensureParentId(trans.ensureParentId()) @@ -225,6 +230,11 @@ apm.logger.fatal('') span.setServiceTarget(null, null) span.setServiceTarget() + span.addLink({ context: '00-12345678901234567890123456789012-1234567890123456-01' }) + span.addLink({ context: { traceId: '12345678901234567890123456789012', spanId: '1234567890123456' }}) + span.addLinks([{ context: '00-12345678901234567890123456789012-1234567890123456-01' }]) + span.addLinks([{ context: { traceId: '12345678901234567890123456789012', spanId: '1234567890123456' }}]) + span.end() span.end(42) } From a4758926b12fb48a62f77c1baacf1a4d17778ebf Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Thu, 13 Jun 2024 09:53:37 -0700 Subject: [PATCH 031/396] release 4.7.0 (#4083) --- CHANGELOG.asciidoc | 12 ++++++++++++ docs/span-api.asciidoc | 4 ++-- docs/transaction-api.asciidoc | 4 ++-- package-lock.json | 4 ++-- package.json | 2 +- 5 files changed, 19 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 99a29b0b91..c703673070 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -33,6 +33,18 @@ Notes: See the <> guide. +[[release-notes-4.7.0]] +==== 4.7.0 - 2024/06/13 + +[float] +===== Features + +* Update <> support to `@opentelemetry/api` version 1.9.0. + ({issues}4078[#4078]) ++ +Support for the new `addLink` and `addLinks` methods on Span have been added. +However, support for the new synchronous gauge have not yet been added. + [[release-notes-4.6.0]] ==== 4.6.0 - 2024/06/05 diff --git a/docs/span-api.asciidoc b/docs/span-api.asciidoc index 52a6dff259..80b0cc7a41 100644 --- a/docs/span-api.asciidoc +++ b/docs/span-api.asciidoc @@ -246,7 +246,7 @@ If this method is not called, the service target values are inferred from other [[span-addlink]] ==== `span.addLink(link)` -[small]#Added in: REPLACEME# +[small]#Added in: v4.7.0# * `link` +{type-link}+ @@ -260,7 +260,7 @@ For example: `span.addLink({ context: anotherSpan })`. [[span-addlinks]] ==== `span.addLinks([links])` -[small]#Added in: REPLACEME# +[small]#Added in: v4.7.0# * `links` +{type-array}+ Span links. diff --git a/docs/transaction-api.asciidoc b/docs/transaction-api.asciidoc index 6d69d8ff67..f55eb0ab45 100644 --- a/docs/transaction-api.asciidoc +++ b/docs/transaction-api.asciidoc @@ -312,7 +312,7 @@ The `setOutcome` method allows an end user to override the Node.js agent's defau [[transaction-addlink]] ==== `transaction.addLink(link)` -[small]#Added in: REPLACEME# +[small]#Added in: v4.7.0# * `link` +{type-link}+ @@ -326,7 +326,7 @@ For example: `transaction.addLink({ context: anotherSpan })`. [[transaction-addlinks]] ==== `transaction.addLinks([links])` -[small]#Added in: REPLACEME# +[small]#Added in: v4.7.0# * `links` +{type-array}+ Span links. diff --git a/package-lock.json b/package-lock.json index 81a155e767..dbccba90f9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "elastic-apm-node", - "version": "4.6.0", + "version": "4.7.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "elastic-apm-node", - "version": "4.6.0", + "version": "4.7.0", "license": "BSD-2-Clause", "dependencies": { "@elastic/ecs-pino-format": "^1.5.0", diff --git a/package.json b/package.json index 78153ca87a..95bd52a120 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "elastic-apm-node", - "version": "4.6.0", + "version": "4.7.0", "description": "The official Elastic APM agent for Node.js", "type": "commonjs", "main": "index.js", From a3ae881ef0b8eca48773bf67fff5640470044725 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 13:18:02 +0200 Subject: [PATCH 032/396] chore(deps-dev): bump mysql2 from 3.10.0 to 3.10.1 (#4095) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index dbccba90f9..6c0cfd8a1f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13614,9 +13614,9 @@ } }, "node_modules/mysql2": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.0.tgz", - "integrity": "sha512-qx0mfWYt1DpTPkw8mAcHW/OwqqyNqBLBHvY5IjN8+icIYTjt6znrgYJ+gxqNNRpVknb5Wc/gcCM4XjbCR0j5tw==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.1.tgz", + "integrity": "sha512-6zo1T3GILsXMCex3YEu7hCz2OXLUarxFsxvFcUHWMpkPtmZLeTTWgRdc1gWyNJiYt6AxITmIf9bZDRy/jAfWew==", "dev": true, "dependencies": { "denque": "^2.1.0", @@ -28697,9 +28697,9 @@ } }, "mysql2": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.0.tgz", - "integrity": "sha512-qx0mfWYt1DpTPkw8mAcHW/OwqqyNqBLBHvY5IjN8+icIYTjt6znrgYJ+gxqNNRpVknb5Wc/gcCM4XjbCR0j5tw==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.1.tgz", + "integrity": "sha512-6zo1T3GILsXMCex3YEu7hCz2OXLUarxFsxvFcUHWMpkPtmZLeTTWgRdc1gWyNJiYt6AxITmIf9bZDRy/jAfWew==", "dev": true, "requires": { "denque": "^2.1.0", From 1b954cfbb7505c79a6bd9cb3cc2fddfcf118428b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 13:19:31 +0200 Subject: [PATCH 033/396] chore(deps-dev): bump ws from 7.5.9 to 7.5.10 (#4094) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6c0cfd8a1f..5e649dc38e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18046,9 +18046,9 @@ } }, "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, "engines": { "node": ">=8.3.0" @@ -32148,9 +32148,9 @@ } }, "ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true }, "xmlbuilder2": { From e312e61adf7f262d1cbbdce4127698bd21394630 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 13:21:23 +0200 Subject: [PATCH 034/396] chore(deps-dev): bump undici from 6.18.2 to 6.19.0 (#4093) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5e649dc38e..06b1f05fda 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17544,9 +17544,9 @@ } }, "node_modules/undici": { - "version": "6.18.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.18.2.tgz", - "integrity": "sha512-o/MQLTwRm9IVhOqhZ0NQ9oXax1ygPjw6Vs+Vq/4QRjbOAC3B1GCHy7TYxxbExKlb7bzDRzt9vBWU6BDz0RFfYg==", + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.0.tgz", + "integrity": "sha512-9gGwbSLgYMjp4r6M5P9bhqhx1E+RyUIHqZE0r7BmrRoqroJUG6xlVu5TXH9DnwmCPLkcaVNrcYtxUE9d3InnyQ==", "dev": true, "engines": { "node": ">=18.17" @@ -31754,9 +31754,9 @@ "dev": true }, "undici": { - "version": "6.18.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.18.2.tgz", - "integrity": "sha512-o/MQLTwRm9IVhOqhZ0NQ9oXax1ygPjw6Vs+Vq/4QRjbOAC3B1GCHy7TYxxbExKlb7bzDRzt9vBWU6BDz0RFfYg==", + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.0.tgz", + "integrity": "sha512-9gGwbSLgYMjp4r6M5P9bhqhx1E+RyUIHqZE0r7BmrRoqroJUG6xlVu5TXH9DnwmCPLkcaVNrcYtxUE9d3InnyQ==", "dev": true }, "undici-types": { From 26f7b82d1105b28ac23822b88eecad3db7f84696 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 13:22:31 +0200 Subject: [PATCH 035/396] chore(deps-dev): bump prettier from 3.3.1 to 3.3.2 (#4092) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 06b1f05fda..ccb26bed6b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14973,9 +14973,9 @@ } }, "node_modules/prettier": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.1.tgz", - "integrity": "sha512-7CAwy5dRsxs8PHXT3twixW9/OEll8MLE0VRPCJyl7CkS6VHGPSlsVaWTiASPTyGyYRyApxlaWTzwUxVNrhcwDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", + "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -29730,9 +29730,9 @@ "dev": true }, "prettier": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.1.tgz", - "integrity": "sha512-7CAwy5dRsxs8PHXT3twixW9/OEll8MLE0VRPCJyl7CkS6VHGPSlsVaWTiASPTyGyYRyApxlaWTzwUxVNrhcwDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", + "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", "dev": true }, "prettier-linter-helpers": { From c837ecd4a748b3c50be744de0608de7b4a27990b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 13:23:39 +0200 Subject: [PATCH 036/396] chore(deps-dev): bump @hapi/hapi from 21.3.9 to 21.3.10 (#4090) --- package-lock.json | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index ccb26bed6b..41cb639f8b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4698,9 +4698,9 @@ } }, "node_modules/@hapi/catbox-memory": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@hapi/catbox-memory/-/catbox-memory-6.0.1.tgz", - "integrity": "sha512-sVb+/ZxbZIvaMtJfAbdyY+QJUQg9oKTwamXpEg/5xnfG5WbJLTjvEn4kIGKz9pN3ENNbIL/bIdctmHmqi/AdGA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/catbox-memory/-/catbox-memory-6.0.2.tgz", + "integrity": "sha512-H1l4ugoFW/ZRkqeFrIo8p1rWN0PA4MDTfu4JmcoNDvnY975o29mqoZblqFTotxNHlEkMPpIiIBJTV+Mbi+aF0g==", "dev": true, "dependencies": { "@hapi/boom": "^10.0.1", @@ -4708,9 +4708,9 @@ } }, "node_modules/@hapi/catbox-memory/node_modules/@hapi/hoek": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.2.tgz", - "integrity": "sha512-aKmlCO57XFZ26wso4rJsW4oTUnrgTFw2jh3io7CAtO9w4UltBNwRXvXIVzzyfkaaLRo3nluP/19msA8vDUUuKw==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", "dev": true }, "node_modules/@hapi/catbox/node_modules/@hapi/hoek": { @@ -4747,9 +4747,9 @@ "dev": true }, "node_modules/@hapi/hapi": { - "version": "21.3.9", - "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.3.9.tgz", - "integrity": "sha512-AT5m+Rb8iSOFG3zWaiEuTJazf4HDYl5UpRpyxMJ3yR+g8tOEmqDv6FmXrLHShdvDOStAAepHGnr1G7egkFSRdw==", + "version": "21.3.10", + "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.3.10.tgz", + "integrity": "sha512-CmEcmTREW394MaGGKvWpoOK4rG8tKlpZLs30tbaBzhCrhiL2Ti/HARek9w+8Ya4nMBGcd+kDAzvU44OX8Ms0Jg==", "dev": true, "dependencies": { "@hapi/accept": "^6.0.1", @@ -4758,7 +4758,7 @@ "@hapi/bounce": "^3.0.1", "@hapi/call": "^9.0.1", "@hapi/catbox": "^12.1.1", - "@hapi/catbox-memory": "^6.0.1", + "@hapi/catbox-memory": "^6.0.2", "@hapi/heavy": "^8.0.1", "@hapi/hoek": "^11.0.2", "@hapi/mimos": "^7.0.1", @@ -21772,9 +21772,9 @@ } }, "@hapi/catbox-memory": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@hapi/catbox-memory/-/catbox-memory-6.0.1.tgz", - "integrity": "sha512-sVb+/ZxbZIvaMtJfAbdyY+QJUQg9oKTwamXpEg/5xnfG5WbJLTjvEn4kIGKz9pN3ENNbIL/bIdctmHmqi/AdGA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/catbox-memory/-/catbox-memory-6.0.2.tgz", + "integrity": "sha512-H1l4ugoFW/ZRkqeFrIo8p1rWN0PA4MDTfu4JmcoNDvnY975o29mqoZblqFTotxNHlEkMPpIiIBJTV+Mbi+aF0g==", "dev": true, "requires": { "@hapi/boom": "^10.0.1", @@ -21782,9 +21782,9 @@ }, "dependencies": { "@hapi/hoek": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.2.tgz", - "integrity": "sha512-aKmlCO57XFZ26wso4rJsW4oTUnrgTFw2jh3io7CAtO9w4UltBNwRXvXIVzzyfkaaLRo3nluP/19msA8vDUUuKw==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", "dev": true } } @@ -21814,9 +21814,9 @@ "dev": true }, "@hapi/hapi": { - "version": "21.3.9", - "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.3.9.tgz", - "integrity": "sha512-AT5m+Rb8iSOFG3zWaiEuTJazf4HDYl5UpRpyxMJ3yR+g8tOEmqDv6FmXrLHShdvDOStAAepHGnr1G7egkFSRdw==", + "version": "21.3.10", + "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.3.10.tgz", + "integrity": "sha512-CmEcmTREW394MaGGKvWpoOK4rG8tKlpZLs30tbaBzhCrhiL2Ti/HARek9w+8Ya4nMBGcd+kDAzvU44OX8Ms0Jg==", "dev": true, "requires": { "@hapi/accept": "^6.0.1", @@ -21825,7 +21825,7 @@ "@hapi/bounce": "^3.0.1", "@hapi/call": "^9.0.1", "@hapi/catbox": "^12.1.1", - "@hapi/catbox-memory": "^6.0.1", + "@hapi/catbox-memory": "^6.0.2", "@hapi/heavy": "^8.0.1", "@hapi/hoek": "^11.0.2", "@hapi/mimos": "^7.0.1", From 73dcf899e21199f2928acbffca896c5e5222d9ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 13:24:12 +0200 Subject: [PATCH 037/396] chore(deps-dev): bump fastify from 4.27.0 to 4.28.0 (#4089) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 41cb639f8b..90272cebbb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10305,9 +10305,9 @@ } }, "node_modules/fastify": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.27.0.tgz", - "integrity": "sha512-ci9IXzbigB8dyi0mSy3faa3Bsj0xWAPb9JeT4KRzubdSb6pNhcADRUaXCBml6V1Ss/a05kbtQls5LBmhHydoTA==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.28.0.tgz", + "integrity": "sha512-HhW7UHW07YlqH5qpS0af8d2Gl/o98DhJ8ZDQWHRNDnzeOhZvtreWsX8xanjGgXmkYerGbo8ax/n40Dpwqkot8Q==", "dev": true, "funding": [ { @@ -26213,9 +26213,9 @@ } }, "fastify": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.27.0.tgz", - "integrity": "sha512-ci9IXzbigB8dyi0mSy3faa3Bsj0xWAPb9JeT4KRzubdSb6pNhcADRUaXCBml6V1Ss/a05kbtQls5LBmhHydoTA==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.28.0.tgz", + "integrity": "sha512-HhW7UHW07YlqH5qpS0af8d2Gl/o98DhJ8ZDQWHRNDnzeOhZvtreWsX8xanjGgXmkYerGbo8ax/n40Dpwqkot8Q==", "dev": true, "requires": { "@fastify/ajv-compiler": "^3.5.0", From a09059ee72285bffb5e263ec6bf1f2e17d8e65f8 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Mon, 17 Jun 2024 09:04:25 -0700 Subject: [PATCH 038/396] test: fix 'localhost' ipv4 vs. ipv6 test failures in GH actions TAV tests (#4085) --- .../instrumentation/modules/hapi/hapi.test.js | 24 +++++++++---------- .../pages/a-throw-in-page-handler.js | 2 +- .../instrumentation/modules/next/next.test.js | 10 ++++---- test/opentelemetry-metrics/fixtures.test.js | 2 +- .../fixtures/use-just-otel-sdk.js | 4 ++-- ...otel-api-with-registered-meter-provider.js | 4 ++-- 6 files changed, 22 insertions(+), 24 deletions(-) diff --git a/test/instrumentation/modules/hapi/hapi.test.js b/test/instrumentation/modules/hapi/hapi.test.js index 7cf304f8a7..07b0f44ed8 100644 --- a/test/instrumentation/modules/hapi/hapi.test.js +++ b/test/instrumentation/modules/hapi/hapi.test.js @@ -47,7 +47,7 @@ test('extract URL from request', function (t) { t.strictEqual(request.url.pathname, '/captureError'); t.strictEqual(request.url.search, '?foo=bar'); t.strictEqual(request.url.raw, '/captureError?foo=bar'); - t.strictEqual(request.url.hostname, 'localhost'); + t.strictEqual(request.url.hostname, '127.0.0.1'); t.strictEqual(request.url.port, String(server.info.port)); server.stop(noop); t.end(); @@ -57,7 +57,7 @@ test('extract URL from request', function (t) { var server = startServer(function (err, port) { t.error(err, 'no error from startServer'); - http.get('http://localhost:' + port + '/captureError?foo=bar'); + http.get('http://127.0.0.1:' + port + '/captureError?foo=bar'); }); }); @@ -71,7 +71,7 @@ test('route naming', function (t) { var server = startServer(function (err, port) { t.error(err); - http.get('http://localhost:' + port + '/hello', function (res) { + http.get('http://127.0.0.1:' + port + '/hello', function (res) { t.strictEqual(res.statusCode, 200); res.on('data', function (chunk) { t.strictEqual(chunk.toString(), 'hello world'); @@ -103,7 +103,7 @@ test('captureBody', function (t) { const cReq = http.request( { method: 'POST', - hostname: 'localhost', + hostname: '127.0.0.1', port, path: '/postSomeData', headers: { @@ -383,7 +383,7 @@ test('request error logging with Error', function (t) { runServer(server, function (err) { t.error(err, 'start error'); - http.get('http://localhost:' + server.info.port + '/error', function (res) { + http.get('http://127.0.0.1:' + server.info.port + '/error', function (res) { t.strictEqual(res.statusCode, 200); res.resume().on('end', function () { @@ -439,7 +439,7 @@ test('request error logging with Error does not affect event tags', function (t) t.deepEqual(event.tags, ['elastic-apm', 'error']); }); - http.get('http://localhost:' + server.info.port + '/error', function (res) { + http.get('http://127.0.0.1:' + server.info.port + '/error', function (res) { t.strictEqual(res.statusCode, 200); res.resume().on('end', function () { @@ -484,7 +484,7 @@ test('request error logging with String', function (t) { runServer(server, function (err) { t.error(err, 'start error'); - http.get('http://localhost:' + server.info.port + '/error', function (res) { + http.get('http://127.0.0.1:' + server.info.port + '/error', function (res) { t.strictEqual(res.statusCode, 200); res.resume().on('end', function () { @@ -531,7 +531,7 @@ test('request error logging with Object', function (t) { runServer(server, function (err) { t.error(err, 'start error'); - http.get('http://localhost:' + server.info.port + '/error', function (res) { + http.get('http://127.0.0.1:' + server.info.port + '/error', function (res) { t.strictEqual(res.statusCode, 200); res.resume().on('end', function () { @@ -556,7 +556,7 @@ test('error handling', function (t) { var server = startServer(function (err, port) { t.error(err); - http.get('http://localhost:' + port + '/error', function (res) { + http.get('http://127.0.0.1:' + port + '/error', function (res) { t.strictEqual(res.statusCode, 500); res.on('data', function (chunk) { var data = JSON.parse(chunk.toString()); @@ -574,16 +574,14 @@ test('error handling', function (t) { }); function makeServer(opts) { - // Specify 'localhost' to avoid Hapi default of '0.0.0.0' which ties to - // IPv4. We want a later HTTP client request using 'localhost' to work. var server; if (semver.satisfies(pkg.version, '<17')) { server = new Hapi.Server(); opts = opts || {}; - opts.host = opts.host || 'localhost'; + opts.host = opts.host || '127.0.0.1'; server.connection(opts); } else { - server = new Hapi.Server({ host: 'localhost' }); + server = new Hapi.Server({ host: '127.0.0.1' }); } return server; } diff --git a/test/instrumentation/modules/next/a-nextjs-app/pages/a-throw-in-page-handler.js b/test/instrumentation/modules/next/a-nextjs-app/pages/a-throw-in-page-handler.js index d9c20343bb..65801df323 100644 --- a/test/instrumentation/modules/next/a-nextjs-app/pages/a-throw-in-page-handler.js +++ b/test/instrumentation/modules/next/a-nextjs-app/pages/a-throw-in-page-handler.js @@ -16,7 +16,7 @@ export async function getServerSideProps() { function AThrowInPageHandler({ currTime }) { // If this is called from a browser-side click of a , e.g. as on the // index.js page, then this function is executed client-side. If called - // via separately visiting http://localhost:3000/a-throw-in-page-handler + // via separately visiting http://127.0.0.1:3000/a-throw-in-page-handler // or via `curl -i ...`, then this is executed server-side. Only in the // latter case will the Node.js APM agent capture an error, of course. throw new Error('throw in page handler'); diff --git a/test/instrumentation/modules/next/next.test.js b/test/instrumentation/modules/next/next.test.js index 8768db49e5..5918a4cdd7 100644 --- a/test/instrumentation/modules/next/next.test.js +++ b/test/instrumentation/modules/next/next.test.js @@ -557,7 +557,7 @@ function waitForServerReady(t, cb) { const pollForServerReady = () => { const req = http.get( - 'http://localhost:3000/api/an-api-endpoint', + 'http://127.0.0.1:3000/api/an-api-endpoint', { agent: false, timeout: 500, @@ -611,7 +611,7 @@ async function makeTestRequest(t, testReq, buildId) { if (typeof reqOpts === 'function') { reqOpts = reqOpts(buildId); } - const url = `http://localhost:3000${reqOpts.path}`; + const url = `http://127.0.0.1:3000${reqOpts.path}`; t.comment( `makeTestRequest: ${testReq.testName} (${reqOpts.method} ${url})`, ); @@ -862,9 +862,9 @@ tape.test('-- prod server tests --', (suite) => { // the actual server because the `npm` process is gone. nextServerProc = spawn( path.normalize('./node_modules/.bin/next'), - // Be explicit about "localhost" here, otherwise with node v18 we can + // Be explicit about "127.0.0.1" here, otherwise with node v18 we can // get the server listening on IPv6 and the client connecting on IPv4. - ['start', '-H', 'localhost'], + ['start', '-H', '127.0.0.1'], { shell: os.platform() === 'win32', cwd: testAppDir, @@ -962,7 +962,7 @@ tape.test('-- dev server tests --', (suite) => { // See the warning notes for `spawn()` above. The same apply here. nextServerProc = spawn( path.normalize('./node_modules/.bin/next'), - ['dev', '-H', 'localhost'], + ['dev', '-H', '127.0.0.1'], { shell: os.platform() === 'win32', cwd: testAppDir, diff --git a/test/opentelemetry-metrics/fixtures.test.js b/test/opentelemetry-metrics/fixtures.test.js index 2267518a0c..5cfd8b9633 100644 --- a/test/opentelemetry-metrics/fixtures.test.js +++ b/test/opentelemetry-metrics/fixtures.test.js @@ -147,7 +147,7 @@ async function checkEventsHaveTestMetrics(t, events, extraMetricNames = []) { async function checkHasPrometheusMetrics(t) { const { statusCode, body } = await undici.request( - 'http://localhost:9464/metrics', + 'http://127.0.0.1:9464/metrics', ); t.equal(statusCode, 200, 'prometheus exporter is still working'); const text = await body.text(); diff --git a/test/opentelemetry-metrics/fixtures/use-just-otel-sdk.js b/test/opentelemetry-metrics/fixtures/use-just-otel-sdk.js index 5517003948..078c32f56e 100644 --- a/test/opentelemetry-metrics/fixtures/use-just-otel-sdk.js +++ b/test/opentelemetry-metrics/fixtures/use-just-otel-sdk.js @@ -8,7 +8,7 @@ // Run without the APM agent this script will export metrics via a Prometheus // endpoint: -// curl -i http://localhost:9464/metrics +// curl -i http://127.0.0.1:9464/metrics // // With the APM agent running we also expect periodic metricsets sent to APM // server, because the agent will add its MetricReader to the created @@ -21,7 +21,7 @@ const { } = require('@opentelemetry/sdk-metrics'); const { PrometheusExporter } = require('@opentelemetry/exporter-prometheus'); -const exporter = new PrometheusExporter({ host: 'localhost' }); +const exporter = new PrometheusExporter({ host: '127.0.0.1' }); const meterProvider = new MeterProvider({ views: [ new View({ diff --git a/test/opentelemetry-metrics/fixtures/use-otel-api-with-registered-meter-provider.js b/test/opentelemetry-metrics/fixtures/use-otel-api-with-registered-meter-provider.js index 42c28d2a33..b0231d3e70 100644 --- a/test/opentelemetry-metrics/fixtures/use-otel-api-with-registered-meter-provider.js +++ b/test/opentelemetry-metrics/fixtures/use-otel-api-with-registered-meter-provider.js @@ -8,7 +8,7 @@ // Run without the APM agent this script will export metrics via a Prometheus // endpoint: -// curl -i http://localhost:9464/metrics +// curl -i http://127.0.0.1:9464/metrics // // With the APM agent running we also expect periodic metricsets sent to APM // server, because the agent will add its MetricReader to the created @@ -22,7 +22,7 @@ const otel = require('@opentelemetry/api'); const { MeterProvider } = require('@opentelemetry/sdk-metrics'); const { PrometheusExporter } = require('@opentelemetry/exporter-prometheus'); -const exporter = new PrometheusExporter({ host: 'localhost' }); +const exporter = new PrometheusExporter({ host: '127.0.0.1' }); const meterProvider = new MeterProvider(); meterProvider.addMetricReader(exporter); otel.metrics.setGlobalMeterProvider(meterProvider); From 62e3022a179fa18b29c4eaa348e977d0b7b220ce Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Mon, 17 Jun 2024 09:05:40 -0700 Subject: [PATCH 039/396] chore: improve update-4x-branch.sh script instructions for the docs-update PR (#4086) I noticed that the 'gh pr ...' command did not create a PR filled with the intended title. That was due to the '--fill' option that we don't want. This also adds a better body, so that the release PR will always get a link-back from the docs update PR. --- dev-utils/update-4x-branch.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dev-utils/update-4x-branch.sh b/dev-utils/update-4x-branch.sh index 6166f6ba35..b82932e26f 100755 --- a/dev-utils/update-4x-branch.sh +++ b/dev-utils/update-4x-branch.sh @@ -65,8 +65,9 @@ git log --pretty=format:"%h" $LASTTAG...$TARGTAG \ git cherry-pick $sha done +RELEASE_PR=$(git log --pretty=format:"%s" -1 $TARGTAG | sed -E 's/^.* \(\#([0-9]+)\)$/\1/') echo echo "# You can create a PR now with:" echo " cd $WRKDIR/apm-agent-nodejs" -echo " gh pr create --fill -w -B 4.x -t 'docs: update 4.x branch for $TARGTAG release'" +echo " gh pr create -w -B 4.x -t 'docs: update 4.x branch for $TARGTAG release' --body 'Refs: #$RELEASE_PR (release PR)'" From 4c57383a25c2188629d2bbe26ea8b79eaec73bff Mon Sep 17 00:00:00 2001 From: Jan Calanog Date: Thu, 27 Jun 2024 10:24:20 +0200 Subject: [PATCH 040/396] Use keyless authentication in release (#4109) --- .github/workflows/release.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 50dc5974c2..2e6ddc020c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,9 +18,6 @@ jobs: runs-on: ubuntu-latest env: DOCKER_IMAGE_NAME: docker.elastic.co/observability/apm-agent-nodejs - # TODO: use keyless - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} steps: - uses: actions/checkout@v4 with: @@ -118,6 +115,10 @@ jobs: subject-digest: ${{ steps.docker-push-wolfi.outputs.digest }} push-to-registry: true + - uses: elastic/oblt-actions/aws/auth@v1.10.0 + with: + aws-account-id: "267093732750" + - name: Publish AWS lambda (only for tag release) if: startsWith(github.ref, 'refs/tags') run: make -C .ci publish-in-all-aws-regions create-arn-file From fffa6400d3c5e506a4c6a64cd5589f0811bd167e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Jun 2024 11:45:51 -0700 Subject: [PATCH 041/396] chore(deps): bump the github-actions group across 1 directory with 2 updates (#4099) Updates `actions/attest-build-provenance` from 1.2.0 to 1.3.2 Updates `docker/build-push-action` from 5.3.0 to 6.1.0 --- .github/workflows/release.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2e6ddc020c..91b11c8199 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -44,7 +44,7 @@ jobs: - run: make -C .ci dist - name: Attest Lambda layer zip - uses: actions/attest-build-provenance@49df96e17e918a15956db358890b08e61c704919 # v1.2.0 + uses: actions/attest-build-provenance@bdd51370e0416ac948727f861e03c2f05d32d78e # v1.3.2 with: subject-path: "${{ github.workspace }}/build/aws/elastic-apm-node-lambda-layer-*.zip" @@ -63,7 +63,7 @@ jobs: - name: Build and Push Docker Image id: docker-push - uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # v5.3.0 + uses: docker/build-push-action@31159d49c0d4756269a0940a750801a1ea5d7003 # v6.1.0 with: context: . platforms: linux/amd64,linux/arm64 @@ -75,7 +75,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image - uses: actions/attest-build-provenance@49df96e17e918a15956db358890b08e61c704919 # v1.2.0 + uses: actions/attest-build-provenance@bdd51370e0416ac948727f861e03c2f05d32d78e # v1.3.2 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push.outputs.digest }} @@ -97,7 +97,7 @@ jobs: - name: Build and Push Docker Image (wolfi) id: docker-push-wolfi - uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # v5.3.0 + uses: docker/build-push-action@31159d49c0d4756269a0940a750801a1ea5d7003 # v6.1.0 with: context: . platforms: linux/amd64,linux/arm64 @@ -109,7 +109,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image (wolfi) - uses: actions/attest-build-provenance@49df96e17e918a15956db358890b08e61c704919 # v1.2.0 + uses: actions/attest-build-provenance@bdd51370e0416ac948727f861e03c2f05d32d78e # v1.3.2 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push-wolfi.outputs.digest }} From f5f9eb148bf087b89120ead78918d414a0ef8500 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Jun 2024 11:53:15 -0700 Subject: [PATCH 042/396] chore(deps): bump import-in-the-middle from 1.8.0 to 1.8.1 (#4103) --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 90272cebbb..1ad46a2c1b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "fast-safe-stringify": "^2.0.7", "fast-stream-to-buffer": "^1.0.0", "http-headers": "^3.0.2", - "import-in-the-middle": "1.8.0", + "import-in-the-middle": "1.8.1", "json-bigint": "^1.0.0", "lru-cache": "^10.0.1", "measured-reporting": "^1.51.1", @@ -11519,9 +11519,9 @@ } }, "node_modules/import-in-the-middle": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.8.0.tgz", - "integrity": "sha512-/xQjze8szLNnJ5rvHSzn+dcVXqCAU6Plbk4P24U/jwPmg1wy7IIp9OjKIO5tYue8GSPhDpPDiApQjvBUmWwhsQ==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.8.1.tgz", + "integrity": "sha512-yhRwoHtiLGvmSozNOALgjRPFI6uYsds60EoMqqnXyyv+JOIW/BrrLejuTGBt+bq0T5tLzOHrN0T7xYTm4Qt/ng==", "dependencies": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", @@ -27118,9 +27118,9 @@ } }, "import-in-the-middle": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.8.0.tgz", - "integrity": "sha512-/xQjze8szLNnJ5rvHSzn+dcVXqCAU6Plbk4P24U/jwPmg1wy7IIp9OjKIO5tYue8GSPhDpPDiApQjvBUmWwhsQ==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.8.1.tgz", + "integrity": "sha512-yhRwoHtiLGvmSozNOALgjRPFI6uYsds60EoMqqnXyyv+JOIW/BrrLejuTGBt+bq0T5tLzOHrN0T7xYTm4Qt/ng==", "requires": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", diff --git a/package.json b/package.json index 95bd52a120..2ca3c873b7 100644 --- a/package.json +++ b/package.json @@ -107,7 +107,7 @@ "fast-safe-stringify": "^2.0.7", "fast-stream-to-buffer": "^1.0.0", "http-headers": "^3.0.2", - "import-in-the-middle": "1.8.0", + "import-in-the-middle": "1.8.1", "json-bigint": "^1.0.0", "lru-cache": "^10.0.1", "measured-reporting": "^1.51.1", From 30c2375e2d4d73613526dbde90b5ab3f4e87c0df Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Jun 2024 12:11:34 -0700 Subject: [PATCH 043/396] chore(deps-dev): bump tedious from 18.2.0 to 18.2.1 (#4104) --- package-lock.json | 372 +++++++++++++++++++++++----------------------- 1 file changed, 187 insertions(+), 185 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1ad46a2c1b..d6baba4de0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2144,21 +2144,33 @@ } }, "node_modules/@azure/core-client": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.6.0.tgz", - "integrity": "sha512-YhSf4cb61ApSjItscp9XoaLq8KRnacPDAhmjAZSMnn/gs6FhFbZNfOBOErG2dDj7JRknVtCmJ5mLmfR2sLa11A==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz", + "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==", "dev": true, "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-rest-pipeline": "^1.5.0", + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-rest-pipeline": "^1.9.1", "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.0.0", + "@azure/core-util": "^1.6.1", "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=12.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-client/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@azure/core-client/node_modules/@azure/core-tracing": { @@ -2215,50 +2227,46 @@ } }, "node_modules/@azure/core-rest-pipeline": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.8.1.tgz", - "integrity": "sha512-R/XpxZcDgGbnneEifnsAcjLoR2NCmlDxKDmzd8oi5jx5YEnPE6gsxHQWAk2+uY55Ka717x/fdctyoCYKnumrqw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.0.tgz", + "integrity": "sha512-CeuTvsXxCUmEuxH5g/aceuSl6w2EugvNHKAtKKVdiX915EjJJxAwfzNNWZreNnbxHZ2fi0zaM6wwS23x2JVqSQ==", "dev": true, "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.3.0", + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.0.0", + "@azure/core-util": "^1.9.0", "@azure/logger": "^1.0.0", - "form-data": "^4.0.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "tslib": "^2.2.0", - "uuid": "^8.3.0" + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=12.0.0" + "node": ">=18.0.0" } }, - "node_modules/@azure/core-rest-pipeline/node_modules/@azure/core-tracing": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz", - "integrity": "sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==", + "node_modules/@azure/core-rest-pipeline/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", "dev": true, "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=12.0.0" + "node": ">=18.0.0" } }, - "node_modules/@azure/core-rest-pipeline/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "node_modules/@azure/core-rest-pipeline/node_modules/@azure/core-tracing": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz", + "integrity": "sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==", "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "tslib": "^2.2.0" }, "engines": { - "node": ">= 6" + "node": ">=12.0.0" } }, "node_modules/@azure/core-tracing": { @@ -2275,33 +2283,45 @@ } }, "node_modules/@azure/core-util": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.6.1.tgz", - "integrity": "sha512-h5taHeySlsV9qxuK64KZxy4iln1BtMYlNt5jbuEFN3UFSAd1EwKg/Gjl5a6tZ/W8t6li3xPnutOx7zbDyXnPmQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.0.tgz", + "integrity": "sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw==", "dev": true, "dependencies": { - "@azure/abort-controller": "^1.0.0", - "tslib": "^2.2.0" + "@azure/abort-controller": "^2.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-util/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@azure/identity": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-3.4.1.tgz", - "integrity": "sha512-oQ/r5MBdfZTMIUcY5Ch8G7Vv9aIXDkEYyU4Dfqjim4MQN+LY2uiQ57P1JDopMLeHCsZxM4yy8lEdne3tM9Xhzg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.3.0.tgz", + "integrity": "sha512-LHZ58/RsIpIWa4hrrE2YuJ/vzG1Jv9f774RfTTAVDZDriubvJ0/S5u4pnw4akJDlS0TiJb6VMphmVUFsWmgodQ==", "dev": true, "dependencies": { "@azure/abort-controller": "^1.0.0", "@azure/core-auth": "^1.5.0", - "@azure/core-client": "^1.4.0", + "@azure/core-client": "^1.9.2", "@azure/core-rest-pipeline": "^1.1.0", "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.6.1", + "@azure/core-util": "^1.3.0", "@azure/logger": "^1.0.0", - "@azure/msal-browser": "^3.5.0", - "@azure/msal-node": "^2.5.1", + "@azure/msal-browser": "^3.11.1", + "@azure/msal-node": "^2.9.2", "events": "^3.0.0", "jws": "^4.0.0", "open": "^8.0.0", @@ -2309,19 +2329,19 @@ "tslib": "^2.2.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@azure/identity/node_modules/@azure/core-tracing": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz", - "integrity": "sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.1.2.tgz", + "integrity": "sha512-dawW9ifvWAWmUm9/h+/UQ2jrdvjCJ7VJEuCJ6XVNudzcOwm53BFZH4Q845vjfgoUAM8ZxokvVNxNxAITc502YA==", "dev": true, "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=12.0.0" + "node": ">=18.0.0" } }, "node_modules/@azure/identity/node_modules/events": { @@ -2380,21 +2400,21 @@ } }, "node_modules/@azure/msal-browser": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.6.0.tgz", - "integrity": "sha512-FrFBJXRJMyWXjAjg4cUNZwEKktzfzD/YD9+S1kj2ors67hKoveam4aL0bZuCZU/jTiHTn0xDQGQh2ksCMXTXtA==", + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.17.0.tgz", + "integrity": "sha512-csccKXmW2z7EkZ0I3yAoW/offQt+JECdTIV/KrnRoZyM7wCSsQWODpwod8ZhYy7iOyamcHApR9uCh0oD1M+0/A==", "dev": true, "dependencies": { - "@azure/msal-common": "14.5.0" + "@azure/msal-common": "14.12.0" }, "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-common": { - "version": "14.5.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.5.0.tgz", - "integrity": "sha512-Gx5rZbiZV/HiZ2nEKfjfAF/qDdZ4/QWxMvMo2jhIFVz528dVKtaZyFAOtsX2Ak8+TQvRsGCaEfuwJFuXB6tu1A==", + "version": "14.12.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.12.0.tgz", + "integrity": "sha512-IDDXmzfdwmDkv4SSmMEyAniJf6fDu3FJ7ncOjlxkDuT85uSnLEhZi3fGZpoR7T4XZpOMx9teM9GXBgrfJgyeBw==", "dev": true, "engines": { "node": ">=0.8.0" @@ -2414,15 +2434,6 @@ "node": ">=16" } }, - "node_modules/@azure/msal-node/node_modules/@azure/msal-common": { - "version": "14.12.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.12.0.tgz", - "integrity": "sha512-IDDXmzfdwmDkv4SSmMEyAniJf6fDu3FJ7ncOjlxkDuT85uSnLEhZi3fGZpoR7T4XZpOMx9teM9GXBgrfJgyeBw==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/@babel/cli": { "version": "7.24.1", "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.24.1.tgz", @@ -6468,15 +6479,6 @@ "node": ">=10" } }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/@types/accepts": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", @@ -6789,15 +6791,15 @@ "integrity": "sha1-asL8ICtQD4jaj09VMM+hAPTGotA=" }, "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, "dependencies": { - "debug": "4" + "debug": "^4.3.4" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/agentkeepalive": { @@ -11394,17 +11396,16 @@ } }, "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/http-signature": { @@ -11446,16 +11447,16 @@ } }, "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "dev": true, "dependencies": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/human-signals": { @@ -17070,12 +17071,12 @@ } }, "node_modules/tedious": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.2.0.tgz", - "integrity": "sha512-PCELoE17gN71lk0A87+WITcIJ6uGagrV2hXVJT5ige/Yef+YCLVpQ/Je12rOZT7vBhVZoMp6MvaBmbfI8fw0ag==", + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.2.1.tgz", + "integrity": "sha512-DKsTgGBC0ZeZexAd5OObfeKd0Tlx3jx3kNoKImsxfBKdRuV216u9n6Sr+4w6vzn+S4r43XmWAXQwM7UkDkbIEg==", "dev": true, "dependencies": { - "@azure/identity": "^3.4.1", + "@azure/identity": "^4.2.1", "@azure/keyvault-keys": "^4.4.0", "@js-joda/core": "^5.6.1", "@types/node": ">=18", @@ -19850,20 +19851,29 @@ } }, "@azure/core-client": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.6.0.tgz", - "integrity": "sha512-YhSf4cb61ApSjItscp9XoaLq8KRnacPDAhmjAZSMnn/gs6FhFbZNfOBOErG2dDj7JRknVtCmJ5mLmfR2sLa11A==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz", + "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==", "dev": true, "requires": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-rest-pipeline": "^1.5.0", + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-rest-pipeline": "^1.9.1", "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.0.0", + "@azure/core-util": "^1.6.1", "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" + "tslib": "^2.6.2" }, "dependencies": { + "@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "requires": { + "tslib": "^2.6.2" + } + }, "@azure/core-tracing": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz", @@ -19908,23 +19918,30 @@ } }, "@azure/core-rest-pipeline": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.8.1.tgz", - "integrity": "sha512-R/XpxZcDgGbnneEifnsAcjLoR2NCmlDxKDmzd8oi5jx5YEnPE6gsxHQWAk2+uY55Ka717x/fdctyoCYKnumrqw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.0.tgz", + "integrity": "sha512-CeuTvsXxCUmEuxH5g/aceuSl6w2EugvNHKAtKKVdiX915EjJJxAwfzNNWZreNnbxHZ2fi0zaM6wwS23x2JVqSQ==", "dev": true, "requires": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.3.0", + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.0.0", + "@azure/core-util": "^1.9.0", "@azure/logger": "^1.0.0", - "form-data": "^4.0.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "tslib": "^2.2.0", - "uuid": "^8.3.0" + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" }, "dependencies": { + "@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "requires": { + "tslib": "^2.6.2" + } + }, "@azure/core-tracing": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz", @@ -19933,17 +19950,6 @@ "requires": { "tslib": "^2.2.0" } - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } } } }, @@ -19958,30 +19964,41 @@ } }, "@azure/core-util": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.6.1.tgz", - "integrity": "sha512-h5taHeySlsV9qxuK64KZxy4iln1BtMYlNt5jbuEFN3UFSAd1EwKg/Gjl5a6tZ/W8t6li3xPnutOx7zbDyXnPmQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.0.tgz", + "integrity": "sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw==", "dev": true, "requires": { - "@azure/abort-controller": "^1.0.0", - "tslib": "^2.2.0" + "@azure/abort-controller": "^2.0.0", + "tslib": "^2.6.2" + }, + "dependencies": { + "@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "requires": { + "tslib": "^2.6.2" + } + } } }, "@azure/identity": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-3.4.1.tgz", - "integrity": "sha512-oQ/r5MBdfZTMIUcY5Ch8G7Vv9aIXDkEYyU4Dfqjim4MQN+LY2uiQ57P1JDopMLeHCsZxM4yy8lEdne3tM9Xhzg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.3.0.tgz", + "integrity": "sha512-LHZ58/RsIpIWa4hrrE2YuJ/vzG1Jv9f774RfTTAVDZDriubvJ0/S5u4pnw4akJDlS0TiJb6VMphmVUFsWmgodQ==", "dev": true, "requires": { "@azure/abort-controller": "^1.0.0", "@azure/core-auth": "^1.5.0", - "@azure/core-client": "^1.4.0", + "@azure/core-client": "^1.9.2", "@azure/core-rest-pipeline": "^1.1.0", "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.6.1", + "@azure/core-util": "^1.3.0", "@azure/logger": "^1.0.0", - "@azure/msal-browser": "^3.5.0", - "@azure/msal-node": "^2.5.1", + "@azure/msal-browser": "^3.11.1", + "@azure/msal-node": "^2.9.2", "events": "^3.0.0", "jws": "^4.0.0", "open": "^8.0.0", @@ -19990,12 +20007,12 @@ }, "dependencies": { "@azure/core-tracing": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.1.tgz", - "integrity": "sha512-I5CGMoLtX+pI17ZdiFJZgxMJApsK6jjfm85hpgp3oazCdq5Wxgh4wMr7ge/TTWW1B5WBuvIOI1fMU/FrOAMKrw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.1.2.tgz", + "integrity": "sha512-dawW9ifvWAWmUm9/h+/UQ2jrdvjCJ7VJEuCJ6XVNudzcOwm53BFZH4Q845vjfgoUAM8ZxokvVNxNxAITc502YA==", "dev": true, "requires": { - "tslib": "^2.2.0" + "tslib": "^2.6.2" } }, "events": { @@ -20046,18 +20063,18 @@ } }, "@azure/msal-browser": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.6.0.tgz", - "integrity": "sha512-FrFBJXRJMyWXjAjg4cUNZwEKktzfzD/YD9+S1kj2ors67hKoveam4aL0bZuCZU/jTiHTn0xDQGQh2ksCMXTXtA==", + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.17.0.tgz", + "integrity": "sha512-csccKXmW2z7EkZ0I3yAoW/offQt+JECdTIV/KrnRoZyM7wCSsQWODpwod8ZhYy7iOyamcHApR9uCh0oD1M+0/A==", "dev": true, "requires": { - "@azure/msal-common": "14.5.0" + "@azure/msal-common": "14.12.0" } }, "@azure/msal-common": { - "version": "14.5.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.5.0.tgz", - "integrity": "sha512-Gx5rZbiZV/HiZ2nEKfjfAF/qDdZ4/QWxMvMo2jhIFVz528dVKtaZyFAOtsX2Ak8+TQvRsGCaEfuwJFuXB6tu1A==", + "version": "14.12.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.12.0.tgz", + "integrity": "sha512-IDDXmzfdwmDkv4SSmMEyAniJf6fDu3FJ7ncOjlxkDuT85uSnLEhZi3fGZpoR7T4XZpOMx9teM9GXBgrfJgyeBw==", "dev": true }, "@azure/msal-node": { @@ -20069,14 +20086,6 @@ "@azure/msal-common": "14.12.0", "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" - }, - "dependencies": { - "@azure/msal-common": { - "version": "14.12.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.12.0.tgz", - "integrity": "sha512-IDDXmzfdwmDkv4SSmMEyAniJf6fDu3FJ7ncOjlxkDuT85uSnLEhZi3fGZpoR7T4XZpOMx9teM9GXBgrfJgyeBw==", - "dev": true - } } }, "@babel/cli": { @@ -23261,12 +23270,6 @@ "defer-to-connect": "^2.0.0" } }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, "@types/accepts": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", @@ -23550,12 +23553,12 @@ "integrity": "sha1-asL8ICtQD4jaj09VMM+hAPTGotA=" }, "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, "requires": { - "debug": "4" + "debug": "^4.3.4" } }, "agentkeepalive": { @@ -27022,14 +27025,13 @@ } }, "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" } }, "http-signature": { @@ -27063,12 +27065,12 @@ } }, "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "dev": true, "requires": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" } }, @@ -31375,12 +31377,12 @@ "dev": true }, "tedious": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.2.0.tgz", - "integrity": "sha512-PCELoE17gN71lk0A87+WITcIJ6uGagrV2hXVJT5ige/Yef+YCLVpQ/Je12rOZT7vBhVZoMp6MvaBmbfI8fw0ag==", + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.2.1.tgz", + "integrity": "sha512-DKsTgGBC0ZeZexAd5OObfeKd0Tlx3jx3kNoKImsxfBKdRuV216u9n6Sr+4w6vzn+S4r43XmWAXQwM7UkDkbIEg==", "dev": true, "requires": { - "@azure/identity": "^3.4.1", + "@azure/identity": "^4.2.1", "@azure/keyvault-keys": "^4.4.0", "@js-joda/core": "^5.6.1", "@types/node": ">=18", From efa7ceabefb9c14dc828c0a3190c8ef6c9ed3c14 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Jun 2024 12:34:07 -0700 Subject: [PATCH 044/396] chore(deps-dev): bump undici from 6.19.0 to 6.19.2 (#4100) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index d6baba4de0..c72d6a1e82 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17545,9 +17545,9 @@ } }, "node_modules/undici": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.0.tgz", - "integrity": "sha512-9gGwbSLgYMjp4r6M5P9bhqhx1E+RyUIHqZE0r7BmrRoqroJUG6xlVu5TXH9DnwmCPLkcaVNrcYtxUE9d3InnyQ==", + "version": "6.19.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.2.tgz", + "integrity": "sha512-JfjKqIauur3Q6biAtHJ564e3bWa8VvT+7cSiOJHFbX4Erv6CLGDpg8z+Fmg/1OI/47RA+GI2QZaF48SSaLvyBA==", "dev": true, "engines": { "node": ">=18.17" @@ -31756,9 +31756,9 @@ "dev": true }, "undici": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.0.tgz", - "integrity": "sha512-9gGwbSLgYMjp4r6M5P9bhqhx1E+RyUIHqZE0r7BmrRoqroJUG6xlVu5TXH9DnwmCPLkcaVNrcYtxUE9d3InnyQ==", + "version": "6.19.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.2.tgz", + "integrity": "sha512-JfjKqIauur3Q6biAtHJ564e3bWa8VvT+7cSiOJHFbX4Erv6CLGDpg8z+Fmg/1OI/47RA+GI2QZaF48SSaLvyBA==", "dev": true }, "undici-types": { From a360a39c3e2ddecb1555b18c2d37b3ed1789ab3e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Jun 2024 12:38:19 -0700 Subject: [PATCH 045/396] chore(deps-dev): bump the eslint group with 2 updates (#4088) Updates `eslint` from 9.4.0 to 9.5.0 Updates `eslint-plugin-n` from 17.8.1 to 17.9.0 --- package-lock.json | 78 +++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/package-lock.json b/package-lock.json index c72d6a1e82..18a9530df9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4356,12 +4356,12 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.15.1.tgz", - "integrity": "sha512-K4gzNq+yymn/EVsXYmf+SBcBro8MTf+aXJZUphM96CdzUEr+ClGDvAbpmaEK+cGVigVXIgs9gNmvHAlrzzY5JQ==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.16.0.tgz", + "integrity": "sha512-/jmuSd74i4Czf1XXn7wGRWZCuyaUZ330NH1Bek0Pplatt4Sy1S5haN21SCLLdbeKslQ+S0wEJ+++v5YibSi+Lg==", "dev": true, "dependencies": { - "@eslint/object-schema": "^2.1.3", + "@eslint/object-schema": "^2.1.4", "debug": "^4.3.1", "minimatch": "^3.0.5" }, @@ -4427,18 +4427,18 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.4.0.tgz", - "integrity": "sha512-fdI7VJjP3Rvc70lC4xkFXHB0fiPeojiL1PxVG6t1ZvXQrarj893PweuBTujxDUFk0Fxj4R7PIIAZ/aiiyZPZcg==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.5.0.tgz", + "integrity": "sha512-A7+AOT2ICkodvtsWnxZP4Xxk3NbZ3VMHd8oihydLRGrJgqqdEz1qSeEgXYyT/Cu8h1TWWsQRejIx48mtjZ5y1w==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/object-schema": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.3.tgz", - "integrity": "sha512-HAbhAYKfsAC2EkTqve00ibWIZlaU74Z1EHwAjYr4PXF0YU2VEA1zSIKSSpKszRLRWwHzzRZXvK632u+uXzvsvw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -9345,16 +9345,16 @@ } }, "node_modules/eslint": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.4.0.tgz", - "integrity": "sha512-sjc7Y8cUD1IlwYcTS9qPSvGjAC8Ne9LctpxKKu3x/1IC9bnOg98Zy6GxEJUfr1NojMgVPlyANXYns8oE2c1TAA==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.5.0.tgz", + "integrity": "sha512-+NAOZFrW/jFTS3dASCGBxX1pkFD0/fsO+hfAkJ4TyYKwgsXZbqzrw+seCYFCcPCYXvnD67tAnglU7GQTz6kcVw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/config-array": "^0.15.1", + "@eslint/config-array": "^0.16.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.4.0", + "@eslint/js": "9.5.0", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -9366,7 +9366,7 @@ "eslint-scope": "^8.0.1", "eslint-visitor-keys": "^4.0.0", "espree": "^10.0.1", - "esquery": "^1.4.2", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", @@ -9392,7 +9392,7 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" } }, "node_modules/eslint-compat-utils": { @@ -9556,9 +9556,9 @@ } }, "node_modules/eslint-plugin-n": { - "version": "17.8.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.8.1.tgz", - "integrity": "sha512-KdG0h0voZms8UhndNu8DeWx1eM4sY+A4iXtsNo6kOfJLYHNeTGPacGalJ9GcvrbmOL3r/7QOMwVZDSw+1SqsrA==", + "version": "17.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.9.0.tgz", + "integrity": "sha512-CPSaXDXdrT4nsrOrO4mT4VB6FMUkoySRkHWuuJJHVqsIEjIeZgMY1H7AzSwPbDScikBmLN82KeM1u7ixV7PzGg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", @@ -21439,12 +21439,12 @@ "dev": true }, "@eslint/config-array": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.15.1.tgz", - "integrity": "sha512-K4gzNq+yymn/EVsXYmf+SBcBro8MTf+aXJZUphM96CdzUEr+ClGDvAbpmaEK+cGVigVXIgs9gNmvHAlrzzY5JQ==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.16.0.tgz", + "integrity": "sha512-/jmuSd74i4Czf1XXn7wGRWZCuyaUZ330NH1Bek0Pplatt4Sy1S5haN21SCLLdbeKslQ+S0wEJ+++v5YibSi+Lg==", "dev": true, "requires": { - "@eslint/object-schema": "^2.1.3", + "@eslint/object-schema": "^2.1.4", "debug": "^4.3.1", "minimatch": "^3.0.5" } @@ -21493,15 +21493,15 @@ } }, "@eslint/js": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.4.0.tgz", - "integrity": "sha512-fdI7VJjP3Rvc70lC4xkFXHB0fiPeojiL1PxVG6t1ZvXQrarj893PweuBTujxDUFk0Fxj4R7PIIAZ/aiiyZPZcg==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.5.0.tgz", + "integrity": "sha512-A7+AOT2ICkodvtsWnxZP4Xxk3NbZ3VMHd8oihydLRGrJgqqdEz1qSeEgXYyT/Cu8h1TWWsQRejIx48mtjZ5y1w==", "dev": true }, "@eslint/object-schema": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.3.tgz", - "integrity": "sha512-HAbhAYKfsAC2EkTqve00ibWIZlaU74Z1EHwAjYr4PXF0YU2VEA1zSIKSSpKszRLRWwHzzRZXvK632u+uXzvsvw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", "dev": true }, "@fastify/ajv-compiler": { @@ -25511,16 +25511,16 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.4.0.tgz", - "integrity": "sha512-sjc7Y8cUD1IlwYcTS9qPSvGjAC8Ne9LctpxKKu3x/1IC9bnOg98Zy6GxEJUfr1NojMgVPlyANXYns8oE2c1TAA==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.5.0.tgz", + "integrity": "sha512-+NAOZFrW/jFTS3dASCGBxX1pkFD0/fsO+hfAkJ4TyYKwgsXZbqzrw+seCYFCcPCYXvnD67tAnglU7GQTz6kcVw==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/config-array": "^0.15.1", + "@eslint/config-array": "^0.16.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.4.0", + "@eslint/js": "9.5.0", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -25532,7 +25532,7 @@ "eslint-scope": "^8.0.1", "eslint-visitor-keys": "^4.0.0", "espree": "^10.0.1", - "esquery": "^1.4.2", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", @@ -25793,9 +25793,9 @@ } }, "eslint-plugin-n": { - "version": "17.8.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.8.1.tgz", - "integrity": "sha512-KdG0h0voZms8UhndNu8DeWx1eM4sY+A4iXtsNo6kOfJLYHNeTGPacGalJ9GcvrbmOL3r/7QOMwVZDSw+1SqsrA==", + "version": "17.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.9.0.tgz", + "integrity": "sha512-CPSaXDXdrT4nsrOrO4mT4VB6FMUkoySRkHWuuJJHVqsIEjIeZgMY1H7AzSwPbDScikBmLN82KeM1u7ixV7PzGg==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", From 84c3a5163d9abb7ec80e752a3b75277c5e00fe74 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Jul 2024 17:34:13 +0200 Subject: [PATCH 046/396] chore(deps): bump docker/build-push-action in the github-actions group (#4113) --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 91b11c8199..b80ce561e6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -63,7 +63,7 @@ jobs: - name: Build and Push Docker Image id: docker-push - uses: docker/build-push-action@31159d49c0d4756269a0940a750801a1ea5d7003 # v6.1.0 + uses: docker/build-push-action@15560696de535e4014efeff63c48f16952e52dd1 # v6.2.0 with: context: . platforms: linux/amd64,linux/arm64 @@ -97,7 +97,7 @@ jobs: - name: Build and Push Docker Image (wolfi) id: docker-push-wolfi - uses: docker/build-push-action@31159d49c0d4756269a0940a750801a1ea5d7003 # v6.1.0 + uses: docker/build-push-action@15560696de535e4014efeff63c48f16952e52dd1 # v6.2.0 with: context: . platforms: linux/amd64,linux/arm64 From 605e2558817d68e2908ffe73b8194920ef72c66d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Jul 2024 17:35:35 +0200 Subject: [PATCH 047/396] chore(deps-dev): bump eslint from 9.5.0 to 9.6.0 in the eslint group (#4115) --- package-lock.json | 80 +++++++++++++++++++++++------------------------ 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/package-lock.json b/package-lock.json index 18a9530df9..bb688bb261 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4356,14 +4356,14 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.16.0.tgz", - "integrity": "sha512-/jmuSd74i4Czf1XXn7wGRWZCuyaUZ330NH1Bek0Pplatt4Sy1S5haN21SCLLdbeKslQ+S0wEJ+++v5YibSi+Lg==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.0.tgz", + "integrity": "sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA==", "dev": true, "dependencies": { "@eslint/object-schema": "^2.1.4", "debug": "^4.3.1", - "minimatch": "^3.0.5" + "minimatch": "^3.1.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4427,9 +4427,9 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.5.0.tgz", - "integrity": "sha512-A7+AOT2ICkodvtsWnxZP4Xxk3NbZ3VMHd8oihydLRGrJgqqdEz1qSeEgXYyT/Cu8h1TWWsQRejIx48mtjZ5y1w==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.6.0.tgz", + "integrity": "sha512-D9B0/3vNg44ZeWbYMpBoXqNP4j6eQD5vNwIlGAuFRRzK/WtT/jvDQW3Bi9kkf3PMDMlM7Yi+73VLUsn5bJcl8A==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6717,9 +6717,9 @@ } }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", "bin": { "acorn": "bin/acorn" }, @@ -9345,16 +9345,16 @@ } }, "node_modules/eslint": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.5.0.tgz", - "integrity": "sha512-+NAOZFrW/jFTS3dASCGBxX1pkFD0/fsO+hfAkJ4TyYKwgsXZbqzrw+seCYFCcPCYXvnD67tAnglU7GQTz6kcVw==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.6.0.tgz", + "integrity": "sha512-ElQkdLMEEqQNM9Njff+2Y4q2afHk7JpkPvrd7Xh7xefwgQynqPxwf55J7di9+MEibWUGdNjFF9ITG9Pck5M84w==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/config-array": "^0.16.0", + "@eslint/config-array": "^0.17.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.5.0", + "@eslint/js": "9.6.0", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -9365,7 +9365,7 @@ "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.0.1", "eslint-visitor-keys": "^4.0.0", - "espree": "^10.0.1", + "espree": "^10.1.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -9861,12 +9861,12 @@ } }, "node_modules/espree": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.0.1.tgz", - "integrity": "sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", "dev": true, "dependencies": { - "acorn": "^8.11.3", + "acorn": "^8.12.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.0.0" }, @@ -21439,14 +21439,14 @@ "dev": true }, "@eslint/config-array": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.16.0.tgz", - "integrity": "sha512-/jmuSd74i4Czf1XXn7wGRWZCuyaUZ330NH1Bek0Pplatt4Sy1S5haN21SCLLdbeKslQ+S0wEJ+++v5YibSi+Lg==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.0.tgz", + "integrity": "sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA==", "dev": true, "requires": { "@eslint/object-schema": "^2.1.4", "debug": "^4.3.1", - "minimatch": "^3.0.5" + "minimatch": "^3.1.2" } }, "@eslint/eslintrc": { @@ -21493,9 +21493,9 @@ } }, "@eslint/js": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.5.0.tgz", - "integrity": "sha512-A7+AOT2ICkodvtsWnxZP4Xxk3NbZ3VMHd8oihydLRGrJgqqdEz1qSeEgXYyT/Cu8h1TWWsQRejIx48mtjZ5y1w==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.6.0.tgz", + "integrity": "sha512-D9B0/3vNg44ZeWbYMpBoXqNP4j6eQD5vNwIlGAuFRRzK/WtT/jvDQW3Bi9kkf3PMDMlM7Yi+73VLUsn5bJcl8A==", "dev": true }, "@eslint/object-schema": { @@ -23501,9 +23501,9 @@ } }, "acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==" + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==" }, "acorn-import-attributes": { "version": "1.9.5", @@ -25511,16 +25511,16 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.5.0.tgz", - "integrity": "sha512-+NAOZFrW/jFTS3dASCGBxX1pkFD0/fsO+hfAkJ4TyYKwgsXZbqzrw+seCYFCcPCYXvnD67tAnglU7GQTz6kcVw==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.6.0.tgz", + "integrity": "sha512-ElQkdLMEEqQNM9Njff+2Y4q2afHk7JpkPvrd7Xh7xefwgQynqPxwf55J7di9+MEibWUGdNjFF9ITG9Pck5M84w==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/config-array": "^0.16.0", + "@eslint/config-array": "^0.17.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.5.0", + "@eslint/js": "9.6.0", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -25531,7 +25531,7 @@ "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.0.1", "eslint-visitor-keys": "^4.0.0", - "espree": "^10.0.1", + "espree": "^10.1.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -25873,12 +25873,12 @@ "dev": true }, "espree": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.0.1.tgz", - "integrity": "sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", "dev": true, "requires": { - "acorn": "^8.11.3", + "acorn": "^8.12.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.0.0" } From 6d04a99a32b4fb1d2c41eb0c02f0ffb6d989428b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Jul 2024 17:37:47 +0200 Subject: [PATCH 048/396] chore(deps-dev): bump mongodb from 6.7.0 to 6.8.0 (#4116) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index bb688bb261..983c523d86 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13453,9 +13453,9 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "node_modules/mongodb": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.7.0.tgz", - "integrity": "sha512-TMKyHdtMcO0fYBNORiYdmM25ijsHs+Njs963r4Tro4OQZzqYigAzYQouwWRg4OIaiLRUEGUh/1UAcH5lxdSLIA==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.8.0.tgz", + "integrity": "sha512-HGQ9NWDle5WvwMnrvUxsFYPd3JEbqD3RgABHBQRuoCEND0qzhsd0iH5ypHsf1eJ+sXmvmyKpP+FLOKY8Il7jMw==", "dev": true, "dependencies": { "@mongodb-js/saslprep": "^1.1.5", @@ -28583,9 +28583,9 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "mongodb": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.7.0.tgz", - "integrity": "sha512-TMKyHdtMcO0fYBNORiYdmM25ijsHs+Njs963r4Tro4OQZzqYigAzYQouwWRg4OIaiLRUEGUh/1UAcH5lxdSLIA==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.8.0.tgz", + "integrity": "sha512-HGQ9NWDle5WvwMnrvUxsFYPd3JEbqD3RgABHBQRuoCEND0qzhsd0iH5ypHsf1eJ+sXmvmyKpP+FLOKY8Il7jMw==", "dev": true, "requires": { "@mongodb-js/saslprep": "^1.1.5", From 4db87d027eef7da8ccbc40139c13f02cdf67f56f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Jul 2024 17:38:12 +0200 Subject: [PATCH 049/396] chore(deps-dev): bump fastify from 4.28.0 to 4.28.1 (#4117) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 983c523d86..aeefe1ed9b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10307,9 +10307,9 @@ } }, "node_modules/fastify": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.28.0.tgz", - "integrity": "sha512-HhW7UHW07YlqH5qpS0af8d2Gl/o98DhJ8ZDQWHRNDnzeOhZvtreWsX8xanjGgXmkYerGbo8ax/n40Dpwqkot8Q==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.28.1.tgz", + "integrity": "sha512-kFWUtpNr4i7t5vY2EJPCN2KgMVpuqfU4NjnJNCgiNB900oiDeYqaNDRcAfeBbOF5hGixixxcKnOU4KN9z6QncQ==", "dev": true, "funding": [ { @@ -26216,9 +26216,9 @@ } }, "fastify": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.28.0.tgz", - "integrity": "sha512-HhW7UHW07YlqH5qpS0af8d2Gl/o98DhJ8ZDQWHRNDnzeOhZvtreWsX8xanjGgXmkYerGbo8ax/n40Dpwqkot8Q==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.28.1.tgz", + "integrity": "sha512-kFWUtpNr4i7t5vY2EJPCN2KgMVpuqfU4NjnJNCgiNB900oiDeYqaNDRcAfeBbOF5hGixixxcKnOU4KN9z6QncQ==", "dev": true, "requires": { "@fastify/ajv-compiler": "^3.5.0", From 1cab9e7664e5361ce10e930906f34b5965214318 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jul 2024 10:29:33 -0700 Subject: [PATCH 050/396] chore(deps-dev): bump azure-functions-core-tools (#4114) --- .../fixtures/AJsAzureFnApp/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/package-lock.json b/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/package-lock.json index e9bb92e3fb..0798efaf68 100644 --- a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/package-lock.json +++ b/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/package-lock.json @@ -11,9 +11,9 @@ } }, "node_modules/azure-functions-core-tools": { - "version": "4.0.5801", - "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.5801.tgz", - "integrity": "sha512-6riuUu7X9yI3A9HtYDg8dx8bgb6NGtd+2sRaiXLMDJ0wpS6v/7lyeyXYMLG7OHMvItrhPYP619rRvu33l1tmTg==", + "version": "4.0.5907", + "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.5907.tgz", + "integrity": "sha512-QeyBf/9Z3sziPXIU7fGcLgCFhXLo+uO3ILLvbb0Zse46VC5SWWfscbAb023xoUXhWXlf7KXjWwvKgyJpAeG20A==", "dev": true, "hasInstallScript": true, "hasShrinkwrap": true, @@ -382,9 +382,9 @@ }, "dependencies": { "azure-functions-core-tools": { - "version": "4.0.5801", - "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.5801.tgz", - "integrity": "sha512-6riuUu7X9yI3A9HtYDg8dx8bgb6NGtd+2sRaiXLMDJ0wpS6v/7lyeyXYMLG7OHMvItrhPYP619rRvu33l1tmTg==", + "version": "4.0.5907", + "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.5907.tgz", + "integrity": "sha512-QeyBf/9Z3sziPXIU7fGcLgCFhXLo+uO3ILLvbb0Zse46VC5SWWfscbAb023xoUXhWXlf7KXjWwvKgyJpAeG20A==", "dev": true, "requires": { "chalk": "3.0.0", From 1e8580fb787bb76036a204e50e609410895fd7f3 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Tue, 2 Jul 2024 10:30:49 -0700 Subject: [PATCH 051/396] test: update Node.js versions with which we test the esclient (#4110) esclient v8.11.0's min support Node.js is v18 Refs: https://github.com/elastic/elasticsearch-js/pull/2055 --- .tav.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.tav.yml b/.tav.yml index 7fd1ae6e54..15f63f7446 100644 --- a/.tav.yml +++ b/.tav.yml @@ -259,15 +259,19 @@ elasticsearch: # "8.2.0" because they are stuck with stack version numbers. However, # semver (and TAV) consider "-patch.N" to be a *prereleases*. This # leads to some tortured "versions:" ranges below. +# - Version 8.11.0 dropped node v14 and v16 support. '@elastic/elasticsearch': - versions: '>=7.0.0 <7.7.0 || >7.7.0 <7.12.0' commands: node test/instrumentation/modules/@elastic/elasticsearch.test.js - versions: '>=7.12.0 <8.2' node: '>=12.0.0' commands: node test/instrumentation/modules/@elastic/elasticsearch.test.js - - versions: '>=8.2.0-patch.1 <8.2.0 || >8.2.0' + - versions: '>=8.2.0-patch.1 <8.2.0 || >8.2.0 <8.11.0' node: '>=14.0.0' commands: node test/instrumentation/modules/@elastic/elasticsearch.test.js + - versions: '>=8.11.0' + node: '>=18.0.0' + commands: node test/instrumentation/modules/@elastic/elasticsearch.test.js handlebars: versions: From 8472afa27fdb8f1eae783c72d5faf382600e28ac Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Tue, 2 Jul 2024 10:31:28 -0700 Subject: [PATCH 052/396] chore(deps): update otel deps (#4111) --- package-lock.json | 68 +++++++------- .../fixtures/package-lock.json | 92 +++++++++---------- 2 files changed, 80 insertions(+), 80 deletions(-) diff --git a/package-lock.json b/package-lock.json index aeefe1ed9b..d868ed2666 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5498,11 +5498,11 @@ } }, "node_modules/@opentelemetry/core": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.0.tgz", - "integrity": "sha512-n0B3s8rrqGrasTgNkXLKXzN0fXo+6IYP7M5b7AMsrZM33f/y6DS6kJ0Btd7SespASWq8bgL3taLo0oe0vB52IQ==", + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.1.tgz", + "integrity": "sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ==", "dependencies": { - "@opentelemetry/semantic-conventions": "1.25.0" + "@opentelemetry/semantic-conventions": "1.25.1" }, "engines": { "node": ">=14" @@ -5512,12 +5512,12 @@ } }, "node_modules/@opentelemetry/resources": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.25.0.tgz", - "integrity": "sha512-iHjydPMYJ+Li1auveJCq2rp5U2h6Mhq8BidiyE0jfVlDTFyR1ny8AfJHfmFzJ/RAM8vT8L7T21kcmGybxZC7lQ==", + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.25.1.tgz", + "integrity": "sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ==", "dependencies": { - "@opentelemetry/core": "1.25.0", - "@opentelemetry/semantic-conventions": "1.25.0" + "@opentelemetry/core": "1.25.1", + "@opentelemetry/semantic-conventions": "1.25.1" }, "engines": { "node": ">=14" @@ -5527,12 +5527,12 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.0.tgz", - "integrity": "sha512-IF+Sv4VHgBr/BPMKabl+GouJIhEqAOexCHgXVTISdz3q9P9H/uA8ScCF+22gitQ69aFtESbdYOV+Fen5+avQng==", + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.1.tgz", + "integrity": "sha512-9Mb7q5ioFL4E4dDrc4wC/A3NTHDat44v4I3p2pLPSxRvqUbDIQyMVr9uK+EU69+HWhlET1VaSrRzwdckWqY15Q==", "dependencies": { - "@opentelemetry/core": "1.25.0", - "@opentelemetry/resources": "1.25.0", + "@opentelemetry/core": "1.25.1", + "@opentelemetry/resources": "1.25.1", "lodash.merge": "^4.6.2" }, "engines": { @@ -5543,9 +5543,9 @@ } }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.0.tgz", - "integrity": "sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ==", + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz", + "integrity": "sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==", "engines": { "node": ">=14" } @@ -22477,36 +22477,36 @@ "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" }, "@opentelemetry/core": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.0.tgz", - "integrity": "sha512-n0B3s8rrqGrasTgNkXLKXzN0fXo+6IYP7M5b7AMsrZM33f/y6DS6kJ0Btd7SespASWq8bgL3taLo0oe0vB52IQ==", + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.1.tgz", + "integrity": "sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ==", "requires": { - "@opentelemetry/semantic-conventions": "1.25.0" + "@opentelemetry/semantic-conventions": "1.25.1" } }, "@opentelemetry/resources": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.25.0.tgz", - "integrity": "sha512-iHjydPMYJ+Li1auveJCq2rp5U2h6Mhq8BidiyE0jfVlDTFyR1ny8AfJHfmFzJ/RAM8vT8L7T21kcmGybxZC7lQ==", + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.25.1.tgz", + "integrity": "sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ==", "requires": { - "@opentelemetry/core": "1.25.0", - "@opentelemetry/semantic-conventions": "1.25.0" + "@opentelemetry/core": "1.25.1", + "@opentelemetry/semantic-conventions": "1.25.1" } }, "@opentelemetry/sdk-metrics": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.0.tgz", - "integrity": "sha512-IF+Sv4VHgBr/BPMKabl+GouJIhEqAOexCHgXVTISdz3q9P9H/uA8ScCF+22gitQ69aFtESbdYOV+Fen5+avQng==", + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.1.tgz", + "integrity": "sha512-9Mb7q5ioFL4E4dDrc4wC/A3NTHDat44v4I3p2pLPSxRvqUbDIQyMVr9uK+EU69+HWhlET1VaSrRzwdckWqY15Q==", "requires": { - "@opentelemetry/core": "1.25.0", - "@opentelemetry/resources": "1.25.0", + "@opentelemetry/core": "1.25.1", + "@opentelemetry/resources": "1.25.1", "lodash.merge": "^4.6.2" } }, "@opentelemetry/semantic-conventions": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.0.tgz", - "integrity": "sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ==" + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz", + "integrity": "sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==" }, "@pkgjs/parseargs": { "version": "0.11.0", diff --git a/test/opentelemetry-metrics/fixtures/package-lock.json b/test/opentelemetry-metrics/fixtures/package-lock.json index 3dde52bddd..2e1eda8790 100644 --- a/test/opentelemetry-metrics/fixtures/package-lock.json +++ b/test/opentelemetry-metrics/fixtures/package-lock.json @@ -22,11 +22,11 @@ } }, "node_modules/@opentelemetry/core": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.0.tgz", - "integrity": "sha512-n0B3s8rrqGrasTgNkXLKXzN0fXo+6IYP7M5b7AMsrZM33f/y6DS6kJ0Btd7SespASWq8bgL3taLo0oe0vB52IQ==", + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.1.tgz", + "integrity": "sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ==", "dependencies": { - "@opentelemetry/semantic-conventions": "1.25.0" + "@opentelemetry/semantic-conventions": "1.25.1" }, "engines": { "node": ">=14" @@ -36,13 +36,13 @@ } }, "node_modules/@opentelemetry/exporter-prometheus": { - "version": "0.52.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.52.0.tgz", - "integrity": "sha512-DJoCAtm6J1/rAP9oAjd5q5iq9/IKeiPLCHWOw+2QhPkgHHFvwKeOHnUp3xTC7RvpiuV2GQAV8Hih0CRHjehHJQ==", + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.52.1.tgz", + "integrity": "sha512-hwK0QnjtqAxGpQAXMNUY+kTT5CnHyz1I0lBA8SFySvaFtExZm7yQg/Ua/i+RBqgun7WkUbkUVJzEi3lKpJ7WdA==", "dependencies": { - "@opentelemetry/core": "1.25.0", - "@opentelemetry/resources": "1.25.0", - "@opentelemetry/sdk-metrics": "1.25.0" + "@opentelemetry/core": "1.25.1", + "@opentelemetry/resources": "1.25.1", + "@opentelemetry/sdk-metrics": "1.25.1" }, "engines": { "node": ">=14" @@ -52,12 +52,12 @@ } }, "node_modules/@opentelemetry/resources": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.25.0.tgz", - "integrity": "sha512-iHjydPMYJ+Li1auveJCq2rp5U2h6Mhq8BidiyE0jfVlDTFyR1ny8AfJHfmFzJ/RAM8vT8L7T21kcmGybxZC7lQ==", + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.25.1.tgz", + "integrity": "sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ==", "dependencies": { - "@opentelemetry/core": "1.25.0", - "@opentelemetry/semantic-conventions": "1.25.0" + "@opentelemetry/core": "1.25.1", + "@opentelemetry/semantic-conventions": "1.25.1" }, "engines": { "node": ">=14" @@ -67,12 +67,12 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.0.tgz", - "integrity": "sha512-IF+Sv4VHgBr/BPMKabl+GouJIhEqAOexCHgXVTISdz3q9P9H/uA8ScCF+22gitQ69aFtESbdYOV+Fen5+avQng==", + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.1.tgz", + "integrity": "sha512-9Mb7q5ioFL4E4dDrc4wC/A3NTHDat44v4I3p2pLPSxRvqUbDIQyMVr9uK+EU69+HWhlET1VaSrRzwdckWqY15Q==", "dependencies": { - "@opentelemetry/core": "1.25.0", - "@opentelemetry/resources": "1.25.0", + "@opentelemetry/core": "1.25.1", + "@opentelemetry/resources": "1.25.1", "lodash.merge": "^4.6.2" }, "engines": { @@ -83,9 +83,9 @@ } }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.0.tgz", - "integrity": "sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ==", + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz", + "integrity": "sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==", "engines": { "node": ">=14" } @@ -103,46 +103,46 @@ "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" }, "@opentelemetry/core": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.0.tgz", - "integrity": "sha512-n0B3s8rrqGrasTgNkXLKXzN0fXo+6IYP7M5b7AMsrZM33f/y6DS6kJ0Btd7SespASWq8bgL3taLo0oe0vB52IQ==", + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.1.tgz", + "integrity": "sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ==", "requires": { - "@opentelemetry/semantic-conventions": "1.25.0" + "@opentelemetry/semantic-conventions": "1.25.1" } }, "@opentelemetry/exporter-prometheus": { - "version": "0.52.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.52.0.tgz", - "integrity": "sha512-DJoCAtm6J1/rAP9oAjd5q5iq9/IKeiPLCHWOw+2QhPkgHHFvwKeOHnUp3xTC7RvpiuV2GQAV8Hih0CRHjehHJQ==", + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.52.1.tgz", + "integrity": "sha512-hwK0QnjtqAxGpQAXMNUY+kTT5CnHyz1I0lBA8SFySvaFtExZm7yQg/Ua/i+RBqgun7WkUbkUVJzEi3lKpJ7WdA==", "requires": { - "@opentelemetry/core": "1.25.0", - "@opentelemetry/resources": "1.25.0", - "@opentelemetry/sdk-metrics": "1.25.0" + "@opentelemetry/core": "1.25.1", + "@opentelemetry/resources": "1.25.1", + "@opentelemetry/sdk-metrics": "1.25.1" } }, "@opentelemetry/resources": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.25.0.tgz", - "integrity": "sha512-iHjydPMYJ+Li1auveJCq2rp5U2h6Mhq8BidiyE0jfVlDTFyR1ny8AfJHfmFzJ/RAM8vT8L7T21kcmGybxZC7lQ==", + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.25.1.tgz", + "integrity": "sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ==", "requires": { - "@opentelemetry/core": "1.25.0", - "@opentelemetry/semantic-conventions": "1.25.0" + "@opentelemetry/core": "1.25.1", + "@opentelemetry/semantic-conventions": "1.25.1" } }, "@opentelemetry/sdk-metrics": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.0.tgz", - "integrity": "sha512-IF+Sv4VHgBr/BPMKabl+GouJIhEqAOexCHgXVTISdz3q9P9H/uA8ScCF+22gitQ69aFtESbdYOV+Fen5+avQng==", + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.1.tgz", + "integrity": "sha512-9Mb7q5ioFL4E4dDrc4wC/A3NTHDat44v4I3p2pLPSxRvqUbDIQyMVr9uK+EU69+HWhlET1VaSrRzwdckWqY15Q==", "requires": { - "@opentelemetry/core": "1.25.0", - "@opentelemetry/resources": "1.25.0", + "@opentelemetry/core": "1.25.1", + "@opentelemetry/resources": "1.25.1", "lodash.merge": "^4.6.2" } }, "@opentelemetry/semantic-conventions": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.0.tgz", - "integrity": "sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ==" + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz", + "integrity": "sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==" }, "lodash.merge": { "version": "4.6.2", From 8053a24861f37b2d9ca5c8677960103347b2e153 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jul 2024 12:31:36 +0200 Subject: [PATCH 053/396] chore(deps-dev): bump @elastic/elasticsearch from 8.13.1 to 8.14.0 (#4106) --- package-lock.json | 100 +++++++++++++++------------------------------- 1 file changed, 32 insertions(+), 68 deletions(-) diff --git a/package-lock.json b/package-lock.json index d868ed2666..bbb1407149 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4263,12 +4263,12 @@ } }, "node_modules/@elastic/elasticsearch": { - "version": "8.13.1", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.13.1.tgz", - "integrity": "sha512-2G4Vu6OHw4+XTrp7AGIcOEezpPEoVrWg2JTK1v/exEKSLYquZkUdd+m4yOL3/UZ6bTj7hmXwrmYzW76BnLCkJQ==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.14.0.tgz", + "integrity": "sha512-MGrgCI4y+Ozssf5Q2IkVJlqt5bUMnKIICG2qxeOfrJNrVugMCBCAQypyesmSSocAtNm8IX3LxfJ3jQlFHmKe2w==", "dev": true, "dependencies": { - "@elastic/transport": "~8.4.1", + "@elastic/transport": "^8.6.0", "tslib": "^2.4.0" }, "engines": { @@ -4276,9 +4276,9 @@ } }, "node_modules/@elastic/transport": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.4.1.tgz", - "integrity": "sha512-/SXVuVnuU5b4dq8OFY4izG+dmGla185PcoqgK6+AJMpmOeY1QYVNbWtCwvSvoAANN5D/wV+EBU8+x7Vf9EphbA==", + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.6.1.tgz", + "integrity": "sha512-3vGs4W3wP5oeIT/4j1vcvd+t7m6ndP0uyb5GDY23LQCmbtI5Oq0aQwD9gb09KJbLFLUbI7db9vMFPzKavSFA5g==", "dev": true, "dependencies": { "debug": "^4.3.4", @@ -4286,19 +4286,10 @@ "ms": "^2.1.3", "secure-json-parse": "^2.4.0", "tslib": "^2.4.0", - "undici": "^5.22.1" + "undici": "^6.12.0" }, "engines": { - "node": ">=16" - } - }, - "node_modules/@elastic/transport/node_modules/hpagent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.0.0.tgz", - "integrity": "sha512-SCleE2Uc1bM752ymxg8QXYGW0TWtAV4ZW3TqH1aOnyi6T6YW2xadCcclm5qeVjvMvfQ2RKNtZxO7uVb9CTPt1A==", - "dev": true, - "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/@elastic/transport/node_modules/ms": { @@ -4307,18 +4298,6 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "node_modules/@elastic/transport/node_modules/undici": { - "version": "5.28.4", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", - "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", - "dev": true, - "dependencies": { - "@fastify/busboy": "^2.0.0" - }, - "engines": { - "node": ">=14.0" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -4455,15 +4434,6 @@ "fast-uri": "^2.0.0" } }, - "node_modules/@fastify/busboy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz", - "integrity": "sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==", - "dev": true, - "engines": { - "node": ">=14" - } - }, "node_modules/@fastify/deepmerge": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-1.3.0.tgz", @@ -11340,6 +11310,15 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/hpagent": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.2.0.tgz", + "integrity": "sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==", + "dev": true, + "engines": { + "node": ">=14" + } + }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -21369,19 +21348,19 @@ } }, "@elastic/elasticsearch": { - "version": "8.13.1", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.13.1.tgz", - "integrity": "sha512-2G4Vu6OHw4+XTrp7AGIcOEezpPEoVrWg2JTK1v/exEKSLYquZkUdd+m4yOL3/UZ6bTj7hmXwrmYzW76BnLCkJQ==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.14.0.tgz", + "integrity": "sha512-MGrgCI4y+Ozssf5Q2IkVJlqt5bUMnKIICG2qxeOfrJNrVugMCBCAQypyesmSSocAtNm8IX3LxfJ3jQlFHmKe2w==", "dev": true, "requires": { - "@elastic/transport": "~8.4.1", + "@elastic/transport": "^8.6.0", "tslib": "^2.4.0" } }, "@elastic/transport": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.4.1.tgz", - "integrity": "sha512-/SXVuVnuU5b4dq8OFY4izG+dmGla185PcoqgK6+AJMpmOeY1QYVNbWtCwvSvoAANN5D/wV+EBU8+x7Vf9EphbA==", + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.6.1.tgz", + "integrity": "sha512-3vGs4W3wP5oeIT/4j1vcvd+t7m6ndP0uyb5GDY23LQCmbtI5Oq0aQwD9gb09KJbLFLUbI7db9vMFPzKavSFA5g==", "dev": true, "requires": { "debug": "^4.3.4", @@ -21389,29 +21368,14 @@ "ms": "^2.1.3", "secure-json-parse": "^2.4.0", "tslib": "^2.4.0", - "undici": "^5.22.1" + "undici": "^6.12.0" }, "dependencies": { - "hpagent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.0.0.tgz", - "integrity": "sha512-SCleE2Uc1bM752ymxg8QXYGW0TWtAV4ZW3TqH1aOnyi6T6YW2xadCcclm5qeVjvMvfQ2RKNtZxO7uVb9CTPt1A==", - "dev": true - }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true - }, - "undici": { - "version": "5.28.4", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", - "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", - "dev": true, - "requires": { - "@fastify/busboy": "^2.0.0" - } } } }, @@ -21515,12 +21479,6 @@ "fast-uri": "^2.0.0" } }, - "@fastify/busboy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.0.0.tgz", - "integrity": "sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==", - "dev": true - }, "@fastify/deepmerge": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-1.3.0.tgz", @@ -26975,6 +26933,12 @@ } } }, + "hpagent": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.2.0.tgz", + "integrity": "sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==", + "dev": true + }, "html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", From 28e1befeeb5650200624fd10c6d544977b2630a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jul 2024 12:32:04 +0200 Subject: [PATCH 054/396] chore(deps-dev): bump typescript from 5.4.5 to 5.5.2 (#4102) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index bbb1407149..a6164a6aa2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17475,9 +17475,9 @@ } }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", + "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -31690,9 +31690,9 @@ } }, "typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", + "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", "dev": true }, "uglify-js": { From 203349e8578f524d1d9ea2a3baa08ed68ee56fd0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jul 2024 11:31:12 +0200 Subject: [PATCH 055/396] chore(deps-dev): bump typescript from 5.5.2 to 5.5.3 (#4128) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index a6164a6aa2..df86a12f32 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17475,9 +17475,9 @@ } }, "node_modules/typescript": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", - "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -31690,9 +31690,9 @@ } }, "typescript": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", - "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "dev": true }, "uglify-js": { From 9c18cfd085808403fd91b7368f0f9f30effbfec4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jul 2024 11:31:35 +0200 Subject: [PATCH 056/396] chore(deps-dev): bump mysql2 from 3.10.1 to 3.10.2 (#4127) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index df86a12f32..338cc75f1e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13594,9 +13594,9 @@ } }, "node_modules/mysql2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.1.tgz", - "integrity": "sha512-6zo1T3GILsXMCex3YEu7hCz2OXLUarxFsxvFcUHWMpkPtmZLeTTWgRdc1gWyNJiYt6AxITmIf9bZDRy/jAfWew==", + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.2.tgz", + "integrity": "sha512-KCXPEvAkO0RcHPr362O5N8tFY2fXvbjfkPvRY/wGumh4EOemo9Hm5FjQZqv/pCmrnuxGu5OxnSENG0gTXqKMgQ==", "dev": true, "dependencies": { "denque": "^2.1.0", @@ -28663,9 +28663,9 @@ } }, "mysql2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.1.tgz", - "integrity": "sha512-6zo1T3GILsXMCex3YEu7hCz2OXLUarxFsxvFcUHWMpkPtmZLeTTWgRdc1gWyNJiYt6AxITmIf9bZDRy/jAfWew==", + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.2.tgz", + "integrity": "sha512-KCXPEvAkO0RcHPr362O5N8tFY2fXvbjfkPvRY/wGumh4EOemo9Hm5FjQZqv/pCmrnuxGu5OxnSENG0gTXqKMgQ==", "dev": true, "requires": { "denque": "^2.1.0", From 6dae669885b82f1d5d1c94c04f437d80039bfdca Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jul 2024 11:32:05 +0200 Subject: [PATCH 057/396] chore(deps-dev): bump redis from 4.6.14 to 4.6.15 (#4126) --- package-lock.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 338cc75f1e..0e9ee3d5a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5654,9 +5654,9 @@ } }, "node_modules/@redis/client": { - "version": "1.5.16", - "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.5.16.tgz", - "integrity": "sha512-X1a3xQ5kEMvTib5fBrHKh6Y+pXbeKXqziYuxOUo1ojQNECg4M5Etd1qqyhMap+lFUOAh8S7UYevgJHOm4A+NOg==", + "version": "1.5.17", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.5.17.tgz", + "integrity": "sha512-IPvU9A31qRCZ7lds/x+ksuK/UMndd0EASveAvCvEtFFKIZjZ+m/a4a0L7S28KEWoR5ka8526hlSghDo4Hrc2Hg==", "dev": true, "dependencies": { "cluster-key-slot": "1.1.2", @@ -15386,13 +15386,13 @@ } }, "node_modules/redis": { - "version": "4.6.14", - "resolved": "https://registry.npmjs.org/redis/-/redis-4.6.14.tgz", - "integrity": "sha512-GrNg/e33HtsQwNXL7kJT+iNFPSwE1IPmd7wzV3j4f2z0EYxZfZE7FVTmUysgAtqQQtg5NXF5SNLR9OdO/UHOfw==", + "version": "4.6.15", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.6.15.tgz", + "integrity": "sha512-2NtuOpMW3tnYzBw6S8mbXSX7RPzvVFCA2wFJq9oErushO2UeBkxObk+uvo7gv7n0rhWeOj/IzrHO8TjcFlRSOg==", "dev": true, "dependencies": { "@redis/bloom": "1.2.0", - "@redis/client": "1.5.16", + "@redis/client": "1.5.17", "@redis/graph": "1.1.1", "@redis/json": "1.0.6", "@redis/search": "1.1.6", @@ -22578,9 +22578,9 @@ "dev": true }, "@redis/client": { - "version": "1.5.16", - "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.5.16.tgz", - "integrity": "sha512-X1a3xQ5kEMvTib5fBrHKh6Y+pXbeKXqziYuxOUo1ojQNECg4M5Etd1qqyhMap+lFUOAh8S7UYevgJHOm4A+NOg==", + "version": "1.5.17", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.5.17.tgz", + "integrity": "sha512-IPvU9A31qRCZ7lds/x+ksuK/UMndd0EASveAvCvEtFFKIZjZ+m/a4a0L7S28KEWoR5ka8526hlSghDo4Hrc2Hg==", "dev": true, "requires": { "cluster-key-slot": "1.1.2", @@ -30046,13 +30046,13 @@ } }, "redis": { - "version": "4.6.14", - "resolved": "https://registry.npmjs.org/redis/-/redis-4.6.14.tgz", - "integrity": "sha512-GrNg/e33HtsQwNXL7kJT+iNFPSwE1IPmd7wzV3j4f2z0EYxZfZE7FVTmUysgAtqQQtg5NXF5SNLR9OdO/UHOfw==", + "version": "4.6.15", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.6.15.tgz", + "integrity": "sha512-2NtuOpMW3tnYzBw6S8mbXSX7RPzvVFCA2wFJq9oErushO2UeBkxObk+uvo7gv7n0rhWeOj/IzrHO8TjcFlRSOg==", "dev": true, "requires": { "@redis/bloom": "1.2.0", - "@redis/client": "1.5.16", + "@redis/client": "1.5.17", "@redis/graph": "1.1.1", "@redis/json": "1.0.6", "@redis/search": "1.1.6", From c714d489ea5bbec6fc2f395f139c1cb12ec7c7b8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jul 2024 11:32:29 +0200 Subject: [PATCH 058/396] chore(deps-dev): bump tedious from 18.2.1 to 18.2.3 (#4125) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0e9ee3d5a2..0002a736f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17050,9 +17050,9 @@ } }, "node_modules/tedious": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.2.1.tgz", - "integrity": "sha512-DKsTgGBC0ZeZexAd5OObfeKd0Tlx3jx3kNoKImsxfBKdRuV216u9n6Sr+4w6vzn+S4r43XmWAXQwM7UkDkbIEg==", + "version": "18.2.3", + "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.2.3.tgz", + "integrity": "sha512-AMdO1sodcoMU3vqDiU2d+Bdck6LcMAj4s4/fkxWXAgWGVnbZOQKaQrn6f+cRAZpdJhn5b8vX7cOfmB7oKNMUqQ==", "dev": true, "dependencies": { "@azure/identity": "^4.2.1", @@ -31341,9 +31341,9 @@ "dev": true }, "tedious": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.2.1.tgz", - "integrity": "sha512-DKsTgGBC0ZeZexAd5OObfeKd0Tlx3jx3kNoKImsxfBKdRuV216u9n6Sr+4w6vzn+S4r43XmWAXQwM7UkDkbIEg==", + "version": "18.2.3", + "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.2.3.tgz", + "integrity": "sha512-AMdO1sodcoMU3vqDiU2d+Bdck6LcMAj4s4/fkxWXAgWGVnbZOQKaQrn6f+cRAZpdJhn5b8vX7cOfmB7oKNMUqQ==", "dev": true, "requires": { "@azure/identity": "^4.2.1", From d7910ea2ad4453b6f2f238602e857a6b29cc0300 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jul 2024 11:33:01 +0200 Subject: [PATCH 059/396] chore(deps): bump docker/build-push-action in the github-actions group (#4124) Bumps the github-actions group with 1 update: [docker/build-push-action](https://github.com/docker/build-push-action). Updates `docker/build-push-action` from 6.2.0 to 6.3.0 - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/15560696de535e4014efeff63c48f16952e52dd1...1a162644f9a7e87d8f4b053101d1d9a712edc18c) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b80ce561e6..d9e973bff6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -63,7 +63,7 @@ jobs: - name: Build and Push Docker Image id: docker-push - uses: docker/build-push-action@15560696de535e4014efeff63c48f16952e52dd1 # v6.2.0 + uses: docker/build-push-action@1a162644f9a7e87d8f4b053101d1d9a712edc18c # v6.3.0 with: context: . platforms: linux/amd64,linux/arm64 @@ -97,7 +97,7 @@ jobs: - name: Build and Push Docker Image (wolfi) id: docker-push-wolfi - uses: docker/build-push-action@15560696de535e4014efeff63c48f16952e52dd1 # v6.2.0 + uses: docker/build-push-action@1a162644f9a7e87d8f4b053101d1d9a712edc18c # v6.3.0 with: context: . platforms: linux/amd64,linux/arm64 From ebe2cd1bd577fbfa5d8b0f087a0213166ad77249 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jul 2024 14:58:31 -0700 Subject: [PATCH 060/396] chore(deps-dev): bump tape from 5.7.5 to 5.8.1 (#4091) --- package-lock.json | 971 +++++++++++++++++++++++++++------------------- 1 file changed, 568 insertions(+), 403 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0002a736f2..26a7e8161b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5317,24 +5317,25 @@ } }, "node_modules/@ljharb/resumer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@ljharb/resumer/-/resumer-0.1.2.tgz", - "integrity": "sha512-opZnY9WsZ6tjPSpmTEdPY+LpxpEwqg3VsQiGFv+wAaA1ffTghnG019mAD8BKxkcpZx6HtvNj0vdyxDHTxPQlJw==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@ljharb/resumer/-/resumer-0.1.3.tgz", + "integrity": "sha512-d+tsDgfkj9X5QTriqM4lKesCkMMJC3IrbPKHvayP00ELx2axdXvDfWkqjxrLXIzGcQzmj7VAUT1wopqARTvafw==", "dev": true, "dependencies": { - "@ljharb/through": "^2.3.12" + "@ljharb/through": "^2.3.13", + "call-bind": "^1.0.7" }, "engines": { "node": ">= 0.4" } }, "node_modules/@ljharb/through": { - "version": "2.3.12", - "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.12.tgz", - "integrity": "sha512-ajo/heTlG3QgC8EGP6APIejksVAYt4ayz4tqoP3MolFELzcH1x1fzwEYRJTPO0IELutZ5HQ0c26/GqAYy79u3g==", + "version": "2.3.13", + "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.13.tgz", + "integrity": "sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.5" + "call-bind": "^1.0.7" }, "engines": { "node": ">= 0.4" @@ -7081,12 +7082,15 @@ } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7127,14 +7131,15 @@ } }, "node_modules/array.prototype.every": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/array.prototype.every/-/array.prototype.every-1.1.5.tgz", - "integrity": "sha512-FfMQJ+/joFGXpRCltbzV3znaP5QxIhLFySo0fEPn3GuoYlud9LhknMCIxdYKC2qsM/6VHoSp6YGwe3EZXrEcwQ==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/array.prototype.every/-/array.prototype.every-1.1.6.tgz", + "integrity": "sha512-gNEqZD97w6bfQRNmHkFv7rNnGM+VWyHZT+h/rf9C+22owcXuENr66Lfo0phItpU5KoXW6Owb34q2+8MnSIZ57w==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0", "is-string": "^1.0.7" }, "engines": { @@ -7200,15 +7205,17 @@ } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", - "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", "is-shared-array-buffer": "^1.0.2" }, "engines": { @@ -7291,9 +7298,12 @@ } }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -8548,6 +8558,54 @@ "node": ">=10.x" } }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -9142,49 +9200,56 @@ } }, "node_modules/es-abstract": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", - "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.1", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "safe-array-concat": "^1.0.0", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.10" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -9238,14 +9303,25 @@ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -10698,14 +10774,14 @@ } }, "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { "node": ">= 0.4" @@ -10813,12 +10889,13 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -11119,17 +11196,6 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -11196,9 +11262,9 @@ } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "engines": { "node": ">= 0.4" }, @@ -11218,11 +11284,11 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -11258,9 +11324,9 @@ } }, "node_modules/hasown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", - "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": { "function-bind": "^1.1.2" }, @@ -11552,12 +11618,12 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -11623,13 +11689,15 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11708,6 +11776,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", @@ -11866,9 +11948,9 @@ } }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "engines": { "node": ">= 0.4" }, @@ -11957,11 +12039,14 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12008,15 +12093,11 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -14171,13 +14252,13 @@ } }, "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -14904,6 +14985,14 @@ "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==", "dev": true }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postgres-array": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", @@ -15454,13 +15543,14 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -15998,12 +16088,12 @@ } }, "node_modules/safe-array-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", - "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -16032,14 +16122,17 @@ "optional": true }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -16733,13 +16826,14 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -16749,26 +16843,29 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -16930,14 +17027,14 @@ } }, "node_modules/tape": { - "version": "5.7.5", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.7.5.tgz", - "integrity": "sha512-C5Gm1MR8ujZmNrsmOiHSkKFfY2thrnUrFw/fFtcva9FABbN7LrHuQPi3MTS0Z0i/SLfYSJtRIcJYDUpwPsQ8yA==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.8.1.tgz", + "integrity": "sha512-pUzADXBVYm5Jkneh9hfXnirADrzQrDA3vddKbPOc/ZLORj4dFQ6GR1KdGWX0/NvOLDcYkVgeMdw78Uf6BzO3KA==", "dev": true, "dependencies": { - "@ljharb/resumer": "^0.1.2", - "@ljharb/through": "^2.3.12", - "array.prototype.every": "^1.1.5", + "@ljharb/resumer": "^0.1.3", + "@ljharb/through": "^2.3.13", + "array.prototype.every": "^1.1.6", "call-bind": "^1.0.7", "deep-equal": "^2.2.3", "defined": "^1.0.1", @@ -16946,17 +17043,17 @@ "get-package-type": "^0.1.0", "glob": "^7.2.3", "has-dynamic-import": "^2.1.0", - "hasown": "^2.0.1", + "hasown": "^2.0.2", "inherits": "^2.0.4", "is-regex": "^1.1.4", "minimist": "^1.2.8", "mock-property": "^1.0.3", "object-inspect": "^1.13.1", - "object-is": "^1.1.5", + "object-is": "^1.1.6", "object-keys": "^1.1.1", "object.assign": "^4.1.5", "resolve": "^2.0.0-next.5", - "string.prototype.trim": "^1.2.8" + "string.prototype.trim": "^1.2.9" }, "bin": { "tape": "bin/tape" @@ -17405,27 +17502,28 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -17435,15 +17533,16 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -17453,13 +17552,19 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -17883,15 +17988,15 @@ "dev": true }, "node_modules/which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -22315,21 +22420,22 @@ } }, "@ljharb/resumer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@ljharb/resumer/-/resumer-0.1.2.tgz", - "integrity": "sha512-opZnY9WsZ6tjPSpmTEdPY+LpxpEwqg3VsQiGFv+wAaA1ffTghnG019mAD8BKxkcpZx6HtvNj0vdyxDHTxPQlJw==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@ljharb/resumer/-/resumer-0.1.3.tgz", + "integrity": "sha512-d+tsDgfkj9X5QTriqM4lKesCkMMJC3IrbPKHvayP00ELx2axdXvDfWkqjxrLXIzGcQzmj7VAUT1wopqARTvafw==", "dev": true, "requires": { - "@ljharb/through": "^2.3.12" + "@ljharb/through": "^2.3.13", + "call-bind": "^1.0.7" } }, "@ljharb/through": { - "version": "2.3.12", - "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.12.tgz", - "integrity": "sha512-ajo/heTlG3QgC8EGP6APIejksVAYt4ayz4tqoP3MolFELzcH1x1fzwEYRJTPO0IELutZ5HQ0c26/GqAYy79u3g==", + "version": "2.3.13", + "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.13.tgz", + "integrity": "sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==", "dev": true, "requires": { - "call-bind": "^1.0.5" + "call-bind": "^1.0.7" } }, "@mongodb-js/saslprep": { @@ -23750,12 +23856,12 @@ } }, "array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "requires": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" } }, "array-flatten": { @@ -23784,14 +23890,15 @@ "dev": true }, "array.prototype.every": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/array.prototype.every/-/array.prototype.every-1.1.5.tgz", - "integrity": "sha512-FfMQJ+/joFGXpRCltbzV3znaP5QxIhLFySo0fEPn3GuoYlud9LhknMCIxdYKC2qsM/6VHoSp6YGwe3EZXrEcwQ==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/array.prototype.every/-/array.prototype.every-1.1.6.tgz", + "integrity": "sha512-gNEqZD97w6bfQRNmHkFv7rNnGM+VWyHZT+h/rf9C+22owcXuENr66Lfo0phItpU5KoXW6Owb34q2+8MnSIZ57w==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0", "is-string": "^1.0.7" } }, @@ -23833,15 +23940,17 @@ } }, "arraybuffer.prototype.slice": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", - "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "requires": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", "is-shared-array-buffer": "^1.0.2" } }, @@ -23912,9 +24021,12 @@ "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==" }, "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "requires": { + "possible-typed-array-names": "^1.0.0" + } }, "avvio": { "version": "8.3.0", @@ -24881,6 +24993,36 @@ "assert-plus": "^1.0.0" } }, + "data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -25327,49 +25469,56 @@ } }, "es-abstract": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", - "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "requires": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.1", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "safe-array-concat": "^1.0.0", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.10" + "which-typed-array": "^1.1.15" } }, "es-define-property": { @@ -25410,14 +25559,22 @@ } } }, + "es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "requires": { + "es-errors": "^1.3.0" + } + }, "es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "requires": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" } }, "es-shim-unscopables": { @@ -26492,14 +26649,14 @@ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" } }, "functions-have-names": { @@ -26568,12 +26725,13 @@ } }, "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" } }, "get-tsconfig": { @@ -26789,14 +26947,6 @@ } } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -26844,9 +26994,9 @@ } }, "has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" }, "has-symbols": { "version": "1.0.3", @@ -26854,11 +27004,11 @@ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "requires": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" } }, "hasha": { @@ -26882,9 +27032,9 @@ } }, "hasown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", - "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "requires": { "function-bind": "^1.1.2" } @@ -27128,12 +27278,12 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "requires": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" } }, @@ -27177,13 +27327,12 @@ } }, "is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "requires": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.2.1" } }, "is-bigint": { @@ -27235,6 +27384,14 @@ "hasown": "^2.0.0" } }, + "is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "requires": { + "is-typed-array": "^1.1.13" + } + }, "is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", @@ -27334,9 +27491,9 @@ "dev": true }, "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==" }, "is-number": { "version": "7.0.0", @@ -27395,11 +27552,11 @@ "dev": true }, "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "requires": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" } }, "is-stream": { @@ -27425,15 +27582,11 @@ } }, "is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.14" } }, "is-typedarray": { @@ -29120,13 +29273,13 @@ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" }, "object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" } }, "object-keys": { @@ -29662,6 +29815,11 @@ "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==", "dev": true }, + "possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==" + }, "postgres-array": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", @@ -30105,13 +30263,14 @@ } }, "regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" } }, "regexpu-core": { @@ -30503,12 +30662,12 @@ } }, "safe-array-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", - "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -30533,12 +30692,12 @@ "optional": true }, "safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" } }, @@ -31113,33 +31272,34 @@ } }, "string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" } }, "string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "strip-ansi": { @@ -31246,14 +31406,14 @@ "dev": true }, "tape": { - "version": "5.7.5", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.7.5.tgz", - "integrity": "sha512-C5Gm1MR8ujZmNrsmOiHSkKFfY2thrnUrFw/fFtcva9FABbN7LrHuQPi3MTS0Z0i/SLfYSJtRIcJYDUpwPsQ8yA==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.8.1.tgz", + "integrity": "sha512-pUzADXBVYm5Jkneh9hfXnirADrzQrDA3vddKbPOc/ZLORj4dFQ6GR1KdGWX0/NvOLDcYkVgeMdw78Uf6BzO3KA==", "dev": true, "requires": { - "@ljharb/resumer": "^0.1.2", - "@ljharb/through": "^2.3.12", - "array.prototype.every": "^1.1.5", + "@ljharb/resumer": "^0.1.3", + "@ljharb/through": "^2.3.13", + "array.prototype.every": "^1.1.6", "call-bind": "^1.0.7", "deep-equal": "^2.2.3", "defined": "^1.0.1", @@ -31262,17 +31422,17 @@ "get-package-type": "^0.1.0", "glob": "^7.2.3", "has-dynamic-import": "^2.1.0", - "hasown": "^2.0.1", + "hasown": "^2.0.2", "inherits": "^2.0.4", "is-regex": "^1.1.4", "minimist": "^1.2.8", "mock-property": "^1.0.3", "object-inspect": "^1.13.1", - "object-is": "^1.1.5", + "object-is": "^1.1.6", "object-keys": "^1.1.1", "object.assign": "^4.1.5", "resolve": "^2.0.0-next.5", - "string.prototype.trim": "^1.2.8" + "string.prototype.trim": "^1.2.9" }, "dependencies": { "deep-equal": { @@ -31638,46 +31798,51 @@ } }, "typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" } }, "typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "requires": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" } }, "typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" } }, "typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "requires": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" } }, "typedarray-to-buffer": { @@ -32000,15 +32165,15 @@ "dev": true }, "which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" } }, "winston": { From 0a94abf29991e4ec1e9e127dc98f6bef5d83f8c6 Mon Sep 17 00:00:00 2001 From: David Luna Date: Tue, 9 Jul 2024 10:29:41 +0200 Subject: [PATCH 061/396] chore: remove nyc package (#4120) --- .ci/scripts/docker-test.sh | 8 +- .github/workflows/test.yml | 9 - .gitignore | 2 - Makefile | 2 +- eslint.config.js | 1 - examples/nextjs/.gitignore | 3 - lib/activation-method.js | 3 +- package-lock.json | 2168 +------------------------------ package.json | 3 - test/script/docker/run_tests.sh | 8 - test/script/run_tests.sh | 19 +- 11 files changed, 25 insertions(+), 2201 deletions(-) diff --git a/.ci/scripts/docker-test.sh b/.ci/scripts/docker-test.sh index f78e57c2be..d81bac49b9 100755 --- a/.ci/scripts/docker-test.sh +++ b/.ci/scripts/docker-test.sh @@ -42,14 +42,8 @@ node --version npm --version npm_ci -# Attempt to provide junit-formatted test results, for Jenkins' "Test Results" -# and other features like flaky-test reporting. if [[ -n ${TAV} ]]; then npm run test:tav - # Currently the TAV tests do not support TAP or junit-formatted output. else - rm -rf ./test_output - mkdir ./test_output - nyc node test/test.js -o ./test_output - ls test_output/*.tap | while read f; do cat $f | ./node_modules/.bin/tap-junit > $f.junit.xml; done + node test/test.js fi diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index adcd56b3e7..ac1f91bda1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -175,15 +175,6 @@ jobs: - run: npm ls --all || true - name: npm test run: npm test - - uses: inception-health/otel-upload-test-artifact-action@v1 - if: always() - continue-on-error: true - with: - jobName: "test-vers (${{ matrix.node }})" - stepName: "npm test" - path: "test_output/*.junit.xml" - type: "junit" - githubToken: ${{ secrets.GITHUB_TOKEN }} test-windows: runs-on: windows-latest diff --git a/.gitignore b/.gitignore index cf0a8d7eda..a7c9a7c99d 100644 --- a/.gitignore +++ b/.gitignore @@ -7,8 +7,6 @@ /test-suite-output.tap # Folders to ignore -/.nyc_output -/test_output /build node_modules /test/benchmarks/.tmp diff --git a/Makefile b/Makefile index 36b23fc74a..c7f2ac74d1 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ fmt: npm run lint:fix # Prerequisite: Docker server is running. -# See TESTING.md for more details on tests, TAV tests, coverage, benchmarks. +# See TESTING.md for more details on tests, TAV tests, benchmarks. .PHONY: test test: npm run test diff --git a/eslint.config.js b/eslint.config.js index 95e9566fcd..c05b5de444 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -21,7 +21,6 @@ module.exports = [ '*.example.js', // a pattern for uncommited local dev files to avoid linting '*.example.mjs', // a pattern for uncommited local dev files to avoid linting - 'test_output/**', 'tmp/**', '.nyc_output/**', 'build/**', diff --git a/examples/nextjs/.gitignore b/examples/nextjs/.gitignore index a248576abd..4317ee2c0c 100644 --- a/examples/nextjs/.gitignore +++ b/examples/nextjs/.gitignore @@ -7,9 +7,6 @@ /.pnp .pnp.js -# testing -/coverage - # next.js /.next/ /out/ diff --git a/lib/activation-method.js b/lib/activation-method.js index 6161133cbc..fe56223f47 100644 --- a/lib/activation-method.js +++ b/lib/activation-method.js @@ -23,8 +23,7 @@ const CONTAINS_R_ELASTIC_APM_NODE_START = * * @param {Error} startStack - An Error object with a captured stack trace. * The `stackTraceLimit` for the stack should be at least 15 -- higher - * that the default of 10. Using `nyc` for coverage testing adds at least - * one stack frame. + * that the default of 10. * @returns {string} one of the following values: * - "unknown" * - "require": diff --git a/package-lock.json b/package-lock.json index 26a7e8161b..e061903fd8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -112,7 +112,6 @@ "mysql2": "^3.2.4", "ndjson": "^2.0.0", "numeral": "^2.0.6", - "nyc": "^15.0.0", "once": "^1.4.0", "pg": "^8.7.1", "prettier": "^3.0.0", @@ -121,7 +120,6 @@ "request": "^2.88.2", "restify": "^11.0.0", "rimraf": "^5.0.1", - "tap-junit": "^5.0.1", "tape": "^5.0.0", "tedious": "^18.1.0", "test-all-versions": "^6.1.0", @@ -5161,53 +5159,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/@josephg/resolvable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz", @@ -5412,54 +5363,6 @@ "node": ">= 8" } }, - "node_modules/@oozcitak/dom": { - "version": "1.15.10", - "resolved": "https://registry.npmjs.org/@oozcitak/dom/-/dom-1.15.10.tgz", - "integrity": "sha512-0JT29/LaxVgRcGKvHmSrUTEvZ8BXvZhGl2LASRUgHqDTC1M5g1pLmVv56IYNyt3bG2CUjDkc67wnyZC14pbQrQ==", - "dev": true, - "dependencies": { - "@oozcitak/infra": "1.0.8", - "@oozcitak/url": "1.0.4", - "@oozcitak/util": "8.3.8" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/@oozcitak/infra": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@oozcitak/infra/-/infra-1.0.8.tgz", - "integrity": "sha512-JRAUc9VR6IGHOL7OGF+yrvs0LO8SlqGnPAMqyzOuFZPSZSXI7Xf2O9+awQPSMXgIWGtgUf/dA6Hs6X6ySEaWTg==", - "dev": true, - "dependencies": { - "@oozcitak/util": "8.3.8" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/@oozcitak/url": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@oozcitak/url/-/url-1.0.4.tgz", - "integrity": "sha512-kDcD8y+y3FCSOvnBI6HJgl00viO/nGbQoCINmQ0h98OhnGITrWR3bOGfwYCthgcrV8AnTJz8MzslTQbC3SOAmw==", - "dev": true, - "dependencies": { - "@oozcitak/infra": "1.0.8", - "@oozcitak/util": "8.3.8" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/@oozcitak/util": { - "version": "8.3.8", - "resolved": "https://registry.npmjs.org/@oozcitak/util/-/util-8.3.8.tgz", - "integrity": "sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ==", - "dev": true, - "engines": { - "node": ">=8.0" - } - }, "node_modules/@opentelemetry/api": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", @@ -6784,19 +6687,6 @@ "node": ">= 8.0.0" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ajv": { "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", @@ -7054,33 +6944,12 @@ "graphql": "^15.3.0 || ^16.0.0" } }, - "node_modules/append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", - "dev": true, - "dependencies": { - "default-require-extensions": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, "node_modules/array-buffer-byte-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", @@ -7898,45 +7767,6 @@ "node": ">=8" } }, - "node_modules/caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", - "dev": true, - "dependencies": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/caching-transform/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caching-transform/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/call-bind": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", @@ -7964,15 +7794,6 @@ "node": ">=6" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/caniuse-lite": { "version": "1.0.30001593", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001593.tgz", @@ -8110,15 +7931,6 @@ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/cli-spinners": { "version": "2.9.2", "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", @@ -8265,12 +8077,6 @@ "node": ">= 6" } }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -8399,15 +8205,6 @@ "node": ">= 0.6" } }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, "node_modules/cookie": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", @@ -8622,15 +8419,6 @@ } } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", @@ -8713,27 +8501,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/default-require-extensions": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", - "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", - "dev": true, - "dependencies": { - "strip-bom": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/default-require-extensions/node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", @@ -9352,12 +9119,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -9923,19 +9684,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/esquery": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", @@ -10004,15 +9752,6 @@ "node": ">=0.4.x" } }, - "node_modules/events-to-array": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-2.0.3.tgz", - "integrity": "sha512-f/qE2gImHRa4Cp2y1stEOSgw8wTFyUdVJX7G//bMwbaV9JqISFxg99NbmVQeP7YLnDUZ2un851jlaDrlpmGehQ==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/ewma": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ewma/-/ewma-2.0.1.tgz", @@ -10529,47 +10268,6 @@ "node": ">= 0.8" } }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-cache-dir/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/find-my-way": { "version": "7.7.0", "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-7.7.0.tgz", @@ -10584,19 +10282,6 @@ "node": ">=14" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/flat-cache": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", @@ -10650,19 +10335,6 @@ "is-callable": "^1.1.3" } }, - "node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -10719,26 +10391,6 @@ "node": ">= 0.6" } }, - "node_modules/fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/fs-readdir-recursive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", @@ -10825,15 +10477,6 @@ "node": ">=6.9.0" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -11297,22 +10940,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", - "dev": true, - "dependencies": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/hashring": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/hashring/-/hashring-3.2.0.tgz", @@ -11385,12 +11012,6 @@ "node": ">=14" } }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, "node_modules/http-assert": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", @@ -11584,15 +11205,6 @@ "node": ">=0.8.19" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/inflation": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", @@ -12169,15 +11781,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -12208,245 +11811,6 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", - "dev": true, - "dependencies": { - "append-transform": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/istanbul-lib-processinfo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", - "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", - "dev": true, - "dependencies": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.0", - "istanbul-lib-coverage": "^3.0.0-alpha.1", - "make-dir": "^3.0.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^3.3.3" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/istanbul-lib-report/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jackpot": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/jackpot/-/jackpot-0.0.6.tgz", @@ -13005,18 +12369,6 @@ "node": ">= 0.6" } }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -13035,12 +12387,6 @@ "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", "dev": true }, - "node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true - }, "node_modules/lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", @@ -13874,18 +13220,6 @@ "node": ">= 6.13.0" } }, - "node_modules/node-preload": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", - "dev": true, - "dependencies": { - "process-on-spawn": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/node-releases": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", @@ -13980,236 +13314,16 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/numeral": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", - "integrity": "sha1-StCAk21EPCVhrtnyGX7//iX05QY=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/nyc": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", - "dev": true, - "dependencies": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "get-package-type": "^0.1.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - }, - "bin": { - "nyc": "bin/nyc.js" - }, - "engines": { - "node": ">=8.9" - } - }, - "node_modules/nyc/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/nyc/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/nyc/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/nyc/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/nyc/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/nyc/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/nyc/node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/nyc/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/nyc/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/nyc/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/nyc/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "node_modules/numeral": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", + "integrity": "sha1-StCAk21EPCVhrtnyGX7//iX05QY=", "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, "engines": { - "node": ">=6" + "node": "*" } }, "node_modules/oauth-sign": { @@ -14489,18 +13603,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -14510,21 +13612,6 @@ "node": ">=6" } }, - "node_modules/package-hash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -14909,18 +13996,6 @@ "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==" }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/pkg-up": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", @@ -15082,18 +14157,6 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "node_modules/process-on-spawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", - "dev": true, - "dependencies": { - "fromentries": "^1.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/process-warning": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.2.0.tgz", @@ -15602,18 +14665,6 @@ "resolved": "https://registry.npmjs.org/relative-microtime/-/relative-microtime-2.0.0.tgz", "integrity": "sha512-l18ha6HEZc+No/uK4GyAnNxgKW7nvEe35IaeN54sShMojtqik2a6GbTyuiezkjpPaqP874Z3lW5ysBo5irz4NA==" }, - "node_modules/release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", - "dev": true, - "dependencies": { - "es6-error": "^4.0.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -15693,15 +14744,6 @@ "semver": "bin/semver" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -15724,12 +14766,6 @@ "node": ">=8.6.0" } }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "node_modules/requireindex": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", @@ -16328,12 +15364,6 @@ "node": ">= 0.8.0" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, "node_modules/set-cookie-parser": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", @@ -16500,82 +15530,6 @@ "dargs": "^4.0.0" } }, - "node_modules/spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", - "dev": true, - "dependencies": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/spawn-wrap/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/spawn-wrap/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/spawn-wrap/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/spawn-wrap/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -16647,12 +15601,6 @@ "readable-stream": "^3.0.0" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, "node_modules/sql-summary": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sql-summary/-/sql-summary-1.0.1.tgz", @@ -16974,49 +15922,6 @@ "url": "https://opencollective.com/unts" } }, - "node_modules/tap-junit": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/tap-junit/-/tap-junit-5.0.3.tgz", - "integrity": "sha512-pbBXzjWoqkr11NDNvINfvN+I/zdKm88Iu2KtFfnx/FEq4yNJGC1TVj6Kg8QJrD4m8Zahkp4xF/Gf45a8vua0tg==", - "dev": true, - "dependencies": { - "minimist": "1.2.8", - "tap-parser": "15.3.1", - "xmlbuilder2": "3.1.1" - }, - "bin": { - "tap-junit": "bin/tap-junit" - } - }, - "node_modules/tap-parser": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-15.3.1.tgz", - "integrity": "sha512-hwAtXX5TBGt2MJeYvASc7DjP48PUzA7P8RTbLxQcgKCEH7ICD5IsRco7l5YvkzjHlZbUbeI9wzO8B4hw2sKgnQ==", - "dev": true, - "dependencies": { - "events-to-array": "^2.0.3", - "tap-yaml": "2.2.1" - }, - "bin": { - "tap-parser": "bin/cmd.cjs" - }, - "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" - } - }, - "node_modules/tap-yaml": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tap-yaml/-/tap-yaml-2.2.1.tgz", - "integrity": "sha512-ovZuUMLAIH59jnFHXKEGJ+WyDYl6Cuduwg9qpvnqkZOUA1nU84q02Sry1HT0KXcdv2uB91bEKKxnIybBgrb6oA==", - "dev": true, - "dependencies": { - "yaml": "^2.3.0", - "yaml-types": "^0.3.0" - }, - "engines": { - "node": "16 >=16.17.0 || 18 >= 18.6.0 || >=20" - } - }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -17214,40 +16119,6 @@ "node": ">=14" } }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", @@ -17479,15 +16350,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -17570,15 +16432,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, "node_modules/typescript": { "version": "5.5.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", @@ -17981,12 +16834,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, "node_modules/which-typed-array": { "version": "1.1.15", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", @@ -18118,18 +16965,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, "node_modules/ws": { "version": "7.5.10", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", @@ -18151,34 +16986,6 @@ } } }, - "node_modules/xmlbuilder2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-3.1.1.tgz", - "integrity": "sha512-WCSfbfZnQDdLQLiMdGUQpMxxckeQ4oZNMNhLVkcekTu7xhD4tuUDyAPoY8CwXvBYE6LwBHd6QW2WZXlOWr1vCw==", - "dev": true, - "dependencies": { - "@oozcitak/dom": "1.15.10", - "@oozcitak/infra": "1.0.8", - "@oozcitak/util": "8.3.8", - "js-yaml": "3.14.1" - }, - "engines": { - "node": ">=12.0" - } - }, - "node_modules/xmlbuilder2/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/xss": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.11.tgz", @@ -18215,28 +17022,6 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, - "node_modules/yaml": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", - "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", - "dev": true, - "engines": { - "node": ">= 14" - } - }, - "node_modules/yaml-types": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/yaml-types/-/yaml-types-0.3.0.tgz", - "integrity": "sha512-i9RxAO/LZBiE0NJUy9pbN5jFz5EasYDImzRkj8Y81kkInTi1laia3P3K/wlMKzOxFQutZip8TejvQP/DwgbU7A==", - "dev": true, - "engines": { - "node": ">= 16", - "npm": ">= 7" - }, - "peerDependencies": { - "yaml": "^2.3.0" - } - }, "node_modules/ylru": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz", @@ -22293,43 +21078,6 @@ } } }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, "@josephg/resolvable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz", @@ -22489,52 +21237,16 @@ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@oozcitak/dom": { - "version": "1.15.10", - "resolved": "https://registry.npmjs.org/@oozcitak/dom/-/dom-1.15.10.tgz", - "integrity": "sha512-0JT29/LaxVgRcGKvHmSrUTEvZ8BXvZhGl2LASRUgHqDTC1M5g1pLmVv56IYNyt3bG2CUjDkc67wnyZC14pbQrQ==", - "dev": true, - "requires": { - "@oozcitak/infra": "1.0.8", - "@oozcitak/url": "1.0.4", - "@oozcitak/util": "8.3.8" - } - }, - "@oozcitak/infra": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@oozcitak/infra/-/infra-1.0.8.tgz", - "integrity": "sha512-JRAUc9VR6IGHOL7OGF+yrvs0LO8SlqGnPAMqyzOuFZPSZSXI7Xf2O9+awQPSMXgIWGtgUf/dA6Hs6X6ySEaWTg==", - "dev": true, - "requires": { - "@oozcitak/util": "8.3.8" - } - }, - "@oozcitak/url": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@oozcitak/url/-/url-1.0.4.tgz", - "integrity": "sha512-kDcD8y+y3FCSOvnBI6HJgl00viO/nGbQoCINmQ0h98OhnGITrWR3bOGfwYCthgcrV8AnTJz8MzslTQbC3SOAmw==", + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "requires": { - "@oozcitak/infra": "1.0.8", - "@oozcitak/util": "8.3.8" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" } }, - "@oozcitak/util": { - "version": "8.3.8", - "resolved": "https://registry.npmjs.org/@oozcitak/util/-/util-8.3.8.tgz", - "integrity": "sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ==", - "dev": true - }, "@opentelemetry/api": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", @@ -23633,16 +22345,6 @@ "humanize-ms": "^1.2.1" } }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, "ajv": { "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", @@ -23831,30 +22533,12 @@ "apollo-server-env": "^4.2.1" } }, - "append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", - "dev": true, - "requires": { - "default-require-extensions": "^3.0.0" - } - }, "archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, "array-buffer-byte-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", @@ -24472,35 +23156,6 @@ "responselike": "^2.0.0" } }, - "caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", - "dev": true, - "requires": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" - }, - "dependencies": { - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, "call-bind": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", @@ -24519,12 +23174,6 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, "caniuse-lite": { "version": "1.0.30001593", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001593.tgz", @@ -24622,12 +23271,6 @@ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, "cli-spinners": { "version": "2.9.2", "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", @@ -24751,12 +23394,6 @@ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -24860,15 +23497,6 @@ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, "cookie": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", @@ -25031,12 +23659,6 @@ "ms": "2.1.2" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, "decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", @@ -25094,23 +23716,6 @@ "untildify": "^4.0.0" } }, - "default-require-extensions": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", - "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", - "dev": true, - "requires": { - "strip-bom": "^4.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - } - } - }, "defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", @@ -25596,12 +24201,6 @@ "is-symbol": "^1.0.2" } }, - "es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -25998,12 +24597,6 @@ "eslint-visitor-keys": "^4.0.0" } }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, "esquery": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", @@ -26051,12 +24644,6 @@ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", "dev": true }, - "events-to-array": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-2.0.3.tgz", - "integrity": "sha512-f/qE2gImHRa4Cp2y1stEOSgw8wTFyUdVJX7G//bMwbaV9JqISFxg99NbmVQeP7YLnDUZ2un851jlaDrlpmGehQ==", - "dev": true - }, "ewma": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ewma/-/ewma-2.0.1.tgz", @@ -26483,34 +25070,6 @@ } } }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "dependencies": { - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, "find-my-way": { "version": "7.7.0", "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-7.7.0.tgz", @@ -26522,16 +25081,6 @@ "safe-regex2": "^2.0.0" } }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, "flat-cache": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", @@ -26568,16 +25117,6 @@ "is-callable": "^1.1.3" } }, - "foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - } - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -26618,12 +25157,6 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, - "fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", - "dev": true - }, "fs-readdir-recursive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", @@ -26685,12 +25218,6 @@ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, "get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -27011,16 +25538,6 @@ "has-symbols": "^1.0.3" } }, - "hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", - "dev": true, - "requires": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - } - }, "hashring": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/hashring/-/hashring-3.2.0.tgz", @@ -27089,12 +25606,6 @@ "integrity": "sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==", "dev": true }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, "http-assert": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", @@ -27250,12 +25761,6 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, "inflation": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", @@ -27634,12 +26139,6 @@ "get-intrinsic": "^1.1.1" } }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, "is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -27656,193 +26155,16 @@ "dev": true }, "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", - "dev": true, - "requires": { - "append-transform": "^2.0.0" - } - }, - "istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "dev": true, - "requires": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "istanbul-lib-processinfo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", - "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", - "dev": true, - "requires": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.0", - "istanbul-lib-coverage": "^3.0.0-alpha.1", - "make-dir": "^3.0.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^3.3.3" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, - "istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "jackpot": { "version": "0.0.6", @@ -28296,15 +26618,6 @@ } } }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -28323,12 +26636,6 @@ "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", "dev": true }, - "lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true - }, "lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", @@ -28982,15 +27289,6 @@ "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true }, - "node-preload": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", - "dev": true, - "requires": { - "process-on-spawn": "^1.0.0" - } - }, "node-releases": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", @@ -29071,177 +27369,6 @@ "integrity": "sha1-StCAk21EPCVhrtnyGX7//iX05QY=", "dev": true }, - "nyc": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", - "dev": true, - "requires": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "get-package-type": "^0.1.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -29453,33 +27580,12 @@ "p-try": "^2.0.0" } }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "package-hash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - } - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -29755,15 +27861,6 @@ "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==" }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, "pkg-up": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", @@ -29879,15 +27976,6 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "process-on-spawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", - "dev": true, - "requires": { - "fromentries": "^1.2.0" - } - }, "process-warning": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.2.0.tgz", @@ -30309,15 +28397,6 @@ "resolved": "https://registry.npmjs.org/relative-microtime/-/relative-microtime-2.0.0.tgz", "integrity": "sha512-l18ha6HEZc+No/uK4GyAnNxgKW7nvEe35IaeN54sShMojtqik2a6GbTyuiezkjpPaqP874Z3lW5ysBo5irz4NA==" }, - "release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", - "dev": true, - "requires": { - "es6-error": "^4.0.1" - } - }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -30384,12 +28463,6 @@ } } }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -30406,12 +28479,6 @@ "resolve": "^1.22.1" } }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "requireindex": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", @@ -30865,12 +28932,6 @@ "send": "0.18.0" } }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, "set-cookie-parser": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", @@ -31015,60 +29076,6 @@ "dargs": "^4.0.0" } }, - "spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", - "dev": true, - "requires": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, "spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -31137,12 +29144,6 @@ "readable-stream": "^3.0.0" } }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, "sql-summary": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sql-summary/-/sql-summary-1.0.1.tgz", @@ -31368,37 +29369,6 @@ "tslib": "^2.6.2" } }, - "tap-junit": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/tap-junit/-/tap-junit-5.0.3.tgz", - "integrity": "sha512-pbBXzjWoqkr11NDNvINfvN+I/zdKm88Iu2KtFfnx/FEq4yNJGC1TVj6Kg8QJrD4m8Zahkp4xF/Gf45a8vua0tg==", - "dev": true, - "requires": { - "minimist": "1.2.8", - "tap-parser": "15.3.1", - "xmlbuilder2": "3.1.1" - } - }, - "tap-parser": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-15.3.1.tgz", - "integrity": "sha512-hwAtXX5TBGt2MJeYvASc7DjP48PUzA7P8RTbLxQcgKCEH7ICD5IsRco7l5YvkzjHlZbUbeI9wzO8B4hw2sKgnQ==", - "dev": true, - "requires": { - "events-to-array": "^2.0.3", - "tap-yaml": "2.2.1" - } - }, - "tap-yaml": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tap-yaml/-/tap-yaml-2.2.1.tgz", - "integrity": "sha512-ovZuUMLAIH59jnFHXKEGJ+WyDYl6Cuduwg9qpvnqkZOUA1nU84q02Sry1HT0KXcdv2uB91bEKKxnIybBgrb6oA==", - "dev": true, - "requires": { - "yaml": "^2.3.0", - "yaml-types": "^0.3.0" - } - }, "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -31558,33 +29528,6 @@ "which": "^2.0.2" } }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, "text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", @@ -31781,12 +29724,6 @@ "prelude-ls": "^1.2.1" } }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -31845,15 +29782,6 @@ "possible-typed-array-names": "^1.0.0" } }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, "typescript": { "version": "5.5.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", @@ -32158,12 +30086,6 @@ "is-weakset": "^2.0.1" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, "which-typed-array": { "version": "1.1.15", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", @@ -32266,48 +30188,12 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, "ws": { "version": "7.5.10", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true }, - "xmlbuilder2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-3.1.1.tgz", - "integrity": "sha512-WCSfbfZnQDdLQLiMdGUQpMxxckeQ4oZNMNhLVkcekTu7xhD4tuUDyAPoY8CwXvBYE6LwBHd6QW2WZXlOWr1vCw==", - "dev": true, - "requires": { - "@oozcitak/dom": "1.15.10", - "@oozcitak/infra": "1.0.8", - "@oozcitak/util": "8.3.8", - "js-yaml": "3.14.1" - }, - "dependencies": { - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - } - } - }, "xss": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.11.tgz", @@ -32337,18 +30223,6 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, - "yaml": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", - "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", - "dev": true - }, - "yaml-types": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/yaml-types/-/yaml-types-0.3.0.tgz", - "integrity": "sha512-i9RxAO/LZBiE0NJUy9pbN5jFz5EasYDImzRkj8Y81kkInTi1laia3P3K/wlMKzOxFQutZip8TejvQP/DwgbU7A==", - "dev": true - }, "ylru": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz", diff --git a/package.json b/package.json index 2ca3c873b7..8ed42ab64f 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,6 @@ "lint:license-files": "./dev-utils/gen-notice.sh --lint . # requires node >=16", "lint:yaml-files": "./dev-utils/lint-yaml-files.sh # requires node >=10", "lint:tav": "./dev-utils/lint-tav-json.js", - "coverage": "COVERAGE=true ./test/script/run_tests.sh", "test": "./test/script/run_tests.sh", "test:deps": "dependency-check index.js start.js start-next.js 'lib/**/*.js' 'test/**/*.js' '!test/activation-method/fixtures' '!test/instrumentation/azure-functions/fixtures' '!test/instrumentation/modules/next/a-nextjs-app' '!test/opentelemetry-bridge' '!test/opentelemetry-metrics/fixtures' --no-dev -i async_hooks -i perf_hooks -i node:http -i @azure/functions-core -i worker_threads -i timers", "test:tav": "(cd test/opentelemetry-metrics/fixtures && tav --quiet) && (cd test/opentelemetry-bridge && tav --quiet) && (cd test/instrumentation/modules/next/a-nextjs-app && tav --quiet) && tav --quiet", @@ -192,7 +191,6 @@ "mysql2": "^3.2.4", "ndjson": "^2.0.0", "numeral": "^2.0.6", - "nyc": "^15.0.0", "once": "^1.4.0", "pg": "^8.7.1", "prettier": "^3.0.0", @@ -201,7 +199,6 @@ "request": "^2.88.2", "restify": "^11.0.0", "rimraf": "^5.0.1", - "tap-junit": "^5.0.1", "tape": "^5.0.0", "tedious": "^18.1.0", "test-all-versions": "^6.1.0", diff --git a/test/script/docker/run_tests.sh b/test/script/docker/run_tests.sh index 6914f9ec09..059aad8069 100755 --- a/test/script/docker/run_tests.sh +++ b/test/script/docker/run_tests.sh @@ -9,17 +9,11 @@ fi npm_cache="$HOME/.npm" docker_npm_cache="/home/node/.npm" -nyc_output=`pwd`"/.nyc_output" -docker_nyc_output="/app/.nyc_output" -test_output=`pwd`"/test_output" -docker_test_output="/app/test_output" NODE_VERSION=$1 if [[ ! -z $2 ]]; then TAV_MODULES=`echo "$2" | sed -e 's/\+/,/g'` CMD='npm run test:tav' -elif [[ -n $COVERAGE ]]; then - CMD='npm run coverage' else CMD='npm test' fi @@ -29,8 +23,6 @@ NODE_VERSION=${1} docker-compose --no-ansi --log-level ERROR -f ./test/docker-co -e TAV=${TAV_MODULES} \ -e CI=true \ -v ${npm_cache}:${docker_npm_cache} \ - -v ${nyc_output}:${docker_nyc_output} \ - -v ${test_output}:${docker_test_output} \ -v "$(pwd)":/app \ -w /app \ --rm node_tests \ diff --git a/test/script/run_tests.sh b/test/script/run_tests.sh index 6f1a4107da..42fa516f26 100755 --- a/test/script/run_tests.sh +++ b/test/script/run_tests.sh @@ -45,24 +45,7 @@ setup_env () { run_test_suite () { npm run test:deps - # If running in CI, then output .tap files and covert them to JUnit - # format for test reporting. - local testArgs="" - if [[ -n "$CI" ]]; then - rm -rf ./test_output - mkdir ./test_output - testArgs="-o ./test_output" - fi - - if [[ -n "$COVERAGE" ]]; then - nyc node test/test.js $testArgs - else - node test/test.js $testArgs - fi - - if [[ -n "$CI" ]]; then - ls test_output/*.tap | while read f; do cat $f | ./node_modules/.bin/tap-junit > $f.junit.xml; done - fi + node test/test.js if [[ $major_node_version -gt 14 ]] || [[ $major_node_version -eq 14 && $minor_node_version -ge 17 ]]; then npm run test:types # typescript@5.1.0 engines.node is >=14.17 From 70975daf1777e2a8b8b45922a872e32a22fa9196 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Tue, 9 Jul 2024 19:07:22 +0200 Subject: [PATCH 062/396] updatecli: use shared policy (#4121) --- .../updatecli.d/update-json-specs.yml | 83 ------------------ .ci/updatecli/updatecli.d/update-specs.yml | 85 ------------------- .ci/updatecli/values.d/apm-data-spec.yml | 1 + .ci/updatecli/values.d/apm-json-specs.yml | 1 + .ci/updatecli/values.d/scm.yml | 7 ++ .ci/updatecli/values.yml | 12 --- .github/workflows/updatecli.yml | 19 ++++- update-compose.yaml | 14 +++ 8 files changed, 40 insertions(+), 182 deletions(-) delete mode 100644 .ci/updatecli/updatecli.d/update-json-specs.yml delete mode 100644 .ci/updatecli/updatecli.d/update-specs.yml create mode 100644 .ci/updatecli/values.d/apm-data-spec.yml create mode 100644 .ci/updatecli/values.d/apm-json-specs.yml create mode 100644 .ci/updatecli/values.d/scm.yml delete mode 100644 .ci/updatecli/values.yml create mode 100644 update-compose.yaml diff --git a/.ci/updatecli/updatecli.d/update-json-specs.yml b/.ci/updatecli/updatecli.d/update-json-specs.yml deleted file mode 100644 index ae98167759..0000000000 --- a/.ci/updatecli/updatecli.d/update-json-specs.yml +++ /dev/null @@ -1,83 +0,0 @@ -name: update-json-specs -pipelineid: update-json-specs - -scms: - default: - kind: github - spec: - user: '{{ requiredEnv "GITHUB_ACTOR" }}' - owner: "{{ .github.owner }}" - repository: "{{ .github.repository }}" - token: '{{ requiredEnv "GITHUB_TOKEN" }}' - username: '{{ requiredEnv "GITHUB_ACTOR" }}' - branch: "{{ .github.branch }}" - commitusingapi: true - apm: - kind: github - spec: - user: '{{ requiredEnv "GITHUB_ACTOR" }}' - owner: "{{ .github.owner }}" - repository: "{{ .github.apm_repository }}" - token: '{{ requiredEnv "GITHUB_TOKEN" }}' - username: '{{ requiredEnv "GITHUB_ACTOR" }}' - branch: "{{ .github.branch }}" - -sources: - sha: - kind: file - spec: - file: 'https://github.com/{{ .github.owner }}/{{ .github.apm_repository }}/commit/{{ .github.branch }}.patch' - matchpattern: "^From\\s([0-9a-f]{40})\\s" - transformers: - - findsubmatch: - pattern: "[0-9a-f]{40}" - pull_request: - kind: shell - dependson: - - sha - spec: - command: gh api /repos/{{ .github.owner }}/{{ .github.apm_repository }}/commits/{{ source "sha" }}/pulls --jq '.[].html_url' - environments: - - name: GITHUB_TOKEN - - name: PATH - agents-json-specs-tarball: - kind: shell - scmid: apm - dependson: - - sha - spec: - command: tar cvzf {{ requiredEnv "GITHUB_WORKSPACE" }}/json-specs.tgz . - environments: - - name: PATH - workdir: "{{ .specs.apm_json_path }}" - -actions: - pr: - kind: "github/pullrequest" - scmid: default - spec: - automerge: false - draft: false - labels: - - "automation" - description: |- - ### What - APM agent specs automatic sync - - ### Why - *Changeset* - * {{ source "pull_request" }} - * https://github.com/{{ .github.owner }}/{{ .github.apm_repository }}/commit/{{ source "sha" }} - title: '[Automation] Update JSON specs' - -targets: - agent-json-specs: - name: APM agent json specs {{ source "sha" }} - scmid: default - disablesourceinput: true - kind: shell - spec: - # git diff helps to print what it changed, If it is empty, then updatecli report a success with no changes applied. - # See https://www.updatecli.io/docs/plugins/resource/shell/#_shell_target - command: 'tar -xzf {{ requiredEnv "GITHUB_WORKSPACE" }}/json-specs.tgz && git --no-pager diff' - workdir: "{{ .apm_agent.json_specs_path }}" diff --git a/.ci/updatecli/updatecli.d/update-specs.yml b/.ci/updatecli/updatecli.d/update-specs.yml deleted file mode 100644 index e9bbaf945e..0000000000 --- a/.ci/updatecli/updatecli.d/update-specs.yml +++ /dev/null @@ -1,85 +0,0 @@ -name: update-specs -pipelineid: update-schema-specs - -scms: - default: - kind: github - spec: - user: '{{ requiredEnv "GITHUB_ACTOR" }}' - owner: "{{ .github.owner }}" - repository: "{{ .github.repository }}" - token: '{{ requiredEnv "GITHUB_TOKEN" }}' - username: '{{ requiredEnv "GITHUB_ACTOR" }}' - branch: "{{ .github.branch }}" - commitusingapi: true - - apm-data: - kind: github - spec: - user: '{{ requiredEnv "GITHUB_ACTOR" }}' - owner: "{{ .github.owner }}" - repository: "{{ .github.apm_data_repository }}" - token: '{{ requiredEnv "GITHUB_TOKEN" }}' - username: '{{ requiredEnv "GITHUB_ACTOR" }}' - branch: "{{ .github.branch }}" - -sources: - sha: - kind: file - spec: - file: 'https://github.com/{{ .github.owner }}/{{ .github.apm_data_repository }}/commit/{{ .github.branch }}.patch' - matchpattern: "^From\\s([0-9a-f]{40})\\s" - transformers: - - findsubmatch: - pattern: "[0-9a-f]{40}" - pull_request: - kind: shell - dependson: - - sha - spec: - command: gh api /repos/{{ .github.owner }}/{{ .github.apm_data_repository }}/commits/{{ source "sha" }}/pulls --jq '.[].html_url' - environments: - - name: GITHUB_TOKEN - - name: PATH - agent-specs-tarball: - kind: shell - scmid: apm-data - dependson: - - sha - spec: - command: tar cvzf {{ requiredEnv "GITHUB_WORKSPACE" }}/json-schema.tgz . - environments: - - name: PATH - workdir: "{{ .specs.apm_data_path }}" - -actions: - pr: - kind: "github/pullrequest" - scmid: default - sourceid: sha - spec: - automerge: false - draft: false - labels: - - "automation" - description: |- - ### What - APM agent json server schema automatic sync - - ### Why - *Changeset* - * {{ source "pull_request" }} - * https://github.com/{{ .github.owner }}/{{ .github.apm_data_repository }}/commit/{{ source "sha" }} - title: '[Automation] Update JSON server schema specs' - -targets: - agent-json-schema: - name: APM agent json server schema {{ source "sha" }} - scmid: default - disablesourceinput: true - kind: shell - spec: - # git diff helps to print what it changed, If it is empty, then updatecli report a success with no changes applied. - # See https://www.updatecli.io/docs/plugins/resource/shell/#_shell_target - command: 'tar -xzf {{ requiredEnv "GITHUB_WORKSPACE" }}/json-schema.tgz && git --no-pager diff' - workdir: "{{ .apm_agent.server_schema_specs_path }}" diff --git a/.ci/updatecli/values.d/apm-data-spec.yml b/.ci/updatecli/values.d/apm-data-spec.yml new file mode 100644 index 0000000000..7402e8f94c --- /dev/null +++ b/.ci/updatecli/values.d/apm-data-spec.yml @@ -0,0 +1 @@ +apm_schema_specs_path: test/integration/api-schema/apm-server-schema diff --git a/.ci/updatecli/values.d/apm-json-specs.yml b/.ci/updatecli/values.d/apm-json-specs.yml new file mode 100644 index 0000000000..1537adc36f --- /dev/null +++ b/.ci/updatecli/values.d/apm-json-specs.yml @@ -0,0 +1 @@ +apm_json_specs_path: test/fixtures/json-specs diff --git a/.ci/updatecli/values.d/scm.yml b/.ci/updatecli/values.d/scm.yml new file mode 100644 index 0000000000..ff79a73ca4 --- /dev/null +++ b/.ci/updatecli/values.d/scm.yml @@ -0,0 +1,7 @@ +scm: + enabled: true + owner: elastic + repository: apm-agent-nodejs + branch: main + +signedcommit: true \ No newline at end of file diff --git a/.ci/updatecli/values.yml b/.ci/updatecli/values.yml deleted file mode 100644 index d2489f9fe0..0000000000 --- a/.ci/updatecli/values.yml +++ /dev/null @@ -1,12 +0,0 @@ -github: - owner: "elastic" - repository: "apm-agent-nodejs" - apm_repository: "apm" - apm_data_repository: "apm-data" - branch: "main" -specs: - apm_data_path: "input/elasticapm/docs/spec/v2" - apm_json_path: "tests/agents/json-specs" -apm_agent: - json_specs_path: "test/fixtures/json-specs" - server_schema_specs_path: "test/integration/api-schema/apm-server-schema" \ No newline at end of file diff --git a/.github/workflows/updatecli.yml b/.github/workflows/updatecli.yml index 4c489bcbb5..bbfb2d80c2 100644 --- a/.github/workflows/updatecli.yml +++ b/.github/workflows/updatecli.yml @@ -9,14 +9,29 @@ permissions: contents: read jobs: - bump: + compose: runs-on: ubuntu-latest + permissions: + contents: read + packages: read steps: - uses: actions/checkout@v4 + - uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446 # v3.2.0 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - uses: elastic/oblt-actions/updatecli/run@v1 + with: + command: --experimental compose diff + env: + GITHUB_TOKEN: ${{ secrets.UPDATECLI_GH_TOKEN }} + - uses: elastic/oblt-actions/updatecli/run@v1 with: - command: "--experimental apply --config .ci/updatecli/updatecli.d --values .ci/updatecli/values.yml" + command: --experimental compose apply env: GITHUB_TOKEN: ${{ secrets.UPDATECLI_GH_TOKEN }} diff --git a/update-compose.yaml b/update-compose.yaml new file mode 100644 index 0000000000..3239586d5c --- /dev/null +++ b/update-compose.yaml @@ -0,0 +1,14 @@ +# Config file for `updatecli compose ...`. +# https://www.updatecli.io/docs/core/compose/ +policies: + - name: Handle apm-data server specs + policy: ghcr.io/elastic/oblt-updatecli-policies/apm/apm-data-spec:0.2.0@sha256:7069c0773d44a74c4c8103b4d9957b468f66081ee9d677238072fe11c4d2197c + values: + - .ci/updatecli/values.d/scm.yml + - .ci/updatecli/values.d/apm-data-spec.yml + + - name: Handle apm json specs + policy: ghcr.io/elastic/oblt-updatecli-policies/apm/apm-json-specs:0.2.0@sha256:969a6d21eabd6ebea66cb29b35294a273d6dbc0f7da78589c416aedf08728e78 + values: + - .ci/updatecli/values.d/scm.yml + - .ci/updatecli/values.d/apm-json-specs.yml From b2052da41876c88c16e4eb5c69f00273b2d7bcae Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 11:11:40 +0200 Subject: [PATCH 063/396] chore(deps-dev): bump eslint from 9.6.0 to 9.7.0 in the eslint group (#4131) --- package-lock.json | 60 +++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/package-lock.json b/package-lock.json index e061903fd8..8f75e49950 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4324,9 +4324,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -4404,9 +4404,9 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.6.0.tgz", - "integrity": "sha512-D9B0/3vNg44ZeWbYMpBoXqNP4j6eQD5vNwIlGAuFRRzK/WtT/jvDQW3Bi9kkf3PMDMlM7Yi+73VLUsn5bJcl8A==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.7.0.tgz", + "integrity": "sha512-ChuWDQenef8OSFnvuxv0TCVxEwmu3+hPNKvM9B34qpM0rDRbjL8t5QkQeHHeAfsKQjuH9wS82WeCi1J/owatng==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -9152,16 +9152,16 @@ } }, "node_modules/eslint": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.6.0.tgz", - "integrity": "sha512-ElQkdLMEEqQNM9Njff+2Y4q2afHk7JpkPvrd7Xh7xefwgQynqPxwf55J7di9+MEibWUGdNjFF9ITG9Pck5M84w==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.7.0.tgz", + "integrity": "sha512-FzJ9D/0nGiCGBf8UXO/IGLTgLVzIxze1zpfA8Ton2mjLovXdAPlYDv+MQDcqj3TmrhAGYfOpz9RfR+ent0AgAw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", + "@eslint-community/regexpp": "^4.11.0", "@eslint/config-array": "^0.17.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.6.0", + "@eslint/js": "9.7.0", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -9170,7 +9170,7 @@ "cross-spawn": "^7.0.2", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.0.1", + "eslint-scope": "^8.0.2", "eslint-visitor-keys": "^4.0.0", "espree": "^10.1.0", "esquery": "^1.5.0", @@ -9466,9 +9466,9 @@ } }, "node_modules/eslint-scope": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.1.tgz", - "integrity": "sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", + "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -20287,9 +20287,9 @@ } }, "@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "dev": true }, "@eslint/config-array": { @@ -20347,9 +20347,9 @@ } }, "@eslint/js": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.6.0.tgz", - "integrity": "sha512-D9B0/3vNg44ZeWbYMpBoXqNP4j6eQD5vNwIlGAuFRRzK/WtT/jvDQW3Bi9kkf3PMDMlM7Yi+73VLUsn5bJcl8A==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.7.0.tgz", + "integrity": "sha512-ChuWDQenef8OSFnvuxv0TCVxEwmu3+hPNKvM9B34qpM0rDRbjL8t5QkQeHHeAfsKQjuH9wS82WeCi1J/owatng==", "dev": true }, "@eslint/object-schema": { @@ -24225,16 +24225,16 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.6.0.tgz", - "integrity": "sha512-ElQkdLMEEqQNM9Njff+2Y4q2afHk7JpkPvrd7Xh7xefwgQynqPxwf55J7di9+MEibWUGdNjFF9ITG9Pck5M84w==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.7.0.tgz", + "integrity": "sha512-FzJ9D/0nGiCGBf8UXO/IGLTgLVzIxze1zpfA8Ton2mjLovXdAPlYDv+MQDcqj3TmrhAGYfOpz9RfR+ent0AgAw==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", + "@eslint-community/regexpp": "^4.11.0", "@eslint/config-array": "^0.17.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.6.0", + "@eslint/js": "9.7.0", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -24243,7 +24243,7 @@ "cross-spawn": "^7.0.2", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.0.1", + "eslint-scope": "^8.0.2", "eslint-visitor-keys": "^4.0.0", "espree": "^10.1.0", "esquery": "^1.5.0", @@ -24565,9 +24565,9 @@ "dev": true }, "eslint-scope": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.1.tgz", - "integrity": "sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", + "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", "dev": true, "requires": { "esrecurse": "^4.3.0", From 5384673e9f2326313709b853425441b1b30ed96d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 11:12:02 +0200 Subject: [PATCH 064/396] chore(deps-dev): bump prettier from 3.3.2 to 3.3.3 (#4134) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8f75e49950..adb513230b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14117,9 +14117,9 @@ } }, "node_modules/prettier": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", - "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -27951,9 +27951,9 @@ "dev": true }, "prettier": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", - "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true }, "prettier-linter-helpers": { From b19a5d8e1fdc05946b7517b286592051fa06f210 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 11:12:53 +0200 Subject: [PATCH 065/396] chore(deps-dev): bump tedious from 18.2.3 to 18.2.4 (#4132) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index adb513230b..2cd40ec9d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16052,9 +16052,9 @@ } }, "node_modules/tedious": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.2.3.tgz", - "integrity": "sha512-AMdO1sodcoMU3vqDiU2d+Bdck6LcMAj4s4/fkxWXAgWGVnbZOQKaQrn6f+cRAZpdJhn5b8vX7cOfmB7oKNMUqQ==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.2.4.tgz", + "integrity": "sha512-+6Nzn/aURTQ+8OxLAJ8fKK5Fbb84HRTI3bHiAC3ZzBKrBg9BHtcHxjmlIni5Zn46hzKiZ5WrDMSwDH8oIYjV8w==", "dev": true, "dependencies": { "@azure/identity": "^4.2.1", @@ -29471,9 +29471,9 @@ "dev": true }, "tedious": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.2.3.tgz", - "integrity": "sha512-AMdO1sodcoMU3vqDiU2d+Bdck6LcMAj4s4/fkxWXAgWGVnbZOQKaQrn6f+cRAZpdJhn5b8vX7cOfmB7oKNMUqQ==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.2.4.tgz", + "integrity": "sha512-+6Nzn/aURTQ+8OxLAJ8fKK5Fbb84HRTI3bHiAC3ZzBKrBg9BHtcHxjmlIni5Zn46hzKiZ5WrDMSwDH8oIYjV8w==", "dev": true, "requires": { "@azure/identity": "^4.2.1", From 6f8adc0146a65dabcf8e344eef91bc64b50ac1fa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Jul 2024 11:17:47 -0700 Subject: [PATCH 066/396] chore(deps): bump actions/attest-build-provenance (#4130) Updates `actions/attest-build-provenance` from 1.3.2 to 1.3.3 --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d9e973bff6..e5b52c3da4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -44,7 +44,7 @@ jobs: - run: make -C .ci dist - name: Attest Lambda layer zip - uses: actions/attest-build-provenance@bdd51370e0416ac948727f861e03c2f05d32d78e # v1.3.2 + uses: actions/attest-build-provenance@5e9cb68e95676991667494a6a4e59b8a2f13e1d0 # v1.3.3 with: subject-path: "${{ github.workspace }}/build/aws/elastic-apm-node-lambda-layer-*.zip" @@ -75,7 +75,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image - uses: actions/attest-build-provenance@bdd51370e0416ac948727f861e03c2f05d32d78e # v1.3.2 + uses: actions/attest-build-provenance@5e9cb68e95676991667494a6a4e59b8a2f13e1d0 # v1.3.3 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push.outputs.digest }} @@ -109,7 +109,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image (wolfi) - uses: actions/attest-build-provenance@bdd51370e0416ac948727f861e03c2f05d32d78e # v1.3.2 + uses: actions/attest-build-provenance@5e9cb68e95676991667494a6a4e59b8a2f13e1d0 # v1.3.3 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push-wolfi.outputs.digest }} From e4d1846bd6c14a55cd16a6c73427bcf04bb29ae1 Mon Sep 17 00:00:00 2001 From: obltmachine <150269514+obltmachine@users.noreply.github.com> Date: Tue, 16 Jul 2024 23:33:43 +0200 Subject: [PATCH 067/396] [Automation] Update JSON server schema specs (#4122) --- .../api-schema/apm-server-schema/metadata.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test/integration/api-schema/apm-server-schema/metadata.json b/test/integration/api-schema/apm-server-schema/metadata.json index 7103bbeb5a..1122ed68c2 100644 --- a/test/integration/api-schema/apm-server-schema/metadata.json +++ b/test/integration/api-schema/apm-server-schema/metadata.json @@ -441,6 +441,14 @@ ], "maxLength": 1024 }, + "host_id": { + "description": "The OpenTelemetry semantic conventions compliant \"host.id\" attribute, if available.", + "type": [ + "null", + "string" + ], + "maxLength": 1024 + }, "hostname": { "description": "Deprecated: Use ConfiguredHostname and DetectedHostname instead. DeprecatedHostname is the host name of the system the service is running on. It does not distinguish between configured and detected hostname and therefore is deprecated and only used if no other hostname information is available.", "type": [ From 12db278fab47418da537e43f844dfaa567db5dc4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Jul 2024 17:15:30 -0700 Subject: [PATCH 068/396] chore(deps): bump import-in-the-middle from 1.8.1 to 1.9.0 (#4133) --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2cd40ec9d7..2b2797653d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "fast-safe-stringify": "^2.0.7", "fast-stream-to-buffer": "^1.0.0", "http-headers": "^3.0.2", - "import-in-the-middle": "1.8.1", + "import-in-the-middle": "1.9.0", "json-bigint": "^1.0.0", "lru-cache": "^10.0.1", "measured-reporting": "^1.51.1", @@ -11186,9 +11186,9 @@ } }, "node_modules/import-in-the-middle": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.8.1.tgz", - "integrity": "sha512-yhRwoHtiLGvmSozNOALgjRPFI6uYsds60EoMqqnXyyv+JOIW/BrrLejuTGBt+bq0T5tLzOHrN0T7xYTm4Qt/ng==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.9.0.tgz", + "integrity": "sha512-Ng1SJINJDBzyUEkx9Mj32XD8G0TQCUb5TMoL9V91CTn6F3wYZLygLuhNFrv0cNMBZaeptnL1zecV6XrIdHJ+xQ==", "dependencies": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", @@ -25745,9 +25745,9 @@ } }, "import-in-the-middle": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.8.1.tgz", - "integrity": "sha512-yhRwoHtiLGvmSozNOALgjRPFI6uYsds60EoMqqnXyyv+JOIW/BrrLejuTGBt+bq0T5tLzOHrN0T7xYTm4Qt/ng==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.9.0.tgz", + "integrity": "sha512-Ng1SJINJDBzyUEkx9Mj32XD8G0TQCUb5TMoL9V91CTn6F3wYZLygLuhNFrv0cNMBZaeptnL1zecV6XrIdHJ+xQ==", "requires": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", diff --git a/package.json b/package.json index 8ed42ab64f..3e41e55ad0 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "fast-safe-stringify": "^2.0.7", "fast-stream-to-buffer": "^1.0.0", "http-headers": "^3.0.2", - "import-in-the-middle": "1.8.1", + "import-in-the-middle": "1.9.0", "json-bigint": "^1.0.0", "lru-cache": "^10.0.1", "measured-reporting": "^1.51.1", From b144a3c7c6bc2eebe317d08bcd1354412266368c Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Tue, 16 Jul 2024 17:54:48 -0700 Subject: [PATCH 069/396] chore(deps): pin lru-cache ver, *downgrade* rimraf and glob to ensure compat with node 14.17; block updates to newer majors (#4139) --- .github/dependabot.yml | 7 + package-lock.json | 794 +++-------------------------------------- package.json | 6 +- 3 files changed, 61 insertions(+), 746 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 25f4214c6c..084410981a 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -20,6 +20,13 @@ updates: update-types: ["version-update:semver-patch"] - dependency-name: "@types/*" update-types: ["version-update:semver-patch"] + # Packages whose major versions have dropped support for Node.js versions + # that this package needs. + - dependency-name: "glob" # glob@10 min is 14.20, we need >=14.17; glob@11 dropped 14, 16, 18 + update-types: ["version-update:semver-major"] + - dependency-name: "lru-cache" # later lru-cache@10.x toyed with dropping 14.x, we pin to a specific early 10.x; lru-cache@11 dropped 14, 16, 18 + - dependency-name: "rimraf" # rimraf@5 min is 14.20, we need >=14.17; rimraf@6 dropped 14, 16, 18 + update-types: ["version-update:semver-major"] groups: aws-sdk: dependency-type: "development" diff --git a/package-lock.json b/package-lock.json index 2b2797653d..e62d24e6cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,7 +29,7 @@ "http-headers": "^3.0.2", "import-in-the-middle": "1.9.0", "json-bigint": "^1.0.0", - "lru-cache": "^10.0.1", + "lru-cache": "10.2.0", "measured-reporting": "^1.51.1", "module-details-from-path": "^1.0.3", "monitor-event-loop-delay": "^1.0.0", @@ -89,7 +89,7 @@ "finalhandler": "^1.1.2", "generic-pool": "^3.7.1", "get-port": "^5.1.1", - "glob": "^10.3.4", + "glob": "^7.2.3", "got": "^11.8.5", "graphql": "^16.6.0", "handlebars": "^4.7.3", @@ -119,7 +119,7 @@ "redis": "^4.3.0", "request": "^2.88.2", "restify": "^11.0.0", - "rimraf": "^5.0.1", + "rimraf": "^3.0.2", "tape": "^5.0.0", "tedious": "^18.1.0", "test-all-versions": "^6.1.0", @@ -544,9 +544,9 @@ } }, "node_modules/@apollo/utils.keyvaluecache/node_modules/lru-cache": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.13.1.tgz", - "integrity": "sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, "engines": { "node": ">=12" @@ -2467,26 +2467,6 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, - "node_modules/@babel/cli/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@babel/code-frame": { "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", @@ -5063,102 +5043,6 @@ "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==", "dev": true }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/@josephg/resolvable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz", @@ -5424,16 +5308,6 @@ "node": ">=14" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=14" - } - }, "node_modules/@pkgr/utils": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", @@ -8634,26 +8508,6 @@ "node": ">=10.0.0" } }, - "node_modules/dependency-check/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/dependency-check/node_modules/globby": { "version": "10.0.2", "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", @@ -8780,12 +8634,6 @@ "node": ">=0.10" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -8908,12 +8756,6 @@ "integrity": "sha512-+2OAGjUx68xElQhydpcbqH50hE8Vs2K6TkAeLhICYfndb67CVH0UsZaijmRUE3rHlIxU1u0jxwhgVe6fK3YANA==", "dev": true }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, "node_modules/enabled": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", @@ -10575,22 +10417,21 @@ } }, "node_modules/glob": { - "version": "10.3.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.4.tgz", - "integrity": "sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -10608,67 +10449,6 @@ "node": ">= 6" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/glob/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob/node_modules/minipass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", - "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/glob/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -11473,15 +11253,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-generator-function": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", @@ -11829,24 +11600,6 @@ "node": "*" } }, - "node_modules/jackspeak": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.3.tgz", - "integrity": "sha512-R2bUw+kVZFS/h1AZqBKrSgDmdmjApzgY0AlCPumopFiAlbUxE2gf+SCuBzQ0cP5hHmUmFYF5yw55T97Th5Kstg==", - "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, "node_modules/jmespath": { "version": "0.16.0", "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", @@ -12573,9 +12326,9 @@ } }, "node_modules/lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "engines": { "node": "14 || >=16.14" } @@ -13674,31 +13427,6 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, - "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "dev": true, - "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/minipass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", - "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/path-to-regexp": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", @@ -14471,26 +14199,6 @@ "npm-normalize-package-bin": "^1.0.0" } }, - "node_modules/read-package-json/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -14906,9 +14614,9 @@ } }, "node_modules/restify/node_modules/lru-cache": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", - "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, "engines": { "node": ">=12" @@ -14970,18 +14678,16 @@ "dev": true }, "node_modules/rimraf": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz", - "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { - "glob": "^10.2.5" + "glob": "^7.1.3" }, "bin": { - "rimraf": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=14" + "rimraf": "bin.js" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -15744,35 +15450,6 @@ } ] }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/string.prototype.trim": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", @@ -15831,19 +15508,6 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -15999,26 +15663,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tape/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/tape/node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -16909,57 +16553,6 @@ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -17350,9 +16943,9 @@ }, "dependencies": { "lru-cache": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.13.1.tgz", - "integrity": "sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true } } @@ -18979,20 +18572,6 @@ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } } } }, @@ -21013,71 +20592,6 @@ "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==", "dev": true }, - "@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "requires": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - } - } - } - }, "@josephg/resolvable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz", @@ -21284,13 +20798,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz", "integrity": "sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==" }, - "@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true - }, "@pkgr/utils": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", @@ -23812,20 +23319,6 @@ "resolve": "^1.1.7" }, "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, "globby": { "version": "10.0.2", "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", @@ -23919,12 +23412,6 @@ "nan": "^2.14.0" } }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -24024,12 +23511,6 @@ "integrity": "sha512-+2OAGjUx68xElQhydpcbqH50hE8Vs2K6TkAeLhICYfndb67CVH0UsZaijmRUE3rHlIxU1u0jxwhgVe6fK3YANA==", "dev": true }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, "enabled": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", @@ -25286,58 +24767,17 @@ } }, "glob": { - "version": "10.3.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.4.tgz", - "integrity": "sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - } - }, - "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", - "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", - "dev": true - }, - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true - } + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-parent": { @@ -25940,12 +25380,6 @@ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, "is-generator-function": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", @@ -26183,16 +25617,6 @@ } } }, - "jackspeak": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.3.tgz", - "integrity": "sha512-R2bUw+kVZFS/h1AZqBKrSgDmdmjApzgY0AlCPumopFiAlbUxE2gf+SCuBzQ0cP5hHmUmFYF5yw55T97Th5Kstg==", - "dev": true, - "requires": { - "@isaacs/cliui": "^8.0.2", - "@pkgjs/parseargs": "^0.11.0" - } - }, "jmespath": { "version": "0.16.0", "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", @@ -26787,9 +26211,9 @@ "dev": true }, "lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==" + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==" }, "make-dir": { "version": "2.1.0", @@ -27630,24 +27054,6 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, - "path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "dev": true, - "requires": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "dependencies": { - "minipass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", - "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", - "dev": true - } - } - }, "path-to-regexp": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", @@ -28239,22 +27645,6 @@ "json-parse-even-better-errors": "^2.3.0", "normalize-package-data": "^2.0.0", "npm-normalize-package-bin": "^1.0.0" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } } }, "readable-stream": { @@ -28576,9 +27966,9 @@ } }, "lru-cache": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", - "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true }, "mime": { @@ -28632,12 +28022,12 @@ "dev": true }, "rimraf": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz", - "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { - "glob": "^10.2.5" + "glob": "^7.1.3" } }, "run-applescript": { @@ -29250,28 +28640,6 @@ } } }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string-width-cjs": { - "version": "npm:string-width@4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, "string.prototype.trim": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", @@ -29312,15 +28680,6 @@ "ansi-regex": "^5.0.1" } }, - "strip-ansi-cjs": { - "version": "npm:strip-ansi@6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -29431,20 +28790,6 @@ "which-typed-array": "^1.1.13" } }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, "isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -30146,43 +29491,6 @@ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, - "wrap-ansi-cjs": { - "version": "npm:wrap-ansi@7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 3e41e55ad0..8eea24f171 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "http-headers": "^3.0.2", "import-in-the-middle": "1.9.0", "json-bigint": "^1.0.0", - "lru-cache": "^10.0.1", + "lru-cache": "10.2.0", "measured-reporting": "^1.51.1", "module-details-from-path": "^1.0.3", "monitor-event-loop-delay": "^1.0.0", @@ -168,7 +168,7 @@ "finalhandler": "^1.1.2", "generic-pool": "^3.7.1", "get-port": "^5.1.1", - "glob": "^10.3.4", + "glob": "^7.2.3", "got": "^11.8.5", "graphql": "^16.6.0", "handlebars": "^4.7.3", @@ -198,7 +198,7 @@ "redis": "^4.3.0", "request": "^2.88.2", "restify": "^11.0.0", - "rimraf": "^5.0.1", + "rimraf": "^3.0.2", "tape": "^5.0.0", "tedious": "^18.1.0", "test-all-versions": "^6.1.0", From acedc5324b1c861102619c3aa385f39194d723c9 Mon Sep 17 00:00:00 2001 From: Ly Tran Date: Wed, 24 Jul 2024 03:36:04 +0700 Subject: [PATCH 070/396] fix: add missing methods to noop-transaction (#4098) --- lib/instrumentation/noop-transaction.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/instrumentation/noop-transaction.js b/lib/instrumentation/noop-transaction.js index 2d3dffc795..5c1e4df291 100644 --- a/lib/instrumentation/noop-transaction.js +++ b/lib/instrumentation/noop-transaction.js @@ -69,6 +69,11 @@ class NoopTransaction { duration() { return 0; } + setFaas() {} + setMessageContext() {} + setServiceContext() {} + setCloudContext() {} + _setOutcomeFromHttpStatusCode() {} } module.exports = { From 5b06e73eefdb267ee94251dc2f0bf8ae2a54d0bc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jul 2024 14:12:09 -0700 Subject: [PATCH 071/396] chore(deps): bump import-in-the-middle from 1.9.0 to 1.9.1 (#4142) --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index e62d24e6cc..8b74f5ca8c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "fast-safe-stringify": "^2.0.7", "fast-stream-to-buffer": "^1.0.0", "http-headers": "^3.0.2", - "import-in-the-middle": "1.9.0", + "import-in-the-middle": "1.9.1", "json-bigint": "^1.0.0", "lru-cache": "10.2.0", "measured-reporting": "^1.51.1", @@ -10966,9 +10966,9 @@ } }, "node_modules/import-in-the-middle": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.9.0.tgz", - "integrity": "sha512-Ng1SJINJDBzyUEkx9Mj32XD8G0TQCUb5TMoL9V91CTn6F3wYZLygLuhNFrv0cNMBZaeptnL1zecV6XrIdHJ+xQ==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.9.1.tgz", + "integrity": "sha512-E+3tEOutU1MV0mxhuCwfSPNNWRkbTJ3/YyL5be+blNIbHwZc53uYHQfuIhAU77xWR0BoF2eT7cqDJ6VlU5APPg==", "dependencies": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", @@ -25185,9 +25185,9 @@ } }, "import-in-the-middle": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.9.0.tgz", - "integrity": "sha512-Ng1SJINJDBzyUEkx9Mj32XD8G0TQCUb5TMoL9V91CTn6F3wYZLygLuhNFrv0cNMBZaeptnL1zecV6XrIdHJ+xQ==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.9.1.tgz", + "integrity": "sha512-E+3tEOutU1MV0mxhuCwfSPNNWRkbTJ3/YyL5be+blNIbHwZc53uYHQfuIhAU77xWR0BoF2eT7cqDJ6VlU5APPg==", "requires": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", diff --git a/package.json b/package.json index 8eea24f171..cc4860c3cb 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "fast-safe-stringify": "^2.0.7", "fast-stream-to-buffer": "^1.0.0", "http-headers": "^3.0.2", - "import-in-the-middle": "1.9.0", + "import-in-the-middle": "1.9.1", "json-bigint": "^1.0.0", "lru-cache": "10.2.0", "measured-reporting": "^1.51.1", From 6f7061a9c250522f19fb4eaa6f0831380eadffef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jul 2024 14:26:47 -0700 Subject: [PATCH 072/396] chore(deps-dev): bump mysql2 from 3.10.2 to 3.10.3 (#4141) --- package-lock.json | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8b74f5ca8c..da6ef3310a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7127,6 +7127,15 @@ "node": "*" } }, + "node_modules/aws-ssl-profiles": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.1.tgz", + "integrity": "sha512-+H+kuK34PfMaI9PNU/NSjBKL5hh/KDM9J72kwYeYEm0A8B1AC4fuCy3qsjnA7lxklgyXsB68yn8Z2xoZEjgwCQ==", + "dev": true, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/aws4": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", @@ -12774,11 +12783,12 @@ } }, "node_modules/mysql2": { - "version": "3.10.2", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.2.tgz", - "integrity": "sha512-KCXPEvAkO0RcHPr362O5N8tFY2fXvbjfkPvRY/wGumh4EOemo9Hm5FjQZqv/pCmrnuxGu5OxnSENG0gTXqKMgQ==", + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.3.tgz", + "integrity": "sha512-k43gmH9i79rZD4hGPdj7pDuT0UBiFjs4UzXEy1cJrV0QqcSABomoLwvejqdbcXN+Vd7gi999CVM6o9vCPKq29g==", "dev": true, "dependencies": { + "aws-ssl-profiles": "^1.1.1", "denque": "^2.1.0", "generate-function": "^2.3.1", "iconv-lite": "^0.6.3", @@ -22279,6 +22289,12 @@ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", "dev": true }, + "aws-ssl-profiles": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.1.tgz", + "integrity": "sha512-+H+kuK34PfMaI9PNU/NSjBKL5hh/KDM9J72kwYeYEm0A8B1AC4fuCy3qsjnA7lxklgyXsB68yn8Z2xoZEjgwCQ==", + "dev": true + }, "aws4": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", @@ -26547,11 +26563,12 @@ } }, "mysql2": { - "version": "3.10.2", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.2.tgz", - "integrity": "sha512-KCXPEvAkO0RcHPr362O5N8tFY2fXvbjfkPvRY/wGumh4EOemo9Hm5FjQZqv/pCmrnuxGu5OxnSENG0gTXqKMgQ==", + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.3.tgz", + "integrity": "sha512-k43gmH9i79rZD4hGPdj7pDuT0UBiFjs4UzXEy1cJrV0QqcSABomoLwvejqdbcXN+Vd7gi999CVM6o9vCPKq29g==", "dev": true, "requires": { + "aws-ssl-profiles": "^1.1.1", "denque": "^2.1.0", "generate-function": "^2.3.1", "iconv-lite": "^0.6.3", From efd97f2c929739944176142ae8bb01776ca804ab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jul 2024 14:45:27 -0700 Subject: [PATCH 073/396] chore(deps): bump docker/build-push-action (#4144) Updates `docker/build-push-action` from 6.3.0 to 6.4.1 --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e5b52c3da4..cfed3d1cf5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -63,7 +63,7 @@ jobs: - name: Build and Push Docker Image id: docker-push - uses: docker/build-push-action@1a162644f9a7e87d8f4b053101d1d9a712edc18c # v6.3.0 + uses: docker/build-push-action@1ca370b3a9802c92e886402e0dd88098a2533b12 # v6.4.1 with: context: . platforms: linux/amd64,linux/arm64 @@ -97,7 +97,7 @@ jobs: - name: Build and Push Docker Image (wolfi) id: docker-push-wolfi - uses: docker/build-push-action@1a162644f9a7e87d8f4b053101d1d9a712edc18c # v6.3.0 + uses: docker/build-push-action@1ca370b3a9802c92e886402e0dd88098a2533b12 # v6.4.1 with: context: . platforms: linux/amd64,linux/arm64 From 921dbb9fbac406baa1e5c08b3ec4c8f222b2054f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jul 2024 14:45:50 -0700 Subject: [PATCH 074/396] chore(deps-dev): bump eslint-plugin-prettier in the eslint group (#4145) Updates `eslint-plugin-prettier` from 5.1.3 to 5.2.1 --- package-lock.json | 710 ++-------------------------------------------- 1 file changed, 25 insertions(+), 685 deletions(-) diff --git a/package-lock.json b/package-lock.json index da6ef3310a..36cba3ff8e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5308,19 +5308,11 @@ "node": ">=14" } }, - "node_modules/@pkgr/utils": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", - "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "fast-glob": "^3.3.0", - "is-glob": "^4.0.3", - "open": "^9.1.0", - "picocolors": "^1.0.0", - "tslib": "^2.6.0" - }, "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, @@ -5328,36 +5320,6 @@ "url": "https://opencollective.com/unts" } }, - "node_modules/@pkgr/utils/node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@pkgr/utils/node_modules/open": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", - "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", - "dev": true, - "dependencies": { - "default-browser": "^4.0.0", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -7282,15 +7244,6 @@ "platform": "^1.3.3" } }, - "node_modules/big-integer": { - "version": "1.6.52", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", - "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, "node_modules/bignumber.js": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", @@ -7480,18 +7433,6 @@ "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", "dev": true }, - "node_modules/bplist-parser": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", - "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", - "dev": true, - "dependencies": { - "big-integer": "^1.6.44" - }, - "engines": { - "node": ">= 5.10.0" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -7586,21 +7527,6 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "node_modules/bundle-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", - "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", - "dev": true, - "dependencies": { - "run-applescript": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -8350,40 +8276,6 @@ "node": ">=0.10.0" } }, - "node_modules/default-browser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", - "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", - "dev": true, - "dependencies": { - "bundle-name": "^3.0.0", - "default-browser-id": "^3.0.0", - "execa": "^7.1.1", - "titleize": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", - "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", - "dev": true, - "dependencies": { - "bplist-parser": "^0.2.0", - "untildify": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", @@ -9275,13 +9167,13 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", - "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", + "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.6" + "synckit": "^0.9.1" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -9612,53 +9504,6 @@ "assert-plus": "^1.0.0" } }, - "node_modules/execa": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", - "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/execa/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/express": { "version": "4.19.2", "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", @@ -10914,15 +10759,6 @@ "node": ">= 14" } }, - "node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", - "dev": true, - "engines": { - "node": ">=14.18.0" - } - }, "node_modules/humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", @@ -11289,39 +11125,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-inside-container/node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-integer": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.7.tgz", @@ -12426,12 +12229,6 @@ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -12496,18 +12293,6 @@ "node": ">= 0.6" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/mimic-response": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", @@ -13044,33 +12829,6 @@ "integrity": "sha512-iEiETp11ZuiWKAlLRBaUD3zKjZTzAco3xrkCbIJaxs+iu2+zIbaKXdVpzmsjyDCe0r7IpDW55iAyVHzktTg5DA==", "dev": true }, - "node_modules/npm-run-path": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", - "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", - "dev": true, - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -13274,21 +13032,6 @@ "fn.name": "1.x.x" } }, - "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/only": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", @@ -14703,110 +14446,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/run-applescript": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", - "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", - "dev": true, - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/run-applescript/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/run-applescript/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/run-applescript/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/run-applescript/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript/node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -15173,12 +14812,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, "node_modules/simple-lru-cache": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/simple-lru-cache/-/simple-lru-cache-0.0.2.tgz", @@ -15527,18 +15160,6 @@ "node": ">=4" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -15581,12 +15202,12 @@ } }, "node_modules/synckit": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.6.tgz", - "integrity": "sha512-laHF2savN6sMeHCjLRkheIU4wo3Zg9Ln5YOjOo7sZ5dVQW8yF5pPE5SIw1dsPhq3TRp1jisKRCdPhfs/1WMqDA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", + "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", "dev": true, "dependencies": { - "@pkgr/utils": "^2.4.2", + "@pkgr/core": "^0.1.0", "tslib": "^2.6.2" }, "engines": { @@ -15842,18 +15463,6 @@ "node": ">=8" } }, - "node_modules/titleize": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", - "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -16213,15 +15822,6 @@ "node": ">= 0.8" } }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/update-browserslist-db": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", @@ -20808,39 +20408,11 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz", "integrity": "sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==" }, - "@pkgr/utils": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", - "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "fast-glob": "^3.3.0", - "is-glob": "^4.0.3", - "open": "^9.1.0", - "picocolors": "^1.0.0", - "tslib": "^2.6.0" - }, - "dependencies": { - "define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true - }, - "open": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", - "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", - "dev": true, - "requires": { - "default-browser": "^4.0.0", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^2.2.0" - } - } - } + "@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true }, "@protobufjs/aspromise": { "version": "1.1.2", @@ -22410,12 +21982,6 @@ "platform": "^1.3.3" } }, - "big-integer": { - "version": "1.6.52", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", - "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", - "dev": true - }, "bignumber.js": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", @@ -22556,15 +22122,6 @@ "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", "dev": true }, - "bplist-parser": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", - "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", - "dev": true, - "requires": { - "big-integer": "^1.6.44" - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -22633,15 +22190,6 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "bundle-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", - "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", - "dev": true, - "requires": { - "run-applescript": "^5.0.0" - } - }, "bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -23217,28 +22765,6 @@ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true }, - "default-browser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", - "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", - "dev": true, - "requires": { - "bundle-name": "^3.0.0", - "default-browser-id": "^3.0.0", - "execa": "^7.1.1", - "titleize": "^3.0.0" - } - }, - "default-browser-id": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", - "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", - "dev": true, - "requires": { - "bplist-parser": "^0.2.0", - "untildify": "^4.0.0" - } - }, "defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", @@ -24046,13 +23572,13 @@ } }, "eslint-plugin-prettier": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", - "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", + "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.6" + "synckit": "^0.9.1" } }, "eslint-plugin-promise": { @@ -24150,37 +23676,6 @@ "assert-plus": "^1.0.0" } }, - "execa": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", - "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "dependencies": { - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true - } - } - }, "express": { "version": "4.19.2", "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", @@ -25155,12 +24650,6 @@ "debug": "4" } }, - "human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", - "dev": true - }, "humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", @@ -25414,23 +24903,6 @@ "is-extglob": "^2.1.1" } }, - "is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, - "requires": { - "is-docker": "^3.0.0" - }, - "dependencies": { - "is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "dev": true - } - } - }, "is-integer": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.7.tgz", @@ -26302,12 +25774,6 @@ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -26351,12 +25817,6 @@ "mime-db": "1.52.0" } }, - "mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true - }, "mimic-response": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", @@ -26781,23 +26241,6 @@ "integrity": "sha512-iEiETp11ZuiWKAlLRBaUD3zKjZTzAco3xrkCbIJaxs+iu2+zIbaKXdVpzmsjyDCe0r7IpDW55iAyVHzktTg5DA==", "dev": true }, - "npm-run-path": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", - "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", - "dev": true, - "requires": { - "path-key": "^4.0.0" - }, - "dependencies": { - "path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true - } - } - }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -26953,15 +26396,6 @@ "fn.name": "1.x.x" } }, - "onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "requires": { - "mimic-fn": "^4.0.0" - } - }, "only": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", @@ -28047,76 +27481,6 @@ "glob": "^7.1.3" } }, - "run-applescript": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", - "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", - "dev": true, - "requires": { - "execa": "^5.0.0" - }, - "dependencies": { - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - } - } - }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -28414,12 +27778,6 @@ "object-inspect": "^1.9.0" } }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, "simple-lru-cache": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/simple-lru-cache/-/simple-lru-cache-0.0.2.tgz", @@ -28703,12 +28061,6 @@ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true }, - "strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true - }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -28736,12 +28088,12 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, "synckit": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.6.tgz", - "integrity": "sha512-laHF2savN6sMeHCjLRkheIU4wo3Zg9Ln5YOjOo7sZ5dVQW8yF5pPE5SIw1dsPhq3TRp1jisKRCdPhfs/1WMqDA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", + "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", "dev": true, "requires": { - "@pkgr/utils": "^2.4.2", + "@pkgr/core": "^0.1.0", "tslib": "^2.6.2" } }, @@ -28958,12 +28310,6 @@ "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==", "dev": true }, - "titleize": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", - "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", - "dev": true - }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -29234,12 +28580,6 @@ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true }, - "untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true - }, "update-browserslist-db": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", From c1aa5250500efc4c33d223d70e2bc1c2248b6c34 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Wed, 24 Jul 2024 08:17:14 -0700 Subject: [PATCH 075/396] ci: lock on older mssql/server Docker image to avoid healthcheck breakage (#4148) The latest mcr.microsoft.com/mssql/server release (CU14) moves the sqlcmd install location, breaking our healthcheck. Just updating the path hits a different error. As a workaround, lets pin to the working mssql/server docker image for CI. Note that this docker compose file is used for TAV tests. I'm not sure if hte mssql/server image used by GH Actions' mssql 'service' will be affected at some point as well. Closes: https://github.com/elastic/apm-agent-nodejs/issues/4147 --- .ci/docker/docker-compose.yml | 4 +++- test/docker-compose.yml | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.ci/docker/docker-compose.yml b/.ci/docker/docker-compose.yml index cf1e6555b0..4ecdf630d4 100644 --- a/.ci/docker/docker-compose.yml +++ b/.ci/docker/docker-compose.yml @@ -31,7 +31,9 @@ services: retries: 30 mssql: - image: mcr.microsoft.com/mssql/server + # Cumulative update 14 (CU14), released 2024-07-23, breaks the healthcheck. + # See https://github.com/elastic/apm-agent-nodejs/issues/4147 + image: mcr.microsoft.com/mssql/server:2022-CU13-ubuntu-22.04 platform: linux/amd64 environment: - ACCEPT_EULA=Y diff --git a/test/docker-compose.yml b/test/docker-compose.yml index a87e4435c3..5ee22bc6f7 100644 --- a/test/docker-compose.yml +++ b/test/docker-compose.yml @@ -31,7 +31,9 @@ services: retries: 30 mssql: - image: mcr.microsoft.com/mssql/server + # Cumulative update 14 (CU14), released 2024-07-23, breaks the healthcheck. + # See https://github.com/elastic/apm-agent-nodejs/issues/4147 + image: mcr.microsoft.com/mssql/server:2022-CU13-ubuntu-22.04 platform: linux/amd64 environment: - ACCEPT_EULA=Y From 4818c651fd3738219af813cd5f183bd7eec4700b Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Wed, 24 Jul 2024 08:33:23 -0700 Subject: [PATCH 076/396] release 4.7.1 (#4146) The import-in-the-middle update is work a bug fix release. It fixes a crash when using vue with ESM code. --- CHANGELOG.asciidoc | 12 ++++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index c703673070..212641ca65 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -33,6 +33,18 @@ Notes: See the <> guide. + +[[release-notes-4.7.1]] +==== 4.7.1 - 2024/07/24 + +[float] +===== Bug fixes + +- Update import-in-the-middle internally-used library to v1.9.1. This can + fix usage with ESM code (see <>) in some cases, e.g. usage with + https://github.com/elastic/apm-agent-nodejs/issues/4143[Nuxt 3]. + + [[release-notes-4.7.0]] ==== 4.7.0 - 2024/06/13 diff --git a/package-lock.json b/package-lock.json index 36cba3ff8e..57c8be1980 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "elastic-apm-node", - "version": "4.7.0", + "version": "4.7.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "elastic-apm-node", - "version": "4.7.0", + "version": "4.7.1", "license": "BSD-2-Clause", "dependencies": { "@elastic/ecs-pino-format": "^1.5.0", diff --git a/package.json b/package.json index cc4860c3cb..693552cc1c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "elastic-apm-node", - "version": "4.7.0", + "version": "4.7.1", "description": "The official Elastic APM agent for Node.js", "type": "commonjs", "main": "index.js", From a0bff12884cb67024116f1eccb8c1575b0e8ff67 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Fri, 26 Jul 2024 09:45:35 -0700 Subject: [PATCH 077/396] chore: Configure Renovate (#4151) Only let Renovate bump Chainguard/Wolfi images. Co-authored-by: Trent Mick Co-authored-by: nuugen --- renovate.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 renovate.json diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000000..36237c56f4 --- /dev/null +++ b/renovate.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "github>elastic/renovate-config:only-chainguard" + ] +} From 4e94d474d8658efd5f3d9fe5ce8fc333c9cbc636 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 09:57:01 +0200 Subject: [PATCH 078/396] chore(deps-dev): bump tedious from 18.2.4 to 18.3.0 (#4164) --- package-lock.json | 59 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 42 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index 57c8be1980..aed202946a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2128,17 +2128,29 @@ } }, "node_modules/@azure/core-auth": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.5.0.tgz", - "integrity": "sha512-udzoBuYG1VBoHVohDTrvKjyzel34zt77Bhp7dQntVGGD0ehVq48owENbBG8fIgkHRNUBQH5k1r0hpoMu5L8+kw==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.7.2.tgz", + "integrity": "sha512-Igm/S3fDYmnMq1uKS38Ae1/m37B3zigdlZw+kocwEhh5GjyKjPrXKO2J6rzpC1wAxrNil/jX9BJRqBshyjnF3g==", "dev": true, "dependencies": { - "@azure/abort-controller": "^1.0.0", + "@azure/abort-controller": "^2.0.0", "@azure/core-util": "^1.1.0", - "tslib": "^2.2.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-auth/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@azure/core-client": { @@ -15327,11 +15339,12 @@ } }, "node_modules/tedious": { - "version": "18.2.4", - "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.2.4.tgz", - "integrity": "sha512-+6Nzn/aURTQ+8OxLAJ8fKK5Fbb84HRTI3bHiAC3ZzBKrBg9BHtcHxjmlIni5Zn46hzKiZ5WrDMSwDH8oIYjV8w==", + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.3.0.tgz", + "integrity": "sha512-/aVCX2VLu9Ihf5UyxifRXfmWQ1P8HNJvapk1as+LMzSdw9AmbNtEHllrffZpNrzBCptcK0Z4m06k+tutL2wowA==", "dev": true, "dependencies": { + "@azure/core-auth": "^1.7.2", "@azure/identity": "^4.2.1", "@azure/keyvault-keys": "^4.4.0", "@js-joda/core": "^5.6.1", @@ -17912,14 +17925,25 @@ } }, "@azure/core-auth": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.5.0.tgz", - "integrity": "sha512-udzoBuYG1VBoHVohDTrvKjyzel34zt77Bhp7dQntVGGD0ehVq48owENbBG8fIgkHRNUBQH5k1r0hpoMu5L8+kw==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.7.2.tgz", + "integrity": "sha512-Igm/S3fDYmnMq1uKS38Ae1/m37B3zigdlZw+kocwEhh5GjyKjPrXKO2J6rzpC1wAxrNil/jX9BJRqBshyjnF3g==", "dev": true, "requires": { - "@azure/abort-controller": "^1.0.0", + "@azure/abort-controller": "^2.0.0", "@azure/core-util": "^1.1.0", - "tslib": "^2.2.0" + "tslib": "^2.6.2" + }, + "dependencies": { + "@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dev": true, + "requires": { + "tslib": "^2.6.2" + } + } } }, "@azure/core-client": { @@ -28185,11 +28209,12 @@ "dev": true }, "tedious": { - "version": "18.2.4", - "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.2.4.tgz", - "integrity": "sha512-+6Nzn/aURTQ+8OxLAJ8fKK5Fbb84HRTI3bHiAC3ZzBKrBg9BHtcHxjmlIni5Zn46hzKiZ5WrDMSwDH8oIYjV8w==", + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.3.0.tgz", + "integrity": "sha512-/aVCX2VLu9Ihf5UyxifRXfmWQ1P8HNJvapk1as+LMzSdw9AmbNtEHllrffZpNrzBCptcK0Z4m06k+tutL2wowA==", "dev": true, "requires": { + "@azure/core-auth": "^1.7.2", "@azure/identity": "^4.2.1", "@azure/keyvault-keys": "^4.4.0", "@js-joda/core": "^5.6.1", From 8f573bce49b588032ae49d2b26cef039bcb96ae8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 09:59:25 +0200 Subject: [PATCH 079/396] chore(deps-dev): bump undici from 6.19.2 to 6.19.4 (#4161) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index aed202946a..4112789c2a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15758,9 +15758,9 @@ } }, "node_modules/undici": { - "version": "6.19.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.2.tgz", - "integrity": "sha512-JfjKqIauur3Q6biAtHJ564e3bWa8VvT+7cSiOJHFbX4Erv6CLGDpg8z+Fmg/1OI/47RA+GI2QZaF48SSaLvyBA==", + "version": "6.19.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.4.tgz", + "integrity": "sha512-i3uaEUwNdkRq2qtTRRJb13moW5HWqviu7Vl7oYRYz++uPtGHJj+x7TGjcEuwS5Mt2P4nA0U9dhIX3DdB6JGY0g==", "dev": true, "engines": { "node": ">=18.17" @@ -28546,9 +28546,9 @@ "dev": true }, "undici": { - "version": "6.19.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.2.tgz", - "integrity": "sha512-JfjKqIauur3Q6biAtHJ564e3bWa8VvT+7cSiOJHFbX4Erv6CLGDpg8z+Fmg/1OI/47RA+GI2QZaF48SSaLvyBA==", + "version": "6.19.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.4.tgz", + "integrity": "sha512-i3uaEUwNdkRq2qtTRRJb13moW5HWqviu7Vl7oYRYz++uPtGHJj+x7TGjcEuwS5Mt2P4nA0U9dhIX3DdB6JGY0g==", "dev": true }, "undici-types": { From afaab8c4362d3126ff578f982ae4c0594f0d4254 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 10:00:45 +0200 Subject: [PATCH 080/396] chore(deps-dev): bump @types/node from 20.14.0 to 22.0.0 (#4159) --- package-lock.json | 30 +++++++++++++++--------------- package.json | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4112789c2a..ec36671e00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -61,7 +61,7 @@ "@fastify/formbody": "^7.0.1", "@hapi/hapi": "^21.0.0", "@koa/router": "^12.0.0", - "@types/node": "^20.1.0", + "@types/node": "^22.0.0", "ajv": "^8.12.0", "apollo-server-core": "^3.0.0", "apollo-server-express": "^3.0.0", @@ -6320,12 +6320,12 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.14.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.0.tgz", - "integrity": "sha512-5cHBxFGJx6L4s56Bubp4fglrEpmyJypsqI6RgzMfBHWUJQGWAAi8cWcgetEbZXHYXo9C2Fa4EEds/uSyS4cxmA==", + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.0.0.tgz", + "integrity": "sha512-VT7KSYudcPOzP5Q0wfbowyNLaVR8QWUdw+088uFWwfvpY6uCWaXpqV6ieLAu9WBcnTa7H4Z5RLK8I5t2FuOcqw==", "dev": true, "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.11.1" } }, "node_modules/@types/node-fetch": { @@ -15767,9 +15767,9 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.11.1.tgz", + "integrity": "sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==", "dev": true }, "node_modules/unicode-byte-truncate": { @@ -21278,12 +21278,12 @@ "dev": true }, "@types/node": { - "version": "20.14.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.0.tgz", - "integrity": "sha512-5cHBxFGJx6L4s56Bubp4fglrEpmyJypsqI6RgzMfBHWUJQGWAAi8cWcgetEbZXHYXo9C2Fa4EEds/uSyS4cxmA==", + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.0.0.tgz", + "integrity": "sha512-VT7KSYudcPOzP5Q0wfbowyNLaVR8QWUdw+088uFWwfvpY6uCWaXpqV6ieLAu9WBcnTa7H4Z5RLK8I5t2FuOcqw==", "dev": true, "requires": { - "undici-types": "~5.26.4" + "undici-types": "~6.11.1" } }, "@types/node-fetch": { @@ -28552,9 +28552,9 @@ "dev": true }, "undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.11.1.tgz", + "integrity": "sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==", "dev": true }, "unicode-byte-truncate": { diff --git a/package.json b/package.json index 693552cc1c..359a7a7361 100644 --- a/package.json +++ b/package.json @@ -140,7 +140,7 @@ "@fastify/formbody": "^7.0.1", "@hapi/hapi": "^21.0.0", "@koa/router": "^12.0.0", - "@types/node": "^20.1.0", + "@types/node": "^22.0.0", "ajv": "^8.12.0", "apollo-server-core": "^3.0.0", "apollo-server-express": "^3.0.0", From 0d1d349400054b5529b4543861293ca9a42e2757 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 10:01:19 +0200 Subject: [PATCH 081/396] chore(deps-dev): bump mysql2 from 3.10.3 to 3.11.0 (#4158) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index ec36671e00..fe11a0998a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12580,9 +12580,9 @@ } }, "node_modules/mysql2": { - "version": "3.10.3", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.3.tgz", - "integrity": "sha512-k43gmH9i79rZD4hGPdj7pDuT0UBiFjs4UzXEy1cJrV0QqcSABomoLwvejqdbcXN+Vd7gi999CVM6o9vCPKq29g==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.11.0.tgz", + "integrity": "sha512-J9phbsXGvTOcRVPR95YedzVSxJecpW5A5+cQ57rhHIFXteTP10HCs+VBjS7DHIKfEaI1zQ5tlVrquCd64A6YvA==", "dev": true, "dependencies": { "aws-ssl-profiles": "^1.1.1", @@ -26047,9 +26047,9 @@ } }, "mysql2": { - "version": "3.10.3", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.3.tgz", - "integrity": "sha512-k43gmH9i79rZD4hGPdj7pDuT0UBiFjs4UzXEy1cJrV0QqcSABomoLwvejqdbcXN+Vd7gi999CVM6o9vCPKq29g==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.11.0.tgz", + "integrity": "sha512-J9phbsXGvTOcRVPR95YedzVSxJecpW5A5+cQ57rhHIFXteTP10HCs+VBjS7DHIKfEaI1zQ5tlVrquCd64A6YvA==", "dev": true, "requires": { "aws-ssl-profiles": "^1.1.1", From 6f7c382f3afae74cbc97708f6d967f75a9a477e5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 10:05:43 +0200 Subject: [PATCH 082/396] chore(deps-dev): bump @apollo/server in the apollo group (#4156) --- package-lock.json | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index fe11a0998a..1a61110939 100644 --- a/package-lock.json +++ b/package-lock.json @@ -199,9 +199,9 @@ "dev": true }, "node_modules/@apollo/server": { - "version": "4.10.4", - "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.10.4.tgz", - "integrity": "sha512-HS12CUa1wq8f5zKXOKJRwRdESFp4por9AINecpcsEUV9jsCP/NqPILgx0hCOOFJuKxmnaL7070xO6l5xmOq4Fw==", + "version": "4.10.5", + "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.10.5.tgz", + "integrity": "sha512-I+Oi1CnphXExSAAsZbclgRDN4k4CEMxyKRzYg3bir5N8OmydEhzXDlIGAOETP/TKblxR7HPXGvwn2cJKzbl46w==", "dev": true, "dependencies": { "@apollo/cache-control-types": "^1.0.3", @@ -215,7 +215,6 @@ "@apollo/utils.usagereporting": "^2.1.0", "@apollo/utils.withrequired": "^2.0.0", "@graphql-tools/schema": "^9.0.0", - "@josephg/resolvable": "^1.0.0", "@types/express": "^4.17.13", "@types/express-serve-static-core": "^4.17.30", "@types/node-fetch": "^2.6.1", @@ -16313,9 +16312,9 @@ } }, "@apollo/server": { - "version": "4.10.4", - "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.10.4.tgz", - "integrity": "sha512-HS12CUa1wq8f5zKXOKJRwRdESFp4por9AINecpcsEUV9jsCP/NqPILgx0hCOOFJuKxmnaL7070xO6l5xmOq4Fw==", + "version": "4.10.5", + "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.10.5.tgz", + "integrity": "sha512-I+Oi1CnphXExSAAsZbclgRDN4k4CEMxyKRzYg3bir5N8OmydEhzXDlIGAOETP/TKblxR7HPXGvwn2cJKzbl46w==", "dev": true, "requires": { "@apollo/cache-control-types": "^1.0.3", @@ -16329,7 +16328,6 @@ "@apollo/utils.usagereporting": "^2.1.0", "@apollo/utils.withrequired": "^2.0.0", "@graphql-tools/schema": "^9.0.0", - "@josephg/resolvable": "^1.0.0", "@types/express": "^4.17.13", "@types/express-serve-static-core": "^4.17.30", "@types/node-fetch": "^2.6.1", From 90d3ac1ca368cd0a28a4d554096aff7b09df08d6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 10:09:54 +0200 Subject: [PATCH 083/396] chore(deps-dev): bump @babel/preset-env in the babel group (#4155) --- package-lock.json | 2176 ++++++++++++++++++++++----------------------- 1 file changed, 1086 insertions(+), 1090 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1a61110939..97ad248d9a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2479,22 +2479,22 @@ "dev": true }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.0.tgz", + "integrity": "sha512-P4fwKI2mjEb3ZU5cnMJzvRsRKGBUcs8jvxIoRmr6ufAY9Xk2Bz7JubRTTivkw55c7WQJfTECeqYVa+HZ0FzREg==", "dev": true, "engines": { "node": ">=6.9.0" @@ -2546,14 +2546,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", + "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", "dev": true, "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.25.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -2575,38 +2575,39 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz", + "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -2639,19 +2640,17 @@ "dev": true }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz", + "integrity": "sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/traverse": "^7.25.0", "semver": "^6.3.1" }, "engines": { @@ -2671,12 +2670,12 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.0.tgz", + "integrity": "sha512-q0T+dknZS+L5LDazIP+02gEZITG5unzvb6yIjcmj5i0eFrs5ToBV2m2JGH4EsE/gtP8ygEGLGApBgRIZkTm7zg==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.7", "regexpu-core": "^5.3.1", "semver": "^6.3.1" }, @@ -2697,9 +2696,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", - "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", @@ -2712,75 +2711,42 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", "dev": true, "dependencies": { - "@babel/types": "^7.23.0" + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.0.tgz", + "integrity": "sha512-bIkOa2ZJYn7FHnepzr5iX9Kmz8FjIz4UKzJ9zhX3dnYuVW0xul9RuR3skBfoLu+FPTQw90EHW9rJsSZhyLQ3fQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -2790,35 +2756,35 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", - "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -2828,14 +2794,14 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -2845,77 +2811,67 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -2936,23 +2892,24 @@ } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", - "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.0.tgz", + "integrity": "sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -2961,13 +2918,44 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.0.tgz", + "integrity": "sha512-dG0aApncVQwAUJa8tP1VHTnmU67BeIQvKafd3raEx315H54FfkZSz3B/TT+33ZQAjatGJA79gZqTtqL5QZUKXw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", + "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", - "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -2977,14 +2965,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", - "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -2994,13 +2982,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", - "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", + "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -3085,12 +3073,12 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", - "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", + "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3100,12 +3088,12 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", - "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3257,12 +3245,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", - "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3272,15 +3260,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", - "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz", + "integrity": "sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-remap-async-to-generator": "^7.25.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -3290,14 +3278,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", - "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3307,12 +3295,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", - "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3322,12 +3310,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", - "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -3337,13 +3325,13 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", - "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", + "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3353,13 +3341,13 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", - "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -3370,18 +3358,16 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", - "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz", + "integrity": "sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.0", "globals": "^11.1.0" }, "engines": { @@ -3392,13 +3378,13 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", - "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.15" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3408,12 +3394,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", - "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -3423,13 +3409,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", - "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3439,12 +3425,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", - "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3453,13 +3439,29 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", + "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", - "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -3470,13 +3472,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", - "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3486,12 +3488,12 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", - "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -3502,13 +3504,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", - "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3518,14 +3520,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", - "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" }, "engines": { "node": ">=6.9.0" @@ -3535,12 +3537,12 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", - "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -3551,12 +3553,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", - "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", + "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3566,12 +3568,12 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", - "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -3582,12 +3584,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", - "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3597,13 +3599,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", - "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3613,14 +3615,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", - "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-simple-access": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3630,15 +3632,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", - "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -3648,13 +3650,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", - "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3664,13 +3666,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3680,12 +3682,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", - "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3695,12 +3697,12 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", - "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -3711,12 +3713,12 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", - "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -3727,16 +3729,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.0.tgz", - "integrity": "sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.23.3" + "@babel/plugin-transform-parameters": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3746,13 +3747,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", - "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3762,12 +3763,12 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", - "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -3778,13 +3779,13 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", - "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -3795,12 +3796,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", - "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3810,13 +3811,13 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", - "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", + "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3826,14 +3827,14 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", - "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -3844,12 +3845,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", - "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3859,12 +3860,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", - "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "regenerator-transform": "^0.15.2" }, "engines": { @@ -3875,12 +3876,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", - "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3890,12 +3891,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", - "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3905,13 +3906,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", - "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3921,12 +3922,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", - "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3936,12 +3937,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", - "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3951,12 +3952,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", - "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -3966,12 +3967,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", - "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3981,13 +3982,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", - "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -3997,13 +3998,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", - "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -4013,13 +4014,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", - "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", + "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -4029,26 +4030,28 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.0.tgz", - "integrity": "sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.0.tgz", + "integrity": "sha512-vYAA8PrCOeZfG4D87hmw1KJ1BPubghXP1e2MacRFwECGNKL76dkA38JEwYllbvQCpf/kLxsTtir0b8MtxKoVCw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.25.0", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.0", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.23.3", - "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -4060,59 +4063,60 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.9", - "@babel/plugin-transform-async-to-generator": "^7.23.3", - "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.4", - "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.4", - "@babel/plugin-transform-classes": "^7.23.8", - "@babel/plugin-transform-computed-properties": "^7.23.3", - "@babel/plugin-transform-destructuring": "^7.23.3", - "@babel/plugin-transform-dotall-regex": "^7.23.3", - "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.4", - "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.4", - "@babel/plugin-transform-for-of": "^7.23.6", - "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.4", - "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", - "@babel/plugin-transform-member-expression-literals": "^7.23.3", - "@babel/plugin-transform-modules-amd": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-modules-systemjs": "^7.23.9", - "@babel/plugin-transform-modules-umd": "^7.23.3", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", - "@babel/plugin-transform-numeric-separator": "^7.23.4", - "@babel/plugin-transform-object-rest-spread": "^7.24.0", - "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.4", - "@babel/plugin-transform-optional-chaining": "^7.23.4", - "@babel/plugin-transform-parameters": "^7.23.3", - "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.4", - "@babel/plugin-transform-property-literals": "^7.23.3", - "@babel/plugin-transform-regenerator": "^7.23.3", - "@babel/plugin-transform-reserved-words": "^7.23.3", - "@babel/plugin-transform-shorthand-properties": "^7.23.3", - "@babel/plugin-transform-spread": "^7.23.3", - "@babel/plugin-transform-sticky-regex": "^7.23.3", - "@babel/plugin-transform-template-literals": "^7.23.3", - "@babel/plugin-transform-typeof-symbol": "^7.23.3", - "@babel/plugin-transform-unicode-escapes": "^7.23.3", - "@babel/plugin-transform-unicode-property-regex": "^7.23.3", - "@babel/plugin-transform-unicode-regex": "^7.23.3", - "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.0", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.25.0", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.0", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.24.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-modules-systemjs": "^7.25.0", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.8", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.8", - "babel-plugin-polyfill-corejs3": "^0.9.0", - "babel-plugin-polyfill-regenerator": "^0.5.5", - "core-js-compat": "^3.31.0", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.37.1", "semver": "^6.3.1" }, "engines": { @@ -4152,9 +4156,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", - "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz", + "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==", "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" @@ -4164,33 +4168,30 @@ } }, "node_modules/@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", - "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.1.tgz", + "integrity": "sha512-LrHHoWq08ZpmmFqBAzN+hUdWwy5zt7FGa/hVwMcOqW6OVtwqaoD5utfuGYU87JYxdZgLUvktAsn37j/sYR9siA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -4199,13 +4200,13 @@ } }, "node_modules/@babel/types": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", - "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.0.tgz", + "integrity": "sha512-LcnxQSsd9aXOIgmmSpvZ/1yo46ra2ESYyqLcryaBZOghxy5qqOBjvCWP5JfkI8yl9rlxRgdLTTMCQQRcN2hdCg==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -7141,13 +7142,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz", - "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==", + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.5.0", + "@babel/helper-define-polyfill-provider": "^0.6.2", "semver": "^6.3.1" }, "peerDependencies": { @@ -7164,25 +7165,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", - "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.5.0", - "core-js-compat": "^3.34.0" + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", - "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.5.0" + "@babel/helper-define-polyfill-provider": "^0.6.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -7475,9 +7476,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", + "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", "dev": true, "funding": [ { @@ -7494,10 +7495,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", + "caniuse-lite": "^1.0.30001640", + "electron-to-chromium": "^1.4.820", "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -7615,9 +7616,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001593", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001593.tgz", - "integrity": "sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==", + "version": "1.0.30001643", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz", + "integrity": "sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==", "dev": true, "funding": [ { @@ -8068,12 +8069,12 @@ "dev": true }, "node_modules/core-js-compat": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz", - "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==", + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", + "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", "dev": true, "dependencies": { - "browserslist": "^4.22.3" + "browserslist": "^4.23.0" }, "funding": { "type": "opencollective", @@ -8663,9 +8664,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.690", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.690.tgz", - "integrity": "sha512-+2OAGjUx68xElQhydpcbqH50hE8Vs2K6TkAeLhICYfndb67CVH0UsZaijmRUE3rHlIxU1u0jxwhgVe6fK3YANA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.2.tgz", + "integrity": "sha512-kc4r3U3V3WLaaZqThjYz/Y6z8tJe+7K0bbjUVo3i+LWIypVdMx5nXCkwRe6SWbY6ILqLdc1rKcKmr3HoH7wjSQ==", "dev": true }, "node_modules/enabled": { @@ -8874,9 +8875,9 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { "node": ">=6" @@ -12780,9 +12781,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", "dev": true }, "node_modules/normalize-package-data": { @@ -13317,9 +13318,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "node_modules/picomatch": { @@ -14063,9 +14064,9 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "dev": true }, "node_modules/regenerator-transform": { @@ -15835,9 +15836,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "dev": true, "funding": [ { @@ -15854,8 +15855,8 @@ } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -18208,19 +18209,19 @@ } }, "@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, "requires": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" } }, "@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.0.tgz", + "integrity": "sha512-P4fwKI2mjEb3ZU5cnMJzvRsRKGBUcs8jvxIoRmr6ufAY9Xk2Bz7JubRTTivkw55c7WQJfTECeqYVa+HZ0FzREg==", "dev": true }, "@babel/core": { @@ -18261,14 +18262,14 @@ } }, "@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", + "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", "dev": true, "requires": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.25.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "dependencies": { @@ -18286,32 +18287,33 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dev": true, "requires": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", "dev": true, "requires": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" } }, "@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz", + "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==", "dev": true, "requires": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -18340,19 +18342,17 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz", + "integrity": "sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/traverse": "^7.25.0", "semver": "^6.3.1" }, "dependencies": { @@ -18365,12 +18365,12 @@ } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.0.tgz", + "integrity": "sha512-q0T+dknZS+L5LDazIP+02gEZITG5unzvb6yIjcmj5i0eFrs5ToBV2m2JGH4EsE/gtP8ygEGLGApBgRIZkTm7zg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.7", "regexpu-core": "^5.3.1", "semver": "^6.3.1" }, @@ -18384,9 +18384,9 @@ } }, "@babel/helper-define-polyfill-provider": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", - "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.22.6", @@ -18396,153 +18396,122 @@ "resolve": "^1.14.2" } }, - "@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "requires": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, "@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", "dev": true, "requires": { - "@babel/types": "^7.23.0" + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" } }, "@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, "requires": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" } }, "@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.0.tgz", + "integrity": "sha512-bIkOa2ZJYn7FHnepzr5iX9Kmz8FjIz4UKzJ9zhX3dnYuVW0xul9RuR3skBfoLu+FPTQw90EHW9rJsSZhyLQ3fQ==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", "dev": true, "requires": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" } }, "@babel/helper-plugin-utils": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", - "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" } }, "@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" } }, "@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, "requires": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", "dev": true, "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" } }, "@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" } }, "@babel/helpers": { @@ -18557,50 +18526,70 @@ } }, "@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" } }, "@babel/parser": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", - "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.0.tgz", + "integrity": "sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==", "dev": true }, + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.0.tgz", + "integrity": "sha512-dG0aApncVQwAUJa8tP1VHTnmU67BeIQvKafd3raEx315H54FfkZSz3B/TT+33ZQAjatGJA79gZqTtqL5QZUKXw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" + } + }, + "@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", + "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.8" + } + }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", - "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", - "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" } }, "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", - "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", + "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" } }, "@babel/plugin-proposal-private-property-in-object": { @@ -18655,21 +18644,21 @@ } }, "@babel/plugin-syntax-import-assertions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", - "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", + "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-syntax-import-attributes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", - "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-syntax-import-meta": { @@ -18773,510 +18762,519 @@ } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", - "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-transform-async-generator-functions": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", - "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz", + "integrity": "sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-remap-async-to-generator": "^7.25.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/traverse": "^7.25.0" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", - "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", - "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", - "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" } }, "@babel/plugin-transform-class-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", - "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", + "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-transform-class-static-block": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", - "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.23.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", - "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz", + "integrity": "sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.0", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", - "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.15" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" } }, "@babel/plugin-transform-destructuring": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", - "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", - "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", - "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" + } + }, + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", + "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8" } }, "@babel/plugin-transform-dynamic-import": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", - "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", - "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-transform-export-namespace-from": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", - "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-transform-for-of": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", - "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" } }, "@babel/plugin-transform-function-name": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", - "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" } }, "@babel/plugin-transform-json-strings": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", - "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-transform-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", - "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", + "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-transform-logical-assignment-operators": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", - "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", - "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", - "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", - "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-simple-access": "^7.24.7" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", - "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", - "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-transform-new-target": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", - "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", - "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-transform-numeric-separator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", - "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-transform-object-rest-spread": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.0.tgz", - "integrity": "sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", "dev": true, "requires": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.23.3" + "@babel/plugin-transform-parameters": "^7.24.7" } }, "@babel/plugin-transform-object-super": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", - "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" } }, "@babel/plugin-transform-optional-catch-binding": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", - "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-transform-optional-chaining": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", - "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-transform-parameters": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", - "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-transform-private-methods": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", - "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", + "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-transform-private-property-in-object": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", - "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", - "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-transform-regenerator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", - "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "regenerator-transform": "^0.15.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", - "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", - "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-transform-spread": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", - "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", - "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-transform-template-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", - "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", - "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", - "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-transform-unicode-property-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", - "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", - "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/plugin-transform-unicode-sets-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", - "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", + "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" } }, "@babel/preset-env": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.0.tgz", - "integrity": "sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.0.tgz", + "integrity": "sha512-vYAA8PrCOeZfG4D87hmw1KJ1BPubghXP1e2MacRFwECGNKL76dkA38JEwYllbvQCpf/kLxsTtir0b8MtxKoVCw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.25.0", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.0", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.23.3", - "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -19288,59 +19286,60 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.9", - "@babel/plugin-transform-async-to-generator": "^7.23.3", - "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.4", - "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.4", - "@babel/plugin-transform-classes": "^7.23.8", - "@babel/plugin-transform-computed-properties": "^7.23.3", - "@babel/plugin-transform-destructuring": "^7.23.3", - "@babel/plugin-transform-dotall-regex": "^7.23.3", - "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.4", - "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.4", - "@babel/plugin-transform-for-of": "^7.23.6", - "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.4", - "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", - "@babel/plugin-transform-member-expression-literals": "^7.23.3", - "@babel/plugin-transform-modules-amd": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-modules-systemjs": "^7.23.9", - "@babel/plugin-transform-modules-umd": "^7.23.3", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", - "@babel/plugin-transform-numeric-separator": "^7.23.4", - "@babel/plugin-transform-object-rest-spread": "^7.24.0", - "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.4", - "@babel/plugin-transform-optional-chaining": "^7.23.4", - "@babel/plugin-transform-parameters": "^7.23.3", - "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.4", - "@babel/plugin-transform-property-literals": "^7.23.3", - "@babel/plugin-transform-regenerator": "^7.23.3", - "@babel/plugin-transform-reserved-words": "^7.23.3", - "@babel/plugin-transform-shorthand-properties": "^7.23.3", - "@babel/plugin-transform-spread": "^7.23.3", - "@babel/plugin-transform-sticky-regex": "^7.23.3", - "@babel/plugin-transform-template-literals": "^7.23.3", - "@babel/plugin-transform-typeof-symbol": "^7.23.3", - "@babel/plugin-transform-unicode-escapes": "^7.23.3", - "@babel/plugin-transform-unicode-property-regex": "^7.23.3", - "@babel/plugin-transform-unicode-regex": "^7.23.3", - "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.0", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.25.0", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.0", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.24.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-modules-systemjs": "^7.25.0", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.8", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.8", - "babel-plugin-polyfill-corejs3": "^0.9.0", - "babel-plugin-polyfill-regenerator": "^0.5.5", - "core-js-compat": "^3.31.0", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.37.1", "semver": "^6.3.1" }, "dependencies": { @@ -19370,51 +19369,48 @@ "dev": true }, "@babel/runtime": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", - "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz", + "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==", "dev": true, "requires": { "regenerator-runtime": "^0.14.0" } }, "@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", "dev": true, "requires": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" } }, "@babel/traverse": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", - "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.1.tgz", + "integrity": "sha512-LrHHoWq08ZpmmFqBAzN+hUdWwy5zt7FGa/hVwMcOqW6OVtwqaoD5utfuGYU87JYxdZgLUvktAsn37j/sYR9siA==", "dev": true, "requires": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0", "debug": "^4.3.1", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", - "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.0.tgz", + "integrity": "sha512-LcnxQSsd9aXOIgmmSpvZ/1yo46ra2ESYyqLcryaBZOghxy5qqOBjvCWP5JfkI8yl9rlxRgdLTTMCQQRcN2hdCg==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" } }, @@ -21920,13 +21916,13 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz", - "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==", + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", "dev": true, "requires": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.5.0", + "@babel/helper-define-polyfill-provider": "^0.6.2", "semver": "^6.3.1" }, "dependencies": { @@ -21939,22 +21935,22 @@ } }, "babel-plugin-polyfill-corejs3": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", - "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.5.0", - "core-js-compat": "^3.34.0" + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", - "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.5.0" + "@babel/helper-define-polyfill-provider": "^0.6.2" } }, "babel-walk": { @@ -22172,15 +22168,15 @@ } }, "browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", + "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", + "caniuse-lite": "^1.0.30001640", + "electron-to-chromium": "^1.4.820", "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "update-browserslist-db": "^1.1.0" } }, "bson": { @@ -22268,9 +22264,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001593", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001593.tgz", - "integrity": "sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==", + "version": "1.0.30001643", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz", + "integrity": "sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==", "dev": true }, "caseless": { @@ -22626,12 +22622,12 @@ "dev": true }, "core-js-compat": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz", - "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==", + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", + "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", "dev": true, "requires": { - "browserslist": "^4.22.3" + "browserslist": "^4.23.0" } }, "core-util-is": { @@ -23070,9 +23066,9 @@ } }, "electron-to-chromium": { - "version": "1.4.690", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.690.tgz", - "integrity": "sha512-+2OAGjUx68xElQhydpcbqH50hE8Vs2K6TkAeLhICYfndb67CVH0UsZaijmRUE3rHlIxU1u0jxwhgVe6fK3YANA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.2.tgz", + "integrity": "sha512-kc4r3U3V3WLaaZqThjYz/Y6z8tJe+7K0bbjUVo3i+LWIypVdMx5nXCkwRe6SWbY6ILqLdc1rKcKmr3HoH7wjSQ==", "dev": true }, "enabled": { @@ -23247,9 +23243,9 @@ } }, "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true }, "escape-html": { @@ -26213,9 +26209,9 @@ "dev": true }, "node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", "dev": true }, "normalize-package-data": { @@ -26629,9 +26625,9 @@ } }, "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "picomatch": { @@ -27199,9 +27195,9 @@ } }, "regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "dev": true }, "regenerator-transform": { @@ -28604,13 +28600,13 @@ "dev": true }, "update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "dev": true, "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" } }, "uri-js": { From 8b82ef16ff9f10d37c90138b5ac6c82fc27fd461 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 10:37:45 +0200 Subject: [PATCH 084/396] chore(deps): bump the github-actions group with 2 updates (#4154) Bumps the github-actions group with 2 updates: [docker/login-action](https://github.com/docker/login-action) and [docker/build-push-action](https://github.com/docker/build-push-action). Updates `docker/login-action` from 3.2.0 to 3.3.0 - [Release notes](https://github.com/docker/login-action/releases) - [Commits](https://github.com/docker/login-action/compare/0d4c9c5ea7693da7b068278f7b52bda2a190a446...9780b0c442fbb1117ed29e0efdff1e18412f7567) Updates `docker/build-push-action` from 6.4.1 to 6.5.0 - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/1ca370b3a9802c92e886402e0dd88098a2533b12...5176d81f87c23d6fc96624dfdbcd9f3830bbe445) --- updated-dependencies: - dependency-name: docker/login-action dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 6 +++--- .github/workflows/updatecli.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cfed3d1cf5..c2cccbf484 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -33,7 +33,7 @@ jobs: - uses: docker/setup-buildx-action@v3 - name: Log in to the Elastic Container registry - uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446 # v3.2.0 + uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 with: registry: ${{ secrets.ELASTIC_DOCKER_REGISTRY }} username: ${{ secrets.ELASTIC_DOCKER_USERNAME }} @@ -63,7 +63,7 @@ jobs: - name: Build and Push Docker Image id: docker-push - uses: docker/build-push-action@1ca370b3a9802c92e886402e0dd88098a2533b12 # v6.4.1 + uses: docker/build-push-action@5176d81f87c23d6fc96624dfdbcd9f3830bbe445 # v6.5.0 with: context: . platforms: linux/amd64,linux/arm64 @@ -97,7 +97,7 @@ jobs: - name: Build and Push Docker Image (wolfi) id: docker-push-wolfi - uses: docker/build-push-action@1ca370b3a9802c92e886402e0dd88098a2533b12 # v6.4.1 + uses: docker/build-push-action@5176d81f87c23d6fc96624dfdbcd9f3830bbe445 # v6.5.0 with: context: . platforms: linux/amd64,linux/arm64 diff --git a/.github/workflows/updatecli.yml b/.github/workflows/updatecli.yml index bbfb2d80c2..b1159480fb 100644 --- a/.github/workflows/updatecli.yml +++ b/.github/workflows/updatecli.yml @@ -17,7 +17,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: docker/login-action@0d4c9c5ea7693da7b068278f7b52bda2a190a446 # v3.2.0 + - uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 with: registry: ghcr.io username: ${{ github.actor }} From dbdd3754777eb89032efcec383f6c8389be6040c Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Mon, 29 Jul 2024 10:12:07 -0700 Subject: [PATCH 085/396] test: modernize our mssql/server Docker image usage (#4150) - move to the latest CU (cumulative update) of SQLServer 2022 (which involves updating the healthcheck for internal changes) - use MSSQL_SA_PASSWORD rather than the long since deprecated SA_PASSWORD Refs: https://github.com/elastic/apm-agent-nodejs/issues/4147 --- .ci/docker/docker-compose.yml | 12 ++++++------ .github/workflows/test.yml | 2 +- examples/trace-tedious.js | 2 +- test/docker-compose.yml | 12 ++++++------ test/instrumentation/modules/tedious.test.js | 4 ++-- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.ci/docker/docker-compose.yml b/.ci/docker/docker-compose.yml index 4ecdf630d4..b34f484cf9 100644 --- a/.ci/docker/docker-compose.yml +++ b/.ci/docker/docker-compose.yml @@ -31,21 +31,21 @@ services: retries: 30 mssql: - # Cumulative update 14 (CU14), released 2024-07-23, breaks the healthcheck. - # See https://github.com/elastic/apm-agent-nodejs/issues/4147 - image: mcr.microsoft.com/mssql/server:2022-CU13-ubuntu-22.04 + # Tags listed at https://hub.docker.com/r/microsoft/mssql-server + # Docs: https://learn.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker + image: mcr.microsoft.com/mssql/server:2022-CU14-ubuntu-22.04 platform: linux/amd64 environment: - ACCEPT_EULA=Y - - SA_PASSWORD=Very(!)Secure + - MSSQL_SA_PASSWORD=Very(!)Secure - MSSQL_PID=Developer ports: - "1433:1433" volumes: - nodemssqldata:/var/opt/mssql healthcheck: - test: ["CMD", "/opt/mssql-tools/bin/sqlcmd", "-S", "mssql", "-U", "sa", "-P", "Very(!)Secure", "-Q", "select 1"] - interval: 30s + test: ["CMD", "/opt/mssql-tools18/bin/sqlcmd", "-C", "-S", "mssql", "-U", "sa", "-P", "Very(!)Secure", "-Q", "select 1"] + interval: 10s timeout: 10s retries: 5 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ac1f91bda1..bf2748b37d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -96,7 +96,7 @@ jobs: image: mcr.microsoft.com/mssql/server env: ACCEPT_EULA: 'Y' - SA_PASSWORD: 'Very(!)Secure' + MSSQL_SA_PASSWORD: 'Very(!)Secure' MSSQL_PID: 'Developer' ports: - 1433:1433 diff --git a/examples/trace-tedious.js b/examples/trace-tedious.js index 5324220d37..78b6e44e96 100755 --- a/examples/trace-tedious.js +++ b/examples/trace-tedious.js @@ -20,7 +20,7 @@ const apm = require('../').start({ const tedious = require('tedious'); const host = process.env.MSSQL_HOST || 'localhost'; -const passwd = process.env.SA_PASSWORD || 'Very(!)Secure'; +const passwd = process.env.MSSQL_SA_PASSWORD || 'Very(!)Secure'; const connOpts = { server: host, authentication: { diff --git a/test/docker-compose.yml b/test/docker-compose.yml index 5ee22bc6f7..bb1d2380f4 100644 --- a/test/docker-compose.yml +++ b/test/docker-compose.yml @@ -31,21 +31,21 @@ services: retries: 30 mssql: - # Cumulative update 14 (CU14), released 2024-07-23, breaks the healthcheck. - # See https://github.com/elastic/apm-agent-nodejs/issues/4147 - image: mcr.microsoft.com/mssql/server:2022-CU13-ubuntu-22.04 + # Tags listed at https://hub.docker.com/r/microsoft/mssql-server + # Docs: https://learn.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker + image: mcr.microsoft.com/mssql/server:2022-CU14-ubuntu-22.04 platform: linux/amd64 environment: - ACCEPT_EULA=Y - - SA_PASSWORD=Very(!)Secure + - MSSQL_SA_PASSWORD=Very(!)Secure - MSSQL_PID=Developer ports: - "1433:1433" volumes: - nodemssqldata:/var/opt/mssql healthcheck: - test: ["CMD", "/opt/mssql-tools/bin/sqlcmd", "-S", "mssql", "-U", "sa", "-P", "Very(!)Secure", "-Q", "select 1"] - interval: 30s + test: ["CMD", "/opt/mssql-tools18/bin/sqlcmd", "-C", "-S", "mssql", "-U", "sa", "-P", "Very(!)Secure", "-Q", "select 1"] + interval: 10s timeout: 10s retries: 5 diff --git a/test/instrumentation/modules/tedious.test.js b/test/instrumentation/modules/tedious.test.js index 86fc1aba0d..174d0ba838 100644 --- a/test/instrumentation/modules/tedious.test.js +++ b/test/instrumentation/modules/tedious.test.js @@ -51,7 +51,7 @@ if (semver.gte(version, '4.0.0')) { type: 'default', options: { userName: 'SA', - password: process.env.SA_PASSWORD || 'Very(!)Secure', + password: process.env.MSSQL_SA_PASSWORD || 'Very(!)Secure', }, }, options: { @@ -65,7 +65,7 @@ if (semver.gte(version, '4.0.0')) { connOpts = { server: hostname, userName: 'SA', - password: process.env.SA_PASSWORD || 'Very(!)Secure', + password: process.env.MSSQL_SA_PASSWORD || 'Very(!)Secure', }; } From 7dd508fafcb118b0a1f3eeecb2bb74ba0294a372 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 13:47:20 -0700 Subject: [PATCH 086/396] chore(deps): bump require-in-the-middle from 7.3.0 to 7.4.0 (#4160) --- package-lock.json | 48 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 97ad248d9a..2812f0885e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8228,6 +8228,7 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -14227,18 +14228,34 @@ } }, "node_modules/require-in-the-middle": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.3.0.tgz", - "integrity": "sha512-nQFEv9gRw6SJAwWD2LrL0NmQvAcO7FBwJbwmr2ttPAacfy0xuiOjE5zt+zM4xDyuyvUaxBi/9gb2SoCyNEVJcw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.4.0.tgz", + "integrity": "sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ==", "dependencies": { - "debug": "^4.1.1", + "debug": "^4.3.5", "module-details-from-path": "^1.0.3", - "resolve": "^1.22.1" + "resolve": "^1.22.8" }, "engines": { "node": ">=8.6.0" } }, + "node_modules/require-in-the-middle/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/requireindex": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", @@ -22744,6 +22761,7 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "requires": { "ms": "2.1.2" } @@ -27329,13 +27347,23 @@ "dev": true }, "require-in-the-middle": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.3.0.tgz", - "integrity": "sha512-nQFEv9gRw6SJAwWD2LrL0NmQvAcO7FBwJbwmr2ttPAacfy0xuiOjE5zt+zM4xDyuyvUaxBi/9gb2SoCyNEVJcw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.4.0.tgz", + "integrity": "sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ==", "requires": { - "debug": "^4.1.1", + "debug": "^4.3.5", "module-details-from-path": "^1.0.3", - "resolve": "^1.22.1" + "resolve": "^1.22.8" + }, + "dependencies": { + "debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "requires": { + "ms": "2.1.2" + } + } } }, "requireindex": { From a130d3cd865b80ffefcea8876f6fe3e4e402cc96 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 13:50:23 -0700 Subject: [PATCH 087/396] chore(deps-dev): bump the eslint group with 3 updates (#4157) Updates `eslint` from 9.7.0 to 9.8.0 Updates `eslint-plugin-n` from 17.9.0 to 17.10.1 Updates `eslint-plugin-promise` from 6.1.1 to 7.0.0 The major ver bump in eslint-plugin-promise bumps the min supported node to 18.18.0, but we already had a requirement for that version for `npm run lint`, so all good. --- package-lock.json | 109 ++++++++++++++++++++++++---------------------- package.json | 2 +- 2 files changed, 57 insertions(+), 54 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2812f0885e..486689744e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -82,7 +82,7 @@ "eslint-plugin-license-header": "^0.6.0", "eslint-plugin-n": "^17.2.0", "eslint-plugin-prettier": "^5.0.0", - "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-promise": "^7.0.0", "express": "^4.17.1", "express-queue": "^0.0.13", "fastify": "^4.16.3", @@ -4325,9 +4325,9 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.0.tgz", - "integrity": "sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA==", + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.1.tgz", + "integrity": "sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==", "dev": true, "dependencies": { "@eslint/object-schema": "^2.1.4", @@ -4396,9 +4396,9 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.7.0.tgz", - "integrity": "sha512-ChuWDQenef8OSFnvuxv0TCVxEwmu3+hPNKvM9B34qpM0rDRbjL8t5QkQeHHeAfsKQjuH9wS82WeCi1J/owatng==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.8.0.tgz", + "integrity": "sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8908,16 +8908,16 @@ } }, "node_modules/eslint": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.7.0.tgz", - "integrity": "sha512-FzJ9D/0nGiCGBf8UXO/IGLTgLVzIxze1zpfA8Ton2mjLovXdAPlYDv+MQDcqj3TmrhAGYfOpz9RfR+ent0AgAw==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.8.0.tgz", + "integrity": "sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.11.0", - "@eslint/config-array": "^0.17.0", + "@eslint/config-array": "^0.17.1", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.7.0", + "@eslint/js": "9.8.0", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -9119,18 +9119,18 @@ } }, "node_modules/eslint-plugin-n": { - "version": "17.9.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.9.0.tgz", - "integrity": "sha512-CPSaXDXdrT4nsrOrO4mT4VB6FMUkoySRkHWuuJJHVqsIEjIeZgMY1H7AzSwPbDScikBmLN82KeM1u7ixV7PzGg==", + "version": "17.10.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.10.1.tgz", + "integrity": "sha512-hm/q37W6efDptJXdwirsm6A257iY6ZNtpoSG0wEzFzjJ3AhL7OhEIhdSR2e4OdYfHO5EDeqlCfFrjf9q208IPw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "enhanced-resolve": "^5.17.0", "eslint-plugin-es-x": "^7.5.0", "get-tsconfig": "^4.7.0", - "globals": "^15.0.0", + "globals": "^15.8.0", "ignore": "^5.2.4", - "minimatch": "^9.0.0", + "minimatch": "^9.0.5", "semver": "^7.5.3" }, "engines": { @@ -9153,9 +9153,9 @@ } }, "node_modules/eslint-plugin-n/node_modules/globals": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.1.0.tgz", - "integrity": "sha512-926gJqg+4mkxwYKiFvoomM4J0kWESfk3qfTvRL2/oc/tK/eTDBbrfcKnSa2KtfdxB5onoL7D3A3qIHQFpd4+UA==", + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.8.0.tgz", + "integrity": "sha512-VZAJ4cewHTExBWDHR6yptdIBlx9YSSZuwojj9Nt5mBRXQzrKakDsVKQ1J63sklLvzAJm0X5+RpO4i3Y2hcOnFw==", "dev": true, "engines": { "node": ">=18" @@ -9165,9 +9165,9 @@ } }, "node_modules/eslint-plugin-n/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -9210,15 +9210,18 @@ } }, "node_modules/eslint-plugin-promise": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", - "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.0.0.tgz", + "integrity": "sha512-wb1ECT+b90ndBdAujhIdAU8oQ3Vt5gKqP/t78KOmg0ifynrvc2jGR9f6ndbOVNFpKf6jLUBlBBDF3H3Wk0JICg==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, "node_modules/eslint-scope": { @@ -19517,9 +19520,9 @@ "dev": true }, "@eslint/config-array": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.0.tgz", - "integrity": "sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA==", + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.1.tgz", + "integrity": "sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==", "dev": true, "requires": { "@eslint/object-schema": "^2.1.4", @@ -19571,9 +19574,9 @@ } }, "@eslint/js": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.7.0.tgz", - "integrity": "sha512-ChuWDQenef8OSFnvuxv0TCVxEwmu3+hPNKvM9B34qpM0rDRbjL8t5QkQeHHeAfsKQjuH9wS82WeCi1J/owatng==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.8.0.tgz", + "integrity": "sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==", "dev": true }, "@eslint/object-schema": { @@ -23284,16 +23287,16 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.7.0.tgz", - "integrity": "sha512-FzJ9D/0nGiCGBf8UXO/IGLTgLVzIxze1zpfA8Ton2mjLovXdAPlYDv+MQDcqj3TmrhAGYfOpz9RfR+ent0AgAw==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.8.0.tgz", + "integrity": "sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.11.0", - "@eslint/config-array": "^0.17.0", + "@eslint/config-array": "^0.17.1", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.7.0", + "@eslint/js": "9.8.0", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -23566,18 +23569,18 @@ } }, "eslint-plugin-n": { - "version": "17.9.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.9.0.tgz", - "integrity": "sha512-CPSaXDXdrT4nsrOrO4mT4VB6FMUkoySRkHWuuJJHVqsIEjIeZgMY1H7AzSwPbDScikBmLN82KeM1u7ixV7PzGg==", + "version": "17.10.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.10.1.tgz", + "integrity": "sha512-hm/q37W6efDptJXdwirsm6A257iY6ZNtpoSG0wEzFzjJ3AhL7OhEIhdSR2e4OdYfHO5EDeqlCfFrjf9q208IPw==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", "enhanced-resolve": "^5.17.0", "eslint-plugin-es-x": "^7.5.0", "get-tsconfig": "^4.7.0", - "globals": "^15.0.0", + "globals": "^15.8.0", "ignore": "^5.2.4", - "minimatch": "^9.0.0", + "minimatch": "^9.0.5", "semver": "^7.5.3" }, "dependencies": { @@ -23591,15 +23594,15 @@ } }, "globals": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.1.0.tgz", - "integrity": "sha512-926gJqg+4mkxwYKiFvoomM4J0kWESfk3qfTvRL2/oc/tK/eTDBbrfcKnSa2KtfdxB5onoL7D3A3qIHQFpd4+UA==", + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.8.0.tgz", + "integrity": "sha512-VZAJ4cewHTExBWDHR6yptdIBlx9YSSZuwojj9Nt5mBRXQzrKakDsVKQ1J63sklLvzAJm0X5+RpO4i3Y2hcOnFw==", "dev": true }, "minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -23618,9 +23621,9 @@ } }, "eslint-plugin-promise": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", - "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.0.0.tgz", + "integrity": "sha512-wb1ECT+b90ndBdAujhIdAU8oQ3Vt5gKqP/t78KOmg0ifynrvc2jGR9f6ndbOVNFpKf6jLUBlBBDF3H3Wk0JICg==", "dev": true }, "eslint-scope": { diff --git a/package.json b/package.json index 359a7a7361..bc8f8804b2 100644 --- a/package.json +++ b/package.json @@ -161,7 +161,7 @@ "eslint-plugin-license-header": "^0.6.0", "eslint-plugin-n": "^17.2.0", "eslint-plugin-prettier": "^5.0.0", - "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-promise": "^7.0.0", "express": "^4.17.1", "express-queue": "^0.0.13", "fastify": "^4.16.3", From 9a3fa836f7d90e0b7451463dc9eb6795579d2c7e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 13:59:11 -0700 Subject: [PATCH 088/396] chore(deps-dev): bump typescript from 5.5.3 to 5.5.4 (#4163) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 486689744e..b8b2b5cfd4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15729,9 +15729,9 @@ } }, "node_modules/typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -28541,9 +28541,9 @@ } }, "typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "dev": true }, "uglify-js": { From 9c81da0015fa421c9e69889bf2a477a30ce26d27 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Tue, 30 Jul 2024 14:18:43 -0700 Subject: [PATCH 089/396] fix(@aws-sdk/client-sns): do not crash if there is no current transaction (#4168) Before this change, instrumentation of `@aws-sdk/client-sns` would *crash* if there wasn't a current transaction. Fixes: #4138 --- .../modules/@aws-sdk/client-sns.js | 46 ++++++++++--------- .../modules/@aws-sdk/client-sns.test.js | 18 ++++++++ .../@aws-sdk/fixtures/use-client-sns.js | 18 ++++++-- 3 files changed, 56 insertions(+), 26 deletions(-) diff --git a/lib/instrumentation/modules/@aws-sdk/client-sns.js b/lib/instrumentation/modules/@aws-sdk/client-sns.js index 5b0de919c1..225bedb866 100644 --- a/lib/instrumentation/modules/@aws-sdk/client-sns.js +++ b/lib/instrumentation/modules/@aws-sdk/client-sns.js @@ -36,28 +36,30 @@ function snsMiddlewareFactory(client, agent) { const targetId = input && (input.TopicArn || input.TargetArn || input.PhoneNumber); - // Though our spec only mentions a 10-message-attribute limit for *SQS*, we'll - // do the same limit here, because - // https://docs.aws.amazon.com/sns/latest/dg/sns-message-attributes.html - // mentions the 10-message-attribute limit for SQS subscriptions. - input.MessageAttributes = input.MessageAttributes || {}; - const attributesCount = Object.keys(input.MessageAttributes).length; - - if (attributesCount + 2 > MAX_SNS_MESSAGE_ATTRIBUTES) { - log.warn( - 'cannot propagate trace-context with SNS message to %s, too many MessageAttributes', - targetId, - ); - } else { - parentSpan.propagateTraceContextHeaders( - input.MessageAttributes, - function (msgAttrs, name, value) { - if (name.startsWith('elastic-')) { - return; - } - msgAttrs[name] = { DataType: 'String', StringValue: value }; - }, - ); + if (parentSpan) { + // Though our spec only mentions a 10-message-attribute limit for *SQS*, we'll + // do the same limit here, because + // https://docs.aws.amazon.com/sns/latest/dg/sns-message-attributes.html + // mentions the 10-message-attribute limit for SQS subscriptions. + input.MessageAttributes = input.MessageAttributes || {}; + const attributesCount = Object.keys(input.MessageAttributes).length; + + if (attributesCount + 2 > MAX_SNS_MESSAGE_ATTRIBUTES) { + log.warn( + 'cannot propagate trace-context with SNS message to %s, too many MessageAttributes', + targetId, + ); + } else { + parentSpan.propagateTraceContextHeaders( + input.MessageAttributes, + function (msgAttrs, name, value) { + if (name.startsWith('elastic-')) { + return; + } + msgAttrs[name] = { DataType: 'String', StringValue: value }; + }, + ); + } } // Ensure there is a span from the wrapped `client.send()`. diff --git a/test/instrumentation/modules/@aws-sdk/client-sns.test.js b/test/instrumentation/modules/@aws-sdk/client-sns.test.js index 1bcaa93641..e26ee86dfb 100644 --- a/test/instrumentation/modules/@aws-sdk/client-sns.test.js +++ b/test/instrumentation/modules/@aws-sdk/client-sns.test.js @@ -235,6 +235,24 @@ const testFixtures = [ t.equal(spans.length, 0, 'all spans accounted for'); }, }, + + { + name: 'use-client-sns.js without a created transaction to ensure does not crash', + script: 'fixtures/use-client-sns.js', + cwd: __dirname, + env: { + AWS_ACCESS_KEY_ID: 'fake', + AWS_SECRET_ACCESS_KEY: 'fake', + TEST_ENDPOINT: endpoint, + TEST_REGION: 'us-east-2', + TEST_NO_TRANSACTION: 'true', + }, + versionRanges: { + node: '>=14', + }, + verbose: true, + }, + { name: '@aws-sdk/client-sns ESM', script: 'fixtures/use-client-sns.mjs', diff --git a/test/instrumentation/modules/@aws-sdk/fixtures/use-client-sns.js b/test/instrumentation/modules/@aws-sdk/fixtures/use-client-sns.js index 80602a5419..6bf696c3f8 100644 --- a/test/instrumentation/modules/@aws-sdk/fixtures/use-client-sns.js +++ b/test/instrumentation/modules/@aws-sdk/fixtures/use-client-sns.js @@ -225,6 +225,9 @@ function main() { const endpoint = process.env.TEST_ENDPOINT || null; const topicName = process.env.TEST_TOPIC_NAME || TEST_TOPIC_NAME_PREFIX + getTimestamp(); + // `TEST_NO_TRANSACTION=true` can be used to disable the creating of a + // current transaction for SNS calls; useful only for testing. + const noTransaction = process.env.TEST_NO_TRANSACTION === 'true'; // Guard against any topic name being used because we will be publishing // messages in it, and potentially *deleting* the topic. @@ -240,18 +243,25 @@ function main() { }); // Ensure an APM transaction so spans can happen. - const tx = apm.startTransaction('manual'); + let tx = null; + if (!noTransaction) { + tx = apm.startTransaction('manual'); + } useClientSNS(snsClient, topicName).then( function () { - tx.end(); + if (tx) { + tx.end(); + } snsClient.destroy(); process.exitCode = 0; }, function (err) { apm.logger.error(err, 'useClientSNS rejected'); - tx.setOutcome('failure'); - tx.end(); + if (tx) { + tx.setOutcome('failure'); + tx.end(); + } snsClient.destroy(); process.exitCode = 1; }, From 77b1823c54635aacecddc5ec0a44180334c9c8f1 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Tue, 30 Jul 2024 14:19:06 -0700 Subject: [PATCH 090/396] test: standardize on shorter healthcheck interval in docker-compose test config (#4169) For some testing (GitHub Actions test.yml is separate), we use test/docker-compose.yml for test services. This standardizes on this healthcheck timing: interval: 1s timeout: 10s retries: 30 The previous 'interval: 30s' for some services was unnecessarily slow. It means the first healthcheck would always wait that long and one would be waiting doing nothing. It is possibel with this change we will have a very slow service not come up in time. If so, then we can increase the retries or interval. Preceding values were willy-nilly. --- test/docker-compose.yml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/test/docker-compose.yml b/test/docker-compose.yml index bb1d2380f4..23ccba1ae4 100644 --- a/test/docker-compose.yml +++ b/test/docker-compose.yml @@ -45,9 +45,9 @@ services: - nodemssqldata:/var/opt/mssql healthcheck: test: ["CMD", "/opt/mssql-tools18/bin/sqlcmd", "-C", "-S", "mssql", "-U", "sa", "-P", "Very(!)Secure", "-Q", "select 1"] - interval: 10s + interval: 1s timeout: 10s - retries: 5 + retries: 30 mysql: image: mysql:5.7 @@ -87,9 +87,9 @@ services: - nodeesdata:/usr/share/elasticsearch/data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9200"] - interval: 30s + interval: 1s timeout: 10s - retries: 5 + retries: 30 cassandra: # Avoid the latest cassandra:3 until @@ -105,9 +105,9 @@ services: - nodecassandradata:/var/lib/cassandra healthcheck: test: ["CMD-SHELL", "[ $$(nodetool statusgossip) = running ]"] - interval: 30s + interval: 1s timeout: 10s - retries: 5 + retries: 30 memcached: image: memcached:alpine @@ -116,9 +116,9 @@ services: - "11211:11211" healthcheck: test: ["CMD", "nc", "127.0.0.1:11211", "-z"] - interval: 30s + interval: 1s timeout: 10s - retries: 5 + retries: 30 localstack: # https://hub.docker.com/r/localstack/localstack/tags @@ -129,9 +129,9 @@ services: - "4566:4566" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:4566/_localstack/health"] - interval: 30s + interval: 1s timeout: 10s - retries: 5 + retries: 30 volumes: - nodelocalstackdata:/var/lib/localstack @@ -148,9 +148,9 @@ services: # Using 'srvr' instead of the more common 'ruok' because this bitnami # image does not have 'ruok' on the '4lw.commands.whitelist' in zoo.cfg. test: ["CMD-SHELL", "echo srvr | nc -w 2 localhost 2181"] - interval: 5s - timeout: 5s - retries: 5 + interval: 1s + timeout: 10s + retries: 30 kafka: # https://hub.docker.com/r/bitnami/kafka/tags @@ -174,9 +174,9 @@ services: healthcheck: # Kafka healthcheck ideas from https://github.com/wurstmeister/kafka-docker/issues/167 test: kafka-cluster.sh cluster-id --bootstrap-server localhost:9092 || exit 1 - interval: 30s + interval: 1s timeout: 10s - retries: 5 + retries: 30 volumes: nodepgdata: From 905289e809bd5675096e596f38d53e1743ad8b9a Mon Sep 17 00:00:00 2001 From: Nate Tovo Date: Wed, 31 Jul 2024 06:31:01 -0500 Subject: [PATCH 091/396] fix: allow file config to override `true` default values (#4119) --- lib/config/schema.js | 2 +- test/start/file/elastic-apm-node.js | 3 ++- test/start/file/test.test.js | 14 ++++++++++++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/lib/config/schema.js b/lib/config/schema.js index a8f10c8116..1433c53046 100644 --- a/lib/config/schema.js +++ b/lib/config/schema.js @@ -876,7 +876,7 @@ CONFIG_SCHEMA.forEach((def) => { if (def.envVar && process.env[def.envVar]) { def.environmentValue = process.env[def.envVar]; def.source = 'environment'; - } else if (fileOpts && fileOpts[def.name]) { + } else if (fileOpts && typeof fileOpts[def.name] !== 'undefined') { def.fileValue = fileOpts[def.name]; def.source = 'file'; } diff --git a/test/start/file/elastic-apm-node.js b/test/start/file/elastic-apm-node.js index 0ca7eeb99c..a3ceb5e2bc 100644 --- a/test/start/file/elastic-apm-node.js +++ b/test/start/file/elastic-apm-node.js @@ -7,5 +7,6 @@ 'use strict' module.exports = { - serviceName: 'from-file' + serviceName: 'from-file', + active: false } diff --git a/test/start/file/test.test.js b/test/start/file/test.test.js index 925299ff12..0c2deed6bf 100644 --- a/test/start/file/test.test.js +++ b/test/start/file/test.test.js @@ -17,7 +17,17 @@ var agent = require('../../..').start({ const tape = require('tape'); -tape('from-file serviceName test', function (t) { - t.equals(agent._conf.serviceName, 'from-file'); +tape('from-file configuration test', function (t) { + t.equals( + agent._conf.serviceName, + 'from-file', + 'serviceName comes from config file', + ); + t.equals( + agent._conf.active, + false, + 'false values from config file override defaults', + ); + t.equals(agent._conf.captureBody, 'off', 'existing defaults are preserved'); t.end(); }); From 81ef41f77737f05053ecfbf221b3537ec72a905c Mon Sep 17 00:00:00 2001 From: David Luna Date: Wed, 31 Jul 2024 23:14:16 +0200 Subject: [PATCH 092/396] chore: update changelog (#4170) --- CHANGELOG.asciidoc | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 212641ca65..810e339986 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -33,6 +33,27 @@ Notes: See the <> guide. +==== Unreleased + +[float] +===== Breaking changes + +[float] +===== Features + +[float] +===== Bug fixes + +* Fix for instrumentation for `@aws-sdk/sns-client` that will prevent a crash + if the client is used when there is no parent transaction present. ({pull}4168[#4168]) + +* Fix for config resolution process. Before this change falsy config options coming + from the `elastic-apm-node.js` file were ignored. ({pull}4119[#4119]) +* Support hooking built-in Node.js modules loaded via https://nodejs.org/api/all.html#all_process_processgetbuiltinmoduleid[`process.getBuiltinModule`], added in v22.3.0. ({pull}4160[#4160]) + +[float] +===== Chores + [[release-notes-4.7.1]] ==== 4.7.1 - 2024/07/24 From d5541f7799319cc7a24869a14a2cf014001797ae Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Thu, 1 Aug 2024 08:37:00 -0700 Subject: [PATCH 093/396] fix(release): ensure we publish Lambda Layers to the intended AWS region (#4172) Before this change an errant AWS_REGION envvar would override the AWS_DEFAULT_REGION envvar. Explcitly using --region=... will win. Fixes: #4171 Refs: #4109 --- .ci/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.ci/Makefile b/.ci/Makefile index 9e460a5164..c15c462433 100644 --- a/.ci/Makefile +++ b/.ci/Makefile @@ -57,6 +57,7 @@ publish: validate-layer-name validate-aws-default-region @aws lambda \ --output json \ publish-layer-version \ + --region="$(AWS_DEFAULT_REGION)" \ --layer-name "$(ELASTIC_LAYER_NAME)" \ --description "AWS Lambda Extension Layer for the Elastic APM Node.js Agent" \ --license "Apache-2.0" \ @@ -69,6 +70,7 @@ grant-public-layer-access: validate-layer-name validate-aws-default-region @aws lambda \ --output json \ add-layer-version-permission \ + --region="$(AWS_DEFAULT_REGION)" \ --layer-name "$(ELASTIC_LAYER_NAME)" \ --action lambda:GetLayerVersion \ --principal '*' \ From dd5344c4025481fbbe1a389b3d87d8340b799c5d Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Thu, 1 Aug 2024 09:02:52 -0700 Subject: [PATCH 094/396] relaese 4.7.2 (#4173) --- CHANGELOG.asciidoc | 12 ++++++------ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 810e339986..dea9eb7bf9 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -33,14 +33,15 @@ Notes: See the <> guide. -==== Unreleased -[float] -===== Breaking changes +[[release-notes-4.7.2]] +==== 4.7.2 - 2024/08/01 [float] ===== Features +* Support hooking built-in Node.js modules loaded via https://nodejs.org/api/all.html#all_process_processgetbuiltinmoduleid[`process.getBuiltinModule`], added in v22.3.0. ({pull}4160[#4160]) + [float] ===== Bug fixes @@ -49,10 +50,9 @@ See the <> guide. * Fix for config resolution process. Before this change falsy config options coming from the `elastic-apm-node.js` file were ignored. ({pull}4119[#4119]) -* Support hooking built-in Node.js modules loaded via https://nodejs.org/api/all.html#all_process_processgetbuiltinmoduleid[`process.getBuiltinModule`], added in v22.3.0. ({pull}4160[#4160]) -[float] -===== Chores +* Fix publishing of AWS Lambda layer to all AWS regions. This was broken in + the 4.7.1 release. ({issues}4171[#4171]) [[release-notes-4.7.1]] diff --git a/package-lock.json b/package-lock.json index b8b2b5cfd4..46c872ac27 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "elastic-apm-node", - "version": "4.7.1", + "version": "4.7.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "elastic-apm-node", - "version": "4.7.1", + "version": "4.7.2", "license": "BSD-2-Clause", "dependencies": { "@elastic/ecs-pino-format": "^1.5.0", diff --git a/package.json b/package.json index bc8f8804b2..76b8df2453 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "elastic-apm-node", - "version": "4.7.1", + "version": "4.7.2", "description": "The official Elastic APM agent for Node.js", "type": "commonjs", "main": "index.js", From 9cb3e4ec7b5e43cb5045a41978454b80a38cd02c Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Thu, 1 Aug 2024 21:02:11 +0200 Subject: [PATCH 095/396] github-actions: use github secrets (#4129) --- .github/workflows/release.yml | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c2cccbf484..5d393db030 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -131,22 +131,11 @@ jobs: env: GH_TOKEN: ${{ github.token }} - - name: Read NPM vault secrets - uses: hashicorp/vault-action@v3.0.0 - with: - url: ${{ secrets.VAULT_ADDR }} - method: approle - roleId: ${{ secrets.VAULT_ROLE_ID }} - secretId: ${{ secrets.VAULT_SECRET_ID }} - secrets: | - secret/jenkins-ci/npmjs/elasticmachine token | NPMJS_TOKEN ; - totp/code/npmjs-elasticmachine code | TOTP_CODE - - name: npm publish (only for tag release) if: startsWith(github.ref, 'refs/tags') run: |- - echo "//registry.npmjs.org/:_authToken=${{ env.NPMJS_TOKEN }}" > .npmrc - npm publish --otp=${{ env.TOTP_CODE }} --provenance + echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc + npm publish --provenance - if: ${{ always() && startsWith(github.ref, 'refs/tags') }} uses: elastic/oblt-actions/slack/notify-result@v1 From c2d4e84d0453bab249a9d16ae070a0756bb3552c Mon Sep 17 00:00:00 2001 From: Jan Calanog Date: Sat, 3 Aug 2024 16:25:06 +0200 Subject: [PATCH 096/396] updatecli: rename update-compose.yaml to updatecli-compose.yaml (#4177) --- update-compose.yaml => updatecli-compose.yaml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename update-compose.yaml => updatecli-compose.yaml (100%) diff --git a/update-compose.yaml b/updatecli-compose.yaml similarity index 100% rename from update-compose.yaml rename to updatecli-compose.yaml From 9856e04ecac4fc1f1b85862eb8da7d2ae6ff816e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Aug 2024 08:35:23 +0200 Subject: [PATCH 097/396] chore(deps-dev): bump @types/node from 22.0.0 to 22.1.0 (#4183) --- package-lock.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 46c872ac27..7f876ef383 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6320,12 +6320,12 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.0.0.tgz", - "integrity": "sha512-VT7KSYudcPOzP5Q0wfbowyNLaVR8QWUdw+088uFWwfvpY6uCWaXpqV6ieLAu9WBcnTa7H4Z5RLK8I5t2FuOcqw==", + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.1.0.tgz", + "integrity": "sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==", "dev": true, "dependencies": { - "undici-types": "~6.11.1" + "undici-types": "~6.13.0" } }, "node_modules/@types/node-fetch": { @@ -15787,9 +15787,9 @@ } }, "node_modules/undici-types": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.11.1.tgz", - "integrity": "sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz", + "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==", "dev": true }, "node_modules/unicode-byte-truncate": { @@ -21292,12 +21292,12 @@ "dev": true }, "@types/node": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.0.0.tgz", - "integrity": "sha512-VT7KSYudcPOzP5Q0wfbowyNLaVR8QWUdw+088uFWwfvpY6uCWaXpqV6ieLAu9WBcnTa7H4Z5RLK8I5t2FuOcqw==", + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.1.0.tgz", + "integrity": "sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==", "dev": true, "requires": { - "undici-types": "~6.11.1" + "undici-types": "~6.13.0" } }, "@types/node-fetch": { @@ -28577,9 +28577,9 @@ "dev": true }, "undici-types": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.11.1.tgz", - "integrity": "sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz", + "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==", "dev": true }, "unicode-byte-truncate": { From 9dfc44fc90f2fb3208c572e6abf91533f7fac68d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Aug 2024 08:36:05 +0200 Subject: [PATCH 098/396] chore(deps-dev): bump redis from 4.6.15 to 4.7.0 (#4182) --- package-lock.json | 76 +++++++++++++++++++++++------------------------ 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7f876ef383..329c46373b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5406,9 +5406,9 @@ } }, "node_modules/@redis/client": { - "version": "1.5.17", - "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.5.17.tgz", - "integrity": "sha512-IPvU9A31qRCZ7lds/x+ksuK/UMndd0EASveAvCvEtFFKIZjZ+m/a4a0L7S28KEWoR5ka8526hlSghDo4Hrc2Hg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.6.0.tgz", + "integrity": "sha512-aR0uffYI700OEEH4gYnitAnv3vzVGXCFvYfdpu/CJKvk4pHfLPEy/JSZyrpQ+15WhXe1yJRXLtfQ84s4mEXnPg==", "dev": true, "dependencies": { "cluster-key-slot": "1.1.2", @@ -5429,27 +5429,27 @@ } }, "node_modules/@redis/json": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.6.tgz", - "integrity": "sha512-rcZO3bfQbm2zPRpqo82XbW8zg4G/w4W3tI7X8Mqleq9goQjAGLL7q/1n1ZX4dXEAmORVZ4s1+uKLaUOg7LrUhw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.7.tgz", + "integrity": "sha512-6UyXfjVaTBTJtKNG4/9Z8PSpKE6XgSyEb8iwaqDcy+uKrd/DGYHTWkUdnQDyzm727V7p21WUMhsqz5oy65kPcQ==", "dev": true, "peerDependencies": { "@redis/client": "^1.0.0" } }, "node_modules/@redis/search": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.6.tgz", - "integrity": "sha512-mZXCxbTYKBQ3M2lZnEddwEAks0Kc7nauire8q20oA0oA/LoA+E/b5Y5KZn232ztPb1FkIGqo12vh3Lf+Vw5iTw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.2.0.tgz", + "integrity": "sha512-tYoDBbtqOVigEDMAcTGsRlMycIIjwMCgD8eR2t0NANeQmgK/lvxNAvYyb6bZDD4frHRhIHkJu2TBRvB0ERkOmw==", "dev": true, "peerDependencies": { "@redis/client": "^1.0.0" } }, "node_modules/@redis/time-series": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.5.tgz", - "integrity": "sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.1.0.tgz", + "integrity": "sha512-c1Q99M5ljsIuc4YdaCwfUEXsofakb9c8+Zse2qxTadu8TalLXuAESzLvFAvNVbkmSlvlzIQOLpBCmWI9wTOt+g==", "dev": true, "peerDependencies": { "@redis/client": "^1.0.0" @@ -14015,17 +14015,17 @@ } }, "node_modules/redis": { - "version": "4.6.15", - "resolved": "https://registry.npmjs.org/redis/-/redis-4.6.15.tgz", - "integrity": "sha512-2NtuOpMW3tnYzBw6S8mbXSX7RPzvVFCA2wFJq9oErushO2UeBkxObk+uvo7gv7n0rhWeOj/IzrHO8TjcFlRSOg==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.7.0.tgz", + "integrity": "sha512-zvmkHEAdGMn+hMRXuMBtu4Vo5P6rHQjLoHftu+lBqq8ZTA3RCVC/WzD790bkKKiNFp7d5/9PcSD19fJyyRvOdQ==", "dev": true, "dependencies": { "@redis/bloom": "1.2.0", - "@redis/client": "1.5.17", + "@redis/client": "1.6.0", "@redis/graph": "1.1.1", - "@redis/json": "1.0.6", - "@redis/search": "1.1.6", - "@redis/time-series": "1.0.5" + "@redis/json": "1.0.7", + "@redis/search": "1.2.0", + "@redis/time-series": "1.1.0" } }, "node_modules/redis-errors": { @@ -20523,9 +20523,9 @@ "dev": true }, "@redis/client": { - "version": "1.5.17", - "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.5.17.tgz", - "integrity": "sha512-IPvU9A31qRCZ7lds/x+ksuK/UMndd0EASveAvCvEtFFKIZjZ+m/a4a0L7S28KEWoR5ka8526hlSghDo4Hrc2Hg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.6.0.tgz", + "integrity": "sha512-aR0uffYI700OEEH4gYnitAnv3vzVGXCFvYfdpu/CJKvk4pHfLPEy/JSZyrpQ+15WhXe1yJRXLtfQ84s4mEXnPg==", "dev": true, "requires": { "cluster-key-slot": "1.1.2", @@ -20540,21 +20540,21 @@ "dev": true }, "@redis/json": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.6.tgz", - "integrity": "sha512-rcZO3bfQbm2zPRpqo82XbW8zg4G/w4W3tI7X8Mqleq9goQjAGLL7q/1n1ZX4dXEAmORVZ4s1+uKLaUOg7LrUhw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.7.tgz", + "integrity": "sha512-6UyXfjVaTBTJtKNG4/9Z8PSpKE6XgSyEb8iwaqDcy+uKrd/DGYHTWkUdnQDyzm727V7p21WUMhsqz5oy65kPcQ==", "dev": true }, "@redis/search": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.6.tgz", - "integrity": "sha512-mZXCxbTYKBQ3M2lZnEddwEAks0Kc7nauire8q20oA0oA/LoA+E/b5Y5KZn232ztPb1FkIGqo12vh3Lf+Vw5iTw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.2.0.tgz", + "integrity": "sha512-tYoDBbtqOVigEDMAcTGsRlMycIIjwMCgD8eR2t0NANeQmgK/lvxNAvYyb6bZDD4frHRhIHkJu2TBRvB0ERkOmw==", "dev": true }, "@redis/time-series": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.5.tgz", - "integrity": "sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.1.0.tgz", + "integrity": "sha512-c1Q99M5ljsIuc4YdaCwfUEXsofakb9c8+Zse2qxTadu8TalLXuAESzLvFAvNVbkmSlvlzIQOLpBCmWI9wTOt+g==", "dev": true }, "@sideway/address": { @@ -27172,17 +27172,17 @@ } }, "redis": { - "version": "4.6.15", - "resolved": "https://registry.npmjs.org/redis/-/redis-4.6.15.tgz", - "integrity": "sha512-2NtuOpMW3tnYzBw6S8mbXSX7RPzvVFCA2wFJq9oErushO2UeBkxObk+uvo7gv7n0rhWeOj/IzrHO8TjcFlRSOg==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.7.0.tgz", + "integrity": "sha512-zvmkHEAdGMn+hMRXuMBtu4Vo5P6rHQjLoHftu+lBqq8ZTA3RCVC/WzD790bkKKiNFp7d5/9PcSD19fJyyRvOdQ==", "dev": true, "requires": { "@redis/bloom": "1.2.0", - "@redis/client": "1.5.17", + "@redis/client": "1.6.0", "@redis/graph": "1.1.1", - "@redis/json": "1.0.6", - "@redis/search": "1.1.6", - "@redis/time-series": "1.0.5" + "@redis/json": "1.0.7", + "@redis/search": "1.2.0", + "@redis/time-series": "1.1.0" } }, "redis-errors": { From 1b58e36a690d5b89c07f2f447b2be57fa4d5d0db Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Aug 2024 09:43:29 +0200 Subject: [PATCH 099/396] chore(deps-dev): bump undici from 6.19.4 to 6.19.5 (#4181) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 329c46373b..e518eb33b2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15778,9 +15778,9 @@ } }, "node_modules/undici": { - "version": "6.19.4", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.4.tgz", - "integrity": "sha512-i3uaEUwNdkRq2qtTRRJb13moW5HWqviu7Vl7oYRYz++uPtGHJj+x7TGjcEuwS5Mt2P4nA0U9dhIX3DdB6JGY0g==", + "version": "6.19.5", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.5.tgz", + "integrity": "sha512-LryC15SWzqQsREHIOUybavaIHF5IoL0dJ9aWWxL/PgT1KfqAW5225FZpDUFlt9xiDMS2/S7DOKhFWA7RLksWdg==", "dev": true, "engines": { "node": ">=18.17" @@ -28571,9 +28571,9 @@ "dev": true }, "undici": { - "version": "6.19.4", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.4.tgz", - "integrity": "sha512-i3uaEUwNdkRq2qtTRRJb13moW5HWqviu7Vl7oYRYz++uPtGHJj+x7TGjcEuwS5Mt2P4nA0U9dhIX3DdB6JGY0g==", + "version": "6.19.5", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.5.tgz", + "integrity": "sha512-LryC15SWzqQsREHIOUybavaIHF5IoL0dJ9aWWxL/PgT1KfqAW5225FZpDUFlt9xiDMS2/S7DOKhFWA7RLksWdg==", "dev": true }, "undici-types": { From 8bba4472e0e381234060869ee8d9821b420d7a94 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Aug 2024 09:44:09 +0200 Subject: [PATCH 100/396] chore(deps-dev): bump @babel/core in the babel group (#4180) --- package-lock.json | 166 ++++++++++++++++++++++++---------------------- 1 file changed, 85 insertions(+), 81 deletions(-) diff --git a/package-lock.json b/package-lock.json index e518eb33b2..29882e9648 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2492,30 +2492,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.0.tgz", - "integrity": "sha512-P4fwKI2mjEb3ZU5cnMJzvRsRKGBUcs8jvxIoRmr6ufAY9Xk2Bz7JubRTTivkw55c7WQJfTECeqYVa+HZ0FzREg==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz", + "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", - "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.0", - "@babel/parser": "^7.24.0", - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", - "@babel/types": "^7.24.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -2600,12 +2600,12 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz", - "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.24.8", + "@babel/compat-data": "^7.25.2", "@babel/helper-validator-option": "^7.24.8", "browserslist": "^4.23.1", "lru-cache": "^5.1.1", @@ -2738,15 +2738,15 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.0.tgz", - "integrity": "sha512-bIkOa2ZJYn7FHnepzr5iX9Kmz8FjIz4UKzJ9zhX3dnYuVW0xul9RuR3skBfoLu+FPTQw90EHW9rJsSZhyLQ3fQ==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.24.7", "@babel/helper-simple-access": "^7.24.7", "@babel/helper-validator-identifier": "^7.24.7", - "@babel/traverse": "^7.25.0" + "@babel/traverse": "^7.25.2" }, "engines": { "node": ">=6.9.0" @@ -2878,14 +2878,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", - "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", + "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", "dev": true, "dependencies": { - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -2907,10 +2906,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.0.tgz", - "integrity": "sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==", + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", + "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", "dev": true, + "dependencies": { + "@babel/types": "^7.25.2" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -4182,16 +4184,16 @@ } }, "node_modules/@babel/traverse": { - "version": "7.25.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.1.tgz", - "integrity": "sha512-LrHHoWq08ZpmmFqBAzN+hUdWwy5zt7FGa/hVwMcOqW6OVtwqaoD5utfuGYU87JYxdZgLUvktAsn37j/sYR9siA==", + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz", + "integrity": "sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==", "dev": true, "dependencies": { "@babel/code-frame": "^7.24.7", "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.0", + "@babel/parser": "^7.25.3", "@babel/template": "^7.25.0", - "@babel/types": "^7.25.0", + "@babel/types": "^7.25.2", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -4200,9 +4202,9 @@ } }, "node_modules/@babel/types": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.0.tgz", - "integrity": "sha512-LcnxQSsd9aXOIgmmSpvZ/1yo46ra2ESYyqLcryaBZOghxy5qqOBjvCWP5JfkI8yl9rlxRgdLTTMCQQRcN2hdCg==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", + "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.24.8", @@ -18239,27 +18241,27 @@ } }, "@babel/compat-data": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.0.tgz", - "integrity": "sha512-P4fwKI2mjEb3ZU5cnMJzvRsRKGBUcs8jvxIoRmr6ufAY9Xk2Bz7JubRTTivkw55c7WQJfTECeqYVa+HZ0FzREg==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz", + "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==", "dev": true }, "@babel/core": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", - "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", "dev": true, "requires": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.0", - "@babel/parser": "^7.24.0", - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", - "@babel/types": "^7.24.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -18326,12 +18328,12 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz", - "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", "dev": true, "requires": { - "@babel/compat-data": "^7.24.8", + "@babel/compat-data": "^7.25.2", "@babel/helper-validator-option": "^7.24.8", "browserslist": "^4.23.1", "lru-cache": "^5.1.1", @@ -18437,15 +18439,15 @@ } }, "@babel/helper-module-transforms": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.0.tgz", - "integrity": "sha512-bIkOa2ZJYn7FHnepzr5iX9Kmz8FjIz4UKzJ9zhX3dnYuVW0xul9RuR3skBfoLu+FPTQw90EHW9rJsSZhyLQ3fQ==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.24.7", "@babel/helper-simple-access": "^7.24.7", "@babel/helper-validator-identifier": "^7.24.7", - "@babel/traverse": "^7.25.0" + "@babel/traverse": "^7.25.2" } }, "@babel/helper-optimise-call-expression": { @@ -18535,14 +18537,13 @@ } }, "@babel/helpers": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", - "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", + "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", "dev": true, "requires": { - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0" } }, "@babel/highlight": { @@ -18558,10 +18559,13 @@ } }, "@babel/parser": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.0.tgz", - "integrity": "sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==", - "dev": true + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", + "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", + "dev": true, + "requires": { + "@babel/types": "^7.25.2" + } }, "@babel/plugin-bugfix-firefox-class-in-computed-class-key": { "version": "7.25.0", @@ -19409,24 +19413,24 @@ } }, "@babel/traverse": { - "version": "7.25.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.1.tgz", - "integrity": "sha512-LrHHoWq08ZpmmFqBAzN+hUdWwy5zt7FGa/hVwMcOqW6OVtwqaoD5utfuGYU87JYxdZgLUvktAsn37j/sYR9siA==", + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz", + "integrity": "sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==", "dev": true, "requires": { "@babel/code-frame": "^7.24.7", "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.0", + "@babel/parser": "^7.25.3", "@babel/template": "^7.25.0", - "@babel/types": "^7.25.0", + "@babel/types": "^7.25.2", "debug": "^4.3.1", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.0.tgz", - "integrity": "sha512-LcnxQSsd9aXOIgmmSpvZ/1yo46ra2ESYyqLcryaBZOghxy5qqOBjvCWP5JfkI8yl9rlxRgdLTTMCQQRcN2hdCg==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", + "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", "dev": true, "requires": { "@babel/helper-string-parser": "^7.24.8", From c665a47380269a7e222f4d1034a79090f9f42464 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Aug 2024 09:44:55 +0200 Subject: [PATCH 101/396] chore(deps): bump actions/attest-build-provenance (#4179) --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5d393db030..c29d9d3067 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -44,7 +44,7 @@ jobs: - run: make -C .ci dist - name: Attest Lambda layer zip - uses: actions/attest-build-provenance@5e9cb68e95676991667494a6a4e59b8a2f13e1d0 # v1.3.3 + uses: actions/attest-build-provenance@210c1913531870065f03ce1f9440dd87bc0938cd # v1.4.0 with: subject-path: "${{ github.workspace }}/build/aws/elastic-apm-node-lambda-layer-*.zip" @@ -75,7 +75,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image - uses: actions/attest-build-provenance@5e9cb68e95676991667494a6a4e59b8a2f13e1d0 # v1.3.3 + uses: actions/attest-build-provenance@210c1913531870065f03ce1f9440dd87bc0938cd # v1.4.0 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push.outputs.digest }} @@ -109,7 +109,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image (wolfi) - uses: actions/attest-build-provenance@5e9cb68e95676991667494a6a4e59b8a2f13e1d0 # v1.3.3 + uses: actions/attest-build-provenance@210c1913531870065f03ce1f9440dd87bc0938cd # v1.4.0 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push-wolfi.outputs.digest }} From 9092a46d8f0a870216b5c7be47600a5fa4dff58f Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Thu, 8 Aug 2024 14:18:16 -0700 Subject: [PATCH 102/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to 0822662 (#4152) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index f03619042b..8cc469eb07 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base@sha256:9f940409f96296ef56140bcc4665c204dd499af4c32c96cc00e792558097c3f1 +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:082266206be6e559baea1c8b2eeb4fb86ea1318a0cf99cbf0e612dd2c611e80b ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 22590fcf401b6e60b1b33af885826a78217a74f9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 Aug 2024 14:28:56 -0700 Subject: [PATCH 103/396] chore(deps): bump import-in-the-middle from 1.9.1 to 1.11.0 (#4175) --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 29882e9648..7b98e95d22 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "fast-safe-stringify": "^2.0.7", "fast-stream-to-buffer": "^1.0.0", "http-headers": "^3.0.2", - "import-in-the-middle": "1.9.1", + "import-in-the-middle": "1.11.0", "json-bigint": "^1.0.0", "lru-cache": "10.2.0", "measured-reporting": "^1.51.1", @@ -10829,9 +10829,9 @@ } }, "node_modules/import-in-the-middle": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.9.1.tgz", - "integrity": "sha512-E+3tEOutU1MV0mxhuCwfSPNNWRkbTJ3/YyL5be+blNIbHwZc53uYHQfuIhAU77xWR0BoF2eT7cqDJ6VlU5APPg==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.0.tgz", + "integrity": "sha512-5DimNQGoe0pLUHbR9qK84iWaWjjbsxiqXnw6Qz64+azRgleqv9k2kTt5fw7QsOpmaGYtuxxursnPPsnTKEx10Q==", "dependencies": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", @@ -24733,9 +24733,9 @@ } }, "import-in-the-middle": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.9.1.tgz", - "integrity": "sha512-E+3tEOutU1MV0mxhuCwfSPNNWRkbTJ3/YyL5be+blNIbHwZc53uYHQfuIhAU77xWR0BoF2eT7cqDJ6VlU5APPg==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.0.tgz", + "integrity": "sha512-5DimNQGoe0pLUHbR9qK84iWaWjjbsxiqXnw6Qz64+azRgleqv9k2kTt5fw7QsOpmaGYtuxxursnPPsnTKEx10Q==", "requires": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", diff --git a/package.json b/package.json index 76b8df2453..6e7daea04d 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "fast-safe-stringify": "^2.0.7", "fast-stream-to-buffer": "^1.0.0", "http-headers": "^3.0.2", - "import-in-the-middle": "1.9.1", + "import-in-the-middle": "1.11.0", "json-bigint": "^1.0.0", "lru-cache": "10.2.0", "measured-reporting": "^1.51.1", From 6c96ad71c631d15858a64d4a87ff59fd3fa124db Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Fri, 9 Aug 2024 08:14:09 -0700 Subject: [PATCH 104/396] release 4.7.3 (#4184) This should fix the issue being hit here: https://github.com/elastic/apm-agent-nodejs/issues/4143#issuecomment-2257585825 --- CHANGELOG.asciidoc | 10 ++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index dea9eb7bf9..1acf515ea3 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -34,6 +34,16 @@ Notes: See the <> guide. +[[release-notes-4.7.3]] +==== 4.7.3 - 2024/08/09 + +[float] +===== Bug fixes + +* Update import-in-the-middle to 1.11.0, which fixes https://github.com/nodejs/import-in-the-middle/issues/144[an issue] + that can crash users using Nuxt and ESM. ({pull}4175[#4175]) + + [[release-notes-4.7.2]] ==== 4.7.2 - 2024/08/01 diff --git a/package-lock.json b/package-lock.json index 7b98e95d22..3158509ec5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "elastic-apm-node", - "version": "4.7.2", + "version": "4.7.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "elastic-apm-node", - "version": "4.7.2", + "version": "4.7.3", "license": "BSD-2-Clause", "dependencies": { "@elastic/ecs-pino-format": "^1.5.0", diff --git a/package.json b/package.json index 6e7daea04d..7f3e36b28b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "elastic-apm-node", - "version": "4.7.2", + "version": "4.7.3", "description": "The official Elastic APM agent for Node.js", "type": "commonjs", "main": "index.js", From 6e22fcc4d910c7ae70dac81a2fc9bf6d9b059bfa Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Fri, 9 Aug 2024 12:41:54 -0700 Subject: [PATCH 105/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to dcbcd19 (#4186) Co-authored-by: elastic-renovate-prod[bot] <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 8cc469eb07..06e27383b0 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:082266206be6e559baea1c8b2eeb4fb86ea1318a0cf99cbf0e612dd2c611e80b +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:dcbcd1932d7180cacc83add309cec026aa75dadc1f2c6a2238db5b41dd100b15 ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From b73566e051f68117c6335933c257bda00963d396 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2024 09:33:49 +0200 Subject: [PATCH 106/396] chore(deps): bump the github-actions group with 2 updates (#4187) Updates `actions/attest-build-provenance` from 1.4.0 to 1.4.1 Updates `docker/build-push-action` from 6.5.0 to 6.6.1 --- .github/workflows/release.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c29d9d3067..67f4302b31 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -44,7 +44,7 @@ jobs: - run: make -C .ci dist - name: Attest Lambda layer zip - uses: actions/attest-build-provenance@210c1913531870065f03ce1f9440dd87bc0938cd # v1.4.0 + uses: actions/attest-build-provenance@310b0a4a3b0b78ef57ecda988ee04b132db73ef8 # v1.4.1 with: subject-path: "${{ github.workspace }}/build/aws/elastic-apm-node-lambda-layer-*.zip" @@ -63,7 +63,7 @@ jobs: - name: Build and Push Docker Image id: docker-push - uses: docker/build-push-action@5176d81f87c23d6fc96624dfdbcd9f3830bbe445 # v6.5.0 + uses: docker/build-push-action@16ebe778df0e7752d2cfcbd924afdbbd89c1a755 # v6.6.1 with: context: . platforms: linux/amd64,linux/arm64 @@ -75,7 +75,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image - uses: actions/attest-build-provenance@210c1913531870065f03ce1f9440dd87bc0938cd # v1.4.0 + uses: actions/attest-build-provenance@310b0a4a3b0b78ef57ecda988ee04b132db73ef8 # v1.4.1 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push.outputs.digest }} @@ -97,7 +97,7 @@ jobs: - name: Build and Push Docker Image (wolfi) id: docker-push-wolfi - uses: docker/build-push-action@5176d81f87c23d6fc96624dfdbcd9f3830bbe445 # v6.5.0 + uses: docker/build-push-action@16ebe778df0e7752d2cfcbd924afdbbd89c1a755 # v6.6.1 with: context: . platforms: linux/amd64,linux/arm64 @@ -109,7 +109,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image (wolfi) - uses: actions/attest-build-provenance@210c1913531870065f03ce1f9440dd87bc0938cd # v1.4.0 + uses: actions/attest-build-provenance@310b0a4a3b0b78ef57ecda988ee04b132db73ef8 # v1.4.1 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push-wolfi.outputs.digest }} From abb1baadeaef85c4894a66ce07221cf82a236cc4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2024 09:34:57 +0200 Subject: [PATCH 107/396] chore(deps-dev): bump @apollo/server from 4.10.5 to 4.11.0 (#4188) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3158509ec5..cdb8ba613f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -199,9 +199,9 @@ "dev": true }, "node_modules/@apollo/server": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.10.5.tgz", - "integrity": "sha512-I+Oi1CnphXExSAAsZbclgRDN4k4CEMxyKRzYg3bir5N8OmydEhzXDlIGAOETP/TKblxR7HPXGvwn2cJKzbl46w==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.11.0.tgz", + "integrity": "sha512-SWDvbbs0wl2zYhKG6aGLxwTJ72xpqp0awb2lotNpfezd9VcAvzaUizzKQqocephin2uMoaA8MguoyBmgtPzNWw==", "dev": true, "dependencies": { "@apollo/cache-control-types": "^1.0.3", @@ -16335,9 +16335,9 @@ } }, "@apollo/server": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.10.5.tgz", - "integrity": "sha512-I+Oi1CnphXExSAAsZbclgRDN4k4CEMxyKRzYg3bir5N8OmydEhzXDlIGAOETP/TKblxR7HPXGvwn2cJKzbl46w==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.11.0.tgz", + "integrity": "sha512-SWDvbbs0wl2zYhKG6aGLxwTJ72xpqp0awb2lotNpfezd9VcAvzaUizzKQqocephin2uMoaA8MguoyBmgtPzNWw==", "dev": true, "requires": { "@apollo/cache-control-types": "^1.0.3", From ed9acfcb80af5755cb3038d939137b2ea2ed77f5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2024 09:36:07 +0200 Subject: [PATCH 108/396] chore(deps-dev): bump the eslint group with 3 updates (#4189) Updates `eslint` from 9.8.0 to 9.9.0 Updates `eslint-plugin-n` from 17.10.1 to 17.10.2 Updates `eslint-plugin-promise` from 7.0.0 to 7.1.0 --- package-lock.json | 60 +++++++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/package-lock.json b/package-lock.json index cdb8ba613f..7119ecf803 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4398,9 +4398,9 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.8.0.tgz", - "integrity": "sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==", + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.0.tgz", + "integrity": "sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8910,16 +8910,16 @@ } }, "node_modules/eslint": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.8.0.tgz", - "integrity": "sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==", + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.0.tgz", + "integrity": "sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.11.0", "@eslint/config-array": "^0.17.1", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.8.0", + "@eslint/js": "9.9.0", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -8958,6 +8958,14 @@ }, "funding": { "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-compat-utils": { @@ -9121,9 +9129,9 @@ } }, "node_modules/eslint-plugin-n": { - "version": "17.10.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.10.1.tgz", - "integrity": "sha512-hm/q37W6efDptJXdwirsm6A257iY6ZNtpoSG0wEzFzjJ3AhL7OhEIhdSR2e4OdYfHO5EDeqlCfFrjf9q208IPw==", + "version": "17.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.10.2.tgz", + "integrity": "sha512-e+s4eAf5NtJaxPhTNu3qMO0Iz40WANS93w9LQgYcvuljgvDmWi/a3rh+OrNyMHeng6aOWGJO0rCg5lH4zi8yTw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", @@ -9212,9 +9220,9 @@ } }, "node_modules/eslint-plugin-promise": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.0.0.tgz", - "integrity": "sha512-wb1ECT+b90ndBdAujhIdAU8oQ3Vt5gKqP/t78KOmg0ifynrvc2jGR9f6ndbOVNFpKf6jLUBlBBDF3H3Wk0JICg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.1.0.tgz", + "integrity": "sha512-8trNmPxdAy3W620WKDpaS65NlM5yAumod6XeC4LOb+jxlkG4IVcp68c6dXY2ev+uT4U1PtG57YDV6EGAXN0GbQ==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -19578,9 +19586,9 @@ } }, "@eslint/js": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.8.0.tgz", - "integrity": "sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==", + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.0.tgz", + "integrity": "sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==", "dev": true }, "@eslint/object-schema": { @@ -23291,16 +23299,16 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.8.0.tgz", - "integrity": "sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==", + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.0.tgz", + "integrity": "sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.11.0", "@eslint/config-array": "^0.17.1", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.8.0", + "@eslint/js": "9.9.0", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -23573,9 +23581,9 @@ } }, "eslint-plugin-n": { - "version": "17.10.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.10.1.tgz", - "integrity": "sha512-hm/q37W6efDptJXdwirsm6A257iY6ZNtpoSG0wEzFzjJ3AhL7OhEIhdSR2e4OdYfHO5EDeqlCfFrjf9q208IPw==", + "version": "17.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.10.2.tgz", + "integrity": "sha512-e+s4eAf5NtJaxPhTNu3qMO0Iz40WANS93w9LQgYcvuljgvDmWi/a3rh+OrNyMHeng6aOWGJO0rCg5lH4zi8yTw==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", @@ -23625,9 +23633,9 @@ } }, "eslint-plugin-promise": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.0.0.tgz", - "integrity": "sha512-wb1ECT+b90ndBdAujhIdAU8oQ3Vt5gKqP/t78KOmg0ifynrvc2jGR9f6ndbOVNFpKf6jLUBlBBDF3H3Wk0JICg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.1.0.tgz", + "integrity": "sha512-8trNmPxdAy3W620WKDpaS65NlM5yAumod6XeC4LOb+jxlkG4IVcp68c6dXY2ev+uT4U1PtG57YDV6EGAXN0GbQ==", "dev": true }, "eslint-scope": { From c9ec2c3f05132da3be2ab3183c6e9248cd234e1e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2024 09:36:56 +0200 Subject: [PATCH 109/396] chore(deps-dev): bump undici from 6.19.5 to 6.19.7 (#4190) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7119ecf803..b4051a8008 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15788,9 +15788,9 @@ } }, "node_modules/undici": { - "version": "6.19.5", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.5.tgz", - "integrity": "sha512-LryC15SWzqQsREHIOUybavaIHF5IoL0dJ9aWWxL/PgT1KfqAW5225FZpDUFlt9xiDMS2/S7DOKhFWA7RLksWdg==", + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.7.tgz", + "integrity": "sha512-HR3W/bMGPSr90i8AAp2C4DM3wChFdJPLrWYpIS++LxS8K+W535qftjt+4MyjNYHeWabMj1nvtmLIi7l++iq91A==", "dev": true, "engines": { "node": ">=18.17" @@ -28583,9 +28583,9 @@ "dev": true }, "undici": { - "version": "6.19.5", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.5.tgz", - "integrity": "sha512-LryC15SWzqQsREHIOUybavaIHF5IoL0dJ9aWWxL/PgT1KfqAW5225FZpDUFlt9xiDMS2/S7DOKhFWA7RLksWdg==", + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.7.tgz", + "integrity": "sha512-HR3W/bMGPSr90i8AAp2C4DM3wChFdJPLrWYpIS++LxS8K+W535qftjt+4MyjNYHeWabMj1nvtmLIi7l++iq91A==", "dev": true }, "undici-types": { From 2031a263befadc16f00e3584f26932f03b4e7d92 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2024 12:29:49 +0200 Subject: [PATCH 110/396] chore(deps-dev): bump @types/node from 22.1.0 to 22.2.0 (#4191) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index b4051a8008..61b8a18226 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6322,9 +6322,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.1.0.tgz", - "integrity": "sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.2.0.tgz", + "integrity": "sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==", "dev": true, "dependencies": { "undici-types": "~6.13.0" @@ -21304,9 +21304,9 @@ "dev": true }, "@types/node": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.1.0.tgz", - "integrity": "sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.2.0.tgz", + "integrity": "sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==", "dev": true, "requires": { "undici-types": "~6.13.0" From f63d0ac82e7a558628d7385c38ba783322c9cec7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Aug 2024 11:22:20 +0200 Subject: [PATCH 111/396] chore(deps-dev): bump tedious from 18.3.0 to 18.6.2 (#4198) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 61b8a18226..91cdb7daec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15369,9 +15369,9 @@ } }, "node_modules/tedious": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.3.0.tgz", - "integrity": "sha512-/aVCX2VLu9Ihf5UyxifRXfmWQ1P8HNJvapk1as+LMzSdw9AmbNtEHllrffZpNrzBCptcK0Z4m06k+tutL2wowA==", + "version": "18.6.2", + "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.6.2.tgz", + "integrity": "sha512-g7jC56o3MzLkE3lHkaFe2ZdOVFBahq5bsB60/M4NYUbocw/MCrS89IOEQUFr+ba6pb8ZHczZ/VqCyYeYq0xBAg==", "dev": true, "dependencies": { "@azure/core-auth": "^1.7.2", @@ -28246,9 +28246,9 @@ "dev": true }, "tedious": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.3.0.tgz", - "integrity": "sha512-/aVCX2VLu9Ihf5UyxifRXfmWQ1P8HNJvapk1as+LMzSdw9AmbNtEHllrffZpNrzBCptcK0Z4m06k+tutL2wowA==", + "version": "18.6.2", + "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.6.2.tgz", + "integrity": "sha512-g7jC56o3MzLkE3lHkaFe2ZdOVFBahq5bsB60/M4NYUbocw/MCrS89IOEQUFr+ba6pb8ZHczZ/VqCyYeYq0xBAg==", "dev": true, "requires": { "@azure/core-auth": "^1.7.2", From d357e8255c54255b7e6a1f8ad68742e130168d8e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Aug 2024 11:23:30 +0200 Subject: [PATCH 112/396] chore(deps-dev): bump @types/node from 22.2.0 to 22.4.0 (#4197) --- package-lock.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 91cdb7daec..bac515ba80 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6322,12 +6322,12 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.2.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.2.0.tgz", - "integrity": "sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==", + "version": "22.4.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.4.0.tgz", + "integrity": "sha512-49AbMDwYUz7EXxKU/r7mXOsxwFr4BYbvB7tWYxVuLdb2ibd30ijjXINSMAHiEEZk5PCRBmW1gUeisn2VMKt3cQ==", "dev": true, "dependencies": { - "undici-types": "~6.13.0" + "undici-types": "~6.19.2" } }, "node_modules/@types/node-fetch": { @@ -15797,9 +15797,9 @@ } }, "node_modules/undici-types": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz", - "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==", + "version": "6.19.6", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.6.tgz", + "integrity": "sha512-e/vggGopEfTKSvj4ihnOLTsqhrKRN3LeO6qSN/GxohhuRv8qH9bNQ4B8W7e/vFL+0XTnmHPB4/kegunZGA4Org==", "dev": true }, "node_modules/unicode-byte-truncate": { @@ -21304,12 +21304,12 @@ "dev": true }, "@types/node": { - "version": "22.2.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.2.0.tgz", - "integrity": "sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==", + "version": "22.4.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.4.0.tgz", + "integrity": "sha512-49AbMDwYUz7EXxKU/r7mXOsxwFr4BYbvB7tWYxVuLdb2ibd30ijjXINSMAHiEEZk5PCRBmW1gUeisn2VMKt3cQ==", "dev": true, "requires": { - "undici-types": "~6.13.0" + "undici-types": "~6.19.2" } }, "@types/node-fetch": { @@ -28589,9 +28589,9 @@ "dev": true }, "undici-types": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz", - "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==", + "version": "6.19.6", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.6.tgz", + "integrity": "sha512-e/vggGopEfTKSvj4ihnOLTsqhrKRN3LeO6qSN/GxohhuRv8qH9bNQ4B8W7e/vFL+0XTnmHPB4/kegunZGA4Org==", "dev": true }, "unicode-byte-truncate": { From bdb7b9eb5fdeece1e3b34804f00efcac4c5ed856 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Aug 2024 11:39:53 +0200 Subject: [PATCH 113/396] chore(deps-dev): bump @elastic/elasticsearch from 8.14.0 to 8.15.0 (#4196) --- package-lock.json | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index bac515ba80..1fd485ec9c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4255,12 +4255,12 @@ } }, "node_modules/@elastic/elasticsearch": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.14.0.tgz", - "integrity": "sha512-MGrgCI4y+Ozssf5Q2IkVJlqt5bUMnKIICG2qxeOfrJNrVugMCBCAQypyesmSSocAtNm8IX3LxfJ3jQlFHmKe2w==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.15.0.tgz", + "integrity": "sha512-mG90EMdTDoT6GFSdqpUAhWK9LGuiJo6tOWqs0Usd/t15mPQDj7ZqHXfCBqNkASZpwPZpbAYVjd57S6nbUBINCg==", "dev": true, "dependencies": { - "@elastic/transport": "^8.6.0", + "@elastic/transport": "^8.7.0", "tslib": "^2.4.0" }, "engines": { @@ -4268,11 +4268,12 @@ } }, "node_modules/@elastic/transport": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.6.1.tgz", - "integrity": "sha512-3vGs4W3wP5oeIT/4j1vcvd+t7m6ndP0uyb5GDY23LQCmbtI5Oq0aQwD9gb09KJbLFLUbI7db9vMFPzKavSFA5g==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.7.0.tgz", + "integrity": "sha512-IqXT7a8DZPJtqP2qmX1I2QKmxYyN27kvSW4g6pInESE1SuGwZDp2FxHJ6W2kwmYOJwQdAt+2aWwzXO5jHo9l4A==", "dev": true, "dependencies": { + "@opentelemetry/api": "1.x", "debug": "^4.3.4", "hpagent": "^1.0.0", "ms": "^2.1.3", @@ -19477,21 +19478,22 @@ } }, "@elastic/elasticsearch": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.14.0.tgz", - "integrity": "sha512-MGrgCI4y+Ozssf5Q2IkVJlqt5bUMnKIICG2qxeOfrJNrVugMCBCAQypyesmSSocAtNm8IX3LxfJ3jQlFHmKe2w==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.15.0.tgz", + "integrity": "sha512-mG90EMdTDoT6GFSdqpUAhWK9LGuiJo6tOWqs0Usd/t15mPQDj7ZqHXfCBqNkASZpwPZpbAYVjd57S6nbUBINCg==", "dev": true, "requires": { - "@elastic/transport": "^8.6.0", + "@elastic/transport": "^8.7.0", "tslib": "^2.4.0" } }, "@elastic/transport": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.6.1.tgz", - "integrity": "sha512-3vGs4W3wP5oeIT/4j1vcvd+t7m6ndP0uyb5GDY23LQCmbtI5Oq0aQwD9gb09KJbLFLUbI7db9vMFPzKavSFA5g==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.7.0.tgz", + "integrity": "sha512-IqXT7a8DZPJtqP2qmX1I2QKmxYyN27kvSW4g6pInESE1SuGwZDp2FxHJ6W2kwmYOJwQdAt+2aWwzXO5jHo9l4A==", "dev": true, "requires": { + "@opentelemetry/api": "1.x", "debug": "^4.3.4", "hpagent": "^1.0.0", "ms": "^2.1.3", From 268381deadaabdffafb450af54127d7aa158e473 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Aug 2024 11:48:54 +0200 Subject: [PATCH 114/396] chore(deps-dev): bump axios from 1.6.2 to 1.7.4 (#4199) --- package-lock.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1fd485ec9c..d3d6b609e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7120,12 +7120,12 @@ "dev": true }, "node_modules/axios": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", - "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", + "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", "dev": true, "dependencies": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -21926,12 +21926,12 @@ "dev": true }, "axios": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", - "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", + "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", "dev": true, "requires": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" }, From 73d2bcf790a8700aef5116ba3f352b15d32a4625 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Aug 2024 14:05:23 +0200 Subject: [PATCH 115/396] chore(deps): bump docker/build-push-action from 6.6.1 to 6.7.0 in the github-actions group (#4194) Bumps the github-actions group with 1 update: [docker/build-push-action](https://github.com/docker/build-push-action). Updates `docker/build-push-action` from 6.6.1 to 6.7.0 - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/16ebe778df0e7752d2cfcbd924afdbbd89c1a755...5cd11c3a4ced054e52742c5fd54dca954e0edd85) --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 67f4302b31..a971f97070 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -63,7 +63,7 @@ jobs: - name: Build and Push Docker Image id: docker-push - uses: docker/build-push-action@16ebe778df0e7752d2cfcbd924afdbbd89c1a755 # v6.6.1 + uses: docker/build-push-action@5cd11c3a4ced054e52742c5fd54dca954e0edd85 # v6.7.0 with: context: . platforms: linux/amd64,linux/arm64 @@ -97,7 +97,7 @@ jobs: - name: Build and Push Docker Image (wolfi) id: docker-push-wolfi - uses: docker/build-push-action@16ebe778df0e7752d2cfcbd924afdbbd89c1a755 # v6.6.1 + uses: docker/build-push-action@5cd11c3a4ced054e52742c5fd54dca954e0edd85 # v6.7.0 with: context: . platforms: linux/amd64,linux/arm64 From 069f9f5e36a4b94a7ce25db59eed499fb421e497 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Tue, 20 Aug 2024 08:26:58 -0700 Subject: [PATCH 116/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to e11c691 (#4193) Co-authored-by: elastic-renovate-prod[bot] <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 06e27383b0..ae3d5cc0dd 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:dcbcd1932d7180cacc83add309cec026aa75dadc1f2c6a2238db5b41dd100b15 +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:e11c6912723c5a0ceeaeb2353329606270292e20c280a0a28d25e8d35474475f ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 6360a962b234ef2bf23a6658524ea253200b9d53 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Wed, 4 Sep 2024 14:19:44 -0700 Subject: [PATCH 117/396] feat: improved container-id parsing for ECS Fargate (#4216) Refs: https://github.com/elastic/apm/issues/888 Closes: #4215 --- CHANGELOG.asciidoc | 19 +++++++++ .../http-apm-client/container-info.js | 2 +- .../http-apm-client/container-info.test.js | 42 +++++++++++++++++++ 3 files changed, 62 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 1acf515ea3..b149852a95 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -33,6 +33,25 @@ Notes: See the <> guide. +==== Unreleased + +[float] +===== Breaking changes + +[float] +===== Features + +- Minor improvement to container ID parsing from /etc/cgroup v1 files in + AWS ECS Fargate, where the pattern has been observed to sometimes differ + from the documented pattern. (https://github.com/elastic/apm/issues/888[APM spec issue #888]) + + +[float] +===== Bug fixes + +[float] +===== Chores + [[release-notes-4.7.3]] ==== 4.7.3 - 2024/08/09 diff --git a/lib/apm-client/http-apm-client/container-info.js b/lib/apm-client/http-apm-client/container-info.js index 58bd42383e..04dbbf89c5 100644 --- a/lib/apm-client/http-apm-client/container-info.js +++ b/lib/apm-client/http-apm-client/container-info.js @@ -12,7 +12,7 @@ const uuidSource = '[0-9a-f]{8}[-_][0-9a-f]{4}[-_][0-9a-f]{4}[-_][0-9a-f]{4}[-_][0-9a-f]{12}'; const containerSource = '[0-9a-f]{64}'; const taskSource = '[0-9a-f]{32}'; -const awsEcsSource = '[0-9a-f]{32}-[0-9]{10}'; +const awsEcsSource = '[0-9a-f]{32}-[0-9]{1,10}'; const lineReg = /^(\d+):([^:]*):(.+)$/; const podReg = new RegExp(`pod(${uuidSource})(?:.slice)?$`); diff --git a/test/apm-client/http-apm-client/container-info.test.js b/test/apm-client/http-apm-client/container-info.test.js index 9b6ca70838..ea2c2a8505 100644 --- a/test/apm-client/http-apm-client/container-info.test.js +++ b/test/apm-client/http-apm-client/container-info.test.js @@ -265,6 +265,48 @@ tape.test('basics', (t) => { }, ); + // https://github.com/elastic/apm/issues/888 Fewer than ten digits observed + // for the suffix in ECS Fargate in the wild. + t.deepEqual( + parse( + '1:name=systemd:/ecs/46686c7c701cdfdf2549f88f7b9575e9/46686c7c701cdfdf2549f88f7b9575e9-123456789', + // ^^^^^^^^^ + ), + { + entries: [ + { + id: '1', + groups: 'name=systemd', + path: '/ecs/46686c7c701cdfdf2549f88f7b9575e9/46686c7c701cdfdf2549f88f7b9575e9-123456789', + controllers: ['name=systemd'], + taskId: '46686c7c701cdfdf2549f88f7b9575e9', + }, + ], + containerId: + '34dc0b5e626f2c5c4c5170e34b10e7654ce36f0fcd532739f4445baabea03376', + taskId: '46686c7c701cdfdf2549f88f7b9575e9', + }, + ); + t.deepEqual( + parse( + '1:name=systemd:/ecs/46686c7c701cdfdf2549f88f7b9575e9/46686c7c701cdfdf2549f88f7b9575e9-1', + ), + { + entries: [ + { + id: '1', + groups: 'name=systemd', + path: '/ecs/46686c7c701cdfdf2549f88f7b9575e9/46686c7c701cdfdf2549f88f7b9575e9-1', + controllers: ['name=systemd'], + taskId: '46686c7c701cdfdf2549f88f7b9575e9', + }, + ], + containerId: + '34dc0b5e626f2c5c4c5170e34b10e7654ce36f0fcd532739f4445baabea03376', + taskId: '46686c7c701cdfdf2549f88f7b9575e9', + }, + ); + t.deepEqual( parse(` 12:devices:/user.slice From 3cf4bfed4f32fa9c393f1bd955ba9649c7614b62 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 16:15:40 -0700 Subject: [PATCH 118/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to aad4cd4 (#4201) Co-authored-by: elastic-renovate-prod[bot] <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index ae3d5cc0dd..0b64680bf2 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:e11c6912723c5a0ceeaeb2353329606270292e20c280a0a28d25e8d35474475f +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:aad4cd4e5f6d849691748c6933761889db1a20a57231613b98bbff61fa7723ab ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 31b48c5e9fd59f1c286b3009ce5c7dd491a16a0e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 16:17:51 -0700 Subject: [PATCH 119/396] chore(deps-dev): bump eslint from 9.9.0 to 9.9.1 in the eslint group (#4203) --- package-lock.json | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index d3d6b609e5..d9c54ce66b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4328,9 +4328,9 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.1.tgz", - "integrity": "sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", "dev": true, "dependencies": { "@eslint/object-schema": "^2.1.4", @@ -4399,9 +4399,9 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.0.tgz", - "integrity": "sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==", + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.1.tgz", + "integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8911,16 +8911,16 @@ } }, "node_modules/eslint": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.0.tgz", - "integrity": "sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==", + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.1.tgz", + "integrity": "sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.11.0", - "@eslint/config-array": "^0.17.1", + "@eslint/config-array": "^0.18.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.9.0", + "@eslint/js": "9.9.1", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -19534,9 +19534,9 @@ "dev": true }, "@eslint/config-array": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.1.tgz", - "integrity": "sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", "dev": true, "requires": { "@eslint/object-schema": "^2.1.4", @@ -19588,9 +19588,9 @@ } }, "@eslint/js": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.0.tgz", - "integrity": "sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==", + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.1.tgz", + "integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==", "dev": true }, "@eslint/object-schema": { @@ -23301,16 +23301,16 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.0.tgz", - "integrity": "sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==", + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.1.tgz", + "integrity": "sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.11.0", - "@eslint/config-array": "^0.17.1", + "@eslint/config-array": "^0.18.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.9.0", + "@eslint/js": "9.9.1", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", From b352000df29b27ec0116099cdba81a0a95fe6a09 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 16:19:31 -0700 Subject: [PATCH 120/396] chore(deps-dev): bump wait-on from 7.2.0 to 8.0.0 (#4205) --- package-lock.json | 58 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/package-lock.json b/package-lock.json index d9c54ce66b..800e65fba6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -128,7 +128,7 @@ "typescript": "^5.0.2", "undici": "^6.2.1", "vasync": "^2.2.0", - "wait-on": "^7.0.1", + "wait-on": "^8.0.0", "ws": "^7.2.1" }, "engines": { @@ -5459,9 +5459,9 @@ } }, "node_modules/@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", "dev": true, "dependencies": { "@hapi/hoek": "^9.0.0" @@ -11449,14 +11449,14 @@ } }, "node_modules/joi": { - "version": "17.11.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz", - "integrity": "sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==", + "version": "17.13.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", + "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", "dev": true, "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", "@sideway/formula": "^3.0.1", "@sideway/pinpoint": "^2.0.0" } @@ -16027,13 +16027,13 @@ } }, "node_modules/wait-on": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.2.0.tgz", - "integrity": "sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.0.tgz", + "integrity": "sha512-fNE5SXinLr2Bt7cJvjvLg2PcXfqznlqRvtE3f8AqYdRZ9BhE+XpsCp1mwQbRoO7s1q7uhAuCw0Ro3mG/KdZjEw==", "dev": true, "dependencies": { - "axios": "^1.6.1", - "joi": "^17.11.0", + "axios": "^1.7.4", + "joi": "^17.13.3", "lodash": "^4.17.21", "minimist": "^1.2.8", "rxjs": "^7.8.1" @@ -20572,9 +20572,9 @@ "dev": true }, "@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", "dev": true, "requires": { "@hapi/hoek": "^9.0.0" @@ -25165,14 +25165,14 @@ "dev": true }, "joi": { - "version": "17.11.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz", - "integrity": "sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==", + "version": "17.13.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", + "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", "dev": true, "requires": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", "@sideway/formula": "^3.0.1", "@sideway/pinpoint": "^2.0.0" } @@ -28768,13 +28768,13 @@ "dev": true }, "wait-on": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.2.0.tgz", - "integrity": "sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.0.tgz", + "integrity": "sha512-fNE5SXinLr2Bt7cJvjvLg2PcXfqznlqRvtE3f8AqYdRZ9BhE+XpsCp1mwQbRoO7s1q7uhAuCw0Ro3mG/KdZjEw==", "dev": true, "requires": { - "axios": "^1.6.1", - "joi": "^17.11.0", + "axios": "^1.7.4", + "joi": "^17.13.3", "lodash": "^4.17.21", "minimist": "^1.2.8", "rxjs": "^7.8.1" diff --git a/package.json b/package.json index 7f3e36b28b..c7ce7441e7 100644 --- a/package.json +++ b/package.json @@ -207,7 +207,7 @@ "typescript": "^5.0.2", "undici": "^6.2.1", "vasync": "^2.2.0", - "wait-on": "^7.0.1", + "wait-on": "^8.0.0", "ws": "^7.2.1" } } From 26443b0a5265add0e9cb87f8e0dbe2441400e4fe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 16:22:53 -0700 Subject: [PATCH 121/396] chore(deps-dev): bump @babel/cli in the babel group (#4209) Updates `@babel/cli` from 7.24.1 to 7.25.6 --- package-lock.json | 92 +++++++++++++++++++++++------------------------ 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/package-lock.json b/package-lock.json index 800e65fba6..f55f457be2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2444,13 +2444,13 @@ } }, "node_modules/@babel/cli": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.24.1.tgz", - "integrity": "sha512-HbmrtxyFUr34LwAlV9jS+sSIjUp4FpdtIMGwgufY3AsxrIfsh/HxlMTywsONAZsU0RMYbZtbZFpUCrSGs7o0EA==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.25.6.tgz", + "integrity": "sha512-Z+Doemr4VtvSD2SNHTrkiFZ1LX+JI6tyRXAAOb4N9khIuPyoEPmTPJarPm8ljJV1D6bnMQjyHMWTT9NeKbQuXA==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", - "commander": "^4.0.1", + "commander": "^6.2.0", "convert-source-map": "^2.0.0", "fs-readdir-recursive": "^1.1.0", "glob": "^7.2.0", @@ -2466,7 +2466,7 @@ }, "optionalDependencies": { "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", - "chokidar": "^3.4.0" + "chokidar": "^3.6.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -6616,9 +6616,9 @@ } }, "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "optional": true, "dependencies": { @@ -7268,13 +7268,16 @@ } }, "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, "optional": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/binary-search": { @@ -7708,16 +7711,10 @@ } }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], "optional": true, "dependencies": { "anymatch": "~3.1.2", @@ -7731,6 +7728,9 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } @@ -7893,9 +7893,9 @@ } }, "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true, "engines": { "node": ">= 6" @@ -10127,9 +10127,9 @@ "dev": true }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, "optional": true, @@ -18215,15 +18215,15 @@ } }, "@babel/cli": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.24.1.tgz", - "integrity": "sha512-HbmrtxyFUr34LwAlV9jS+sSIjUp4FpdtIMGwgufY3AsxrIfsh/HxlMTywsONAZsU0RMYbZtbZFpUCrSGs7o0EA==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.25.6.tgz", + "integrity": "sha512-Z+Doemr4VtvSD2SNHTrkiFZ1LX+JI6tyRXAAOb4N9khIuPyoEPmTPJarPm8ljJV1D6bnMQjyHMWTT9NeKbQuXA==", "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.25", "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", - "chokidar": "^3.4.0", - "commander": "^4.0.1", + "chokidar": "^3.6.0", + "commander": "^6.2.0", "convert-source-map": "^2.0.0", "fs-readdir-recursive": "^1.1.0", "glob": "^7.2.0", @@ -21542,9 +21542,9 @@ } }, "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "optional": true, "requires": { @@ -22040,9 +22040,9 @@ "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==" }, "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, "optional": true }, @@ -22367,9 +22367,9 @@ } }, "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, "optional": true, "requires": { @@ -22512,9 +22512,9 @@ } }, "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true }, "concat-map": { @@ -24215,9 +24215,9 @@ "dev": true }, "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "optional": true }, From a59aecaabd95e70995140ac28223fab587483e06 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 16:23:30 -0700 Subject: [PATCH 122/396] chore(deps-dev): bump @types/node from 22.4.0 to 22.5.2 (#4211) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index f55f457be2..9e2366fec9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6323,9 +6323,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.4.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.4.0.tgz", - "integrity": "sha512-49AbMDwYUz7EXxKU/r7mXOsxwFr4BYbvB7tWYxVuLdb2ibd30ijjXINSMAHiEEZk5PCRBmW1gUeisn2VMKt3cQ==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.2.tgz", + "integrity": "sha512-acJsPTEqYqulZS/Yp/S3GgeE6GZ0qYODUR8aVr/DkhHQ8l9nd4j5x1/ZJy9/gHrRlFMqkO6i0I3E27Alu4jjPg==", "dev": true, "dependencies": { "undici-types": "~6.19.2" @@ -21306,9 +21306,9 @@ "dev": true }, "@types/node": { - "version": "22.4.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.4.0.tgz", - "integrity": "sha512-49AbMDwYUz7EXxKU/r7mXOsxwFr4BYbvB7tWYxVuLdb2ibd30ijjXINSMAHiEEZk5PCRBmW1gUeisn2VMKt3cQ==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.2.tgz", + "integrity": "sha512-acJsPTEqYqulZS/Yp/S3GgeE6GZ0qYODUR8aVr/DkhHQ8l9nd4j5x1/ZJy9/gHrRlFMqkO6i0I3E27Alu4jjPg==", "dev": true, "requires": { "undici-types": "~6.19.2" From f2e378b5b16276c6bce34bb5225b6d7cd2710d21 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 16:32:26 -0700 Subject: [PATCH 123/396] chore(deps): bump actions/attest-build-provenance (#4202) Updates `actions/attest-build-provenance` from 1.4.1 to 1.4.2 --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a971f97070..cdf60814bc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -44,7 +44,7 @@ jobs: - run: make -C .ci dist - name: Attest Lambda layer zip - uses: actions/attest-build-provenance@310b0a4a3b0b78ef57ecda988ee04b132db73ef8 # v1.4.1 + uses: actions/attest-build-provenance@6149ea5740be74af77f260b9db67e633f6b0a9a1 # v1.4.2 with: subject-path: "${{ github.workspace }}/build/aws/elastic-apm-node-lambda-layer-*.zip" @@ -75,7 +75,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image - uses: actions/attest-build-provenance@310b0a4a3b0b78ef57ecda988ee04b132db73ef8 # v1.4.1 + uses: actions/attest-build-provenance@6149ea5740be74af77f260b9db67e633f6b0a9a1 # v1.4.2 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push.outputs.digest }} @@ -109,7 +109,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image (wolfi) - uses: actions/attest-build-provenance@310b0a4a3b0b78ef57ecda988ee04b132db73ef8 # v1.4.1 + uses: actions/attest-build-provenance@6149ea5740be74af77f260b9db67e633f6b0a9a1 # v1.4.2 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push-wolfi.outputs.digest }} From 73a160a56978bf027a7a86b07485ffc628d72ba3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Sep 2024 14:07:09 +0200 Subject: [PATCH 124/396] chore(deps-dev): bump undici from 6.19.7 to 6.19.8 (#4206) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9e2366fec9..df85ff3faa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15789,9 +15789,9 @@ } }, "node_modules/undici": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.7.tgz", - "integrity": "sha512-HR3W/bMGPSr90i8AAp2C4DM3wChFdJPLrWYpIS++LxS8K+W535qftjt+4MyjNYHeWabMj1nvtmLIi7l++iq91A==", + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz", + "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==", "dev": true, "engines": { "node": ">=18.17" @@ -28585,9 +28585,9 @@ "dev": true }, "undici": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.7.tgz", - "integrity": "sha512-HR3W/bMGPSr90i8AAp2C4DM3wChFdJPLrWYpIS++LxS8K+W535qftjt+4MyjNYHeWabMj1nvtmLIi7l++iq91A==", + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz", + "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==", "dev": true }, "undici-types": { From ebd938011ef891364fc6f01cff34a61d305f79cb Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Thu, 5 Sep 2024 14:16:06 -0700 Subject: [PATCH 125/396] test: fix two issues running tests locally (#4220) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two issues with testing locally on my dev laptop: 1. `docker-compose` (i.e. Docker Compose v1) is dead and, in some versions, now gone. Time for `docker compose ...` (i.e. v2): https://docs.docker.com/compose/migrate/ ``` % npm test > elastic-apm-node@4.7.3 test > ./test/script/run_tests.sh ./test/script/run_tests.sh: line 93: docker-compose: command not found ``` 2. The mysql image has no layer for ARM, i.e. that natively runs on Apple Silicon. ``` % npm test > elastic-apm-node@4.7.3 test > ./test/script/run_tests.sh [+] Running 0/1 â ¼ mysql Pulling 1.4s no matching manifest for linux/arm64/v8 in the manifest list entries ``` --- TESTING.md | 2 +- test/docker-compose.yml | 4 ++-- test/script/docker/run_tests.sh | 4 ++-- test/script/run_tests.sh | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/TESTING.md b/TESTING.md index 81343d6cc1..1ddd667904 100644 --- a/TESTING.md +++ b/TESTING.md @@ -28,7 +28,7 @@ npm run lint # or 'make check' if you are a Makefile kind of pe npm test # run test services and tests in Docker -docker-compose -f test/docker-compose.yml config --services # list test services +docker compose -f test/docker-compose.yml config --services # list test services npm run docker:start # start all test services npm run docker:start redis # start one or more test services npm run docker:stop # stop all test services diff --git a/test/docker-compose.yml b/test/docker-compose.yml index 23ccba1ae4..1fb739bb9c 100644 --- a/test/docker-compose.yml +++ b/test/docker-compose.yml @@ -1,5 +1,3 @@ -version: '2.1' - services: postgres: user: postgres @@ -51,6 +49,8 @@ services: mysql: image: mysql:5.7 + # No ARM64 image layer. See https://stackoverflow.com/a/65592942 + platform: linux/x86_64 environment: MYSQL_ALLOW_EMPTY_PASSWORD: 1 ports: diff --git a/test/script/docker/run_tests.sh b/test/script/docker/run_tests.sh index 059aad8069..754fdd8576 100755 --- a/test/script/docker/run_tests.sh +++ b/test/script/docker/run_tests.sh @@ -18,7 +18,7 @@ else CMD='npm test' fi -NODE_VERSION=${1} docker-compose --no-ansi --log-level ERROR -f ./test/docker-compose.yml -f ./test/docker-compose.ci.yml run \ +NODE_VERSION=${1} docker compose --no-ansi --log-level ERROR -f ./test/docker-compose.yml -f ./test/docker-compose.ci.yml run \ -e NODE_VERSION=${NODE_VERSION} \ -e TAV=${TAV_MODULES} \ -e CI=true \ @@ -33,4 +33,4 @@ NODE_VERSION=${1} docker-compose --no-ansi --log-level ERROR -f ./test/docker-co npm --version ${CMD}" -NODE_VERSION=${1} docker-compose --no-ansi --log-level ERROR -f ./test/docker-compose.yml -f ./test/docker-compose.ci.yml down -v +NODE_VERSION=${1} docker compose --no-ansi --log-level ERROR -f ./test/docker-compose.yml -f ./test/docker-compose.ci.yml down -v diff --git a/test/script/run_tests.sh b/test/script/run_tests.sh index 42fa516f26..494e248ee4 100755 --- a/test/script/run_tests.sh +++ b/test/script/run_tests.sh @@ -90,7 +90,7 @@ then else # No arguments was given. Let's just assume that the user wants to # spin up all dependencies inside Docker and run the tests locally - services=$(docker-compose -f ./test/docker-compose.yml config --services) + services=$(docker compose -f ./test/docker-compose.yml config --services) fi service_arr=( $services ) @@ -106,11 +106,11 @@ then elif [[ $healthy -lt $expected_healthy || $containers -lt $expected_containers ]] then finish () { - docker-compose -f ./test/docker-compose.yml down + docker compose -f ./test/docker-compose.yml down } trap finish EXIT - docker-compose -f ./test/docker-compose.yml up -d $services + docker compose -f ./test/docker-compose.yml up -d $services wait_for_healthy fi From 77d5c288110c5a642dbb1f8c7632e64fd9205a9e Mon Sep 17 00:00:00 2001 From: David Luna Date: Fri, 6 Sep 2024 23:13:41 +0200 Subject: [PATCH 126/396] feat: add support for `tedious` v19 (#4219) --- .tav.yml | 6 ++++++ CHANGELOG.asciidoc | 2 ++ lib/instrumentation/modules/tedious.js | 13 ++++++++++++- package-lock.json | 16 ++++++++-------- package.json | 2 +- test/instrumentation/modules/tedious.test.js | 4 +++- 6 files changed, 32 insertions(+), 11 deletions(-) diff --git a/.tav.yml b/.tav.yml index 15f63f7446..8446d0c727 100644 --- a/.tav.yml +++ b/.tav.yml @@ -346,6 +346,12 @@ tedious: mode: latest-majors node: '18.x || >=20' commands: node test/instrumentation/modules/tedious.test.js + # Tedious v19 advertise a min-supported Node.js version of 18.17.0. + - versions: + include: '>=19 <20' + mode: latest-majors + node: '>=18.17' + commands: node test/instrumentation/modules/tedious.test.js cassandra-driver: # 3.1.0 is broken diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index b149852a95..2a94a38652 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -45,6 +45,8 @@ See the <> guide. AWS ECS Fargate, where the pattern has been observed to sometimes differ from the documented pattern. (https://github.com/elastic/apm/issues/888[APM spec issue #888]) +- Add support for `tedious` v19. ({issues}4218[#4218]) + [float] ===== Bug fixes diff --git a/lib/instrumentation/modules/tedious.js b/lib/instrumentation/modules/tedious.js index 8fc23153e8..a5f6a46958 100644 --- a/lib/instrumentation/modules/tedious.js +++ b/lib/instrumentation/modules/tedious.js @@ -14,7 +14,18 @@ var { getDBDestination } = require('../context'); module.exports = function (tedious, agent, { version, enabled }) { if (!enabled) return tedious; - if (version === '4.0.0' || !semver.satisfies(version, '>=1.9.0 <19')) { + if ( + semver.satisfies(version, '>=19') && + !semver.satisfies(process.version, '>=18.17') + ) { + agent.logger.debug( + 'tedious version %s not supported for node %s - aborting...', + version, + process.version, + ); + return tedious; + } + if (version === '4.0.0' || !semver.satisfies(version, '>=1.9.0 <20')) { agent.logger.debug( 'tedious version %s not supported - aborting...', version, diff --git a/package-lock.json b/package-lock.json index df85ff3faa..ce43a21efc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -121,7 +121,7 @@ "restify": "^11.0.0", "rimraf": "^3.0.2", "tape": "^5.0.0", - "tedious": "^18.1.0", + "tedious": "^19.0.0", "test-all-versions": "^6.1.0", "thunky": "^1.1.0", "tree-kill": "^1.2.2", @@ -15370,9 +15370,9 @@ } }, "node_modules/tedious": { - "version": "18.6.2", - "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.6.2.tgz", - "integrity": "sha512-g7jC56o3MzLkE3lHkaFe2ZdOVFBahq5bsB60/M4NYUbocw/MCrS89IOEQUFr+ba6pb8ZHczZ/VqCyYeYq0xBAg==", + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/tedious/-/tedious-19.0.0.tgz", + "integrity": "sha512-nmxNBAT72mMVCIYp0Ts0Zzd5+LBQjoXlqigCrIjSo2OERSi04vr3EHq3qJxv/zgrSkg7si03SoIIfekTAadA7w==", "dev": true, "dependencies": { "@azure/core-auth": "^1.7.2", @@ -15387,7 +15387,7 @@ "sprintf-js": "^1.1.3" }, "engines": { - "node": ">=18" + "node": ">=18.17" } }, "node_modules/tedious/node_modules/iconv-lite": { @@ -28248,9 +28248,9 @@ "dev": true }, "tedious": { - "version": "18.6.2", - "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.6.2.tgz", - "integrity": "sha512-g7jC56o3MzLkE3lHkaFe2ZdOVFBahq5bsB60/M4NYUbocw/MCrS89IOEQUFr+ba6pb8ZHczZ/VqCyYeYq0xBAg==", + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/tedious/-/tedious-19.0.0.tgz", + "integrity": "sha512-nmxNBAT72mMVCIYp0Ts0Zzd5+LBQjoXlqigCrIjSo2OERSi04vr3EHq3qJxv/zgrSkg7si03SoIIfekTAadA7w==", "dev": true, "requires": { "@azure/core-auth": "^1.7.2", diff --git a/package.json b/package.json index c7ce7441e7..117382893d 100644 --- a/package.json +++ b/package.json @@ -200,7 +200,7 @@ "restify": "^11.0.0", "rimraf": "^3.0.2", "tape": "^5.0.0", - "tedious": "^18.1.0", + "tedious": "^19.0.0", "test-all-versions": "^6.1.0", "thunky": "^1.1.0", "tree-kill": "^1.2.2", diff --git a/test/instrumentation/modules/tedious.test.js b/test/instrumentation/modules/tedious.test.js index 174d0ba838..6f3499076c 100644 --- a/test/instrumentation/modules/tedious.test.js +++ b/test/instrumentation/modules/tedious.test.js @@ -28,7 +28,9 @@ if ( // tedious@11 and later depend on @azure/identity v1 or v2. As of // @azure/core-rest-pipeline@1.15.0 (a dep of @azure/identity), support for // Node.js <16 has been broken. - (semver.gte(tediousVer, '11.0.0') && semver.lt(process.version, '16.0.0')) + (semver.gte(tediousVer, '11.0.0') && semver.lt(process.version, '16.0.0')) || + // tedious@19 drops support for Node.js Date: Mon, 9 Sep 2024 10:44:55 +0200 Subject: [PATCH 127/396] chore(deps-dev): bump mongodb from 6.8.0 to 6.8.1 (#4223) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index ce43a21efc..7e6a645d3a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12433,9 +12433,9 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "node_modules/mongodb": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.8.0.tgz", - "integrity": "sha512-HGQ9NWDle5WvwMnrvUxsFYPd3JEbqD3RgABHBQRuoCEND0qzhsd0iH5ypHsf1eJ+sXmvmyKpP+FLOKY8Il7jMw==", + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.8.1.tgz", + "integrity": "sha512-qsS+gl5EJb+VzJqUjXSZ5Y5rbuM/GZlZUEJ2OIVYP10L9rO9DQ0DGp+ceTzsmoADh6QYMWd9MSdG9IxRyYUkEA==", "dev": true, "dependencies": { "@mongodb-js/saslprep": "^1.1.5", @@ -25960,9 +25960,9 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "mongodb": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.8.0.tgz", - "integrity": "sha512-HGQ9NWDle5WvwMnrvUxsFYPd3JEbqD3RgABHBQRuoCEND0qzhsd0iH5ypHsf1eJ+sXmvmyKpP+FLOKY8Il7jMw==", + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.8.1.tgz", + "integrity": "sha512-qsS+gl5EJb+VzJqUjXSZ5Y5rbuM/GZlZUEJ2OIVYP10L9rO9DQ0DGp+ceTzsmoADh6QYMWd9MSdG9IxRyYUkEA==", "dev": true, "requires": { "@mongodb-js/saslprep": "^1.1.5", From 5f92444456d851bf2bff14c3b15aaf6c2a272289 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 10:51:36 +0200 Subject: [PATCH 128/396] chore(deps): bump actions/attest-build-provenance (#4221) --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cdf60814bc..f9e022354b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -44,7 +44,7 @@ jobs: - run: make -C .ci dist - name: Attest Lambda layer zip - uses: actions/attest-build-provenance@6149ea5740be74af77f260b9db67e633f6b0a9a1 # v1.4.2 + uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # v1.4.3 with: subject-path: "${{ github.workspace }}/build/aws/elastic-apm-node-lambda-layer-*.zip" @@ -75,7 +75,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image - uses: actions/attest-build-provenance@6149ea5740be74af77f260b9db67e633f6b0a9a1 # v1.4.2 + uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # v1.4.3 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push.outputs.digest }} @@ -109,7 +109,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image (wolfi) - uses: actions/attest-build-provenance@6149ea5740be74af77f260b9db67e633f6b0a9a1 # v1.4.2 + uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # v1.4.3 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push-wolfi.outputs.digest }} From e4838b9ddb3d568953497637543b2b1f74618bd5 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Mon, 9 Sep 2024 12:53:53 -0700 Subject: [PATCH 129/396] chore(deps): update otel deps to latest (#4217) There was a recent 1.26.0/0.53.0 OTel release. Also, fix opentelemetry-metrics tests for fix in otel/sdk-metrics package to use *inclusive* upper bounds in histograms. Refs: https://github.com/open-telemetry/opentelemetry-js/pull/4935 --- package-lock.json | 76 ++++++------- test/opentelemetry-metrics/fixtures.test.js | 6 +- .../fixtures/package-lock.json | 104 ++++++++---------- 3 files changed, 87 insertions(+), 99 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7e6a645d3a..90578f793a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5271,11 +5271,11 @@ } }, "node_modules/@opentelemetry/core": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.1.tgz", - "integrity": "sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.26.0.tgz", + "integrity": "sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==", "dependencies": { - "@opentelemetry/semantic-conventions": "1.25.1" + "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { "node": ">=14" @@ -5285,12 +5285,12 @@ } }, "node_modules/@opentelemetry/resources": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.25.1.tgz", - "integrity": "sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.26.0.tgz", + "integrity": "sha512-CPNYchBE7MBecCSVy0HKpUISEeJOniWqcHaAHpmasZ3j9o6V3AyBzhRc90jdmemq0HOxDr6ylhUbDhBqqPpeNw==", "dependencies": { - "@opentelemetry/core": "1.25.1", - "@opentelemetry/semantic-conventions": "1.25.1" + "@opentelemetry/core": "1.26.0", + "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { "node": ">=14" @@ -5300,13 +5300,12 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.1.tgz", - "integrity": "sha512-9Mb7q5ioFL4E4dDrc4wC/A3NTHDat44v4I3p2pLPSxRvqUbDIQyMVr9uK+EU69+HWhlET1VaSrRzwdckWqY15Q==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.26.0.tgz", + "integrity": "sha512-0SvDXmou/JjzSDOjUmetAAvcKQW6ZrvosU0rkbDGpXvvZN+pQF6JbK/Kd4hNdK4q/22yeruqvukXEJyySTzyTQ==", "dependencies": { - "@opentelemetry/core": "1.25.1", - "@opentelemetry/resources": "1.25.1", - "lodash.merge": "^4.6.2" + "@opentelemetry/core": "1.26.0", + "@opentelemetry/resources": "1.26.0" }, "engines": { "node": ">=14" @@ -5316,9 +5315,9 @@ } }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz", - "integrity": "sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", "engines": { "node": ">=14" } @@ -12024,7 +12023,8 @@ "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true }, "node_modules/lodash.once": { "version": "4.1.1", @@ -20429,36 +20429,35 @@ "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" }, "@opentelemetry/core": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.1.tgz", - "integrity": "sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.26.0.tgz", + "integrity": "sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==", "requires": { - "@opentelemetry/semantic-conventions": "1.25.1" + "@opentelemetry/semantic-conventions": "1.27.0" } }, "@opentelemetry/resources": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.25.1.tgz", - "integrity": "sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.26.0.tgz", + "integrity": "sha512-CPNYchBE7MBecCSVy0HKpUISEeJOniWqcHaAHpmasZ3j9o6V3AyBzhRc90jdmemq0HOxDr6ylhUbDhBqqPpeNw==", "requires": { - "@opentelemetry/core": "1.25.1", - "@opentelemetry/semantic-conventions": "1.25.1" + "@opentelemetry/core": "1.26.0", + "@opentelemetry/semantic-conventions": "1.27.0" } }, "@opentelemetry/sdk-metrics": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.1.tgz", - "integrity": "sha512-9Mb7q5ioFL4E4dDrc4wC/A3NTHDat44v4I3p2pLPSxRvqUbDIQyMVr9uK+EU69+HWhlET1VaSrRzwdckWqY15Q==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.26.0.tgz", + "integrity": "sha512-0SvDXmou/JjzSDOjUmetAAvcKQW6ZrvosU0rkbDGpXvvZN+pQF6JbK/Kd4hNdK4q/22yeruqvukXEJyySTzyTQ==", "requires": { - "@opentelemetry/core": "1.25.1", - "@opentelemetry/resources": "1.25.1", - "lodash.merge": "^4.6.2" + "@opentelemetry/core": "1.26.0", + "@opentelemetry/resources": "1.26.0" } }, "@opentelemetry/semantic-conventions": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz", - "integrity": "sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==" + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==" }, "@pkgr/core": { "version": "0.1.1", @@ -25646,7 +25645,8 @@ "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true }, "lodash.once": { "version": "4.1.1", diff --git a/test/opentelemetry-metrics/fixtures.test.js b/test/opentelemetry-metrics/fixtures.test.js index 5cfd8b9633..852c287812 100644 --- a/test/opentelemetry-metrics/fixtures.test.js +++ b/test/opentelemetry-metrics/fixtures.test.js @@ -112,13 +112,13 @@ async function checkEventsHaveTestMetrics(t, events, extraMetricNames = []) { // A histogram that we expect to have the APM agent default buckets. m = event.metricset.samples.test_histogram_defbuckets; t.equal(m.type, 'histogram', 'test_histogram_defbuckets.type'); - t.equal(m.counts.length, 3, 'test_histogram_defbuckets.counts'); + t.equal(m.counts.length, 2, 'test_histogram_defbuckets.counts'); // The test file recorded values of 2, 3, and 4. The expected converted values // are the midpoints between the default bucket boundaries. For example, // 3 is between bucket boundaries (2.82843, 4], whose midpoint is 3.414215. t.deepEqual( m.values, - [2.414215, 3.414215, 4.828425], + [1.7071049999999999, 3.414215], 'test_histogram_defbuckets.values', ); } @@ -141,7 +141,7 @@ async function checkEventsHaveTestMetrics(t, events, extraMetricNames = []) { // buckets in `[0, 1, 2, 3, 4, 5]`. After conversion to APM server // intake format, the values are the midpoints of those buckets. t.equal(m.counts.length, 3, 'test_histogram_confbuckets.counts'); - t.deepEqual(m.values, [2.5, 3.5, 4.5], 'test_histogram_confbuckets.values'); + t.deepEqual(m.values, [1.5, 2.5, 3.5], 'test_histogram_confbuckets.values'); } } diff --git a/test/opentelemetry-metrics/fixtures/package-lock.json b/test/opentelemetry-metrics/fixtures/package-lock.json index 2e1eda8790..55a609f244 100644 --- a/test/opentelemetry-metrics/fixtures/package-lock.json +++ b/test/opentelemetry-metrics/fixtures/package-lock.json @@ -22,11 +22,11 @@ } }, "node_modules/@opentelemetry/core": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.1.tgz", - "integrity": "sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.26.0.tgz", + "integrity": "sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==", "dependencies": { - "@opentelemetry/semantic-conventions": "1.25.1" + "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { "node": ">=14" @@ -36,13 +36,13 @@ } }, "node_modules/@opentelemetry/exporter-prometheus": { - "version": "0.52.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.52.1.tgz", - "integrity": "sha512-hwK0QnjtqAxGpQAXMNUY+kTT5CnHyz1I0lBA8SFySvaFtExZm7yQg/Ua/i+RBqgun7WkUbkUVJzEi3lKpJ7WdA==", + "version": "0.53.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.53.0.tgz", + "integrity": "sha512-STP2FZQOykUByPnibbouTirNxnG69Ph8TiMXDsaZuWxGDJ7wsYsRQydJkAVpvG+p0hTMP/hIfZp9zT/1iHpIkQ==", "dependencies": { - "@opentelemetry/core": "1.25.1", - "@opentelemetry/resources": "1.25.1", - "@opentelemetry/sdk-metrics": "1.25.1" + "@opentelemetry/core": "1.26.0", + "@opentelemetry/resources": "1.26.0", + "@opentelemetry/sdk-metrics": "1.26.0" }, "engines": { "node": ">=14" @@ -52,12 +52,12 @@ } }, "node_modules/@opentelemetry/resources": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.25.1.tgz", - "integrity": "sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.26.0.tgz", + "integrity": "sha512-CPNYchBE7MBecCSVy0HKpUISEeJOniWqcHaAHpmasZ3j9o6V3AyBzhRc90jdmemq0HOxDr6ylhUbDhBqqPpeNw==", "dependencies": { - "@opentelemetry/core": "1.25.1", - "@opentelemetry/semantic-conventions": "1.25.1" + "@opentelemetry/core": "1.26.0", + "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { "node": ">=14" @@ -67,13 +67,12 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.1.tgz", - "integrity": "sha512-9Mb7q5ioFL4E4dDrc4wC/A3NTHDat44v4I3p2pLPSxRvqUbDIQyMVr9uK+EU69+HWhlET1VaSrRzwdckWqY15Q==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.26.0.tgz", + "integrity": "sha512-0SvDXmou/JjzSDOjUmetAAvcKQW6ZrvosU0rkbDGpXvvZN+pQF6JbK/Kd4hNdK4q/22yeruqvukXEJyySTzyTQ==", "dependencies": { - "@opentelemetry/core": "1.25.1", - "@opentelemetry/resources": "1.25.1", - "lodash.merge": "^4.6.2" + "@opentelemetry/core": "1.26.0", + "@opentelemetry/resources": "1.26.0" }, "engines": { "node": ">=14" @@ -83,17 +82,12 @@ } }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz", - "integrity": "sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", "engines": { "node": ">=14" } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" } }, "dependencies": { @@ -103,51 +97,45 @@ "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" }, "@opentelemetry/core": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.1.tgz", - "integrity": "sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.26.0.tgz", + "integrity": "sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==", "requires": { - "@opentelemetry/semantic-conventions": "1.25.1" + "@opentelemetry/semantic-conventions": "1.27.0" } }, "@opentelemetry/exporter-prometheus": { - "version": "0.52.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.52.1.tgz", - "integrity": "sha512-hwK0QnjtqAxGpQAXMNUY+kTT5CnHyz1I0lBA8SFySvaFtExZm7yQg/Ua/i+RBqgun7WkUbkUVJzEi3lKpJ7WdA==", + "version": "0.53.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.53.0.tgz", + "integrity": "sha512-STP2FZQOykUByPnibbouTirNxnG69Ph8TiMXDsaZuWxGDJ7wsYsRQydJkAVpvG+p0hTMP/hIfZp9zT/1iHpIkQ==", "requires": { - "@opentelemetry/core": "1.25.1", - "@opentelemetry/resources": "1.25.1", - "@opentelemetry/sdk-metrics": "1.25.1" + "@opentelemetry/core": "1.26.0", + "@opentelemetry/resources": "1.26.0", + "@opentelemetry/sdk-metrics": "1.26.0" } }, "@opentelemetry/resources": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.25.1.tgz", - "integrity": "sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.26.0.tgz", + "integrity": "sha512-CPNYchBE7MBecCSVy0HKpUISEeJOniWqcHaAHpmasZ3j9o6V3AyBzhRc90jdmemq0HOxDr6ylhUbDhBqqPpeNw==", "requires": { - "@opentelemetry/core": "1.25.1", - "@opentelemetry/semantic-conventions": "1.25.1" + "@opentelemetry/core": "1.26.0", + "@opentelemetry/semantic-conventions": "1.27.0" } }, "@opentelemetry/sdk-metrics": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.1.tgz", - "integrity": "sha512-9Mb7q5ioFL4E4dDrc4wC/A3NTHDat44v4I3p2pLPSxRvqUbDIQyMVr9uK+EU69+HWhlET1VaSrRzwdckWqY15Q==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.26.0.tgz", + "integrity": "sha512-0SvDXmou/JjzSDOjUmetAAvcKQW6ZrvosU0rkbDGpXvvZN+pQF6JbK/Kd4hNdK4q/22yeruqvukXEJyySTzyTQ==", "requires": { - "@opentelemetry/core": "1.25.1", - "@opentelemetry/resources": "1.25.1", - "lodash.merge": "^4.6.2" + "@opentelemetry/core": "1.26.0", + "@opentelemetry/resources": "1.26.0" } }, "@opentelemetry/semantic-conventions": { - "version": "1.25.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz", - "integrity": "sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==" - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==" } } } From 471be8edadb58b8f3c435092f800d57fe0007f7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 11:50:24 +0200 Subject: [PATCH 130/396] chore(deps-dev): bump mysql2 from 3.11.0 to 3.11.3 (#4233) --- package-lock.json | 52 ++++++++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/package-lock.json b/package-lock.json index 90578f793a..ac3b203328 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12172,6 +12172,21 @@ "node": "14 || >=16.14" } }, + "node_modules/lru.min": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.0.tgz", + "integrity": "sha512-86xXMB6DiuKrTqkE/lRL0drlNh568awttBPJ7D66fzDHpy6NC5r3N+Ly/lKCS2zjmeGyvFDx670z0cD0PVBwGA==", + "dev": true, + "engines": { + "bun": ">=1.0.0", + "deno": ">=1.30.0", + "node": ">=8.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wellwelwel" + } + }, "node_modules/make-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", @@ -12595,9 +12610,9 @@ } }, "node_modules/mysql2": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.11.0.tgz", - "integrity": "sha512-J9phbsXGvTOcRVPR95YedzVSxJecpW5A5+cQ57rhHIFXteTP10HCs+VBjS7DHIKfEaI1zQ5tlVrquCd64A6YvA==", + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.11.3.tgz", + "integrity": "sha512-Qpu2ADfbKzyLdwC/5d4W7+5Yz7yBzCU05YWt5npWzACST37wJsB23wgOSo00qi043urkiRwXtEvJc9UnuLX/MQ==", "dev": true, "dependencies": { "aws-ssl-profiles": "^1.1.1", @@ -12605,7 +12620,7 @@ "generate-function": "^2.3.1", "iconv-lite": "^0.6.3", "long": "^5.2.1", - "lru-cache": "^8.0.0", + "lru.min": "^1.0.0", "named-placeholders": "^1.1.3", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2" @@ -12632,15 +12647,6 @@ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", "dev": true }, - "node_modules/mysql2/node_modules/lru-cache": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", - "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", - "dev": true, - "engines": { - "node": ">=16.14" - } - }, "node_modules/mysql2/node_modules/sqlstring": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", @@ -25756,6 +25762,12 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==" }, + "lru.min": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.0.tgz", + "integrity": "sha512-86xXMB6DiuKrTqkE/lRL0drlNh568awttBPJ7D66fzDHpy6NC5r3N+Ly/lKCS2zjmeGyvFDx670z0cD0PVBwGA==", + "dev": true + }, "make-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", @@ -26076,9 +26088,9 @@ } }, "mysql2": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.11.0.tgz", - "integrity": "sha512-J9phbsXGvTOcRVPR95YedzVSxJecpW5A5+cQ57rhHIFXteTP10HCs+VBjS7DHIKfEaI1zQ5tlVrquCd64A6YvA==", + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.11.3.tgz", + "integrity": "sha512-Qpu2ADfbKzyLdwC/5d4W7+5Yz7yBzCU05YWt5npWzACST37wJsB23wgOSo00qi043urkiRwXtEvJc9UnuLX/MQ==", "dev": true, "requires": { "aws-ssl-profiles": "^1.1.1", @@ -26086,7 +26098,7 @@ "generate-function": "^2.3.1", "iconv-lite": "^0.6.3", "long": "^5.2.1", - "lru-cache": "^8.0.0", + "lru.min": "^1.0.0", "named-placeholders": "^1.1.3", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2" @@ -26107,12 +26119,6 @@ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", "dev": true }, - "lru-cache": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", - "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", - "dev": true - }, "sqlstring": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", From 0d4cdfd8a3d42669d64b1b2b11b9054a27fb3118 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 11:52:42 +0200 Subject: [PATCH 131/396] chore(deps-dev): bump express from 4.19.2 to 4.21.0 (#4231) --- package-lock.json | 456 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 375 insertions(+), 81 deletions(-) diff --git a/package-lock.json b/package-lock.json index ac3b203328..12862ddc5c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7372,9 +7372,9 @@ "dev": true }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, "dependencies": { "bytes": "3.1.2", @@ -7385,7 +7385,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -9531,37 +9531,37 @@ } }, "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", + "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -9631,6 +9631,15 @@ "node": ">= 0.8" } }, + "node_modules/express/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/express/node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -9654,9 +9663,9 @@ "dev": true }, "node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "dev": true }, "node_modules/express/node_modules/safe-buffer": { @@ -9679,6 +9688,45 @@ } ] }, + "node_modules/express/node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/express/node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, "node_modules/express/node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -9949,13 +9997,13 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -9975,6 +10023,15 @@ "ms": "2.0.0" } }, + "node_modules/finalhandler/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -12266,10 +12323,13 @@ "dev": true }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge2": { "version": "1.4.1", @@ -13854,12 +13914,12 @@ } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -14754,20 +14814,117 @@ "dev": true }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-static/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/serve-static/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serve-static/node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/serve-static/node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/set-cookie-parser": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", @@ -14849,13 +15006,17 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -22112,9 +22273,9 @@ "dev": true }, "body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, "requires": { "bytes": "3.1.2", @@ -22125,7 +22286,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -23735,37 +23896,37 @@ } }, "express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", + "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "dev": true, "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -23788,6 +23949,12 @@ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true }, + "encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true + }, "http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -23808,9 +23975,9 @@ "dev": true }, "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "dev": true }, "safe-buffer": { @@ -23819,6 +23986,41 @@ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, + "send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, "statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -24083,13 +24285,13 @@ } }, "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -24106,6 +24308,12 @@ "ms": "2.0.0" } }, + "encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -25834,9 +26042,9 @@ "dev": true }, "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", "dev": true }, "merge2": { @@ -27069,12 +27277,12 @@ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" }, "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, "requires": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" } }, "querystring": { @@ -27761,15 +27969,100 @@ "dev": true }, "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, "requires": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + } + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } } }, "set-cookie-parser": { @@ -27838,13 +28131,14 @@ "dev": true }, "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" } }, "simple-lru-cache": { From a11209fec0baf28d30d486cb52c246621a50449b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 11:54:34 +0200 Subject: [PATCH 132/396] chore(deps-dev): bump azure-functions-core-tools (#4230) --- .../fixtures/AJsAzureFnApp/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/package-lock.json b/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/package-lock.json index 0798efaf68..18590b1637 100644 --- a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/package-lock.json +++ b/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/package-lock.json @@ -11,9 +11,9 @@ } }, "node_modules/azure-functions-core-tools": { - "version": "4.0.5907", - "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.5907.tgz", - "integrity": "sha512-QeyBf/9Z3sziPXIU7fGcLgCFhXLo+uO3ILLvbb0Zse46VC5SWWfscbAb023xoUXhWXlf7KXjWwvKgyJpAeG20A==", + "version": "4.0.6280", + "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.6280.tgz", + "integrity": "sha512-DVSgYNnT4POLbj/YV3FKtNdo9KT/M5Dl//slWEmVwZo1y4aJEsUApn6DtkZswut76I3S9eKGC5IaC84j5OGNaA==", "dev": true, "hasInstallScript": true, "hasShrinkwrap": true, @@ -382,9 +382,9 @@ }, "dependencies": { "azure-functions-core-tools": { - "version": "4.0.5907", - "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.5907.tgz", - "integrity": "sha512-QeyBf/9Z3sziPXIU7fGcLgCFhXLo+uO3ILLvbb0Zse46VC5SWWfscbAb023xoUXhWXlf7KXjWwvKgyJpAeG20A==", + "version": "4.0.6280", + "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.6280.tgz", + "integrity": "sha512-DVSgYNnT4POLbj/YV3FKtNdo9KT/M5Dl//slWEmVwZo1y4aJEsUApn6DtkZswut76I3S9eKGC5IaC84j5OGNaA==", "dev": true, "requires": { "chalk": "3.0.0", From aa797ddb2e5b312b52254936966564652121041c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 11:57:11 +0200 Subject: [PATCH 133/396] chore(deps-dev): bump mongodb from 6.8.1 to 6.9.0 (#4229) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 12862ddc5c..4c2fbac0a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12508,9 +12508,9 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "node_modules/mongodb": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.8.1.tgz", - "integrity": "sha512-qsS+gl5EJb+VzJqUjXSZ5Y5rbuM/GZlZUEJ2OIVYP10L9rO9DQ0DGp+ceTzsmoADh6QYMWd9MSdG9IxRyYUkEA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.9.0.tgz", + "integrity": "sha512-UMopBVx1LmEUbW/QE0Hw18u583PEDVQmUmVzzBRH0o/xtE9DBRA5ZYLOjpLIa03i8FXjzvQECJcqoMvCXftTUA==", "dev": true, "dependencies": { "@mongodb-js/saslprep": "^1.1.5", @@ -26180,9 +26180,9 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "mongodb": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.8.1.tgz", - "integrity": "sha512-qsS+gl5EJb+VzJqUjXSZ5Y5rbuM/GZlZUEJ2OIVYP10L9rO9DQ0DGp+ceTzsmoADh6QYMWd9MSdG9IxRyYUkEA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.9.0.tgz", + "integrity": "sha512-UMopBVx1LmEUbW/QE0Hw18u583PEDVQmUmVzzBRH0o/xtE9DBRA5ZYLOjpLIa03i8FXjzvQECJcqoMvCXftTUA==", "dev": true, "requires": { "@mongodb-js/saslprep": "^1.1.5", From 79c0fd96ca02f44ef7c5be026241e4cdf0150c3c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 12:02:27 +0200 Subject: [PATCH 134/396] chore(deps-dev): bump wait-on from 8.0.0 to 8.0.1 (#4228) --- package-lock.json | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4c2fbac0a7..095871ddfa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7119,9 +7119,9 @@ "dev": true }, "node_modules/axios": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", - "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", "dev": true, "dependencies": { "follow-redirects": "^1.15.6", @@ -10087,9 +10087,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "dev": true, "funding": [ { @@ -16194,12 +16194,12 @@ } }, "node_modules/wait-on": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.0.tgz", - "integrity": "sha512-fNE5SXinLr2Bt7cJvjvLg2PcXfqznlqRvtE3f8AqYdRZ9BhE+XpsCp1mwQbRoO7s1q7uhAuCw0Ro3mG/KdZjEw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.1.tgz", + "integrity": "sha512-1wWQOyR2LVVtaqrcIL2+OM+x7bkpmzVROa0Nf6FryXkS+er5Sa1kzFGjzZRqLnHa3n1rACFLeTwUqE1ETL9Mig==", "dev": true, "dependencies": { - "axios": "^1.7.4", + "axios": "^1.7.7", "joi": "^17.13.3", "lodash": "^4.17.21", "minimist": "^1.2.8", @@ -22092,9 +22092,9 @@ "dev": true }, "axios": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", - "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", "dev": true, "requires": { "follow-redirects": "^1.15.6", @@ -24362,9 +24362,9 @@ "dev": true }, "follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "dev": true }, "for-each": { @@ -29068,12 +29068,12 @@ "dev": true }, "wait-on": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.0.tgz", - "integrity": "sha512-fNE5SXinLr2Bt7cJvjvLg2PcXfqznlqRvtE3f8AqYdRZ9BhE+XpsCp1mwQbRoO7s1q7uhAuCw0Ro3mG/KdZjEw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.1.tgz", + "integrity": "sha512-1wWQOyR2LVVtaqrcIL2+OM+x7bkpmzVROa0Nf6FryXkS+er5Sa1kzFGjzZRqLnHa3n1rACFLeTwUqE1ETL9Mig==", "dev": true, "requires": { - "axios": "^1.7.4", + "axios": "^1.7.7", "joi": "^17.13.3", "lodash": "^4.17.21", "minimist": "^1.2.8", From e4993161904be5ebddafccd6999d150c7d3ef6f7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 12:03:45 +0200 Subject: [PATCH 135/396] chore(deps-dev): bump typescript from 5.5.4 to 5.6.2 (#4227) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 095871ddfa..93206486c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15907,9 +15907,9 @@ } }, "node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -28855,9 +28855,9 @@ } }, "typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", "dev": true }, "uglify-js": { From cfc5178257fcdf5ea124f6dc8543525a976919cb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 07:58:21 -0700 Subject: [PATCH 136/396] chore(deps-dev): bump tape from 5.8.1 to 5.9.0 (#4234) --- package-lock.json | 65 +++++++++++++++++++++++++---------------------- 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/package-lock.json b/package-lock.json index 93206486c6..899a366cc4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12477,17 +12477,18 @@ } }, "node_modules/mock-property": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/mock-property/-/mock-property-1.0.3.tgz", - "integrity": "sha512-2emPTb1reeLLYwHxyVx993iYyCHEiRRO+y8NFXFPL5kl5q14sgTK76cXyEKkeKCHeRw35SfdkUJ10Q1KfHuiIQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mock-property/-/mock-property-1.1.0.tgz", + "integrity": "sha512-1/JjbLoGwv87xVsutkX0XJc0M0W4kb40cZl/K41xtTViBOD9JuFPKfyMNTrLJ/ivYAd0aPqu/vduamXO0emTFQ==", "dev": true, "dependencies": { - "define-data-property": "^1.1.1", + "define-data-property": "^1.1.4", "functions-have-names": "^1.2.3", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "hasown": "^2.0.0", - "isarray": "^2.0.5" + "has-property-descriptors": "^1.0.2", + "hasown": "^2.0.2", + "isarray": "^2.0.5", + "object-inspect": "^1.13.2" }, "engines": { "node": ">= 0.4" @@ -12972,9 +12973,12 @@ } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -15437,9 +15441,9 @@ } }, "node_modules/tape": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.8.1.tgz", - "integrity": "sha512-pUzADXBVYm5Jkneh9hfXnirADrzQrDA3vddKbPOc/ZLORj4dFQ6GR1KdGWX0/NvOLDcYkVgeMdw78Uf6BzO3KA==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.9.0.tgz", + "integrity": "sha512-czbGgxSVwRlbB3Ly/aqQrNwrDAzKHDW/kVXegp4hSFmR2c8qqm3hCgZbUy1+3QAQFGhPDG7J56UsV1uNilBFCA==", "dev": true, "dependencies": { "@ljharb/resumer": "^0.1.3", @@ -15457,8 +15461,8 @@ "inherits": "^2.0.4", "is-regex": "^1.1.4", "minimist": "^1.2.8", - "mock-property": "^1.0.3", - "object-inspect": "^1.13.1", + "mock-property": "^1.1.0", + "object-inspect": "^1.13.2", "object-is": "^1.1.6", "object-keys": "^1.1.1", "object.assign": "^4.1.5", @@ -26153,17 +26157,18 @@ } }, "mock-property": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/mock-property/-/mock-property-1.0.3.tgz", - "integrity": "sha512-2emPTb1reeLLYwHxyVx993iYyCHEiRRO+y8NFXFPL5kl5q14sgTK76cXyEKkeKCHeRw35SfdkUJ10Q1KfHuiIQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mock-property/-/mock-property-1.1.0.tgz", + "integrity": "sha512-1/JjbLoGwv87xVsutkX0XJc0M0W4kb40cZl/K41xtTViBOD9JuFPKfyMNTrLJ/ivYAd0aPqu/vduamXO0emTFQ==", "dev": true, "requires": { - "define-data-property": "^1.1.1", + "define-data-property": "^1.1.4", "functions-have-names": "^1.2.3", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "hasown": "^2.0.0", - "isarray": "^2.0.5" + "has-property-descriptors": "^1.0.2", + "hasown": "^2.0.2", + "isarray": "^2.0.5", + "object-inspect": "^1.13.2" }, "dependencies": { "isarray": { @@ -26546,9 +26551,9 @@ } }, "object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==" }, "object-is": { "version": "1.1.6", @@ -28467,9 +28472,9 @@ "dev": true }, "tape": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.8.1.tgz", - "integrity": "sha512-pUzADXBVYm5Jkneh9hfXnirADrzQrDA3vddKbPOc/ZLORj4dFQ6GR1KdGWX0/NvOLDcYkVgeMdw78Uf6BzO3KA==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/tape/-/tape-5.9.0.tgz", + "integrity": "sha512-czbGgxSVwRlbB3Ly/aqQrNwrDAzKHDW/kVXegp4hSFmR2c8qqm3hCgZbUy1+3QAQFGhPDG7J56UsV1uNilBFCA==", "dev": true, "requires": { "@ljharb/resumer": "^0.1.3", @@ -28487,8 +28492,8 @@ "inherits": "^2.0.4", "is-regex": "^1.1.4", "minimist": "^1.2.8", - "mock-property": "^1.0.3", - "object-inspect": "^1.13.1", + "mock-property": "^1.1.0", + "object-inspect": "^1.13.2", "object-is": "^1.1.6", "object-keys": "^1.1.1", "object.assign": "^4.1.5", From b0185f897b1941f6da44f176385ef464e9dbec0c Mon Sep 17 00:00:00 2001 From: David Luna Date: Mon, 16 Sep 2024 18:32:14 +0200 Subject: [PATCH 137/396] feat: add support for koa-router@13 (#4236) --- .tav.yml | 22 +++++-- CHANGELOG.asciidoc | 2 + docs/supported-technologies.asciidoc | 2 +- lib/instrumentation/modules/koa-router.js | 13 +++- package-lock.json | 61 +++++++++---------- package.json | 4 +- .../modules/koa-router/shared.js | 13 ++-- 7 files changed, 72 insertions(+), 45 deletions(-) diff --git a/.tav.yml b/.tav.yml index 8446d0c727..1a0bb7ce1c 100644 --- a/.tav.yml +++ b/.tav.yml @@ -234,14 +234,24 @@ express-queue: commands: node test/instrumentation/modules/express-queue.test.js koa-router: - versions: '>=5.2.0 <13' - peerDependencies: koa@2 - commands: node test/instrumentation/modules/koa-router/old-name.test.js + - versions: '>=5.2.0 <13' + peerDependencies: koa@2 + commands: node test/instrumentation/modules/koa-router/old-name.test.js + # koa-router@13 removed support for NodeJS <18 + - versions: '>=13 <14' + node: '>=18' + peerDependencies: koa@2 + commands: node test/instrumentation/modules/koa-router/old-name.test.js '@koa/router': - versions: '>=8 <13' - peerDependencies: koa@2 - commands: node test/instrumentation/modules/koa-router/new-name.test.js + - versions: '>=8 <13' + peerDependencies: koa@2 + commands: node test/instrumentation/modules/koa-router/new-name.test.js + # @koa/router@13 removed support for NodeJS <18 + - versions: '>=13 <14' + node: '>=18' + peerDependencies: koa@2 + commands: node test/instrumentation/modules/koa-router/new-name.test.js elasticsearch: versions: '>=8.0.0' diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 2a94a38652..d85e4c9087 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -47,6 +47,8 @@ See the <> guide. - Add support for `tedious` v19. ({issues}4218[#4218]) +- Add support for `koa-router` v13. ({pull}4236[#4236]) + [float] ===== Bug fixes diff --git a/docs/supported-technologies.asciidoc b/docs/supported-technologies.asciidoc index 26f4fd0130..bf3a2f04e5 100644 --- a/docs/supported-technologies.asciidoc +++ b/docs/supported-technologies.asciidoc @@ -67,7 +67,7 @@ These are the frameworks that we officially support: | <> | ^4.0.0 | | <> | >=1.0.0 | See also https://www.fastify.io/docs/latest/Reference/LTS/[Fastify's own LTS documentation] | <> | >=17.9.0 <22.0.0 | -| <> via koa-router or @koa/router | >=5.2.0 <13.0.0 | Koa doesn't have a built in router, so we can't support Koa directly since we rely on router information for full support. We currently support the most popular Koa router called https://github.com/koajs/koa-router[koa-router]. +| <> via koa-router or @koa/router | >=5.2.0 <14.0.0 | Koa doesn't have a built in router, so we can't support Koa directly since we rely on router information for full support. We currently support the most popular Koa router called https://github.com/koajs/koa-router[koa-router]. | <> | >=12.0.0 <13.3.0 | (Technical Preview) This instruments Next.js routing to name transactions for incoming HTTP transactions; and reports errors in user pages. It supports the Next.js production server (`next start`) and development server (`next dev`). See the <>. | <> | >=5.2.0 <12.0.0 | |======================================================================= diff --git a/lib/instrumentation/modules/koa-router.js b/lib/instrumentation/modules/koa-router.js index 360fd9fee4..5d71ead9b7 100644 --- a/lib/instrumentation/modules/koa-router.js +++ b/lib/instrumentation/modules/koa-router.js @@ -12,13 +12,24 @@ var shimmer = require('../shimmer'); module.exports = function (Router, agent, { version, enabled }) { if (!enabled) return Router; - if (!semver.satisfies(version, '>=5.2.0 <13')) { + if (!semver.satisfies(version, '>=5.2.0 <14')) { agent.logger.debug( 'koa-router version %s not supported - aborting...', version, ); return Router; } + if ( + semver.satisfies(version, '>=13') && + semver.satisfies(process.version, '<18') + ) { + agent.logger.debug( + 'koa-router version %s not supported for node %s - aborting...', + version, + process.version, + ); + return Router; + } agent.logger.debug('shimming koa-router prototype.match function'); shimmer.wrap(Router.prototype, 'match', function (orig) { diff --git a/package-lock.json b/package-lock.json index 899a366cc4..f848fff056 100644 --- a/package-lock.json +++ b/package-lock.json @@ -60,7 +60,7 @@ "@elastic/elasticsearch": "^8.6.0", "@fastify/formbody": "^7.0.1", "@hapi/hapi": "^21.0.0", - "@koa/router": "^12.0.0", + "@koa/router": "^13.0.1", "@types/node": "^22.0.0", "ajv": "^8.12.0", "apollo-server-core": "^3.0.0", @@ -101,7 +101,7 @@ "knex": "^3.0.1", "koa": "^2.11.0", "koa-bodyparser": "^4.3.0", - "koa-router": "^12.0.0", + "koa-router": "^13.0.1", "lambda-local": "^2.0.2", "memcached": "^2.2.2", "mimic-response": "1.0.0", @@ -5118,18 +5118,17 @@ "dev": true }, "node_modules/@koa/router": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@koa/router/-/router-12.0.0.tgz", - "integrity": "sha512-cnnxeKHXlt7XARJptflGURdJaO+ITpNkOHmQu7NHmCoRinPbyvFzce/EG/E8Zy81yQ1W9MoSdtklc3nyaDReUw==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@koa/router/-/router-13.0.1.tgz", + "integrity": "sha512-3NKqQt8pKjTKUBVnQx/E980rB6IyERd8QruImdxIVM2vb8TJWKYPnesw+mfElV/3wmdrc/rWk60Rs41Prr4XgQ==", "dev": true, "dependencies": { "http-errors": "^2.0.0", "koa-compose": "^4.1.0", - "methods": "^1.1.2", - "path-to-regexp": "^6.2.1" + "path-to-regexp": "^8.1.0" }, "engines": { - "node": ">= 12" + "node": ">= 18" } }, "node_modules/@koa/router/node_modules/depd": { @@ -11895,18 +11894,17 @@ } }, "node_modules/koa-router": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-12.0.0.tgz", - "integrity": "sha512-zGrdiXygGYW8WvrzeGsHZvKnHs4DzyGoqJ9a8iHlRkiwuEAOAPyI27//OlhoWdgFAEIM3qbUgr0KCuRaP/TCag==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-13.0.1.tgz", + "integrity": "sha512-4/sijXdSxocIe2wv7RFFSxvo2ic1pDzPSmy11yCGztng1hx408qfw1wVmN3aqhQaU7U6nJ039JKC8ObE73Ohgw==", "dev": true, "dependencies": { "http-errors": "^2.0.0", "koa-compose": "^4.1.0", - "methods": "^1.1.2", - "path-to-regexp": "^6.2.1" + "path-to-regexp": "^8.1.0" }, "engines": { - "node": ">= 12" + "node": ">= 18" } }, "node_modules/koa-router/node_modules/depd": { @@ -13278,10 +13276,13 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-to-regexp": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", - "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", - "dev": true + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.1.0.tgz", + "integrity": "sha512-Bqn3vc8CMHty6zuD+tG23s6v2kwxslHEhTj4eYaVKGIEB+YX/2wd0/rgXLFD9G9id9KCtbVy/3ZgmvZjpa0UdQ==", + "dev": true, + "engines": { + "node": ">=16" + } }, "node_modules/path-type": { "version": "4.0.0", @@ -20476,15 +20477,14 @@ "dev": true }, "@koa/router": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@koa/router/-/router-12.0.0.tgz", - "integrity": "sha512-cnnxeKHXlt7XARJptflGURdJaO+ITpNkOHmQu7NHmCoRinPbyvFzce/EG/E8Zy81yQ1W9MoSdtklc3nyaDReUw==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@koa/router/-/router-13.0.1.tgz", + "integrity": "sha512-3NKqQt8pKjTKUBVnQx/E980rB6IyERd8QruImdxIVM2vb8TJWKYPnesw+mfElV/3wmdrc/rWk60Rs41Prr4XgQ==", "dev": true, "requires": { "http-errors": "^2.0.0", "koa-compose": "^4.1.0", - "methods": "^1.1.2", - "path-to-regexp": "^6.2.1" + "path-to-regexp": "^8.1.0" }, "dependencies": { "depd": { @@ -25708,15 +25708,14 @@ } }, "koa-router": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-12.0.0.tgz", - "integrity": "sha512-zGrdiXygGYW8WvrzeGsHZvKnHs4DzyGoqJ9a8iHlRkiwuEAOAPyI27//OlhoWdgFAEIM3qbUgr0KCuRaP/TCag==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-13.0.1.tgz", + "integrity": "sha512-4/sijXdSxocIe2wv7RFFSxvo2ic1pDzPSmy11yCGztng1hx408qfw1wVmN3aqhQaU7U6nJ039JKC8ObE73Ohgw==", "dev": true, "requires": { "http-errors": "^2.0.0", "koa-compose": "^4.1.0", - "methods": "^1.1.2", - "path-to-regexp": "^6.2.1" + "path-to-regexp": "^8.1.0" }, "dependencies": { "depd": { @@ -26778,9 +26777,9 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "path-to-regexp": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", - "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.1.0.tgz", + "integrity": "sha512-Bqn3vc8CMHty6zuD+tG23s6v2kwxslHEhTj4eYaVKGIEB+YX/2wd0/rgXLFD9G9id9KCtbVy/3ZgmvZjpa0UdQ==", "dev": true }, "path-type": { diff --git a/package.json b/package.json index 117382893d..3fc72f8af0 100644 --- a/package.json +++ b/package.json @@ -139,7 +139,7 @@ "@elastic/elasticsearch": "^8.6.0", "@fastify/formbody": "^7.0.1", "@hapi/hapi": "^21.0.0", - "@koa/router": "^12.0.0", + "@koa/router": "^13.0.1", "@types/node": "^22.0.0", "ajv": "^8.12.0", "apollo-server-core": "^3.0.0", @@ -180,7 +180,7 @@ "knex": "^3.0.1", "koa": "^2.11.0", "koa-bodyparser": "^4.3.0", - "koa-router": "^12.0.0", + "koa-router": "^13.0.1", "lambda-local": "^2.0.2", "memcached": "^2.2.2", "mimic-response": "1.0.0", diff --git a/test/instrumentation/modules/koa-router/shared.js b/test/instrumentation/modules/koa-router/shared.js index 170397c385..425b74ed89 100644 --- a/test/instrumentation/modules/koa-router/shared.js +++ b/test/instrumentation/modules/koa-router/shared.js @@ -19,10 +19,15 @@ module.exports = (moduleName) => { const routerVersion = require(`${moduleName}/package`).version; // koa-router >=11 requires Node.js >=12. - if ( - semver.lt(process.version, '12.0.0') && - semver.gte(routerVersion, '11.0.0') - ) { + let skip = + semver.lt(process.version, '12.0.0') && semver.gte(routerVersion, '11.0.0'); + // koa-router >=13 requires Node.js >=18. + skip = + skip || + (semver.lt(process.version, '18.0.0') && + semver.gte(routerVersion, '13.0.0')); + + if (skip) { // Skip out of this test. console.log( `# SKIP cannot test ${moduleName}@${routerVersion} with node ${process.version}`, From 2deee2a717b02d721e81e3a5322b7d905b92915d Mon Sep 17 00:00:00 2001 From: David Luna Date: Mon, 16 Sep 2024 18:32:31 +0200 Subject: [PATCH 138/396] chore: update supported technologies (#4237) --- docs/supported-technologies.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/supported-technologies.asciidoc b/docs/supported-technologies.asciidoc index bf3a2f04e5..052b339797 100644 --- a/docs/supported-technologies.asciidoc +++ b/docs/supported-technologies.asciidoc @@ -139,7 +139,7 @@ so those should be supported as well. |https://www.npmjs.com/package/mysql2[mysql2] |>=1.0.0 <4.0.0 |Will instrument all queries |https://www.npmjs.com/package/pg[pg] |>=4.0.0 <9.0.0 |Will instrument all queries |https://www.npmjs.com/package/redis[redis] |>=2.0.0 <5.0.0 |Will instrument all queries -|https://www.npmjs.com/package/tedious[tedious] |>=1.9 <19.0.0 | (Excluding v4.0.0.) Will instrument all queries +|https://www.npmjs.com/package/tedious[tedious] |>=1.9 <20.0.0 | (Excluding v4.0.0.) Will instrument all queries |https://www.npmjs.com/package/undici[undici] | >=4.7.1 <6 | Will instrument undici HTTP requests, except HTTP CONNECT. Requires node v14.17.0 or later, or the user to have installed the https://www.npmjs.com/package/diagnostics_channel['diagnostics_channel' polyfill]. |https://www.npmjs.com/package/ws[ws] |>=1.0.0 <8.0.0 |Will instrument outgoing WebSocket messages |https://www.npmjs.com/package/kafkajs[kafkajs] |>=2.0.0 <3.0.0 |Will instrument all send methods for producers and message and batch processing for consumers. From dd7edfb3584192c7ee0999152ec7ebd746378124 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Tue, 17 Sep 2024 07:29:49 -0700 Subject: [PATCH 139/396] test(express): drop express@5 from TAV tests (#4239) We don't yet support instrumenting express@5. 5.0.0 was recently released. Our TAV config was including express@5 in tests. Refs: https://github.com/elastic/apm-agent-nodejs/issues/4238 --- .tav.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.tav.yml b/.tav.yml index 1a0bb7ce1c..4b8f54d984 100644 --- a/.tav.yml +++ b/.tav.yml @@ -188,10 +188,7 @@ graphql: express: versions: mode: latest-minors - # include requires an upper bound. v5 is still in beta - # (5.0.0-beta.1": "2022-02-15T01:11:25.229Z) but we use 6 to make sure any - # future release is included if we udpate - include: '>=4 <6' # latest minors subset of '>=4 <6' + include: '>=4 <5' commands: - node test/instrumentation/modules/express/basic.test.js - node test/instrumentation/modules/express/capture-exceptions-off.test.js From c79a5282c66b394e4a7b5d91bae62d4f64f13016 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Wed, 18 Sep 2024 16:05:34 +0200 Subject: [PATCH 140/396] github-action: use ephemeral tokens with the required permissions (#4225) --- .github/workflows/updatecli.yml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/updatecli.yml b/.github/workflows/updatecli.yml index b1159480fb..0ef635025a 100644 --- a/.github/workflows/updatecli.yml +++ b/.github/workflows/updatecli.yml @@ -17,6 +17,18 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Get token + id: get_token + uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a # v2.1.0 + with: + app_id: ${{ secrets.OBS_AUTOMATION_APP_ID }} + private_key: ${{ secrets.OBS_AUTOMATION_APP_PEM }} + permissions: >- + { + "contents": "write", + "pull_requests": "write" + } + - uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 with: registry: ghcr.io @@ -27,13 +39,13 @@ jobs: with: command: --experimental compose diff env: - GITHUB_TOKEN: ${{ secrets.UPDATECLI_GH_TOKEN }} + GITHUB_TOKEN: ${{ steps.get_token.outputs.token }} - uses: elastic/oblt-actions/updatecli/run@v1 with: command: --experimental compose apply env: - GITHUB_TOKEN: ${{ secrets.UPDATECLI_GH_TOKEN }} + GITHUB_TOKEN: ${{ steps.get_token.outputs.token }} - if: failure() uses: elastic/oblt-actions/slack/send@v1 From 2d084c54790f2c46253f6e1f3a0c10c9c0c4fd62 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Thu, 19 Sep 2024 11:38:05 +0200 Subject: [PATCH 141/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to d4def25 (#4240) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 0b64680bf2..d1504aeed0 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:aad4cd4e5f6d849691748c6933761889db1a20a57231613b98bbff61fa7723ab +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:d4def25f2fd3b0ff9bc68091cd1d89524e41b7d3fc0d3b3a665720eb92145f3b ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From c566823309283cb0434d602e95de9df83bcbfa80 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Sep 2024 09:55:17 +0200 Subject: [PATCH 142/396] chore(deps-dev): bump @koa/router from 13.0.1 to 13.1.0 (#4244) --- package-lock.json | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index f848fff056..b1ea6b42c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5118,14 +5118,14 @@ "dev": true }, "node_modules/@koa/router": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@koa/router/-/router-13.0.1.tgz", - "integrity": "sha512-3NKqQt8pKjTKUBVnQx/E980rB6IyERd8QruImdxIVM2vb8TJWKYPnesw+mfElV/3wmdrc/rWk60Rs41Prr4XgQ==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/@koa/router/-/router-13.1.0.tgz", + "integrity": "sha512-mNVu1nvkpSd8Q8gMebGbCkDWJ51ODetrFvLKYusej+V0ByD4btqHYnPIzTBLXnQMVUlm/oxVwqmWBY3zQfZilw==", "dev": true, "dependencies": { "http-errors": "^2.0.0", "koa-compose": "^4.1.0", - "path-to-regexp": "^8.1.0" + "path-to-regexp": "^6.3.0" }, "engines": { "node": ">= 18" @@ -5156,6 +5156,12 @@ "node": ">= 0.8" } }, + "node_modules/@koa/router/node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "dev": true + }, "node_modules/@koa/router/node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -20477,14 +20483,14 @@ "dev": true }, "@koa/router": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@koa/router/-/router-13.0.1.tgz", - "integrity": "sha512-3NKqQt8pKjTKUBVnQx/E980rB6IyERd8QruImdxIVM2vb8TJWKYPnesw+mfElV/3wmdrc/rWk60Rs41Prr4XgQ==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/@koa/router/-/router-13.1.0.tgz", + "integrity": "sha512-mNVu1nvkpSd8Q8gMebGbCkDWJ51ODetrFvLKYusej+V0ByD4btqHYnPIzTBLXnQMVUlm/oxVwqmWBY3zQfZilw==", "dev": true, "requires": { "http-errors": "^2.0.0", "koa-compose": "^4.1.0", - "path-to-regexp": "^8.1.0" + "path-to-regexp": "^6.3.0" }, "dependencies": { "depd": { @@ -20506,6 +20512,12 @@ "toidentifier": "1.0.1" } }, + "path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "dev": true + }, "statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", From 09dbbfe9744fbf65b60ac09d42882e5748f97f57 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Sep 2024 10:38:58 +0200 Subject: [PATCH 143/396] chore(deps-dev): bump pg from 8.12.0 to 8.13.0 (#4245) --- package-lock.json | 60 +++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/package-lock.json b/package-lock.json index b1ea6b42c2..1b1f840ca7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13306,14 +13306,14 @@ "dev": true }, "node_modules/pg": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.12.0.tgz", - "integrity": "sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.13.0.tgz", + "integrity": "sha512-34wkUTh3SxTClfoHB3pQ7bIMvw9dpFU1audQQeZG837fmHfHpr14n/AELVDoOYVDW2h5RDWU78tFjkD+erSBsw==", "dev": true, "dependencies": { - "pg-connection-string": "^2.6.4", - "pg-pool": "^3.6.2", - "pg-protocol": "^1.6.1", + "pg-connection-string": "^2.7.0", + "pg-pool": "^3.7.0", + "pg-protocol": "^1.7.0", "pg-types": "^2.1.0", "pgpass": "1.x" }, @@ -13355,18 +13355,18 @@ } }, "node_modules/pg-pool": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.2.tgz", - "integrity": "sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.7.0.tgz", + "integrity": "sha512-ZOBQForurqh4zZWjrgSwwAtzJ7QiRX0ovFkZr2klsen3Nm0aoh33Ls0fzfv3imeH/nw/O27cjdz5kzYJfeGp/g==", "dev": true, "peerDependencies": { "pg": ">=8.0" } }, "node_modules/pg-protocol": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.1.tgz", - "integrity": "sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.0.tgz", + "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==", "dev": true }, "node_modules/pg-types": { @@ -13386,9 +13386,9 @@ } }, "node_modules/pg/node_modules/pg-connection-string": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.4.tgz", - "integrity": "sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.7.0.tgz", + "integrity": "sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==", "dev": true }, "node_modules/pgpass": { @@ -26807,23 +26807,23 @@ "dev": true }, "pg": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.12.0.tgz", - "integrity": "sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.13.0.tgz", + "integrity": "sha512-34wkUTh3SxTClfoHB3pQ7bIMvw9dpFU1audQQeZG837fmHfHpr14n/AELVDoOYVDW2h5RDWU78tFjkD+erSBsw==", "dev": true, "requires": { "pg-cloudflare": "^1.1.1", - "pg-connection-string": "^2.6.4", - "pg-pool": "^3.6.2", - "pg-protocol": "^1.6.1", + "pg-connection-string": "^2.7.0", + "pg-pool": "^3.7.0", + "pg-protocol": "^1.7.0", "pg-types": "^2.1.0", "pgpass": "1.x" }, "dependencies": { "pg-connection-string": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.4.tgz", - "integrity": "sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.7.0.tgz", + "integrity": "sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==", "dev": true } } @@ -26848,15 +26848,15 @@ "dev": true }, "pg-pool": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.2.tgz", - "integrity": "sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.7.0.tgz", + "integrity": "sha512-ZOBQForurqh4zZWjrgSwwAtzJ7QiRX0ovFkZr2klsen3Nm0aoh33Ls0fzfv3imeH/nw/O27cjdz5kzYJfeGp/g==", "dev": true }, "pg-protocol": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.1.tgz", - "integrity": "sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.0.tgz", + "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==", "dev": true }, "pg-types": { From 891a983a5ef64c7140fe3a2165ebcad5821f6af2 Mon Sep 17 00:00:00 2001 From: David Luna Date: Thu, 26 Sep 2024 09:22:09 +0200 Subject: [PATCH 144/396] chore(deps-dev): update fastify to 5.0.0 and @fastify/formbody to 8.0.1 (#4248) --- .tav.yml | 9 + package-lock.json | 553 +++++++++++++++++------------------ package.json | 4 +- test/_is_fastify_incompat.js | 7 + 4 files changed, 280 insertions(+), 293 deletions(-) diff --git a/.tav.yml b/.tav.yml index 4b8f54d984..2ececaf6f7 100644 --- a/.tav.yml +++ b/.tav.yml @@ -432,6 +432,15 @@ fastify: - node test/instrumentation/modules/fastify/async-await.test.js - node test/instrumentation/modules/fastify/set-framework.test.js - node test/sanitize-field-names/fastify.test.js + - versions: + mode: max-7 + include: '>=5 <6' + peerDependencies: '@fastify/formbody@^8' + node: '>=20' + commands: + - node test/instrumentation/modules/fastify/fastify.test.js + - node test/instrumentation/modules/fastify/async-await.test.js + - node test/instrumentation/modules/fastify/set-framework.test.js finalhandler: versions: '*' diff --git a/package-lock.json b/package-lock.json index 1b1f840ca7..10d086bfb0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -58,7 +58,7 @@ "@babel/core": "^7.8.4", "@babel/preset-env": "^7.8.4", "@elastic/elasticsearch": "^8.6.0", - "@fastify/formbody": "^7.0.1", + "@fastify/formbody": "^8.0.1", "@hapi/hapi": "^21.0.0", "@koa/router": "^13.0.1", "@types/node": "^22.0.0", @@ -85,7 +85,7 @@ "eslint-plugin-promise": "^7.0.0", "express": "^4.17.1", "express-queue": "^0.0.13", - "fastify": "^4.16.3", + "fastify": "^5.0.0", "finalhandler": "^1.1.2", "generic-pool": "^3.7.1", "get-port": "^5.1.1", @@ -4417,59 +4417,48 @@ } }, "node_modules/@fastify/ajv-compiler": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.5.0.tgz", - "integrity": "sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-4.0.1.tgz", + "integrity": "sha512-DxrBdgsjNLP0YM6W5Hd6/Fmj43S8zMKiFJYgi+Ri3htTGAowPVG/tG1wpnWLMjufEnehRivUCKZ1pLDIoZdTuw==", "dev": true, "dependencies": { - "ajv": "^8.11.0", - "ajv-formats": "^2.1.1", - "fast-uri": "^2.0.0" + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-uri": "^3.0.0" } }, - "node_modules/@fastify/deepmerge": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-1.3.0.tgz", - "integrity": "sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==", - "dev": true - }, "node_modules/@fastify/error": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.4.0.tgz", - "integrity": "sha512-e/mafFwbK3MNqxUcFBLgHhgxsF8UT1m8aj0dAlqEa2nJEgPsRtpHTZ3ObgrgkZ2M1eJHPTwgyUl/tXkvabsZdQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@fastify/error/-/error-4.0.0.tgz", + "integrity": "sha512-OO/SA8As24JtT1usTUTKgGH7uLvhfwZPwlptRi2Dp5P4KKmJI3gvsZ8MIHnNwDs4sLf/aai5LzTyl66xr7qMxA==", "dev": true }, "node_modules/@fastify/fast-json-stringify-compiler": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.3.0.tgz", - "integrity": "sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-5.0.1.tgz", + "integrity": "sha512-f2d3JExJgFE3UbdFcpPwqNUEoHWmt8pAKf8f+9YuLESdefA0WgqxeT6DrGL4Yrf/9ihXNSKOqpjEmurV405meA==", "dev": true, "dependencies": { - "fast-json-stringify": "^5.7.0" + "fast-json-stringify": "^6.0.0" } }, - "node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-json-stringify": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.7.0.tgz", - "integrity": "sha512-sBVPTgnAZseLu1Qgj6lUbQ0HfjFhZWXAmpZ5AaSGkyLh5gAXBga/uPJjQPHpDFjC9adWIpdOcCLSDTgrZ7snoQ==", + "node_modules/@fastify/formbody": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@fastify/formbody/-/formbody-8.0.1.tgz", + "integrity": "sha512-LPrcadSIK8TrQk510Zdj56fnw7cyHq0/PW0YHGGM8ycGL4X7XAex+FKcwpzB4i5lF9eykc71a4EtcO9AEoByqw==", "dev": true, "dependencies": { - "@fastify/deepmerge": "^1.0.0", - "ajv": "^8.10.0", - "ajv-formats": "^2.1.1", - "fast-deep-equal": "^3.1.3", - "fast-uri": "^2.1.0", - "rfdc": "^1.2.0" + "fast-querystring": "^1.1.2", + "fastify-plugin": "^5.0.0" } }, - "node_modules/@fastify/formbody": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@fastify/formbody/-/formbody-7.4.0.tgz", - "integrity": "sha512-H3C6h1GN56/SMrZS8N2vCT2cZr7mIHzBHzOBa5OPpjfB/D6FzP9mMpE02ZzrFX0ANeh0BAJdoXKOF2e7IbV+Og==", + "node_modules/@fastify/merge-json-schemas": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz", + "integrity": "sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==", "dev": true, "dependencies": { - "fast-querystring": "^1.0.0", - "fastify-plugin": "^4.0.0" + "fast-deep-equal": "^3.1.3" } }, "node_modules/@graphql-tools/merge": { @@ -6559,9 +6548,9 @@ } }, "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dev": true, "dependencies": { "ajv": "^8.0.0" @@ -6799,12 +6788,6 @@ "graphql": "^15.3.0 || ^16.0.0" } }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, "node_modules/array-buffer-byte-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", @@ -7036,14 +7019,12 @@ } }, "node_modules/avvio": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/avvio/-/avvio-8.3.0.tgz", - "integrity": "sha512-VBVH0jubFr9LdFASy/vNtm5giTrnbVquWBhT0fyizuNK2rQ7e7ONU2plZQWUNqtE1EmxFEb+kbSkFRkstiaS9Q==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/avvio/-/avvio-9.0.0.tgz", + "integrity": "sha512-UbYrOXgE/I+knFG+3kJr9AgC7uNo8DG+FGGODpH9Bj1O1kL/QDjBXnTem9leD3VdQKtaHjV3O85DQ7hHh4IIHw==", "dev": true, "dependencies": { - "@fastify/error": "^3.3.0", - "archy": "^1.0.0", - "debug": "^4.0.0", + "@fastify/error": "^4.0.0", "fastq": "^1.17.1" } }, @@ -9756,12 +9737,6 @@ "node >=0.6.0" ] }, - "node_modules/fast-content-type-parse": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.1.0.tgz", - "integrity": "sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==", - "dev": true - }, "node_modules/fast-decode-uri-component": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", @@ -9802,6 +9777,27 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, + "node_modules/fast-json-stringify": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-6.0.0.tgz", + "integrity": "sha512-FGMKZwniMTgZh7zQp9b6XnBVxUmKVahQLQeRQHqwYmPDqDhcEKZ3BaQsxelFFI5PY7nN71OEeiL47/zUWcYe1A==", + "dev": true, + "dependencies": { + "@fastify/merge-json-schemas": "^0.1.1", + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^2.3.0", + "json-schema-ref-resolver": "^1.0.1", + "rfdc": "^1.2.0" + } + }, + "node_modules/fast-json-stringify/node_modules/fast-uri": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.4.0.tgz", + "integrity": "sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==", + "dev": true + }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", @@ -9809,9 +9805,9 @@ "dev": true }, "node_modules/fast-querystring": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.0.0.tgz", - "integrity": "sha512-3LQi62IhQoDlmt4ULCYmh17vRO2EtS7hTSsG4WwoKWgV7GLMKBOecEh+aiavASnLx8I2y89OD33AGLo0ccRhzA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz", + "integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==", "dev": true, "dependencies": { "fast-decode-uri-component": "^1.0.1" @@ -9839,9 +9835,9 @@ } }, "node_modules/fast-uri": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.1.0.tgz", - "integrity": "sha512-qKRta6N7BWEFVlyonVY/V+BMLgFqktCUV0QjT259ekAIlbVrMaFnFLxJ4s/JPl4tou56S1BzPufI60bLe29fHA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", "dev": true }, "node_modules/fast-xml-parser": { @@ -9867,9 +9863,9 @@ } }, "node_modules/fastify": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.28.1.tgz", - "integrity": "sha512-kFWUtpNr4i7t5vY2EJPCN2KgMVpuqfU4NjnJNCgiNB900oiDeYqaNDRcAfeBbOF5hGixixxcKnOU4KN9z6QncQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.0.0.tgz", + "integrity": "sha512-Qe4dU+zGOzg7vXjw4EvcuyIbNnMwTmcuOhlOrOJsgwzvjEZmsM/IeHulgJk+r46STjdJS/ZJbxO8N70ODXDMEQ==", "dev": true, "funding": [ { @@ -9882,53 +9878,38 @@ } ], "dependencies": { - "@fastify/ajv-compiler": "^3.5.0", - "@fastify/error": "^3.4.0", - "@fastify/fast-json-stringify-compiler": "^4.3.0", + "@fastify/ajv-compiler": "^4.0.0", + "@fastify/error": "^4.0.0", + "@fastify/fast-json-stringify-compiler": "^5.0.0", "abstract-logging": "^2.0.1", - "avvio": "^8.3.0", - "fast-content-type-parse": "^1.1.0", - "fast-json-stringify": "^5.8.0", - "find-my-way": "^8.0.0", - "light-my-request": "^5.11.0", + "avvio": "^9.0.0", + "fast-json-stringify": "^6.0.0", + "find-my-way": "^9.0.0", + "light-my-request": "^6.0.0", "pino": "^9.0.0", - "process-warning": "^3.0.0", + "process-warning": "^4.0.0", "proxy-addr": "^2.0.7", - "rfdc": "^1.3.0", + "rfdc": "^1.3.1", "secure-json-parse": "^2.7.0", - "semver": "^7.5.4", - "toad-cache": "^3.3.0" + "semver": "^7.6.0", + "toad-cache": "^3.7.0" } }, "node_modules/fastify-plugin": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-4.2.1.tgz", - "integrity": "sha512-dlGKiwLzRBKkEf5J5ho0uAD/Jdv8GQVUbriB3tAX3ehRUXE4gTV3lRd5inEg9li1aLzb0EGj8y2K4/8g1TN06g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-5.0.1.tgz", + "integrity": "sha512-HCxs+YnRaWzCl+cWRYFnHmeRFyR5GVnJTAaCJQiYzQSDwK9MgJdyAsuL3nh0EWRCYMgQ5MeziymvmAhUHYHDUQ==", "dev": true }, - "node_modules/fastify/node_modules/fast-json-stringify": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.8.0.tgz", - "integrity": "sha512-VVwK8CFMSALIvt14U8AvrSzQAwN/0vaVRiFFUVlpnXSnDGrSkOAO5MtzyN8oQNjLd5AqTW5OZRgyjoNuAuR3jQ==", - "dev": true, - "dependencies": { - "@fastify/deepmerge": "^1.0.0", - "ajv": "^8.10.0", - "ajv-formats": "^2.1.1", - "fast-deep-equal": "^3.1.3", - "fast-uri": "^2.1.0", - "rfdc": "^1.2.0" - } - }, "node_modules/fastify/node_modules/find-my-way": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-8.1.0.tgz", - "integrity": "sha512-41QwjCGcVTODUmLLqTMeoHeiozbMXYMAE1CKFiDyi9zVZ2Vjh0yz3MF0WQZoIb+cmzP/XlbFjlF2NtJmvZHznA==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-9.0.1.tgz", + "integrity": "sha512-/5NN/R0pFWuff16TMajeKt2JyiW+/OE8nOO8vo1DwZTxLaIURb7lcBYPIgRPh61yCNh9l8voeKwcrkUzmB00vw==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-querystring": "^1.0.0", - "safe-regex2": "^2.0.0" + "safe-regex2": "^4.0.0" }, "engines": { "node": ">=14" @@ -9962,6 +9943,24 @@ "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==", "dev": true }, + "node_modules/fastify/node_modules/ret": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", + "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/fastify/node_modules/safe-regex2": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-4.0.0.tgz", + "integrity": "sha512-Hvjfv25jPDVr3U+4LDzBuZPPOymELG3PYcSk5hcevooo1yxxamQL/bHs/GrEPGmMoMEwRrHVGiCA1pXi97B8Ew==", + "dev": true, + "dependencies": { + "ret": "~0.5.0" + } + }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -11614,6 +11613,15 @@ "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true }, + "node_modules/json-schema-ref-resolver": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-1.0.1.tgz", + "integrity": "sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + } + }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -12002,23 +12010,14 @@ } }, "node_modules/light-my-request": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.11.0.tgz", - "integrity": "sha512-qkFCeloXCOMpmEdZ/MV91P8AT4fjwFXWaAFz3lUeStM8RcoM1ks4J/F8r1b3r6y/H4u3ACEJ1T+Gv5bopj7oDA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-6.0.0.tgz", + "integrity": "sha512-kFkFXrmKCL0EEeOmJybMH5amWFd+AFvlvMlvFTRxCUwbhfapZqDmeLMPoWihntnYY6JpoQDE9k+vOzObF1fDqg==", "dev": true, "dependencies": { - "cookie": "^0.5.0", - "process-warning": "^2.0.0", - "set-cookie-parser": "^2.4.1" - } - }, - "node_modules/light-my-request/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true, - "engines": { - "node": ">= 0.6" + "cookie": "^0.6.0", + "process-warning": "^4.0.0", + "set-cookie-parser": "^2.6.0" } }, "node_modules/lodash": { @@ -13743,9 +13742,9 @@ "dev": true }, "node_modules/process-warning": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.2.0.tgz", - "integrity": "sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.0.tgz", + "integrity": "sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==", "dev": true }, "node_modules/promise": { @@ -14545,9 +14544,9 @@ } }, "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", "dev": true }, "node_modules/rimraf": { @@ -14715,12 +14714,9 @@ } }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -14728,17 +14724,6 @@ "node": ">=10" } }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", @@ -14937,9 +14922,9 @@ } }, "node_modules/set-cookie-parser": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", - "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.0.tgz", + "integrity": "sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ==", "dev": true }, "node_modules/set-function-length": { @@ -15707,9 +15692,9 @@ } }, "node_modules/toad-cache": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.3.0.tgz", - "integrity": "sha512-3oDzcogWGHZdkwrHyvJVpPjA7oNzY6ENOV3PsWJY9XYPZ6INo94Yd47s5may1U+nleBPwDhrRiTPMIvKaa3MQg==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz", + "integrity": "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==", "dev": true, "engines": { "node": ">=12" @@ -16445,7 +16430,8 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/ylru": { "version": "1.3.2", @@ -19778,61 +19764,48 @@ "dev": true }, "@fastify/ajv-compiler": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.5.0.tgz", - "integrity": "sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-4.0.1.tgz", + "integrity": "sha512-DxrBdgsjNLP0YM6W5Hd6/Fmj43S8zMKiFJYgi+Ri3htTGAowPVG/tG1wpnWLMjufEnehRivUCKZ1pLDIoZdTuw==", "dev": true, "requires": { - "ajv": "^8.11.0", - "ajv-formats": "^2.1.1", - "fast-uri": "^2.0.0" + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-uri": "^3.0.0" } }, - "@fastify/deepmerge": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-1.3.0.tgz", - "integrity": "sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==", - "dev": true - }, "@fastify/error": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.4.0.tgz", - "integrity": "sha512-e/mafFwbK3MNqxUcFBLgHhgxsF8UT1m8aj0dAlqEa2nJEgPsRtpHTZ3ObgrgkZ2M1eJHPTwgyUl/tXkvabsZdQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@fastify/error/-/error-4.0.0.tgz", + "integrity": "sha512-OO/SA8As24JtT1usTUTKgGH7uLvhfwZPwlptRi2Dp5P4KKmJI3gvsZ8MIHnNwDs4sLf/aai5LzTyl66xr7qMxA==", "dev": true }, "@fastify/fast-json-stringify-compiler": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.3.0.tgz", - "integrity": "sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-5.0.1.tgz", + "integrity": "sha512-f2d3JExJgFE3UbdFcpPwqNUEoHWmt8pAKf8f+9YuLESdefA0WgqxeT6DrGL4Yrf/9ihXNSKOqpjEmurV405meA==", "dev": true, "requires": { - "fast-json-stringify": "^5.7.0" - }, - "dependencies": { - "fast-json-stringify": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.7.0.tgz", - "integrity": "sha512-sBVPTgnAZseLu1Qgj6lUbQ0HfjFhZWXAmpZ5AaSGkyLh5gAXBga/uPJjQPHpDFjC9adWIpdOcCLSDTgrZ7snoQ==", - "dev": true, - "requires": { - "@fastify/deepmerge": "^1.0.0", - "ajv": "^8.10.0", - "ajv-formats": "^2.1.1", - "fast-deep-equal": "^3.1.3", - "fast-uri": "^2.1.0", - "rfdc": "^1.2.0" - } - } + "fast-json-stringify": "^6.0.0" } }, "@fastify/formbody": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@fastify/formbody/-/formbody-7.4.0.tgz", - "integrity": "sha512-H3C6h1GN56/SMrZS8N2vCT2cZr7mIHzBHzOBa5OPpjfB/D6FzP9mMpE02ZzrFX0ANeh0BAJdoXKOF2e7IbV+Og==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@fastify/formbody/-/formbody-8.0.1.tgz", + "integrity": "sha512-LPrcadSIK8TrQk510Zdj56fnw7cyHq0/PW0YHGGM8ycGL4X7XAex+FKcwpzB4i5lF9eykc71a4EtcO9AEoByqw==", "dev": true, "requires": { - "fast-querystring": "^1.0.0", - "fastify-plugin": "^4.0.0" + "fast-querystring": "^1.1.2", + "fastify-plugin": "^5.0.0" + } + }, + "@fastify/merge-json-schemas": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz", + "integrity": "sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" } }, "@graphql-tools/merge": { @@ -21681,9 +21654,9 @@ } }, "ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dev": true, "requires": { "ajv": "^8.0.0" @@ -21856,12 +21829,6 @@ "apollo-server-env": "^4.2.1" } }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, "array-buffer-byte-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", @@ -22036,14 +22003,12 @@ } }, "avvio": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/avvio/-/avvio-8.3.0.tgz", - "integrity": "sha512-VBVH0jubFr9LdFASy/vNtm5giTrnbVquWBhT0fyizuNK2rQ7e7ONU2plZQWUNqtE1EmxFEb+kbSkFRkstiaS9Q==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/avvio/-/avvio-9.0.0.tgz", + "integrity": "sha512-UbYrOXgE/I+knFG+3kJr9AgC7uNo8DG+FGGODpH9Bj1O1kL/QDjBXnTem9leD3VdQKtaHjV3O85DQ7hHh4IIHw==", "dev": true, "requires": { - "@fastify/error": "^3.3.0", - "archy": "^1.0.0", - "debug": "^4.0.0", + "@fastify/error": "^4.0.0", "fastq": "^1.17.1" } }, @@ -24094,12 +24059,6 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true }, - "fast-content-type-parse": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.1.0.tgz", - "integrity": "sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==", - "dev": true - }, "fast-decode-uri-component": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", @@ -24137,6 +24096,29 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, + "fast-json-stringify": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-6.0.0.tgz", + "integrity": "sha512-FGMKZwniMTgZh7zQp9b6XnBVxUmKVahQLQeRQHqwYmPDqDhcEKZ3BaQsxelFFI5PY7nN71OEeiL47/zUWcYe1A==", + "dev": true, + "requires": { + "@fastify/merge-json-schemas": "^0.1.1", + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^2.3.0", + "json-schema-ref-resolver": "^1.0.1", + "rfdc": "^1.2.0" + }, + "dependencies": { + "fast-uri": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.4.0.tgz", + "integrity": "sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==", + "dev": true + } + } + }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", @@ -24144,9 +24126,9 @@ "dev": true }, "fast-querystring": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.0.0.tgz", - "integrity": "sha512-3LQi62IhQoDlmt4ULCYmh17vRO2EtS7hTSsG4WwoKWgV7GLMKBOecEh+aiavASnLx8I2y89OD33AGLo0ccRhzA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz", + "integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==", "dev": true, "requires": { "fast-decode-uri-component": "^1.0.1" @@ -24171,9 +24153,9 @@ } }, "fast-uri": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.1.0.tgz", - "integrity": "sha512-qKRta6N7BWEFVlyonVY/V+BMLgFqktCUV0QjT259ekAIlbVrMaFnFLxJ4s/JPl4tou56S1BzPufI60bLe29fHA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", "dev": true }, "fast-xml-parser": { @@ -24186,52 +24168,37 @@ } }, "fastify": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.28.1.tgz", - "integrity": "sha512-kFWUtpNr4i7t5vY2EJPCN2KgMVpuqfU4NjnJNCgiNB900oiDeYqaNDRcAfeBbOF5hGixixxcKnOU4KN9z6QncQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.0.0.tgz", + "integrity": "sha512-Qe4dU+zGOzg7vXjw4EvcuyIbNnMwTmcuOhlOrOJsgwzvjEZmsM/IeHulgJk+r46STjdJS/ZJbxO8N70ODXDMEQ==", "dev": true, "requires": { - "@fastify/ajv-compiler": "^3.5.0", - "@fastify/error": "^3.4.0", - "@fastify/fast-json-stringify-compiler": "^4.3.0", + "@fastify/ajv-compiler": "^4.0.0", + "@fastify/error": "^4.0.0", + "@fastify/fast-json-stringify-compiler": "^5.0.0", "abstract-logging": "^2.0.1", - "avvio": "^8.3.0", - "fast-content-type-parse": "^1.1.0", - "fast-json-stringify": "^5.8.0", - "find-my-way": "^8.0.0", - "light-my-request": "^5.11.0", + "avvio": "^9.0.0", + "fast-json-stringify": "^6.0.0", + "find-my-way": "^9.0.0", + "light-my-request": "^6.0.0", "pino": "^9.0.0", - "process-warning": "^3.0.0", + "process-warning": "^4.0.0", "proxy-addr": "^2.0.7", - "rfdc": "^1.3.0", + "rfdc": "^1.3.1", "secure-json-parse": "^2.7.0", - "semver": "^7.5.4", - "toad-cache": "^3.3.0" + "semver": "^7.6.0", + "toad-cache": "^3.7.0" }, "dependencies": { - "fast-json-stringify": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.8.0.tgz", - "integrity": "sha512-VVwK8CFMSALIvt14U8AvrSzQAwN/0vaVRiFFUVlpnXSnDGrSkOAO5MtzyN8oQNjLd5AqTW5OZRgyjoNuAuR3jQ==", - "dev": true, - "requires": { - "@fastify/deepmerge": "^1.0.0", - "ajv": "^8.10.0", - "ajv-formats": "^2.1.1", - "fast-deep-equal": "^3.1.3", - "fast-uri": "^2.1.0", - "rfdc": "^1.2.0" - } - }, "find-my-way": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-8.1.0.tgz", - "integrity": "sha512-41QwjCGcVTODUmLLqTMeoHeiozbMXYMAE1CKFiDyi9zVZ2Vjh0yz3MF0WQZoIb+cmzP/XlbFjlF2NtJmvZHznA==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-9.0.1.tgz", + "integrity": "sha512-/5NN/R0pFWuff16TMajeKt2JyiW+/OE8nOO8vo1DwZTxLaIURb7lcBYPIgRPh61yCNh9l8voeKwcrkUzmB00vw==", "dev": true, "requires": { "fast-deep-equal": "^3.1.3", "fast-querystring": "^1.0.0", - "safe-regex2": "^2.0.0" + "safe-regex2": "^4.0.0" } }, "pino": { @@ -24258,13 +24225,28 @@ "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==", "dev": true + }, + "ret": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", + "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", + "dev": true + }, + "safe-regex2": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-4.0.0.tgz", + "integrity": "sha512-Hvjfv25jPDVr3U+4LDzBuZPPOymELG3PYcSk5hcevooo1yxxamQL/bHs/GrEPGmMoMEwRrHVGiCA1pXi97B8Ew==", + "dev": true, + "requires": { + "ret": "~0.5.0" + } } } }, "fastify-plugin": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-4.2.1.tgz", - "integrity": "sha512-dlGKiwLzRBKkEf5J5ho0uAD/Jdv8GQVUbriB3tAX3ehRUXE4gTV3lRd5inEg9li1aLzb0EGj8y2K4/8g1TN06g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-5.0.1.tgz", + "integrity": "sha512-HCxs+YnRaWzCl+cWRYFnHmeRFyR5GVnJTAaCJQiYzQSDwK9MgJdyAsuL3nh0EWRCYMgQ5MeziymvmAhUHYHDUQ==", "dev": true }, "fastq": { @@ -25485,6 +25467,15 @@ "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true }, + "json-schema-ref-resolver": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-1.0.1.tgz", + "integrity": "sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, "json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -25793,22 +25784,14 @@ } }, "light-my-request": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.11.0.tgz", - "integrity": "sha512-qkFCeloXCOMpmEdZ/MV91P8AT4fjwFXWaAFz3lUeStM8RcoM1ks4J/F8r1b3r6y/H4u3ACEJ1T+Gv5bopj7oDA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-6.0.0.tgz", + "integrity": "sha512-kFkFXrmKCL0EEeOmJybMH5amWFd+AFvlvMlvFTRxCUwbhfapZqDmeLMPoWihntnYY6JpoQDE9k+vOzObF1fDqg==", "dev": true, "requires": { - "cookie": "^0.5.0", - "process-warning": "^2.0.0", - "set-cookie-parser": "^2.4.1" - }, - "dependencies": { - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true - } + "cookie": "^0.6.0", + "process-warning": "^4.0.0", + "set-cookie-parser": "^2.6.0" } }, "lodash": { @@ -27117,9 +27100,9 @@ "dev": true }, "process-warning": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.2.0.tgz", - "integrity": "sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.0.tgz", + "integrity": "sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==", "dev": true }, "promise": { @@ -27760,9 +27743,9 @@ "dev": true }, "rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", "dev": true }, "rimraf": { @@ -27890,22 +27873,9 @@ } }, "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - } - } + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" }, "send": { "version": "0.18.0", @@ -28082,9 +28052,9 @@ } }, "set-cookie-parser": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", - "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.0.tgz", + "integrity": "sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ==", "dev": true }, "set-function-length": { @@ -28706,9 +28676,9 @@ } }, "toad-cache": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.3.0.tgz", - "integrity": "sha512-3oDzcogWGHZdkwrHyvJVpPjA7oNzY6ENOV3PsWJY9XYPZ6INo94Yd47s5may1U+nleBPwDhrRiTPMIvKaa3MQg==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz", + "integrity": "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==", "dev": true }, "toidentifier": { @@ -29266,7 +29236,8 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "ylru": { "version": "1.3.2", diff --git a/package.json b/package.json index 3fc72f8af0..2a3cc56a95 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "@babel/core": "^7.8.4", "@babel/preset-env": "^7.8.4", "@elastic/elasticsearch": "^8.6.0", - "@fastify/formbody": "^7.0.1", + "@fastify/formbody": "^8.0.1", "@hapi/hapi": "^21.0.0", "@koa/router": "^13.0.1", "@types/node": "^22.0.0", @@ -164,7 +164,7 @@ "eslint-plugin-promise": "^7.0.0", "express": "^4.17.1", "express-queue": "^0.0.13", - "fastify": "^4.16.3", + "fastify": "^5.0.0", "finalhandler": "^1.1.2", "generic-pool": "^3.7.1", "get-port": "^5.1.1", diff --git a/test/_is_fastify_incompat.js b/test/_is_fastify_incompat.js index 3bf542482d..cc87b77f30 100644 --- a/test/_is_fastify_incompat.js +++ b/test/_is_fastify_incompat.js @@ -53,6 +53,13 @@ function isFastifyIncompat() { ) { return msg; } + // https://fastify.dev/docs/latest/Guides/Migration-Guide-V5/#long-term-support-cycle + if ( + semver.satisfies(fastifyVer, '5.x') && + !semver.satisfies(nodeVer, '>=20') + ) { + return msg; + } return false; } From 54cd2c3693b8c14cdf58a6fdd9d9af47ebafe31b Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Thu, 26 Sep 2024 21:56:06 +0200 Subject: [PATCH 145/396] github-action: use elastic/oblt-actions/github/is-member-of (#4250) --- .github/workflows/labeler.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index 6bb9af6894..03adff114f 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -16,10 +16,11 @@ jobs: runs-on: ubuntu-latest steps: - id: is_elastic_member - uses: elastic/apm-pipeline-library/.github/actions/is-member-elastic-org@current + uses: elastic/oblt-actions/github/is-member-of@v1 with: - username: ${{ github.actor }} - token: ${{ secrets.APM_TECH_USER_TOKEN }} + github-org: "elastic" + github-user: ${{ github.actor }} + github-token: ${{ secrets.APM_TECH_USER_TOKEN }} - name: Add community and triage labels if: contains(steps.is_elastic_member.outputs.result, 'false') && github.actor != 'dependabot[bot]' From 3e27d26cafc80d8f1d77b4b0e93f4990e6e21cab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Sep 2024 11:19:21 +0200 Subject: [PATCH 146/396] chore(deps): bump import-in-the-middle from 1.11.0 to 1.11.1 (#4253) --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 10d086bfb0..714e469ab1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "fast-safe-stringify": "^2.0.7", "fast-stream-to-buffer": "^1.0.0", "http-headers": "^3.0.2", - "import-in-the-middle": "1.11.0", + "import-in-the-middle": "1.11.1", "json-bigint": "^1.0.0", "lru-cache": "10.2.0", "measured-reporting": "^1.51.1", @@ -10898,9 +10898,9 @@ } }, "node_modules/import-in-the-middle": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.0.tgz", - "integrity": "sha512-5DimNQGoe0pLUHbR9qK84iWaWjjbsxiqXnw6Qz64+azRgleqv9k2kTt5fw7QsOpmaGYtuxxursnPPsnTKEx10Q==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.1.tgz", + "integrity": "sha512-lGdg70ECFGv/OHQXL/IPhcxkFPeQ7YA4zborlA54XHVr58oM50QNxItRiayHMqj1MspC5Y9zaHf+QHod/gq7Ug==", "dependencies": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", @@ -24954,9 +24954,9 @@ } }, "import-in-the-middle": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.0.tgz", - "integrity": "sha512-5DimNQGoe0pLUHbR9qK84iWaWjjbsxiqXnw6Qz64+azRgleqv9k2kTt5fw7QsOpmaGYtuxxursnPPsnTKEx10Q==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.1.tgz", + "integrity": "sha512-lGdg70ECFGv/OHQXL/IPhcxkFPeQ7YA4zborlA54XHVr58oM50QNxItRiayHMqj1MspC5Y9zaHf+QHod/gq7Ug==", "requires": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", diff --git a/package.json b/package.json index 2a3cc56a95..29dc3dfb9a 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "fast-safe-stringify": "^2.0.7", "fast-stream-to-buffer": "^1.0.0", "http-headers": "^3.0.2", - "import-in-the-middle": "1.11.0", + "import-in-the-middle": "1.11.1", "json-bigint": "^1.0.0", "lru-cache": "10.2.0", "measured-reporting": "^1.51.1", From ce04d9b983e8133b1b41d7042a52b58f7c8ffdff Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Mon, 30 Sep 2024 11:20:25 +0200 Subject: [PATCH 147/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to a51a1cd (#4241) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index d1504aeed0..9c8287211c 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:d4def25f2fd3b0ff9bc68091cd1d89524e41b7d3fc0d3b3a665720eb92145f3b +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:a51a1cd55a717b170058395f65cd16c3ede419b4fd400f0abaae7244c7a421f9 ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 93974999cff9f02f36ce0451690dbc0e2aea39f7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 08:14:53 -0700 Subject: [PATCH 148/396] chore(deps-dev): bump @types/node from 22.5.2 to 22.7.4 (#4254) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 714e469ab1..5635ab856f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6316,9 +6316,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.2.tgz", - "integrity": "sha512-acJsPTEqYqulZS/Yp/S3GgeE6GZ0qYODUR8aVr/DkhHQ8l9nd4j5x1/ZJy9/gHrRlFMqkO6i0I3E27Alu4jjPg==", + "version": "22.7.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.4.tgz", + "integrity": "sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==", "dev": true, "dependencies": { "undici-types": "~6.19.2" @@ -21461,9 +21461,9 @@ "dev": true }, "@types/node": { - "version": "22.5.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.2.tgz", - "integrity": "sha512-acJsPTEqYqulZS/Yp/S3GgeE6GZ0qYODUR8aVr/DkhHQ8l9nd4j5x1/ZJy9/gHrRlFMqkO6i0I3E27Alu4jjPg==", + "version": "22.7.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.4.tgz", + "integrity": "sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==", "dev": true, "requires": { "undici-types": "~6.19.2" From 5c9e59a94b7786842b25eb383128b03bbd5d7352 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 08:49:19 -0700 Subject: [PATCH 149/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to 5186816 (#4255) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 9c8287211c..3c27567986 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:a51a1cd55a717b170058395f65cd16c3ede419b4fd400f0abaae7244c7a421f9 +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:5186816a1b676aa8d7f11f2a1faaf142348f0045a64bc3e8195c61b133496896 ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 10a7ab85e43404251d54af2183c9bde44bf2f19b Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Tue, 1 Oct 2024 11:34:02 -0700 Subject: [PATCH 150/396] test: attempted fix of flaky 'span slower than configured spanStackTraceMinDuration' test (#4256) This test case has been occasionally fail in CI recently. This bumps the timing to make a small timing issue less likely to cause the test to fail. Refs: https://github.com/elastic/apm-agent-nodejs/issues/3313#issuecomment-2382538762 --- test/spanStackTraceMinDuration.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/spanStackTraceMinDuration.test.js b/test/spanStackTraceMinDuration.test.js index 1afa88dbce..dcaee70346 100644 --- a/test/spanStackTraceMinDuration.test.js +++ b/test/spanStackTraceMinDuration.test.js @@ -63,7 +63,7 @@ tape.test( t.ok(data.stacktrace, 'stacktrace set'); t.end(); }); - }, 101); + }, 200); }, ); From 0c1f50ff4a9d628b9776eb960c1429bee0038a1d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 2 Oct 2024 12:09:58 +0200 Subject: [PATCH 151/396] chore(deps): bump docker/build-push-action from 6.7.0 to 6.8.0 in the github-actions group (#4252) --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f9e022354b..ed17a87123 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -63,7 +63,7 @@ jobs: - name: Build and Push Docker Image id: docker-push - uses: docker/build-push-action@5cd11c3a4ced054e52742c5fd54dca954e0edd85 # v6.7.0 + uses: docker/build-push-action@32945a339266b759abcbdc89316275140b0fc960 # v6.8.0 with: context: . platforms: linux/amd64,linux/arm64 @@ -97,7 +97,7 @@ jobs: - name: Build and Push Docker Image (wolfi) id: docker-push-wolfi - uses: docker/build-push-action@5cd11c3a4ced054e52742c5fd54dca954e0edd85 # v6.7.0 + uses: docker/build-push-action@32945a339266b759abcbdc89316275140b0fc960 # v6.8.0 with: context: . platforms: linux/amd64,linux/arm64 From 0bfcaf19fc2d9b1084aad3c3d03a82784bc036f2 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Fri, 4 Oct 2024 10:29:42 +0200 Subject: [PATCH 152/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to 90888b1 (#4257) Co-authored-by: elastic-renovate-prod[bot] <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 3c27567986..7a6e167f8f 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:5186816a1b676aa8d7f11f2a1faaf142348f0045a64bc3e8195c61b133496896 +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:90888b190da54062f67f3fef1372eb0ae7d81ea55f5a1f56d748b13e4853d984 ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 07c4ec40b020f92a0521b5ab722107f0befcb6ff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Oct 2024 12:21:31 +0200 Subject: [PATCH 153/396] chore(deps): bump import-in-the-middle from 1.11.1 to 1.11.2 (#4260) --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5635ab856f..6f920f9cf6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "fast-safe-stringify": "^2.0.7", "fast-stream-to-buffer": "^1.0.0", "http-headers": "^3.0.2", - "import-in-the-middle": "1.11.1", + "import-in-the-middle": "1.11.2", "json-bigint": "^1.0.0", "lru-cache": "10.2.0", "measured-reporting": "^1.51.1", @@ -10898,9 +10898,9 @@ } }, "node_modules/import-in-the-middle": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.1.tgz", - "integrity": "sha512-lGdg70ECFGv/OHQXL/IPhcxkFPeQ7YA4zborlA54XHVr58oM50QNxItRiayHMqj1MspC5Y9zaHf+QHod/gq7Ug==", + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.2.tgz", + "integrity": "sha512-gK6Rr6EykBcc6cVWRSBR5TWf8nn6hZMYSRYqCcHa0l0d1fPK7JSYo6+Mlmck76jIX9aL/IZ71c06U2VpFwl1zA==", "dependencies": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", @@ -24954,9 +24954,9 @@ } }, "import-in-the-middle": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.1.tgz", - "integrity": "sha512-lGdg70ECFGv/OHQXL/IPhcxkFPeQ7YA4zborlA54XHVr58oM50QNxItRiayHMqj1MspC5Y9zaHf+QHod/gq7Ug==", + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.2.tgz", + "integrity": "sha512-gK6Rr6EykBcc6cVWRSBR5TWf8nn6hZMYSRYqCcHa0l0d1fPK7JSYo6+Mlmck76jIX9aL/IZ71c06U2VpFwl1zA==", "requires": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", diff --git a/package.json b/package.json index 29dc3dfb9a..a62b012665 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "fast-safe-stringify": "^2.0.7", "fast-stream-to-buffer": "^1.0.0", "http-headers": "^3.0.2", - "import-in-the-middle": "1.11.1", + "import-in-the-middle": "1.11.2", "json-bigint": "^1.0.0", "lru-cache": "10.2.0", "measured-reporting": "^1.51.1", From cbdc892d0ed66309ac4c3efc70c18141ff75a06f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Oct 2024 12:27:16 +0200 Subject: [PATCH 154/396] chore(deps): bump cookie from 0.6.0 to 0.7.1 (#4261) --- package-lock.json | 46 +++++++++++++++++++++++++++++++++++++++------- package.json | 2 +- 2 files changed, 40 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6f920f9cf6..a186290c85 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "async-value-promise": "^1.1.1", "basic-auth": "^2.0.1", "breadth-filter": "^2.0.0", - "cookie": "^0.6.0", + "cookie": "^0.7.1", "core-util-is": "^1.0.2", "end-of-stream": "^1.4.4", "error-callsites": "^2.0.4", @@ -8015,9 +8015,9 @@ } }, "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "engines": { "node": ">= 0.6" } @@ -9599,6 +9599,15 @@ "node": ">=6" } }, + "node_modules/express/node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/express/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -12020,6 +12029,15 @@ "set-cookie-parser": "^2.6.0" } }, + "node_modules/light-my-request/node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -22768,9 +22786,9 @@ "dev": true }, "cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==" + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==" }, "cookie-signature": { "version": "1.0.6", @@ -23915,6 +23933,12 @@ "vary": "~1.1.2" }, "dependencies": { + "cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -25792,6 +25816,14 @@ "cookie": "^0.6.0", "process-warning": "^4.0.0", "set-cookie-parser": "^2.6.0" + }, + "dependencies": { + "cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true + } } }, "lodash": { diff --git a/package.json b/package.json index a62b012665..a095dee6c7 100644 --- a/package.json +++ b/package.json @@ -97,7 +97,7 @@ "async-value-promise": "^1.1.1", "basic-auth": "^2.0.1", "breadth-filter": "^2.0.0", - "cookie": "^0.6.0", + "cookie": "^0.7.1", "core-util-is": "^1.0.2", "end-of-stream": "^1.4.4", "error-callsites": "^2.0.4", From b272d7d0000596ea4e23c41bd388ae442fc602be Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Oct 2024 12:28:09 +0200 Subject: [PATCH 155/396] chore(deps): bump docker/build-push-action in the github-actions group (#4258) --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ed17a87123..c9c70d71b7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -63,7 +63,7 @@ jobs: - name: Build and Push Docker Image id: docker-push - uses: docker/build-push-action@32945a339266b759abcbdc89316275140b0fc960 # v6.8.0 + uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # v6.9.0 with: context: . platforms: linux/amd64,linux/arm64 @@ -97,7 +97,7 @@ jobs: - name: Build and Push Docker Image (wolfi) id: docker-push-wolfi - uses: docker/build-push-action@32945a339266b759abcbdc89316275140b0fc960 # v6.8.0 + uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # v6.9.0 with: context: . platforms: linux/amd64,linux/arm64 From ef1521c484e25cbfdad5e9088af211d9479df46b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 15:40:36 +0200 Subject: [PATCH 156/396] chore(deps): bump cookie from 0.7.1 to 0.7.2 (#4263) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index a186290c85..3612766885 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8015,9 +8015,9 @@ } }, "node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "engines": { "node": ">= 0.6" } @@ -22786,9 +22786,9 @@ "dev": true }, "cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==" + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==" }, "cookie-signature": { "version": "1.0.6", From aa638c5aa4e48d16dad3b69996127926ea24021b Mon Sep 17 00:00:00 2001 From: David Luna Date: Tue, 8 Oct 2024 16:49:51 +0200 Subject: [PATCH 157/396] release 4.8.0 (#4264) --- CHANGELOG.asciidoc | 10 +++------- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index d85e4c9087..e1f46faef5 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -33,10 +33,8 @@ Notes: See the <> guide. -==== Unreleased - -[float] -===== Breaking changes +[[release-notes-4.8.0]] +==== 4.8.0 - 2024/10/08 [float] ===== Features @@ -53,9 +51,7 @@ See the <> guide. [float] ===== Bug fixes -[float] -===== Chores - +- Update `cookie` to version `v0.7.2` to fix security issue [CVE-2024-47764](https://github.com/advisories/GHSA-pxg6-pf52-xh8x) [[release-notes-4.7.3]] ==== 4.7.3 - 2024/08/09 diff --git a/package-lock.json b/package-lock.json index 3612766885..635be1226b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "elastic-apm-node", - "version": "4.7.3", + "version": "4.8.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "elastic-apm-node", - "version": "4.7.3", + "version": "4.8.0", "license": "BSD-2-Clause", "dependencies": { "@elastic/ecs-pino-format": "^1.5.0", diff --git a/package.json b/package.json index a095dee6c7..7f8e792e99 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "elastic-apm-node", - "version": "4.7.3", + "version": "4.8.0", "description": "The official Elastic APM agent for Node.js", "type": "commonjs", "main": "index.js", From fbcf6e6d10880dce12ba1322e288153864c2b195 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Tue, 8 Oct 2024 22:34:01 +0200 Subject: [PATCH 158/396] github-actions: use ephemeral tokens (#4266) --- .github/workflows/addToProject.yml | 17 ++++++++++++++--- .github/workflows/labeler.yml | 12 +++++++++++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/.github/workflows/addToProject.yml b/.github/workflows/addToProject.yml index 0b5f098976..52611a9b9d 100644 --- a/.github/workflows/addToProject.yml +++ b/.github/workflows/addToProject.yml @@ -11,9 +11,20 @@ jobs: if: github.event.issue && github.event.issue.milestone runs-on: ubuntu-latest steps: + - name: Get token + id: get_token + uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a # v2.1.0 + with: + app_id: ${{ secrets.OBS_AUTOMATION_APP_ID }} + private_key: ${{ secrets.OBS_AUTOMATION_APP_PEM }} + permissions: >- + { + "organization_projects": "write", + "issues": "read" + } - name: Get project data env: - GITHUB_TOKEN: ${{ secrets.APM_TECH_USER_TOKEN }} + GITHUB_TOKEN: ${{ steps.get_token.outputs.token }} TEAM: Node.js ORGANIZATION: elastic PROJECT_NUMBER: 595 @@ -49,7 +60,7 @@ jobs: - name: Add issue to project env: - GITHUB_TOKEN: ${{ secrets.APM_TECH_USER_TOKEN }} + GITHUB_TOKEN: ${{ steps.get_token.outputs.token }} ISSUE_ID: ${{ github.event.issue.node_id }} run: | item_id="$( gh api graphql -f query=' @@ -65,7 +76,7 @@ jobs: - name: Set fields env: - GITHUB_TOKEN: ${{ secrets.APM_TECH_USER_TOKEN }} + GITHUB_TOKEN: ${{ steps.get_token.outputs.token }} run: | gh api graphql -f query=' mutation ( diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index 03adff114f..5539d304af 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -15,12 +15,22 @@ jobs: triage: runs-on: ubuntu-latest steps: + - name: Get token + id: get_token + uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a # v2.1.0 + with: + app_id: ${{ secrets.OBS_AUTOMATION_APP_ID }} + private_key: ${{ secrets.OBS_AUTOMATION_APP_PEM }} + permissions: >- + { + "members": "read" + } - id: is_elastic_member uses: elastic/oblt-actions/github/is-member-of@v1 with: github-org: "elastic" github-user: ${{ github.actor }} - github-token: ${{ secrets.APM_TECH_USER_TOKEN }} + github-token: ${{ steps.get_token.outputs.token }} - name: Add community and triage labels if: contains(steps.is_elastic_member.outputs.result, 'false') && github.actor != 'dependabot[bot]' From 7e54c0bdea34f74d0f5ba9e5c3dadaea804431dc Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2024 10:02:50 +0200 Subject: [PATCH 159/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to 277ebb4 (#4267) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 7a6e167f8f..5d1117ce88 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:90888b190da54062f67f3fef1372eb0ae7d81ea55f5a1f56d748b13e4853d984 +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:277ebb42c458ef39cb4028f9204f0b3d51d8cd628ea737a65696a1143c3e42fe ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 99eea99e5b384d53aff927ea17f514a00414f827 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2024 10:08:26 +0200 Subject: [PATCH 160/396] chore(deps-dev): bump express from 4.21.0 to 4.21.1 (#4271) --- package-lock.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 635be1226b..977a17ea18 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9517,9 +9517,9 @@ } }, "node_modules/express": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", - "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "dev": true, "dependencies": { "accepts": "~1.3.8", @@ -9527,7 +9527,7 @@ "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.6.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -9600,9 +9600,9 @@ } }, "node_modules/express/node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "dev": true, "engines": { "node": ">= 0.6" @@ -23895,9 +23895,9 @@ } }, "express": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", - "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "dev": true, "requires": { "accepts": "~1.3.8", @@ -23905,7 +23905,7 @@ "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.6.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -23934,9 +23934,9 @@ }, "dependencies": { "cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "dev": true }, "debug": { From 8bb7ccbb159a3d6c87378f95a559df1148f2b64c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2024 10:12:12 +0200 Subject: [PATCH 161/396] chore(deps-dev): bump undici from 6.19.8 to 6.20.0 (#4268) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 977a17ea18..a547b5c3f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15970,9 +15970,9 @@ } }, "node_modules/undici": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz", - "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.20.0.tgz", + "integrity": "sha512-AITZfPuxubm31Sx0vr8bteSalEbs9wQb/BOBi9FPlD9Qpd6HxZ4Q0+hI742jBhkPb4RT2v5MQzaW5VhRVyj+9A==", "dev": true, "engines": { "node": ">=18.17" @@ -28903,9 +28903,9 @@ "dev": true }, "undici": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz", - "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.20.0.tgz", + "integrity": "sha512-AITZfPuxubm31Sx0vr8bteSalEbs9wQb/BOBi9FPlD9Qpd6HxZ4Q0+hI742jBhkPb4RT2v5MQzaW5VhRVyj+9A==", "dev": true }, "undici-types": { From d3b03b6481f7952543133192309e776eac338b20 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2024 10:29:20 +0200 Subject: [PATCH 162/396] chore(deps-dev): bump typescript from 5.6.2 to 5.6.3 (#4270) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index a547b5c3f2..0bea5a2e03 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15921,9 +15921,9 @@ } }, "node_modules/typescript": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", - "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -28873,9 +28873,9 @@ } }, "typescript": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", - "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "dev": true }, "uglify-js": { From 80a6e91b70daf3cf26444c02be44843c07904c08 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2024 10:37:24 +0200 Subject: [PATCH 163/396] chore(deps-dev): bump the eslint group across 1 directory with 3 updates (#4269) Updates `eslint` from 9.9.1 to 9.12.0 Updates `eslint-plugin-import` from 2.29.1 to 2.31.0 Updates `eslint-plugin-n` from 17.10.2 to 17.11.1 --- package-lock.json | 475 ++++++++++++++++++++++++++++------------------ 1 file changed, 293 insertions(+), 182 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0bea5a2e03..d39f966e11 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4341,6 +4341,15 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/core": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.6.0.tgz", + "integrity": "sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", @@ -4399,9 +4408,9 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "9.9.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.1.tgz", - "integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==", + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.12.0.tgz", + "integrity": "sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4416,6 +4425,18 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz", + "integrity": "sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==", + "dev": true, + "dependencies": { + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@fastify/ajv-compiler": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-4.0.1.tgz", @@ -5015,6 +5036,28 @@ "integrity": "sha512-aKmlCO57XFZ26wso4rJsW4oTUnrgTFw2jh3io7CAtO9w4UltBNwRXvXIVzzyfkaaLRo3nluP/19msA8vDUUuKw==", "dev": true }, + "node_modules/@humanfs/core": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.0.tgz", + "integrity": "sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==", + "dev": true, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.5.tgz", + "integrity": "sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==", + "dev": true, + "dependencies": { + "@humanfs/core": "^0.19.0", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -5029,9 +5072,9 @@ } }, "node_modules/@humanwhocodes/retry": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", - "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", "dev": true, "engines": { "node": ">=18.18" @@ -5451,6 +5494,12 @@ "@redis/client": "^1.0.0" } }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true + }, "node_modules/@sideway/address": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", @@ -6243,6 +6292,12 @@ "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", "dev": true }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true + }, "node_modules/@types/express": { "version": "4.17.14", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", @@ -6282,6 +6337,12 @@ "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", "dev": true }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -6810,15 +6871,16 @@ "dev": true }, "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" }, "engines": { @@ -6857,16 +6919,17 @@ } }, "node_modules/array.prototype.findlastindex": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", - "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -8896,27 +8959,31 @@ } }, "node_modules/eslint": { - "version": "9.9.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.1.tgz", - "integrity": "sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==", + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.12.0.tgz", + "integrity": "sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.11.0", "@eslint/config-array": "^0.18.0", + "@eslint/core": "^0.6.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.9.1", + "@eslint/js": "9.12.0", + "@eslint/plugin-kit": "^0.2.0", + "@humanfs/node": "^0.16.5", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.3.0", - "@nodelib/fs.walk": "^1.2.8", + "@humanwhocodes/retry": "^0.3.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.0.2", - "eslint-visitor-keys": "^4.0.0", - "espree": "^10.1.0", + "eslint-scope": "^8.1.0", + "eslint-visitor-keys": "^4.1.0", + "espree": "^10.2.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -8926,14 +8993,11 @@ "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", "text-table": "^0.2.0" }, "bin": { @@ -8999,9 +9063,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", "dev": true, "dependencies": { "debug": "^3.2.7" @@ -9045,34 +9109,36 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "dev": true, "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", "array.prototype.flat": "^1.3.2", "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, "node_modules/eslint-plugin-import/node_modules/debug": { @@ -9115,9 +9181,9 @@ } }, "node_modules/eslint-plugin-n": { - "version": "17.10.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.10.2.tgz", - "integrity": "sha512-e+s4eAf5NtJaxPhTNu3qMO0Iz40WANS93w9LQgYcvuljgvDmWi/a3rh+OrNyMHeng6aOWGJO0rCg5lH4zi8yTw==", + "version": "17.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.11.1.tgz", + "integrity": "sha512-93IUD82N6tIEgjztVI/l3ElHtC2wTa9boJHrD8iN+NyDxjxz/daZUZKfkedjBZNdg6EqDk4irybUsiPwDqXAEA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", @@ -9221,9 +9287,9 @@ } }, "node_modules/eslint-scope": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", - "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", + "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -9237,9 +9303,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", - "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", + "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -9423,14 +9489,14 @@ } }, "node_modules/espree": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", - "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", + "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", "dev": true, "dependencies": { "acorn": "^8.12.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.0.0" + "eslint-visitor-keys": "^4.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11099,11 +11165,14 @@ } }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11272,15 +11341,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-promise": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", @@ -13059,14 +13119,15 @@ } }, "node_modules/object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -13076,26 +13137,28 @@ } }, "node_modules/object.groupby": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -19726,6 +19789,12 @@ "minimatch": "^3.1.2" } }, + "@eslint/core": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.6.0.tgz", + "integrity": "sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==", + "dev": true + }, "@eslint/eslintrc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", @@ -19770,9 +19839,9 @@ } }, "@eslint/js": { - "version": "9.9.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.1.tgz", - "integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==", + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.12.0.tgz", + "integrity": "sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==", "dev": true }, "@eslint/object-schema": { @@ -19781,6 +19850,15 @@ "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", "dev": true }, + "@eslint/plugin-kit": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz", + "integrity": "sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==", + "dev": true, + "requires": { + "levn": "^0.4.1" + } + }, "@fastify/ajv-compiler": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-4.0.1.tgz", @@ -20405,6 +20483,22 @@ } } }, + "@humanfs/core": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.0.tgz", + "integrity": "sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==", + "dev": true + }, + "@humanfs/node": { + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.5.tgz", + "integrity": "sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==", + "dev": true, + "requires": { + "@humanfs/core": "^0.19.0", + "@humanwhocodes/retry": "^0.3.0" + } + }, "@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -20412,9 +20506,9 @@ "dev": true }, "@humanwhocodes/retry": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz", - "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", "dev": true }, "@ioredis/commands": { @@ -20744,6 +20838,12 @@ "integrity": "sha512-c1Q99M5ljsIuc4YdaCwfUEXsofakb9c8+Zse2qxTadu8TalLXuAESzLvFAvNVbkmSlvlzIQOLpBCmWI9wTOt+g==", "dev": true }, + "@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true + }, "@sideway/address": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", @@ -21406,6 +21506,12 @@ "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", "dev": true }, + "@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true + }, "@types/express": { "version": "4.17.14", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", @@ -21445,6 +21551,12 @@ "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", "dev": true }, + "@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -21863,15 +21975,16 @@ "dev": true }, "array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" } }, @@ -21895,16 +22008,17 @@ } }, "array.prototype.findlastindex": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", - "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" } }, "array.prototype.flat": { @@ -23466,27 +23580,31 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.9.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.1.tgz", - "integrity": "sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==", + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.12.0.tgz", + "integrity": "sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.11.0", "@eslint/config-array": "^0.18.0", + "@eslint/core": "^0.6.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.9.1", + "@eslint/js": "9.12.0", + "@eslint/plugin-kit": "^0.2.0", + "@humanfs/node": "^0.16.5", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.3.0", - "@nodelib/fs.walk": "^1.2.8", + "@humanwhocodes/retry": "^0.3.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.0.2", - "eslint-visitor-keys": "^4.0.0", - "espree": "^10.1.0", + "eslint-scope": "^8.1.0", + "eslint-visitor-keys": "^4.1.0", + "espree": "^10.2.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -23496,14 +23614,11 @@ "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", "text-table": "^0.2.0" }, "dependencies": { @@ -23657,9 +23772,9 @@ } }, "eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", "dev": true, "requires": { "debug": "^3.2.7" @@ -23688,27 +23803,29 @@ } }, "eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "dev": true, "requires": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", "array.prototype.flat": "^1.3.2", "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", "tsconfig-paths": "^3.15.0" }, "dependencies": { @@ -23748,9 +23865,9 @@ } }, "eslint-plugin-n": { - "version": "17.10.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.10.2.tgz", - "integrity": "sha512-e+s4eAf5NtJaxPhTNu3qMO0Iz40WANS93w9LQgYcvuljgvDmWi/a3rh+OrNyMHeng6aOWGJO0rCg5lH4zi8yTw==", + "version": "17.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.11.1.tgz", + "integrity": "sha512-93IUD82N6tIEgjztVI/l3ElHtC2wTa9boJHrD8iN+NyDxjxz/daZUZKfkedjBZNdg6EqDk4irybUsiPwDqXAEA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", @@ -23806,9 +23923,9 @@ "dev": true }, "eslint-scope": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz", - "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", + "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -23816,9 +23933,9 @@ } }, "eslint-visitor-keys": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", - "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", + "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", "dev": true }, "esm": { @@ -23828,14 +23945,14 @@ "dev": true }, "espree": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", - "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", + "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", "dev": true, "requires": { "acorn": "^8.12.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.0.0" + "eslint-visitor-keys": "^4.1.0" } }, "esquery": { @@ -25115,11 +25232,11 @@ } }, "is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "requires": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" } }, "is-data-view": { @@ -25224,12 +25341,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, "is-promise": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", @@ -26618,37 +26729,37 @@ } }, "object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" } }, "object.groupby": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" } }, "object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "obliterator": { From 4f007d33957d62a56eb72825e36721437607c71c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 15 Oct 2024 09:35:17 +0200 Subject: [PATCH 164/396] chore(deps): bump next from 12.3.1 to 14.2.10 in /examples/nextjs (#4273) --- examples/nextjs/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 45168c859e..39744d2409 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "elastic-apm-node": "elastic/apm-agent-nodejs#main", - "next": "12.3.1", + "next": "14.2.10", "react": "18.2.0", "react-dom": "18.2.0" }, From 63e9c1eeca1961cd9b7883b58219c4a8439c7b5d Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 16:13:07 +0200 Subject: [PATCH 165/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to bf163e1 (#4274) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 5d1117ce88..ebcba12317 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:277ebb42c458ef39cb4028f9204f0b3d51d8cd628ea737a65696a1143c3e42fe +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:bf163e1977002301f7b9fd28fe6837a8cb2dd5c83e4cd45fb67fb28d15d5d40f ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 348312593ae59612cd82f4cedc9dc4675a459500 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 16:16:32 +0200 Subject: [PATCH 166/396] chore(deps-dev): bump eslint from 9.12.0 to 9.13.0 in the eslint group (#4275) --- package-lock.json | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index d39f966e11..7bfc4dc3bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4342,9 +4342,9 @@ } }, "node_modules/@eslint/core": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.6.0.tgz", - "integrity": "sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", + "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4408,9 +4408,9 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.12.0.tgz", - "integrity": "sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==", + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.13.0.tgz", + "integrity": "sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8959,17 +8959,17 @@ } }, "node_modules/eslint": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.12.0.tgz", - "integrity": "sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==", + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.13.0.tgz", + "integrity": "sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.11.0", "@eslint/config-array": "^0.18.0", - "@eslint/core": "^0.6.0", + "@eslint/core": "^0.7.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.12.0", + "@eslint/js": "9.13.0", "@eslint/plugin-kit": "^0.2.0", "@humanfs/node": "^0.16.5", "@humanwhocodes/module-importer": "^1.0.1", @@ -19790,9 +19790,9 @@ } }, "@eslint/core": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.6.0.tgz", - "integrity": "sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", + "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", "dev": true }, "@eslint/eslintrc": { @@ -19839,9 +19839,9 @@ } }, "@eslint/js": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.12.0.tgz", - "integrity": "sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==", + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.13.0.tgz", + "integrity": "sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==", "dev": true }, "@eslint/object-schema": { @@ -23580,17 +23580,17 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.12.0.tgz", - "integrity": "sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==", + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.13.0.tgz", + "integrity": "sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.11.0", "@eslint/config-array": "^0.18.0", - "@eslint/core": "^0.6.0", + "@eslint/core": "^0.7.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.12.0", + "@eslint/js": "9.13.0", "@eslint/plugin-kit": "^0.2.0", "@humanfs/node": "^0.16.5", "@humanwhocodes/module-importer": "^1.0.1", From 49cc1aded4519473e94065519090a3f3ed8a3daf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 16:17:57 +0200 Subject: [PATCH 167/396] chore(deps-dev): bump undici from 6.20.0 to 6.20.1 (#4276) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7bfc4dc3bf..3fc471c356 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16033,9 +16033,9 @@ } }, "node_modules/undici": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.20.0.tgz", - "integrity": "sha512-AITZfPuxubm31Sx0vr8bteSalEbs9wQb/BOBi9FPlD9Qpd6HxZ4Q0+hI742jBhkPb4RT2v5MQzaW5VhRVyj+9A==", + "version": "6.20.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.20.1.tgz", + "integrity": "sha512-AjQF1QsmqfJys+LXfGTNum+qw4S88CojRInG/6t31W/1fk6G59s92bnAvGz5Cmur+kQv2SURXEvvudLmbrE8QA==", "dev": true, "engines": { "node": ">=18.17" @@ -29014,9 +29014,9 @@ "dev": true }, "undici": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.20.0.tgz", - "integrity": "sha512-AITZfPuxubm31Sx0vr8bteSalEbs9wQb/BOBi9FPlD9Qpd6HxZ4Q0+hI742jBhkPb4RT2v5MQzaW5VhRVyj+9A==", + "version": "6.20.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.20.1.tgz", + "integrity": "sha512-AjQF1QsmqfJys+LXfGTNum+qw4S88CojRInG/6t31W/1fk6G59s92bnAvGz5Cmur+kQv2SURXEvvudLmbrE8QA==", "dev": true }, "undici-types": { From fba492649e0467d40550f8faddc24d03a53bfc71 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Oct 2024 12:15:47 +0200 Subject: [PATCH 168/396] chore(deps-dev): bump @elastic/elasticsearch from 8.15.0 to 8.15.1 (#4277) --- package-lock.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3fc471c356..85b04034f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4255,12 +4255,12 @@ } }, "node_modules/@elastic/elasticsearch": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.15.0.tgz", - "integrity": "sha512-mG90EMdTDoT6GFSdqpUAhWK9LGuiJo6tOWqs0Usd/t15mPQDj7ZqHXfCBqNkASZpwPZpbAYVjd57S6nbUBINCg==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.15.1.tgz", + "integrity": "sha512-L3YzSaxrasMMGtcxnktiUDjS5f177L0zpHsBH+jL0LgPhdMk9xN/VKrAaYzvri86IlV5IbveA0ANV6o/BDUmhQ==", "dev": true, "dependencies": { - "@elastic/transport": "^8.7.0", + "@elastic/transport": "^8.8.1", "tslib": "^2.4.0" }, "engines": { @@ -4268,9 +4268,9 @@ } }, "node_modules/@elastic/transport": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.7.0.tgz", - "integrity": "sha512-IqXT7a8DZPJtqP2qmX1I2QKmxYyN27kvSW4g6pInESE1SuGwZDp2FxHJ6W2kwmYOJwQdAt+2aWwzXO5jHo9l4A==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.8.1.tgz", + "integrity": "sha512-4RQIiChwNIx3B0O+2JdmTq/Qobj6+1g2RQnSv1gt4V2SVfAYjGwOKu0ZMKEHQOXYNG6+j/Chero2G9k3/wXLEw==", "dev": true, "dependencies": { "@opentelemetry/api": "1.x", @@ -19723,19 +19723,19 @@ } }, "@elastic/elasticsearch": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.15.0.tgz", - "integrity": "sha512-mG90EMdTDoT6GFSdqpUAhWK9LGuiJo6tOWqs0Usd/t15mPQDj7ZqHXfCBqNkASZpwPZpbAYVjd57S6nbUBINCg==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.15.1.tgz", + "integrity": "sha512-L3YzSaxrasMMGtcxnktiUDjS5f177L0zpHsBH+jL0LgPhdMk9xN/VKrAaYzvri86IlV5IbveA0ANV6o/BDUmhQ==", "dev": true, "requires": { - "@elastic/transport": "^8.7.0", + "@elastic/transport": "^8.8.1", "tslib": "^2.4.0" } }, "@elastic/transport": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.7.0.tgz", - "integrity": "sha512-IqXT7a8DZPJtqP2qmX1I2QKmxYyN27kvSW4g6pInESE1SuGwZDp2FxHJ6W2kwmYOJwQdAt+2aWwzXO5jHo9l4A==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.8.1.tgz", + "integrity": "sha512-4RQIiChwNIx3B0O+2JdmTq/Qobj6+1g2RQnSv1gt4V2SVfAYjGwOKu0ZMKEHQOXYNG6+j/Chero2G9k3/wXLEw==", "dev": true, "requires": { "@opentelemetry/api": "1.x", From f8130b69f6a3944102c83efd3feb82bae80ed151 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Tue, 22 Oct 2024 16:03:02 +0200 Subject: [PATCH 169/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to 2e3da56 (#4278) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index ebcba12317..8319610f28 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:bf163e1977002301f7b9fd28fe6837a8cb2dd5c83e4cd45fb67fb28d15d5d40f +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:2e3da56229f5673b149191a5451bb4c6ead117a307b0cc98c7a0651ca6f4523e ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 9535d6bb55802e26228ad022c113c1df7ef1a0c9 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 12:17:16 +0100 Subject: [PATCH 170/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to de4d5b0 (#4279) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 8319610f28..dfe9920c22 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:2e3da56229f5673b149191a5451bb4c6ead117a307b0cc98c7a0651ca6f4523e +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:de4d5b06ee2074eb716f29e72b170346fd4715e5f083fc83a378603ce5bd9ced ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 0fd808a6d3ea022a2da02c0428bedbfde86f0d4b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 12:18:34 +0100 Subject: [PATCH 171/396] chore(deps): bump @opentelemetry/sdk-metrics from 1.26.0 to 1.27.0 in /test/opentelemetry-metrics/fixtures (#4280) --- .../fixtures/package-lock.json | 96 ++++++++++++++++--- .../fixtures/package.json | 2 +- 2 files changed, 86 insertions(+), 12 deletions(-) diff --git a/test/opentelemetry-metrics/fixtures/package-lock.json b/test/opentelemetry-metrics/fixtures/package-lock.json index 55a609f244..26bcd9bbef 100644 --- a/test/opentelemetry-metrics/fixtures/package-lock.json +++ b/test/opentelemetry-metrics/fixtures/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/exporter-prometheus": ">=0.41.2 <2", - "@opentelemetry/sdk-metrics": "^1.24.1" + "@opentelemetry/sdk-metrics": "^1.27.0" } }, "node_modules/@opentelemetry/api": { @@ -51,6 +51,21 @@ "@opentelemetry/api": "^1.3.0" } }, + "node_modules/@opentelemetry/exporter-prometheus/node_modules/@opentelemetry/sdk-metrics": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.26.0.tgz", + "integrity": "sha512-0SvDXmou/JjzSDOjUmetAAvcKQW6ZrvosU0rkbDGpXvvZN+pQF6JbK/Kd4hNdK4q/22yeruqvukXEJyySTzyTQ==", + "dependencies": { + "@opentelemetry/core": "1.26.0", + "@opentelemetry/resources": "1.26.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, "node_modules/@opentelemetry/resources": { "version": "1.26.0", "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.26.0.tgz", @@ -67,12 +82,12 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.26.0.tgz", - "integrity": "sha512-0SvDXmou/JjzSDOjUmetAAvcKQW6ZrvosU0rkbDGpXvvZN+pQF6JbK/Kd4hNdK4q/22yeruqvukXEJyySTzyTQ==", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.27.0.tgz", + "integrity": "sha512-JzWgzlutoXCydhHWIbLg+r76m+m3ncqvkCcsswXAQ4gqKS+LOHKhq+t6fx1zNytvLuaOUBur7EvWxECc4jPQKg==", "dependencies": { - "@opentelemetry/core": "1.26.0", - "@opentelemetry/resources": "1.26.0" + "@opentelemetry/core": "1.27.0", + "@opentelemetry/resources": "1.27.0" }, "engines": { "node": ">=14" @@ -81,6 +96,35 @@ "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, + "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/core": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", + "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/resources": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.27.0.tgz", + "integrity": "sha512-jOwt2VJ/lUD5BLc+PMNymDrUCpm5PKi1E9oSVYAvz01U/VdndGmrtV3DU1pG4AwlYhJRHbHfOUIlpBeXCPw6QQ==", + "dependencies": { + "@opentelemetry/core": "1.27.0", + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, "node_modules/@opentelemetry/semantic-conventions": { "version": "1.27.0", "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", @@ -112,6 +156,17 @@ "@opentelemetry/core": "1.26.0", "@opentelemetry/resources": "1.26.0", "@opentelemetry/sdk-metrics": "1.26.0" + }, + "dependencies": { + "@opentelemetry/sdk-metrics": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.26.0.tgz", + "integrity": "sha512-0SvDXmou/JjzSDOjUmetAAvcKQW6ZrvosU0rkbDGpXvvZN+pQF6JbK/Kd4hNdK4q/22yeruqvukXEJyySTzyTQ==", + "requires": { + "@opentelemetry/core": "1.26.0", + "@opentelemetry/resources": "1.26.0" + } + } } }, "@opentelemetry/resources": { @@ -124,12 +179,31 @@ } }, "@opentelemetry/sdk-metrics": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.26.0.tgz", - "integrity": "sha512-0SvDXmou/JjzSDOjUmetAAvcKQW6ZrvosU0rkbDGpXvvZN+pQF6JbK/Kd4hNdK4q/22yeruqvukXEJyySTzyTQ==", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.27.0.tgz", + "integrity": "sha512-JzWgzlutoXCydhHWIbLg+r76m+m3ncqvkCcsswXAQ4gqKS+LOHKhq+t6fx1zNytvLuaOUBur7EvWxECc4jPQKg==", "requires": { - "@opentelemetry/core": "1.26.0", - "@opentelemetry/resources": "1.26.0" + "@opentelemetry/core": "1.27.0", + "@opentelemetry/resources": "1.27.0" + }, + "dependencies": { + "@opentelemetry/core": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", + "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", + "requires": { + "@opentelemetry/semantic-conventions": "1.27.0" + } + }, + "@opentelemetry/resources": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.27.0.tgz", + "integrity": "sha512-jOwt2VJ/lUD5BLc+PMNymDrUCpm5PKi1E9oSVYAvz01U/VdndGmrtV3DU1pG4AwlYhJRHbHfOUIlpBeXCPw6QQ==", + "requires": { + "@opentelemetry/core": "1.27.0", + "@opentelemetry/semantic-conventions": "1.27.0" + } + } } }, "@opentelemetry/semantic-conventions": { diff --git a/test/opentelemetry-metrics/fixtures/package.json b/test/opentelemetry-metrics/fixtures/package.json index 23b6226222..33d1b1ee7e 100644 --- a/test/opentelemetry-metrics/fixtures/package.json +++ b/test/opentelemetry-metrics/fixtures/package.json @@ -5,6 +5,6 @@ "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/exporter-prometheus": ">=0.41.2 <2", - "@opentelemetry/sdk-metrics": "^1.24.1" + "@opentelemetry/sdk-metrics": "^1.27.0" } } From 2e043d02464b1e7a4fa7f9bddeca2247f8567f30 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 12:46:20 +0100 Subject: [PATCH 172/396] chore(deps-dev): bump the babel group with 2 updates (#4282) Updates `@babel/core` from 7.25.2 to 7.26.0 Updates `@babel/preset-env` from 7.25.0 to 7.26.0 --- package-lock.json | 2718 ++++++++++++++++++--------------------------- 1 file changed, 1105 insertions(+), 1613 deletions(-) diff --git a/package-lock.json b/package-lock.json index 85b04034f6..e16eaf39ae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2479,12 +2479,13 @@ "dev": true }, "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.0.tgz", + "integrity": "sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==", "dev": true, "dependencies": { - "@babel/highlight": "^7.24.7", + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", "picocolors": "^1.0.0" }, "engines": { @@ -2492,30 +2493,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz", - "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.0.tgz", + "integrity": "sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -2546,15 +2547,16 @@ } }, "node_modules/@babel/generator": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", - "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.0.tgz", + "integrity": "sha512-/AIkAmInnWwgEAJGQr9vY0c66Mj6kjkE2ZPB1PurTRaRAh3U+J45sAQMjQDJdh4WbR3l0x5xkimXBKyBXXAu2w==", "dev": true, "dependencies": { - "@babel/types": "^7.25.0", + "@babel/parser": "^7.26.0", + "@babel/types": "^7.26.0", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" @@ -2575,39 +2577,39 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "dev": true, "dependencies": { - "@babel/types": "^7.24.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", - "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz", + "integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==", "dev": true, "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", - "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.25.2", - "@babel/helper-validator-option": "^7.24.8", - "browserslist": "^4.23.1", + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -2640,17 +2642,17 @@ "dev": true }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz", - "integrity": "sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.8", - "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/helper-replace-supers": "^7.25.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/traverse": "^7.25.0", + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", "semver": "^6.3.1" }, "engines": { @@ -2670,13 +2672,13 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.0.tgz", - "integrity": "sha512-q0T+dknZS+L5LDazIP+02gEZITG5unzvb6yIjcmj5i0eFrs5ToBV2m2JGH4EsE/gtP8ygEGLGApBgRIZkTm7zg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz", + "integrity": "sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "regexpu-core": "^5.3.1", + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.1.1", "semver": "^6.3.1" }, "engines": { @@ -2712,41 +2714,40 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", - "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", "dev": true, "dependencies": { - "@babel/traverse": "^7.24.8", - "@babel/types": "^7.24.8" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "dev": true, "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", - "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "@babel/traverse": "^7.25.2" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2756,35 +2757,35 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", - "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", "dev": true, "dependencies": { - "@babel/types": "^7.24.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", - "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", - "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", + "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-wrap-function": "^7.25.0", - "@babel/traverse": "^7.25.0" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-wrap-function": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2794,14 +2795,14 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", - "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", + "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.24.8", - "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/traverse": "^7.25.0" + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2811,107 +2812,92 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz", + "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==", "dev": true, "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", - "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", "dev": true, "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", - "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", - "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", - "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", + "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", "dev": true, "dependencies": { - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.0", - "@babel/types": "^7.25.0" + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", - "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", "dev": true, "dependencies": { - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", - "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", + "version": "7.26.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.1.tgz", + "integrity": "sha512-reoQYNiAJreZNsJzyrDNzFQ+IQ5JFiIzAHJg9bn94S3l+4++J7RsIhNMoB+lgP/9tpmiAQqspv+xfdxTSzREOw==", "dev": true, "dependencies": { - "@babel/types": "^7.25.2" + "@babel/types": "^7.26.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -2921,13 +2907,13 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.0.tgz", - "integrity": "sha512-dG0aApncVQwAUJa8tP1VHTnmU67BeIQvKafd3raEx315H54FfkZSz3B/TT+33ZQAjatGJA79gZqTtqL5QZUKXw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/traverse": "^7.25.0" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2937,12 +2923,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", - "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", + "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2952,12 +2938,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", - "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2967,14 +2953,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", - "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2984,13 +2970,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", - "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/traverse": "^7.25.0" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3011,76 +2997,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", - "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3090,138 +3013,12 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", - "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3247,12 +3044,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", - "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3262,15 +3059,14 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz", - "integrity": "sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", + "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-remap-async-to-generator": "^7.25.0", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/traverse": "^7.25.0" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3280,14 +3076,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", - "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-remap-async-to-generator": "^7.24.7" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3297,12 +3093,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", - "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz", + "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3312,12 +3108,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", - "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", + "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3327,13 +3123,13 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", - "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", + "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3343,14 +3139,13 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", - "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3360,16 +3155,16 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz", - "integrity": "sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-replace-supers": "^7.25.0", - "@babel/traverse": "^7.25.0", + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/traverse": "^7.25.9", "globals": "^11.1.0" }, "engines": { @@ -3380,13 +3175,13 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", - "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/template": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3396,12 +3191,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", - "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3411,13 +3206,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", - "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3427,12 +3222,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", - "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3442,13 +3237,13 @@ } }, "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", - "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.0", - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3458,13 +3253,12 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", - "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3474,13 +3268,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", - "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz", + "integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3490,13 +3284,12 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", - "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3506,13 +3299,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", - "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", + "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3522,14 +3315,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.25.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", - "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/traverse": "^7.25.1" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3539,13 +3332,12 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", - "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3555,12 +3347,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", - "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3570,13 +3362,12 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", - "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3586,12 +3377,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", - "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3601,13 +3392,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", - "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3617,14 +3408,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", - "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz", + "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-simple-access": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-simple-access": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3634,15 +3425,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", - "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.25.0", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "@babel/traverse": "^7.25.0" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3652,13 +3443,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", - "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3668,13 +3459,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", - "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3684,12 +3475,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", - "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3699,13 +3490,12 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", - "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz", + "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3715,13 +3505,12 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", - "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3731,15 +3520,14 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", - "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", + "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.7" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3749,13 +3537,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", - "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-replace-supers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3765,13 +3553,12 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", - "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3781,14 +3568,13 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", - "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3798,12 +3584,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", - "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3813,13 +3599,13 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", - "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3829,15 +3615,14 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", - "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3847,12 +3632,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", - "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3862,12 +3647,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", - "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", + "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-plugin-utils": "^7.25.9", "regenerator-transform": "^0.15.2" }, "engines": { @@ -3877,13 +3662,29 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", + "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", - "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3893,12 +3694,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", - "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3908,13 +3709,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", - "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3924,12 +3725,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", - "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3939,12 +3740,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", - "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", + "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3954,12 +3755,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", - "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", + "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3969,12 +3770,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", - "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3984,13 +3785,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", - "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -4000,13 +3801,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", - "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -4016,13 +3817,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", - "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -4032,93 +3833,79 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.0.tgz", - "integrity": "sha512-vYAA8PrCOeZfG4D87hmw1KJ1BPubghXP1e2MacRFwECGNKL76dkA38JEwYllbvQCpf/kLxsTtir0b8MtxKoVCw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.25.0", - "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-validator-option": "^7.24.8", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.0", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", + "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.24.7", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@babel/plugin-syntax-import-attributes": "^7.26.0", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.24.7", - "@babel/plugin-transform-async-generator-functions": "^7.25.0", - "@babel/plugin-transform-async-to-generator": "^7.24.7", - "@babel/plugin-transform-block-scoped-functions": "^7.24.7", - "@babel/plugin-transform-block-scoping": "^7.25.0", - "@babel/plugin-transform-class-properties": "^7.24.7", - "@babel/plugin-transform-class-static-block": "^7.24.7", - "@babel/plugin-transform-classes": "^7.25.0", - "@babel/plugin-transform-computed-properties": "^7.24.7", - "@babel/plugin-transform-destructuring": "^7.24.8", - "@babel/plugin-transform-dotall-regex": "^7.24.7", - "@babel/plugin-transform-duplicate-keys": "^7.24.7", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", - "@babel/plugin-transform-dynamic-import": "^7.24.7", - "@babel/plugin-transform-exponentiation-operator": "^7.24.7", - "@babel/plugin-transform-export-namespace-from": "^7.24.7", - "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.25.0", - "@babel/plugin-transform-json-strings": "^7.24.7", - "@babel/plugin-transform-literals": "^7.24.7", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", - "@babel/plugin-transform-member-expression-literals": "^7.24.7", - "@babel/plugin-transform-modules-amd": "^7.24.7", - "@babel/plugin-transform-modules-commonjs": "^7.24.8", - "@babel/plugin-transform-modules-systemjs": "^7.25.0", - "@babel/plugin-transform-modules-umd": "^7.24.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", - "@babel/plugin-transform-new-target": "^7.24.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", - "@babel/plugin-transform-numeric-separator": "^7.24.7", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/plugin-transform-object-super": "^7.24.7", - "@babel/plugin-transform-optional-catch-binding": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.8", - "@babel/plugin-transform-parameters": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.24.7", - "@babel/plugin-transform-private-property-in-object": "^7.24.7", - "@babel/plugin-transform-property-literals": "^7.24.7", - "@babel/plugin-transform-regenerator": "^7.24.7", - "@babel/plugin-transform-reserved-words": "^7.24.7", - "@babel/plugin-transform-shorthand-properties": "^7.24.7", - "@babel/plugin-transform-spread": "^7.24.7", - "@babel/plugin-transform-sticky-regex": "^7.24.7", - "@babel/plugin-transform-template-literals": "^7.24.7", - "@babel/plugin-transform-typeof-symbol": "^7.24.8", - "@babel/plugin-transform-unicode-escapes": "^7.24.7", - "@babel/plugin-transform-unicode-property-regex": "^7.24.7", - "@babel/plugin-transform-unicode-regex": "^7.24.7", - "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.25.9", + "@babel/plugin-transform-async-to-generator": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.25.9", + "@babel/plugin-transform-block-scoping": "^7.25.9", + "@babel/plugin-transform-class-properties": "^7.25.9", + "@babel/plugin-transform-class-static-block": "^7.26.0", + "@babel/plugin-transform-classes": "^7.25.9", + "@babel/plugin-transform-computed-properties": "^7.25.9", + "@babel/plugin-transform-destructuring": "^7.25.9", + "@babel/plugin-transform-dotall-regex": "^7.25.9", + "@babel/plugin-transform-duplicate-keys": "^7.25.9", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-dynamic-import": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.25.9", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.25.9", + "@babel/plugin-transform-function-name": "^7.25.9", + "@babel/plugin-transform-json-strings": "^7.25.9", + "@babel/plugin-transform-literals": "^7.25.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", + "@babel/plugin-transform-member-expression-literals": "^7.25.9", + "@babel/plugin-transform-modules-amd": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-modules-systemjs": "^7.25.9", + "@babel/plugin-transform-modules-umd": "^7.25.9", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-new-target": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", + "@babel/plugin-transform-numeric-separator": "^7.25.9", + "@babel/plugin-transform-object-rest-spread": "^7.25.9", + "@babel/plugin-transform-object-super": "^7.25.9", + "@babel/plugin-transform-optional-catch-binding": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9", + "@babel/plugin-transform-private-methods": "^7.25.9", + "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@babel/plugin-transform-property-literals": "^7.25.9", + "@babel/plugin-transform-regenerator": "^7.25.9", + "@babel/plugin-transform-regexp-modifiers": "^7.26.0", + "@babel/plugin-transform-reserved-words": "^7.25.9", + "@babel/plugin-transform-shorthand-properties": "^7.25.9", + "@babel/plugin-transform-spread": "^7.25.9", + "@babel/plugin-transform-sticky-regex": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.25.9", + "@babel/plugin-transform-typeof-symbol": "^7.25.9", + "@babel/plugin-transform-unicode-escapes": "^7.25.9", + "@babel/plugin-transform-unicode-property-regex": "^7.25.9", + "@babel/plugin-transform-unicode-regex": "^7.25.9", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.37.1", + "core-js-compat": "^3.38.1", "semver": "^6.3.1" }, "engines": { @@ -4151,16 +3938,10 @@ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true - }, "node_modules/@babel/runtime": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz", - "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" @@ -4170,30 +3951,30 @@ } }, "node_modules/@babel/template": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", - "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.25.0", - "@babel/types": "^7.25.0" + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz", - "integrity": "sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", + "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.2", + "@babel/code-frame": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/template": "^7.25.9", + "@babel/types": "^7.25.9", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -4202,14 +3983,13 @@ } }, "node_modules/@babel/types": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", - "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -6657,18 +6437,6 @@ "node": ">=8" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -7216,13 +6984,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", - "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.1", - "core-js-compat": "^3.36.1" + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -7530,9 +7298,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", - "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", "dev": true, "funding": [ { @@ -7549,10 +7317,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001640", - "electron-to-chromium": "^1.4.820", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.1.0" + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -7670,9 +7438,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001643", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz", - "integrity": "sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==", + "version": "1.0.30001673", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001673.tgz", + "integrity": "sha512-WTrjUCSMp3LYX0nE12ECkV0a+e6LC85E0Auz75555/qr78Oc8YWhEPNfDd6SHdtlCMSzqtuXY0uyEMNRcsKpKw==", "dev": true, "funding": [ { @@ -7726,29 +7494,6 @@ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", "dev": true }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/character-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", @@ -8120,12 +7865,12 @@ "dev": true }, "node_modules/core-js-compat": { - "version": "3.37.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", - "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", + "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", "dev": true, "dependencies": { - "browserslist": "^4.23.0" + "browserslist": "^4.23.3" }, "funding": { "type": "opencollective", @@ -8716,9 +8461,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.2.tgz", - "integrity": "sha512-kc4r3U3V3WLaaZqThjYz/Y6z8tJe+7K0bbjUVo3i+LWIypVdMx5nXCkwRe6SWbY6ILqLdc1rKcKmr3HoH7wjSQ==", + "version": "1.5.47", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.47.tgz", + "integrity": "sha512-zS5Yer0MOYw4rtK2iq43cJagHZ8sXN0jDHDKzB+86gSBSAI4v07S97mcq+Gs2vclAxSh1j7vOAHxSVgduiiuVQ==", "dev": true }, "node_modules/enabled": { @@ -8927,9 +8672,9 @@ } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "engines": { "node": ">=6" @@ -10680,15 +10425,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/has-property-descriptors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", @@ -11633,15 +11369,15 @@ "dev": true }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true, "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json": { @@ -13490,9 +13226,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true }, "node_modules/picomatch": { @@ -14224,9 +13960,9 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", "dev": true, "dependencies": { "regenerate": "^1.4.2" @@ -14268,15 +14004,15 @@ } }, "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz", + "integrity": "sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==", "dev": true, "dependencies": { - "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.11.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" }, @@ -14284,27 +14020,24 @@ "node": ">=4" } }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true + }, "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.2.tgz", + "integrity": "sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==", "dev": true, "dependencies": { - "jsesc": "~0.5.0" + "jsesc": "~3.0.2" }, "bin": { "regjsparser": "bin/parser" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, "node_modules/relative-microtime": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/relative-microtime/-/relative-microtime-2.0.0.tgz", @@ -15465,18 +15198,6 @@ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "dev": true }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -15751,15 +15472,6 @@ "node": ">=8" } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -16057,9 +15769,9 @@ } }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true, "engines": { "node": ">=4" @@ -16079,9 +15791,9 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", "dev": true, "engines": { "node": ">=4" @@ -16111,9 +15823,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "dev": true, "funding": [ { @@ -16130,8 +15842,8 @@ } ], "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" }, "bin": { "update-browserslist-db": "cli.js" @@ -18485,37 +18197,38 @@ } }, "@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.0.tgz", + "integrity": "sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==", "dev": true, "requires": { - "@babel/highlight": "^7.24.7", + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", "picocolors": "^1.0.0" } }, "@babel/compat-data": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz", - "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.0.tgz", + "integrity": "sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA==", "dev": true }, "@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", "dev": true, "requires": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -18538,15 +18251,16 @@ } }, "@babel/generator": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", - "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.0.tgz", + "integrity": "sha512-/AIkAmInnWwgEAJGQr9vY0c66Mj6kjkE2ZPB1PurTRaRAh3U+J45sAQMjQDJdh4WbR3l0x5xkimXBKyBXXAu2w==", "dev": true, "requires": { - "@babel/types": "^7.25.0", + "@babel/parser": "^7.26.0", + "@babel/types": "^7.26.0", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "jsesc": "^3.0.2" }, "dependencies": { "@jridgewell/gen-mapping": { @@ -18563,33 +18277,33 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "dev": true, "requires": { - "@babel/types": "^7.24.7" + "@babel/types": "^7.25.9" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", - "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz", + "integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==", "dev": true, "requires": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" } }, "@babel/helper-compilation-targets": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", - "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.25.2", - "@babel/helper-validator-option": "^7.24.8", - "browserslist": "^4.23.1", + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -18618,17 +18332,17 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz", - "integrity": "sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.8", - "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/helper-replace-supers": "^7.25.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/traverse": "^7.25.0", + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", "semver": "^6.3.1" }, "dependencies": { @@ -18641,13 +18355,13 @@ } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.0.tgz", - "integrity": "sha512-q0T+dknZS+L5LDazIP+02gEZITG5unzvb6yIjcmj5i0eFrs5ToBV2m2JGH4EsE/gtP8ygEGLGApBgRIZkTm7zg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz", + "integrity": "sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "regexpu-core": "^5.3.1", + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.1.1", "semver": "^6.3.1" }, "dependencies": { @@ -18673,201 +18387,188 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", - "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", "dev": true, "requires": { - "@babel/traverse": "^7.24.8", - "@babel/types": "^7.24.8" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" } }, "@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "dev": true, "requires": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" } }, "@babel/helper-module-transforms": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", - "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "@babel/traverse": "^7.25.2" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" } }, "@babel/helper-optimise-call-expression": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", - "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", "dev": true, "requires": { - "@babel/types": "^7.24.7" + "@babel/types": "^7.25.9" } }, "@babel/helper-plugin-utils": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", - "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", - "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", + "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-wrap-function": "^7.25.0", - "@babel/traverse": "^7.25.0" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-wrap-function": "^7.25.9", + "@babel/traverse": "^7.25.9" } }, "@babel/helper-replace-supers": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", - "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", + "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.24.8", - "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/traverse": "^7.25.0" + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.25.9" } }, "@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz", + "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==", "dev": true, "requires": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", - "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", "dev": true, "requires": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" } }, "@babel/helper-string-parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", - "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", - "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", - "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", + "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", "dev": true, "requires": { - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.0", - "@babel/types": "^7.25.0" + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" } }, "@babel/helpers": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", - "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", "dev": true, "requires": { - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.0" - } - }, - "@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" } }, "@babel/parser": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", - "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", + "version": "7.26.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.1.tgz", + "integrity": "sha512-reoQYNiAJreZNsJzyrDNzFQ+IQ5JFiIzAHJg9bn94S3l+4++J7RsIhNMoB+lgP/9tpmiAQqspv+xfdxTSzREOw==", "dev": true, "requires": { - "@babel/types": "^7.25.2" + "@babel/types": "^7.26.0" } }, "@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.0.tgz", - "integrity": "sha512-dG0aApncVQwAUJa8tP1VHTnmU67BeIQvKafd3raEx315H54FfkZSz3B/TT+33ZQAjatGJA79gZqTtqL5QZUKXw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/traverse": "^7.25.0" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" } }, "@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", - "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", + "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", - "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", - "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" } }, "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", - "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/traverse": "^7.25.0" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" } }, "@babel/plugin-proposal-private-property-in-object": { @@ -18876,157 +18577,22 @@ "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, "@babel/plugin-syntax-import-assertions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", - "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-syntax-import-attributes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", - "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.24.7" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-syntax-unicode-sets-regex": { @@ -19040,584 +18606,568 @@ } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", - "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-async-generator-functions": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz", - "integrity": "sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", + "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-remap-async-to-generator": "^7.25.0", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/traverse": "^7.25.0" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.25.9" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", - "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-remap-async-to-generator": "^7.24.7" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", - "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz", + "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", - "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", + "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-class-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", - "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", + "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-class-static-block": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", - "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-classes": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz", - "integrity": "sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-replace-supers": "^7.25.0", - "@babel/traverse": "^7.25.0", + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/traverse": "^7.25.9", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", - "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/template": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" } }, "@babel/plugin-transform-destructuring": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", - "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", - "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", - "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", - "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.25.0", - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-dynamic-import": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", - "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", - "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz", + "integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-export-namespace-from": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", - "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-for-of": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", - "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", + "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" } }, "@babel/plugin-transform-function-name": { - "version": "7.25.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", - "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/traverse": "^7.25.1" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" } }, "@babel/plugin-transform-json-strings": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", - "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", - "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", - "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", - "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", - "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", - "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz", + "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-simple-access": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-simple-access": "^7.25.9" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", - "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.25.0", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "@babel/traverse": "^7.25.0" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", - "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", - "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-new-target": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", - "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", - "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz", + "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-numeric-separator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", - "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-object-rest-spread": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", - "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", + "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.7" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9" } }, "@babel/plugin-transform-object-super": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", - "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-replace-supers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" } }, "@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", - "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-optional-chaining": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", - "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" } }, "@babel/plugin-transform-parameters": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", - "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-private-methods": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", - "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-private-property-in-object": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", - "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-property-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", - "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-regenerator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", - "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", + "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-plugin-utils": "^7.25.9", "regenerator-transform": "^0.15.2" } }, + "@babel/plugin-transform-regexp-modifiers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", + "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + } + }, "@babel/plugin-transform-reserved-words": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", - "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", - "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-spread": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", - "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", - "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-template-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", - "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", + "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", - "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", + "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", - "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", - "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", - "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", - "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/preset-env": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.0.tgz", - "integrity": "sha512-vYAA8PrCOeZfG4D87hmw1KJ1BPubghXP1e2MacRFwECGNKL76dkA38JEwYllbvQCpf/kLxsTtir0b8MtxKoVCw==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.25.0", - "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-validator-option": "^7.24.8", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.0", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", + "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.24.7", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@babel/plugin-syntax-import-attributes": "^7.26.0", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.24.7", - "@babel/plugin-transform-async-generator-functions": "^7.25.0", - "@babel/plugin-transform-async-to-generator": "^7.24.7", - "@babel/plugin-transform-block-scoped-functions": "^7.24.7", - "@babel/plugin-transform-block-scoping": "^7.25.0", - "@babel/plugin-transform-class-properties": "^7.24.7", - "@babel/plugin-transform-class-static-block": "^7.24.7", - "@babel/plugin-transform-classes": "^7.25.0", - "@babel/plugin-transform-computed-properties": "^7.24.7", - "@babel/plugin-transform-destructuring": "^7.24.8", - "@babel/plugin-transform-dotall-regex": "^7.24.7", - "@babel/plugin-transform-duplicate-keys": "^7.24.7", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", - "@babel/plugin-transform-dynamic-import": "^7.24.7", - "@babel/plugin-transform-exponentiation-operator": "^7.24.7", - "@babel/plugin-transform-export-namespace-from": "^7.24.7", - "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.25.0", - "@babel/plugin-transform-json-strings": "^7.24.7", - "@babel/plugin-transform-literals": "^7.24.7", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", - "@babel/plugin-transform-member-expression-literals": "^7.24.7", - "@babel/plugin-transform-modules-amd": "^7.24.7", - "@babel/plugin-transform-modules-commonjs": "^7.24.8", - "@babel/plugin-transform-modules-systemjs": "^7.25.0", - "@babel/plugin-transform-modules-umd": "^7.24.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", - "@babel/plugin-transform-new-target": "^7.24.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", - "@babel/plugin-transform-numeric-separator": "^7.24.7", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/plugin-transform-object-super": "^7.24.7", - "@babel/plugin-transform-optional-catch-binding": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.8", - "@babel/plugin-transform-parameters": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.24.7", - "@babel/plugin-transform-private-property-in-object": "^7.24.7", - "@babel/plugin-transform-property-literals": "^7.24.7", - "@babel/plugin-transform-regenerator": "^7.24.7", - "@babel/plugin-transform-reserved-words": "^7.24.7", - "@babel/plugin-transform-shorthand-properties": "^7.24.7", - "@babel/plugin-transform-spread": "^7.24.7", - "@babel/plugin-transform-sticky-regex": "^7.24.7", - "@babel/plugin-transform-template-literals": "^7.24.7", - "@babel/plugin-transform-typeof-symbol": "^7.24.8", - "@babel/plugin-transform-unicode-escapes": "^7.24.7", - "@babel/plugin-transform-unicode-property-regex": "^7.24.7", - "@babel/plugin-transform-unicode-regex": "^7.24.7", - "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.25.9", + "@babel/plugin-transform-async-to-generator": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.25.9", + "@babel/plugin-transform-block-scoping": "^7.25.9", + "@babel/plugin-transform-class-properties": "^7.25.9", + "@babel/plugin-transform-class-static-block": "^7.26.0", + "@babel/plugin-transform-classes": "^7.25.9", + "@babel/plugin-transform-computed-properties": "^7.25.9", + "@babel/plugin-transform-destructuring": "^7.25.9", + "@babel/plugin-transform-dotall-regex": "^7.25.9", + "@babel/plugin-transform-duplicate-keys": "^7.25.9", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-dynamic-import": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.25.9", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.25.9", + "@babel/plugin-transform-function-name": "^7.25.9", + "@babel/plugin-transform-json-strings": "^7.25.9", + "@babel/plugin-transform-literals": "^7.25.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", + "@babel/plugin-transform-member-expression-literals": "^7.25.9", + "@babel/plugin-transform-modules-amd": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-modules-systemjs": "^7.25.9", + "@babel/plugin-transform-modules-umd": "^7.25.9", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-new-target": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", + "@babel/plugin-transform-numeric-separator": "^7.25.9", + "@babel/plugin-transform-object-rest-spread": "^7.25.9", + "@babel/plugin-transform-object-super": "^7.25.9", + "@babel/plugin-transform-optional-catch-binding": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9", + "@babel/plugin-transform-private-methods": "^7.25.9", + "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@babel/plugin-transform-property-literals": "^7.25.9", + "@babel/plugin-transform-regenerator": "^7.25.9", + "@babel/plugin-transform-regexp-modifiers": "^7.26.0", + "@babel/plugin-transform-reserved-words": "^7.25.9", + "@babel/plugin-transform-shorthand-properties": "^7.25.9", + "@babel/plugin-transform-spread": "^7.25.9", + "@babel/plugin-transform-sticky-regex": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.25.9", + "@babel/plugin-transform-typeof-symbol": "^7.25.9", + "@babel/plugin-transform-unicode-escapes": "^7.25.9", + "@babel/plugin-transform-unicode-property-regex": "^7.25.9", + "@babel/plugin-transform-unicode-regex": "^7.25.9", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.37.1", + "core-js-compat": "^3.38.1", "semver": "^6.3.1" }, "dependencies": { @@ -19640,56 +19190,49 @@ "esutils": "^2.0.2" } }, - "@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true - }, "@babel/runtime": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz", - "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", "dev": true, "requires": { "regenerator-runtime": "^0.14.0" } }, "@babel/template": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", - "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", "dev": true, "requires": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.25.0", - "@babel/types": "^7.25.0" + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" } }, "@babel/traverse": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz", - "integrity": "sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", + "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", "dev": true, "requires": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.2", + "@babel/code-frame": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/template": "^7.25.9", + "@babel/types": "^7.25.9", "debug": "^4.3.1", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", - "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" } }, "@colors/colors": { @@ -21817,15 +21360,6 @@ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, "anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -22248,13 +21782,13 @@ } }, "babel-plugin-polyfill-corejs3": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", - "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.6.1", - "core-js-compat": "^3.36.1" + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" } }, "babel-plugin-polyfill-regenerator": { @@ -22481,15 +22015,15 @@ } }, "browserslist": { - "version": "4.23.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", - "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001640", - "electron-to-chromium": "^1.4.820", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.1.0" + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" } }, "bson": { @@ -22577,9 +22111,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001643", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz", - "integrity": "sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==", + "version": "1.0.30001673", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001673.tgz", + "integrity": "sha512-WTrjUCSMp3LYX0nE12ECkV0a+e6LC85E0Auz75555/qr78Oc8YWhEPNfDd6SHdtlCMSzqtuXY0uyEMNRcsKpKw==", "dev": true }, "caseless": { @@ -22617,25 +22151,6 @@ } } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - } - } - }, "character-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", @@ -22935,12 +22450,12 @@ "dev": true }, "core-js-compat": { - "version": "3.37.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", - "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", + "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", "dev": true, "requires": { - "browserslist": "^4.23.0" + "browserslist": "^4.23.3" } }, "core-util-is": { @@ -23380,9 +22895,9 @@ } }, "electron-to-chromium": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.2.tgz", - "integrity": "sha512-kc4r3U3V3WLaaZqThjYz/Y6z8tJe+7K0bbjUVo3i+LWIypVdMx5nXCkwRe6SWbY6ILqLdc1rKcKmr3HoH7wjSQ==", + "version": "1.5.47", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.47.tgz", + "integrity": "sha512-zS5Yer0MOYw4rtK2iq43cJagHZ8sXN0jDHDKzB+86gSBSAI4v07S97mcq+Gs2vclAxSh1j7vOAHxSVgduiiuVQ==", "dev": true }, "enabled": { @@ -23557,9 +23072,9 @@ } }, "escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true }, "escape-html": { @@ -24862,12 +24377,6 @@ "get-intrinsic": "^1.2.2" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, "has-property-descriptors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", @@ -25565,9 +25074,9 @@ "dev": true }, "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true }, "json": { @@ -27016,9 +26525,9 @@ } }, "picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true }, "picomatch": { @@ -27577,9 +27086,9 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", "dev": true, "requires": { "regenerate": "^1.4.2" @@ -27612,34 +27121,32 @@ } }, "regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz", + "integrity": "sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==", "dev": true, "requires": { - "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.11.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" } }, + "regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true + }, "regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.2.tgz", + "integrity": "sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==", "dev": true, "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true - } + "jsesc": "~3.0.2" } }, "relative-microtime": { @@ -28565,15 +28072,6 @@ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "dev": true }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, "supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -28803,12 +28301,6 @@ "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==", "dev": true }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -29035,9 +28527,9 @@ } }, "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true }, "unicode-match-property-ecmascript": { @@ -29051,9 +28543,9 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", "dev": true }, "unicode-property-aliases-ecmascript": { @@ -29074,13 +28566,13 @@ "dev": true }, "update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "dev": true, "requires": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" } }, "uri-js": { From bb785fd027cbaf31b0708550797d14d8602ff277 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 12:57:24 +0100 Subject: [PATCH 173/396] chore(deps): bump @opentelemetry/exporter-prometheus from 0.53.0 to 0.54.0 in /test/opentelemetry-metrics/fixtures (#4281) --- .../fixtures/package-lock.json | 126 ++++-------------- 1 file changed, 26 insertions(+), 100 deletions(-) diff --git a/test/opentelemetry-metrics/fixtures/package-lock.json b/test/opentelemetry-metrics/fixtures/package-lock.json index 26bcd9bbef..0faf39e0d6 100644 --- a/test/opentelemetry-metrics/fixtures/package-lock.json +++ b/test/opentelemetry-metrics/fixtures/package-lock.json @@ -22,9 +22,9 @@ } }, "node_modules/@opentelemetry/core": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.26.0.tgz", - "integrity": "sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", + "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", "dependencies": { "@opentelemetry/semantic-conventions": "1.27.0" }, @@ -36,13 +36,13 @@ } }, "node_modules/@opentelemetry/exporter-prometheus": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.53.0.tgz", - "integrity": "sha512-STP2FZQOykUByPnibbouTirNxnG69Ph8TiMXDsaZuWxGDJ7wsYsRQydJkAVpvG+p0hTMP/hIfZp9zT/1iHpIkQ==", + "version": "0.54.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.54.0.tgz", + "integrity": "sha512-httb+/c36hZvkIR9SqwXj+fLeE2XDdWfZqGO24MboNMHihmnvjE0/LN29I9CjsJqC2jEi8FErfQha/JeOfsFaA==", "dependencies": { - "@opentelemetry/core": "1.26.0", - "@opentelemetry/resources": "1.26.0", - "@opentelemetry/sdk-metrics": "1.26.0" + "@opentelemetry/core": "1.27.0", + "@opentelemetry/resources": "1.27.0", + "@opentelemetry/sdk-metrics": "1.27.0" }, "engines": { "node": ">=14" @@ -51,27 +51,12 @@ "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/exporter-prometheus/node_modules/@opentelemetry/sdk-metrics": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.26.0.tgz", - "integrity": "sha512-0SvDXmou/JjzSDOjUmetAAvcKQW6ZrvosU0rkbDGpXvvZN+pQF6JbK/Kd4hNdK4q/22yeruqvukXEJyySTzyTQ==", - "dependencies": { - "@opentelemetry/core": "1.26.0", - "@opentelemetry/resources": "1.26.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, "node_modules/@opentelemetry/resources": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.26.0.tgz", - "integrity": "sha512-CPNYchBE7MBecCSVy0HKpUISEeJOniWqcHaAHpmasZ3j9o6V3AyBzhRc90jdmemq0HOxDr6ylhUbDhBqqPpeNw==", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.27.0.tgz", + "integrity": "sha512-jOwt2VJ/lUD5BLc+PMNymDrUCpm5PKi1E9oSVYAvz01U/VdndGmrtV3DU1pG4AwlYhJRHbHfOUIlpBeXCPw6QQ==", "dependencies": { - "@opentelemetry/core": "1.26.0", + "@opentelemetry/core": "1.27.0", "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { @@ -96,35 +81,6 @@ "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/core": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", - "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", - "dependencies": { - "@opentelemetry/semantic-conventions": "1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/resources": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.27.0.tgz", - "integrity": "sha512-jOwt2VJ/lUD5BLc+PMNymDrUCpm5PKi1E9oSVYAvz01U/VdndGmrtV3DU1pG4AwlYhJRHbHfOUIlpBeXCPw6QQ==", - "dependencies": { - "@opentelemetry/core": "1.27.0", - "@opentelemetry/semantic-conventions": "1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, "node_modules/@opentelemetry/semantic-conventions": { "version": "1.27.0", "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", @@ -141,40 +97,29 @@ "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" }, "@opentelemetry/core": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.26.0.tgz", - "integrity": "sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", + "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", "requires": { "@opentelemetry/semantic-conventions": "1.27.0" } }, "@opentelemetry/exporter-prometheus": { - "version": "0.53.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.53.0.tgz", - "integrity": "sha512-STP2FZQOykUByPnibbouTirNxnG69Ph8TiMXDsaZuWxGDJ7wsYsRQydJkAVpvG+p0hTMP/hIfZp9zT/1iHpIkQ==", + "version": "0.54.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.54.0.tgz", + "integrity": "sha512-httb+/c36hZvkIR9SqwXj+fLeE2XDdWfZqGO24MboNMHihmnvjE0/LN29I9CjsJqC2jEi8FErfQha/JeOfsFaA==", "requires": { - "@opentelemetry/core": "1.26.0", - "@opentelemetry/resources": "1.26.0", - "@opentelemetry/sdk-metrics": "1.26.0" - }, - "dependencies": { - "@opentelemetry/sdk-metrics": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.26.0.tgz", - "integrity": "sha512-0SvDXmou/JjzSDOjUmetAAvcKQW6ZrvosU0rkbDGpXvvZN+pQF6JbK/Kd4hNdK4q/22yeruqvukXEJyySTzyTQ==", - "requires": { - "@opentelemetry/core": "1.26.0", - "@opentelemetry/resources": "1.26.0" - } - } + "@opentelemetry/core": "1.27.0", + "@opentelemetry/resources": "1.27.0", + "@opentelemetry/sdk-metrics": "1.27.0" } }, "@opentelemetry/resources": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.26.0.tgz", - "integrity": "sha512-CPNYchBE7MBecCSVy0HKpUISEeJOniWqcHaAHpmasZ3j9o6V3AyBzhRc90jdmemq0HOxDr6ylhUbDhBqqPpeNw==", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.27.0.tgz", + "integrity": "sha512-jOwt2VJ/lUD5BLc+PMNymDrUCpm5PKi1E9oSVYAvz01U/VdndGmrtV3DU1pG4AwlYhJRHbHfOUIlpBeXCPw6QQ==", "requires": { - "@opentelemetry/core": "1.26.0", + "@opentelemetry/core": "1.27.0", "@opentelemetry/semantic-conventions": "1.27.0" } }, @@ -185,25 +130,6 @@ "requires": { "@opentelemetry/core": "1.27.0", "@opentelemetry/resources": "1.27.0" - }, - "dependencies": { - "@opentelemetry/core": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", - "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", - "requires": { - "@opentelemetry/semantic-conventions": "1.27.0" - } - }, - "@opentelemetry/resources": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.27.0.tgz", - "integrity": "sha512-jOwt2VJ/lUD5BLc+PMNymDrUCpm5PKi1E9oSVYAvz01U/VdndGmrtV3DU1pG4AwlYhJRHbHfOUIlpBeXCPw6QQ==", - "requires": { - "@opentelemetry/core": "1.27.0", - "@opentelemetry/semantic-conventions": "1.27.0" - } - } } }, "@opentelemetry/semantic-conventions": { From 864b618f41bc6a351a61ad53c0103a670bf34f20 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 12:58:25 +0100 Subject: [PATCH 174/396] chore(deps-dev): bump @types/node from 22.7.4 to 22.8.1 (#4283) --- package-lock.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index e16eaf39ae..b681f9e7f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6157,12 +6157,12 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.7.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.4.tgz", - "integrity": "sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==", + "version": "22.8.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.1.tgz", + "integrity": "sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==", "dev": true, "dependencies": { - "undici-types": "~6.19.2" + "undici-types": "~6.19.8" } }, "node_modules/@types/node-fetch": { @@ -15754,9 +15754,9 @@ } }, "node_modules/undici-types": { - "version": "6.19.6", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.6.tgz", - "integrity": "sha512-e/vggGopEfTKSvj4ihnOLTsqhrKRN3LeO6qSN/GxohhuRv8qH9bNQ4B8W7e/vFL+0XTnmHPB4/kegunZGA4Org==", + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", "dev": true }, "node_modules/unicode-byte-truncate": { @@ -21134,12 +21134,12 @@ "dev": true }, "@types/node": { - "version": "22.7.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.4.tgz", - "integrity": "sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==", + "version": "22.8.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.1.tgz", + "integrity": "sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==", "dev": true, "requires": { - "undici-types": "~6.19.2" + "undici-types": "~6.19.8" } }, "@types/node-fetch": { @@ -28512,9 +28512,9 @@ "dev": true }, "undici-types": { - "version": "6.19.6", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.6.tgz", - "integrity": "sha512-e/vggGopEfTKSvj4ihnOLTsqhrKRN3LeO6qSN/GxohhuRv8qH9bNQ4B8W7e/vFL+0XTnmHPB4/kegunZGA4Org==", + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", "dev": true }, "unicode-byte-truncate": { From 63b019222812558cde08021e4bccb75b304d6248 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 12:59:07 +0100 Subject: [PATCH 175/396] chore(deps-dev): bump mongodb from 6.9.0 to 6.10.0 (#4285) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index b681f9e7f0..7562ad56d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12326,9 +12326,9 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "node_modules/mongodb": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.9.0.tgz", - "integrity": "sha512-UMopBVx1LmEUbW/QE0Hw18u583PEDVQmUmVzzBRH0o/xtE9DBRA5ZYLOjpLIa03i8FXjzvQECJcqoMvCXftTUA==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.10.0.tgz", + "integrity": "sha512-gP9vduuYWb9ZkDM546M+MP2qKVk5ZG2wPF63OvSRuUbqCR+11ZCAE1mOfllhlAG0wcoJY5yDL/rV3OmYEwXIzg==", "dev": true, "dependencies": { "@mongodb-js/saslprep": "^1.1.5", @@ -25831,9 +25831,9 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "mongodb": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.9.0.tgz", - "integrity": "sha512-UMopBVx1LmEUbW/QE0Hw18u583PEDVQmUmVzzBRH0o/xtE9DBRA5ZYLOjpLIa03i8FXjzvQECJcqoMvCXftTUA==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.10.0.tgz", + "integrity": "sha512-gP9vduuYWb9ZkDM546M+MP2qKVk5ZG2wPF63OvSRuUbqCR+11ZCAE1mOfllhlAG0wcoJY5yDL/rV3OmYEwXIzg==", "dev": true, "requires": { "@mongodb-js/saslprep": "^1.1.5", From 0767bd9b571e5b9cca9b21938ead373ff5fb67d7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 13:00:22 +0100 Subject: [PATCH 176/396] chore(deps-dev): bump @hapi/hapi from 21.3.10 to 21.3.12 (#4287) --- package-lock.json | 88 +++++++++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7562ad56d0..3d83728869 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4351,9 +4351,9 @@ } }, "node_modules/@hapi/accept": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-6.0.1.tgz", - "integrity": "sha512-aLkYj7zzgC3CSlEVOs84eBOEE3i9xZK2tdQEP+TOj2OFzMWCi9zjkRet82V3GGjecE//zFrCLKIykuaE0uM4bg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-6.0.3.tgz", + "integrity": "sha512-p72f9k56EuF0n3MwlBNThyVE5PXX40g+aQh+C/xbKrfzahM2Oispv3AXmOIU51t3j77zay1qrX7IIziZXspMlw==", "dev": true, "dependencies": { "@hapi/boom": "^10.0.1", @@ -4361,9 +4361,9 @@ } }, "node_modules/@hapi/accept/node_modules/@hapi/hoek": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.2.tgz", - "integrity": "sha512-aKmlCO57XFZ26wso4rJsW4oTUnrgTFw2jh3io7CAtO9w4UltBNwRXvXIVzzyfkaaLRo3nluP/19msA8vDUUuKw==", + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.6.tgz", + "integrity": "sha512-mu8He+jghTDJ+la/uGBT4b1rqQdqFADZiXhzd98b3XW5nb/c+5woXx3FiNco2nm4wPJFHQVRGxYeWeSDPIYpYw==", "dev": true }, "node_modules/@hapi/ammo": { @@ -4412,9 +4412,9 @@ "dev": true }, "node_modules/@hapi/bounce": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@hapi/bounce/-/bounce-3.0.1.tgz", - "integrity": "sha512-G+/Pp9c1Ha4FDP+3Sy/Xwg2O4Ahaw3lIZFSX+BL4uWi64CmiETuZPxhKDUD4xBMOUZbBlzvO8HjiK8ePnhBadA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hapi/bounce/-/bounce-3.0.2.tgz", + "integrity": "sha512-d0XmlTi3H9HFDHhQLjg4F4auL1EY3Wqj7j7/hGDhFFe6xAbnm3qiGrXeT93zZnPH8gH+SKAFYiRzu26xkXcH3g==", "dev": true, "dependencies": { "@hapi/boom": "^10.0.1", @@ -4511,20 +4511,20 @@ "dev": true }, "node_modules/@hapi/hapi": { - "version": "21.3.10", - "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.3.10.tgz", - "integrity": "sha512-CmEcmTREW394MaGGKvWpoOK4rG8tKlpZLs30tbaBzhCrhiL2Ti/HARek9w+8Ya4nMBGcd+kDAzvU44OX8Ms0Jg==", + "version": "21.3.12", + "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.3.12.tgz", + "integrity": "sha512-GCUP12dkb3QMjpFl+wEFO73nqKRmsnD5um/QDOn6lj2GjGBrDXPcT194mNARO+PPNXZOR4KmvIpHt/lceUncfg==", "dev": true, "dependencies": { - "@hapi/accept": "^6.0.1", + "@hapi/accept": "^6.0.3", "@hapi/ammo": "^6.0.1", "@hapi/boom": "^10.0.1", - "@hapi/bounce": "^3.0.1", + "@hapi/bounce": "^3.0.2", "@hapi/call": "^9.0.1", "@hapi/catbox": "^12.1.1", "@hapi/catbox-memory": "^6.0.2", "@hapi/heavy": "^8.0.1", - "@hapi/hoek": "^11.0.2", + "@hapi/hoek": "^11.0.6", "@hapi/mimos": "^7.0.1", "@hapi/podium": "^5.0.1", "@hapi/shot": "^6.0.1", @@ -4532,7 +4532,7 @@ "@hapi/statehood": "^8.1.1", "@hapi/subtext": "^8.1.0", "@hapi/teamwork": "^6.0.0", - "@hapi/topo": "^6.0.1", + "@hapi/topo": "^6.0.2", "@hapi/validate": "^2.0.1" }, "engines": { @@ -4540,15 +4540,15 @@ } }, "node_modules/@hapi/hapi/node_modules/@hapi/hoek": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.2.tgz", - "integrity": "sha512-aKmlCO57XFZ26wso4rJsW4oTUnrgTFw2jh3io7CAtO9w4UltBNwRXvXIVzzyfkaaLRo3nluP/19msA8vDUUuKw==", + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.6.tgz", + "integrity": "sha512-mu8He+jghTDJ+la/uGBT4b1rqQdqFADZiXhzd98b3XW5nb/c+5woXx3FiNco2nm4wPJFHQVRGxYeWeSDPIYpYw==", "dev": true }, "node_modules/@hapi/hapi/node_modules/@hapi/topo": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.1.tgz", - "integrity": "sha512-JioWUZL1Bm7r8bnCDx2AUggiPwpV7djFfDTWT1aZSyHjN++fVz7XPdW8YVCxvyv9bSWcbbOLV/h4U1zGdwrN3w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", "dev": true, "dependencies": { "@hapi/hoek": "^11.0.2" @@ -19529,9 +19529,9 @@ "dev": true }, "@hapi/accept": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-6.0.1.tgz", - "integrity": "sha512-aLkYj7zzgC3CSlEVOs84eBOEE3i9xZK2tdQEP+TOj2OFzMWCi9zjkRet82V3GGjecE//zFrCLKIykuaE0uM4bg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-6.0.3.tgz", + "integrity": "sha512-p72f9k56EuF0n3MwlBNThyVE5PXX40g+aQh+C/xbKrfzahM2Oispv3AXmOIU51t3j77zay1qrX7IIziZXspMlw==", "dev": true, "requires": { "@hapi/boom": "^10.0.1", @@ -19539,9 +19539,9 @@ }, "dependencies": { "@hapi/hoek": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.2.tgz", - "integrity": "sha512-aKmlCO57XFZ26wso4rJsW4oTUnrgTFw2jh3io7CAtO9w4UltBNwRXvXIVzzyfkaaLRo3nluP/19msA8vDUUuKw==", + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.6.tgz", + "integrity": "sha512-mu8He+jghTDJ+la/uGBT4b1rqQdqFADZiXhzd98b3XW5nb/c+5woXx3FiNco2nm4wPJFHQVRGxYeWeSDPIYpYw==", "dev": true } } @@ -19598,9 +19598,9 @@ } }, "@hapi/bounce": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@hapi/bounce/-/bounce-3.0.1.tgz", - "integrity": "sha512-G+/Pp9c1Ha4FDP+3Sy/Xwg2O4Ahaw3lIZFSX+BL4uWi64CmiETuZPxhKDUD4xBMOUZbBlzvO8HjiK8ePnhBadA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hapi/bounce/-/bounce-3.0.2.tgz", + "integrity": "sha512-d0XmlTi3H9HFDHhQLjg4F4auL1EY3Wqj7j7/hGDhFFe6xAbnm3qiGrXeT93zZnPH8gH+SKAFYiRzu26xkXcH3g==", "dev": true, "requires": { "@hapi/boom": "^10.0.1", @@ -19702,20 +19702,20 @@ "dev": true }, "@hapi/hapi": { - "version": "21.3.10", - "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.3.10.tgz", - "integrity": "sha512-CmEcmTREW394MaGGKvWpoOK4rG8tKlpZLs30tbaBzhCrhiL2Ti/HARek9w+8Ya4nMBGcd+kDAzvU44OX8Ms0Jg==", + "version": "21.3.12", + "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.3.12.tgz", + "integrity": "sha512-GCUP12dkb3QMjpFl+wEFO73nqKRmsnD5um/QDOn6lj2GjGBrDXPcT194mNARO+PPNXZOR4KmvIpHt/lceUncfg==", "dev": true, "requires": { - "@hapi/accept": "^6.0.1", + "@hapi/accept": "^6.0.3", "@hapi/ammo": "^6.0.1", "@hapi/boom": "^10.0.1", - "@hapi/bounce": "^3.0.1", + "@hapi/bounce": "^3.0.2", "@hapi/call": "^9.0.1", "@hapi/catbox": "^12.1.1", "@hapi/catbox-memory": "^6.0.2", "@hapi/heavy": "^8.0.1", - "@hapi/hoek": "^11.0.2", + "@hapi/hoek": "^11.0.6", "@hapi/mimos": "^7.0.1", "@hapi/podium": "^5.0.1", "@hapi/shot": "^6.0.1", @@ -19723,20 +19723,20 @@ "@hapi/statehood": "^8.1.1", "@hapi/subtext": "^8.1.0", "@hapi/teamwork": "^6.0.0", - "@hapi/topo": "^6.0.1", + "@hapi/topo": "^6.0.2", "@hapi/validate": "^2.0.1" }, "dependencies": { "@hapi/hoek": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.2.tgz", - "integrity": "sha512-aKmlCO57XFZ26wso4rJsW4oTUnrgTFw2jh3io7CAtO9w4UltBNwRXvXIVzzyfkaaLRo3nluP/19msA8vDUUuKw==", + "version": "11.0.6", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.6.tgz", + "integrity": "sha512-mu8He+jghTDJ+la/uGBT4b1rqQdqFADZiXhzd98b3XW5nb/c+5woXx3FiNco2nm4wPJFHQVRGxYeWeSDPIYpYw==", "dev": true }, "@hapi/topo": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.1.tgz", - "integrity": "sha512-JioWUZL1Bm7r8bnCDx2AUggiPwpV7djFfDTWT1aZSyHjN++fVz7XPdW8YVCxvyv9bSWcbbOLV/h4U1zGdwrN3w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", "dev": true, "requires": { "@hapi/hoek": "^11.0.2" From 4a93c34b31568df19592589d8e2257a131a39503 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 14:34:53 +0100 Subject: [PATCH 177/396] chore(deps-dev): bump pg from 8.13.0 to 8.13.1 (#4288) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3d83728869..346ab719d5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13122,9 +13122,9 @@ "dev": true }, "node_modules/pg": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.13.0.tgz", - "integrity": "sha512-34wkUTh3SxTClfoHB3pQ7bIMvw9dpFU1audQQeZG837fmHfHpr14n/AELVDoOYVDW2h5RDWU78tFjkD+erSBsw==", + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.13.1.tgz", + "integrity": "sha512-OUir1A0rPNZlX//c7ksiu7crsGZTKSOXJPgtNiHGIlC9H0lO+NC6ZDYksSgBYY/thSWhnSRBv8w1lieNNGATNQ==", "dev": true, "dependencies": { "pg-connection-string": "^2.7.0", @@ -26442,9 +26442,9 @@ "dev": true }, "pg": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.13.0.tgz", - "integrity": "sha512-34wkUTh3SxTClfoHB3pQ7bIMvw9dpFU1audQQeZG837fmHfHpr14n/AELVDoOYVDW2h5RDWU78tFjkD+erSBsw==", + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.13.1.tgz", + "integrity": "sha512-OUir1A0rPNZlX//c7ksiu7crsGZTKSOXJPgtNiHGIlC9H0lO+NC6ZDYksSgBYY/thSWhnSRBv8w1lieNNGATNQ==", "dev": true, "requires": { "pg-cloudflare": "^1.1.1", From 0beb5c5c8de252d36a9f0c36159119ab41f9cac4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 14:36:09 +0100 Subject: [PATCH 178/396] chore(deps): bump @opentelemetry/sdk-metrics from 1.26.0 to 1.27.0 (#4284) --- package-lock.json | 48 +++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index 346ab719d5..3a6ad3a20a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5088,9 +5088,9 @@ } }, "node_modules/@opentelemetry/core": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.26.0.tgz", - "integrity": "sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", + "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", "dependencies": { "@opentelemetry/semantic-conventions": "1.27.0" }, @@ -5102,11 +5102,11 @@ } }, "node_modules/@opentelemetry/resources": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.26.0.tgz", - "integrity": "sha512-CPNYchBE7MBecCSVy0HKpUISEeJOniWqcHaAHpmasZ3j9o6V3AyBzhRc90jdmemq0HOxDr6ylhUbDhBqqPpeNw==", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.27.0.tgz", + "integrity": "sha512-jOwt2VJ/lUD5BLc+PMNymDrUCpm5PKi1E9oSVYAvz01U/VdndGmrtV3DU1pG4AwlYhJRHbHfOUIlpBeXCPw6QQ==", "dependencies": { - "@opentelemetry/core": "1.26.0", + "@opentelemetry/core": "1.27.0", "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { @@ -5117,12 +5117,12 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.26.0.tgz", - "integrity": "sha512-0SvDXmou/JjzSDOjUmetAAvcKQW6ZrvosU0rkbDGpXvvZN+pQF6JbK/Kd4hNdK4q/22yeruqvukXEJyySTzyTQ==", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.27.0.tgz", + "integrity": "sha512-JzWgzlutoXCydhHWIbLg+r76m+m3ncqvkCcsswXAQ4gqKS+LOHKhq+t6fx1zNytvLuaOUBur7EvWxECc4jPQKg==", "dependencies": { - "@opentelemetry/core": "1.26.0", - "@opentelemetry/resources": "1.26.0" + "@opentelemetry/core": "1.27.0", + "@opentelemetry/resources": "1.27.0" }, "engines": { "node": ">=14" @@ -20240,29 +20240,29 @@ "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" }, "@opentelemetry/core": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.26.0.tgz", - "integrity": "sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", + "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", "requires": { "@opentelemetry/semantic-conventions": "1.27.0" } }, "@opentelemetry/resources": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.26.0.tgz", - "integrity": "sha512-CPNYchBE7MBecCSVy0HKpUISEeJOniWqcHaAHpmasZ3j9o6V3AyBzhRc90jdmemq0HOxDr6ylhUbDhBqqPpeNw==", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.27.0.tgz", + "integrity": "sha512-jOwt2VJ/lUD5BLc+PMNymDrUCpm5PKi1E9oSVYAvz01U/VdndGmrtV3DU1pG4AwlYhJRHbHfOUIlpBeXCPw6QQ==", "requires": { - "@opentelemetry/core": "1.26.0", + "@opentelemetry/core": "1.27.0", "@opentelemetry/semantic-conventions": "1.27.0" } }, "@opentelemetry/sdk-metrics": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.26.0.tgz", - "integrity": "sha512-0SvDXmou/JjzSDOjUmetAAvcKQW6ZrvosU0rkbDGpXvvZN+pQF6JbK/Kd4hNdK4q/22yeruqvukXEJyySTzyTQ==", + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.27.0.tgz", + "integrity": "sha512-JzWgzlutoXCydhHWIbLg+r76m+m3ncqvkCcsswXAQ4gqKS+LOHKhq+t6fx1zNytvLuaOUBur7EvWxECc4jPQKg==", "requires": { - "@opentelemetry/core": "1.26.0", - "@opentelemetry/resources": "1.26.0" + "@opentelemetry/core": "1.27.0", + "@opentelemetry/resources": "1.27.0" } }, "@opentelemetry/semantic-conventions": { From 96aba9581016f7fad2b6ad933e953c8d7883f9da Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Mon, 4 Nov 2024 09:19:10 +0100 Subject: [PATCH 179/396] github-action: use elastic/oblt-actions/check-dependent-jobs (#4292) --- .github/workflows/test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index bf2748b37d..600b93a359 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -204,7 +204,7 @@ jobs: - test-windows steps: - id: check - uses: elastic/apm-pipeline-library/.github/actions/check-dependent-jobs@current + uses: elastic/oblt-actions/check-dependent-jobs@v1 with: - needs: ${{ toJSON(needs) }} - - run: ${{ steps.check.outputs.isSuccess }} + jobs: ${{ toJSON(needs) }} + - run: ${{ steps.check.outputs.is-success }} From 66b472e74a0dbc6d18aab4110dacfd7534054887 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 10:26:21 +0100 Subject: [PATCH 180/396] chore(deps-dev): bump fastify from 5.0.0 to 5.1.0 (#4298) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3a6ad3a20a..0ce8ca3dcf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9683,9 +9683,9 @@ } }, "node_modules/fastify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.0.0.tgz", - "integrity": "sha512-Qe4dU+zGOzg7vXjw4EvcuyIbNnMwTmcuOhlOrOJsgwzvjEZmsM/IeHulgJk+r46STjdJS/ZJbxO8N70ODXDMEQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.1.0.tgz", + "integrity": "sha512-0SdUC5AoiSgMSc2Vxwv3WyKzyGMDJRAW/PgNsK1kZrnkO6MeqUIW9ovVg9F2UGIqtIcclYMyeJa4rK6OZc7Jxg==", "dev": true, "funding": [ { @@ -23824,9 +23824,9 @@ } }, "fastify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.0.0.tgz", - "integrity": "sha512-Qe4dU+zGOzg7vXjw4EvcuyIbNnMwTmcuOhlOrOJsgwzvjEZmsM/IeHulgJk+r46STjdJS/ZJbxO8N70ODXDMEQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.1.0.tgz", + "integrity": "sha512-0SdUC5AoiSgMSc2Vxwv3WyKzyGMDJRAW/PgNsK1kZrnkO6MeqUIW9ovVg9F2UGIqtIcclYMyeJa4rK6OZc7Jxg==", "dev": true, "requires": { "@fastify/ajv-compiler": "^4.0.0", From 4771d8156dbbd593381e1d969d3fa1a1bd11c6ab Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 10:26:58 +0100 Subject: [PATCH 181/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to 74385d2 (#4290) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index dfe9920c22..da1e960703 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:de4d5b06ee2074eb716f29e72b170346fd4715e5f083fc83a378603ce5bd9ced +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:74385d2e67fb0df0df261e57ea174bb2df6e858110ecd1e8928d06f53c9efa4b ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From d321a91c2923b000ef5b72e90cfce96a54b0a403 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 10:28:51 +0100 Subject: [PATCH 182/396] chore(deps-dev): bump @apollo/server in the apollo group (#4296) --- package-lock.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0ce8ca3dcf..235a21d26d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -199,9 +199,9 @@ "dev": true }, "node_modules/@apollo/server": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.11.0.tgz", - "integrity": "sha512-SWDvbbs0wl2zYhKG6aGLxwTJ72xpqp0awb2lotNpfezd9VcAvzaUizzKQqocephin2uMoaA8MguoyBmgtPzNWw==", + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.11.2.tgz", + "integrity": "sha512-WUTHY7DDek8xAMn4Woa9Bl8duQUDzRYQkosX/d1DtCsBWESZyApR7ndnI5d6+W4KSTtqBHhJFkusEI7CWuIJXg==", "dev": true, "dependencies": { "@apollo/cache-control-types": "^1.0.3", @@ -220,7 +220,7 @@ "@types/node-fetch": "^2.6.1", "async-retry": "^1.2.1", "cors": "^2.8.5", - "express": "^4.17.1", + "express": "^4.21.1", "loglevel": "^1.6.8", "lru-cache": "^7.10.1", "negotiator": "^0.6.3", @@ -16301,9 +16301,9 @@ } }, "@apollo/server": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.11.0.tgz", - "integrity": "sha512-SWDvbbs0wl2zYhKG6aGLxwTJ72xpqp0awb2lotNpfezd9VcAvzaUizzKQqocephin2uMoaA8MguoyBmgtPzNWw==", + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.11.2.tgz", + "integrity": "sha512-WUTHY7DDek8xAMn4Woa9Bl8duQUDzRYQkosX/d1DtCsBWESZyApR7ndnI5d6+W4KSTtqBHhJFkusEI7CWuIJXg==", "dev": true, "requires": { "@apollo/cache-control-types": "^1.0.3", @@ -16322,7 +16322,7 @@ "@types/node-fetch": "^2.6.1", "async-retry": "^1.2.1", "cors": "^2.8.5", - "express": "^4.17.1", + "express": "^4.21.1", "loglevel": "^1.6.8", "lru-cache": "^7.10.1", "negotiator": "^0.6.3", From 41add4d0abcedde346da37810d385ca22fb4c50f Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Mon, 4 Nov 2024 08:14:31 -0800 Subject: [PATCH 183/396] fix(lambda): fix lambda instr to work with a '.' in the handler module path (#4294) Before this if the _HANDLER string had a '.' in the module path (the part before the 'moduleName.functionExport'), then the parsing of that handler string would silently produce bogus 'lambdaHandlerInfo' that would result in a RITM path that would never actually get loaded, hence no Lambda instrumentation. Fixes: #4293 --- CHANGELOG.asciidoc | 18 ++++++ lib/instrumentation/index.js | 2 +- lib/lambda.js | 82 +++++++++++++++++++------- test/lambda/fixtures/foo.js | 13 ++++ test/lambda/fixtures/handlermodule.cjs | 13 ++++ test/lambda/wrapper.test.js | 24 +++++++- 6 files changed, 128 insertions(+), 24 deletions(-) create mode 100644 test/lambda/fixtures/foo.js create mode 100644 test/lambda/fixtures/handlermodule.cjs diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index e1f46faef5..a829d9a86a 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -33,6 +33,24 @@ Notes: See the <> guide. +==== Unreleased + +[float] +===== Breaking changes + +[float] +===== Features + +[float] +===== Bug fixes + +* Fix AWS Lambda instrumentation to work with a "handler" string that includes + a period (`.`) in the module path. E.g. the leading `.` in `Handler: ./src/functions/myfunc/handler.main`. ({issues}4293[#4293]). + +[float] +===== Chores + + [[release-notes-4.8.0]] ==== 4.8.0 - 2024/10/08 diff --git a/lib/instrumentation/index.js b/lib/instrumentation/index.js index 8af059cff2..626bf5493d 100644 --- a/lib/instrumentation/index.js +++ b/lib/instrumentation/index.js @@ -374,7 +374,7 @@ Instrumentation.prototype.clearPatches = function (modules) { // If in a Lambda environment, find its handler and add a patcher for it. Instrumentation.prototype._maybeLoadLambdaPatcher = function () { - let lambdaHandlerInfo = getLambdaHandlerInfo(process.env); + let lambdaHandlerInfo = getLambdaHandlerInfo(process.env, this._log); if (lambdaHandlerInfo && this._patcherReg.has(lambdaHandlerInfo.modName)) { this._log.warn( diff --git a/lib/lambda.js b/lib/lambda.js index 587e50fbae..5255c09fba 100644 --- a/lib/lambda.js +++ b/lib/lambda.js @@ -817,18 +817,34 @@ function isLambdaExecutionEnvironment() { // .mjs file extension (which indicates an ECMAScript/import module, which the // agent does not support. // -// @param string taskRoot -// @param string handlerModule -// @return string -function getFilePath(taskRoot, handlerModule) { - let filePath = path.resolve(taskRoot, `${handlerModule}.js`); - if (!fs.existsSync(filePath)) { - filePath = path.resolve(taskRoot, `${handlerModule}.cjs`); +// TODO: support "extensionless"? per https://github.com/aws/aws-lambda-nodejs-runtime-interface-client/blob/v3.2.1/src/UserFunction.js#L149 Is this for a dir/index.js? +// TODO: support ESM and .mjs +// +// @param {string} taskRoot +// @param {string} moduleRoot - The subdir under `taskRoot` holding the module. +// @param {string} module - The module name. +// @return {string | null} +function getFilePath(taskRoot, moduleRoot, module) { + const lambdaStylePath = path.resolve(taskRoot, moduleRoot, module); + if (fs.existsSync(lambdaStylePath + '.js')) { + return lambdaStylePath + '.js'; + } else if (fs.existsSync(lambdaStylePath + '.cjs')) { + return lambdaStylePath + '.cjs'; + } else { + return null; } - return filePath; } -function getLambdaHandlerInfo(env) { +/** + * Gather module and export info for the Lambda "handler" string. + * + * Compare to the Node.js Lambda runtime's equivalent processing here: + * https://github.com/aws/aws-lambda-nodejs-runtime-interface-client/blob/v3.2.1/src/UserFunction.js#L288 + * + * @param {object} env - The process environment. + * @param {any} [logger] - Optional logger for trace/warn log output. + */ +function getLambdaHandlerInfo(env, logger) { if ( !isLambdaExecutionEnvironment() || !env._HANDLER || @@ -837,22 +853,48 @@ function getLambdaHandlerInfo(env) { return null; } - // extract module name and "path" from handler using the same regex as the runtime - // from https://github.com/aws/aws-lambda-nodejs-runtime-interface-client/blob/c31c41ffe5f2f03ae9e8589b96f3b005e2bb8a4a/src/utils/UserFunction.ts#L21 - const functionExpression = /^([^.]*)\.(.*)$/; - const match = env._HANDLER.match(functionExpression); + // Dev Note: This intentionally uses some of the same var names at + // https://github.com/aws/aws-lambda-nodejs-runtime-interface-client/blob/v3.2.1/src/UserFunction.js#L288 + const fullHandlerString = env._HANDLER; + const moduleAndHandler = path.basename(fullHandlerString); + const moduleRoot = fullHandlerString.substring( + 0, + fullHandlerString.indexOf(moduleAndHandler), + ); + const FUNCTION_EXPR = /^([^.]*)\.(.*)$/; + const match = moduleAndHandler.match(FUNCTION_EXPR); if (!match || match.length !== 3) { + if (logger) { + logger.warn( + { fullHandlerString, moduleAndHandler }, + 'Lambda handler string did not match FUNCTION_EXPR', + ); + } + return null; + } + const module = match[1]; + const handlerPath = match[2]; + + const moduleAbsPath = getFilePath(env.LAMBDA_TASK_ROOT, moduleRoot, module); + if (!moduleAbsPath) { + if (logger) { + logger.warn( + { fullHandlerString, moduleRoot, module }, + 'could not find Lambda handler module file (ESM not yet supported)', + ); + } return null; } - const handlerModule = match[1].split('/').pop(); - const handlerFunctionPath = match[2]; - const handlerFilePath = getFilePath(env.LAMBDA_TASK_ROOT, match[1]); - return { - filePath: handlerFilePath, - modName: handlerModule, - propPath: handlerFunctionPath, + const lambdaHandlerInfo = { + filePath: moduleAbsPath, + modName: module, + propPath: handlerPath, }; + if (logger) { + logger.trace({ fullHandlerString, lambdaHandlerInfo }, 'lambdaHandlerInfo'); + } + return lambdaHandlerInfo; } function lowerCaseObjectKeys(obj) { diff --git a/test/lambda/fixtures/foo.js b/test/lambda/fixtures/foo.js new file mode 100644 index 0000000000..d678e19bdb --- /dev/null +++ b/test/lambda/fixtures/foo.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and other contributors where applicable. + * Licensed under the BSD 2-Clause License; you may not use this file except in + * compliance with the BSD 2-Clause License. + */ + +'use strict'; + +module.exports = { + bar: function (event, context) { + return 'fake handler'; + }, +}; diff --git a/test/lambda/fixtures/handlermodule.cjs b/test/lambda/fixtures/handlermodule.cjs new file mode 100644 index 0000000000..97aca045dd --- /dev/null +++ b/test/lambda/fixtures/handlermodule.cjs @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and other contributors where applicable. + * Licensed under the BSD 2-Clause License; you may not use this file except in + * compliance with the BSD 2-Clause License. + */ + +module.exports = { + lambda: { + foo: function myHandler(event, context) { + return 'hi'; + }, + }, +}; diff --git a/test/lambda/wrapper.test.js b/test/lambda/wrapper.test.js index eca199ffa5..d901e83ab6 100644 --- a/test/lambda/wrapper.test.js +++ b/test/lambda/wrapper.test.js @@ -37,6 +37,24 @@ tape.test('getLambdaHandlerInfo', function (suite) { t.end(); }); + suite.test('extracts info with leading "./" on _HANDLER path', function (t) { + process.env.AWS_LAMBDA_FUNCTION_NAME = 'foo'; + + const info = getLambdaHandlerInfo({ + _HANDLER: './lambda.bar', + LAMBDA_TASK_ROOT: path.resolve(__dirname, 'fixtures'), + }); + + t.equals( + info.filePath, + path.resolve(__dirname, 'fixtures', 'lambda.js'), + 'extracted handler file path', + ); + t.equals(info.modName, 'lambda', 'extracted handler module'); + t.equals(info.propPath, 'bar', 'extracted handler propPath'); + t.end(); + }); + suite.test('extracts info with extended path, cjs extension', function (t) { process.env.AWS_LAMBDA_FUNCTION_NAME = 'foo'; @@ -93,7 +111,7 @@ tape.test('getLambdaHandlerInfo', function (suite) { suite.test('malformed handler: too few', function (t) { process.env.AWS_LAMBDA_FUNCTION_NAME = 'foo'; const handler = getLambdaHandlerInfo({ - LAMBDA_TASK_ROOT: '/var/task', + LAMBDA_TASK_ROOT: path.resolve(__dirname, 'fixtures'), _HANDLER: 'foo', }); @@ -104,13 +122,13 @@ tape.test('getLambdaHandlerInfo', function (suite) { suite.test('longer handler', function (t) { process.env.AWS_LAMBDA_FUNCTION_NAME = 'foo'; const handler = getLambdaHandlerInfo({ - LAMBDA_TASK_ROOT: '/var/task', + LAMBDA_TASK_ROOT: path.resolve(__dirname, 'fixtures'), _HANDLER: 'foo.baz.bar', }); t.equals( handler.filePath, - path.resolve('/var', 'task', 'foo.cjs'), + path.resolve(__dirname, 'fixtures', 'foo.js'), 'extracted handler file path', ); t.equals(handler.modName, 'foo', 'extracted handler module name'); From 335ebdb9f20b4593e35399daab2ff7c44f1a5419 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Mon, 4 Nov 2024 09:24:06 -0800 Subject: [PATCH 184/396] release 4.8.1 (#4301) --- CHANGELOG.asciidoc | 12 ++---------- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 5 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index a829d9a86a..7868d6922a 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -33,13 +33,8 @@ Notes: See the <> guide. -==== Unreleased - -[float] -===== Breaking changes - -[float] -===== Features +[[release-notes-4.8.1]] +==== 4.8.1 - 2024/11/04 [float] ===== Bug fixes @@ -47,9 +42,6 @@ See the <> guide. * Fix AWS Lambda instrumentation to work with a "handler" string that includes a period (`.`) in the module path. E.g. the leading `.` in `Handler: ./src/functions/myfunc/handler.main`. ({issues}4293[#4293]). -[float] -===== Chores - [[release-notes-4.8.0]] ==== 4.8.0 - 2024/10/08 diff --git a/package-lock.json b/package-lock.json index 235a21d26d..e6c225325f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "elastic-apm-node", - "version": "4.8.0", + "version": "4.8.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "elastic-apm-node", - "version": "4.8.0", + "version": "4.8.1", "license": "BSD-2-Clause", "dependencies": { "@elastic/ecs-pino-format": "^1.5.0", diff --git a/package.json b/package.json index 7f8e792e99..9c5c39f8ed 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "elastic-apm-node", - "version": "4.8.0", + "version": "4.8.1", "description": "The official Elastic APM agent for Node.js", "type": "commonjs", "main": "index.js", From 38390152aafe39cdba97c519f79ded11b9d0fd34 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 11:06:18 +0100 Subject: [PATCH 185/396] chore(deps): bump actions/attest-build-provenance from 1.4.3 to 1.4.4 (#4309) --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c9c70d71b7..81a688607b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -44,7 +44,7 @@ jobs: - run: make -C .ci dist - name: Attest Lambda layer zip - uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # v1.4.3 + uses: actions/attest-build-provenance@ef244123eb79f2f7a7e75d99086184180e6d0018 # v1.4.4 with: subject-path: "${{ github.workspace }}/build/aws/elastic-apm-node-lambda-layer-*.zip" @@ -75,7 +75,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image - uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # v1.4.3 + uses: actions/attest-build-provenance@ef244123eb79f2f7a7e75d99086184180e6d0018 # v1.4.4 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push.outputs.digest }} @@ -109,7 +109,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image (wolfi) - uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # v1.4.3 + uses: actions/attest-build-provenance@ef244123eb79f2f7a7e75d99086184180e6d0018 # v1.4.4 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push-wolfi.outputs.digest }} From ea9843e80fd9517669638c8808a13ef01409d786 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 11:07:07 +0100 Subject: [PATCH 186/396] chore(deps-dev): bump mysql2 from 3.11.3 to 3.11.4 (#4311) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index e6c225325f..5af1f4a480 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12488,9 +12488,9 @@ } }, "node_modules/mysql2": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.11.3.tgz", - "integrity": "sha512-Qpu2ADfbKzyLdwC/5d4W7+5Yz7yBzCU05YWt5npWzACST37wJsB23wgOSo00qi043urkiRwXtEvJc9UnuLX/MQ==", + "version": "3.11.4", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.11.4.tgz", + "integrity": "sha512-Z2o3tY4Z8EvSRDwknaC40MdZ3+m0sKbpnXrShQLdxPrAvcNli7jLrD2Zd2IzsRMw4eK9Yle500FDmlkIqp+krg==", "dev": true, "dependencies": { "aws-ssl-profiles": "^1.1.1", @@ -25947,9 +25947,9 @@ } }, "mysql2": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.11.3.tgz", - "integrity": "sha512-Qpu2ADfbKzyLdwC/5d4W7+5Yz7yBzCU05YWt5npWzACST37wJsB23wgOSo00qi043urkiRwXtEvJc9UnuLX/MQ==", + "version": "3.11.4", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.11.4.tgz", + "integrity": "sha512-Z2o3tY4Z8EvSRDwknaC40MdZ3+m0sKbpnXrShQLdxPrAvcNli7jLrD2Zd2IzsRMw4eK9Yle500FDmlkIqp+krg==", "dev": true, "requires": { "aws-ssl-profiles": "^1.1.1", From b6b082d64701e76b5300f65e62618fb8788c4d9e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 11:07:54 +0100 Subject: [PATCH 187/396] chore(deps-dev): bump @types/node from 22.8.1 to 22.9.0 (#4312) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5af1f4a480..65d4b556b9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6157,9 +6157,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.8.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.1.tgz", - "integrity": "sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==", + "version": "22.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", + "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", "dev": true, "dependencies": { "undici-types": "~6.19.8" @@ -21134,9 +21134,9 @@ "dev": true }, "@types/node": { - "version": "22.8.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.1.tgz", - "integrity": "sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==", + "version": "22.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", + "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", "dev": true, "requires": { "undici-types": "~6.19.8" From dcefc3ce148a036e402d6d11bec2cd62ed98b2f5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 11:10:08 +0100 Subject: [PATCH 188/396] chore(deps-dev): bump the eslint group across 1 directory with 2 updates (#4310) Updates `eslint` from 9.13.0 to 9.14.0 Updates `eslint-plugin-n` from 17.11.1 to 17.13.1 --- package-lock.json | 359 +++++++++++++++++++++++++--------------------- 1 file changed, 195 insertions(+), 164 deletions(-) diff --git a/package-lock.json b/package-lock.json index 65d4b556b9..69cadb4054 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4072,24 +4072,27 @@ "dev": true }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -4099,9 +4102,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", - "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -4188,9 +4191,9 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.13.0.tgz", - "integrity": "sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==", + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz", + "integrity": "sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4817,27 +4820,40 @@ "dev": true }, "node_modules/@humanfs/core": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.0.tgz", - "integrity": "sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, "engines": { "node": ">=18.18.0" } }, "node_modules/@humanfs/node": { - "version": "0.16.5", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.5.tgz", - "integrity": "sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==", + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, "dependencies": { - "@humanfs/core": "^0.19.0", + "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.3.0" }, "engines": { "node": ">=18.18.0" } }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -4852,9 +4868,9 @@ } }, "node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", "dev": true, "engines": { "node": ">=18.18" @@ -6276,9 +6292,9 @@ } }, "node_modules/acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "bin": { "acorn": "bin/acorn" }, @@ -8490,9 +8506,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", - "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -8704,21 +8720,21 @@ } }, "node_modules/eslint": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.13.0.tgz", - "integrity": "sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==", + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz", + "integrity": "sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.11.0", + "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.18.0", "@eslint/core": "^0.7.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.13.0", + "@eslint/js": "9.14.0", "@eslint/plugin-kit": "^0.2.0", - "@humanfs/node": "^0.16.5", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.3.1", + "@humanwhocodes/retry": "^0.4.0", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", @@ -8726,9 +8742,9 @@ "cross-spawn": "^7.0.2", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.1.0", - "eslint-visitor-keys": "^4.1.0", - "espree": "^10.2.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -8764,10 +8780,13 @@ } }, "node_modules/eslint-compat-utils": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz", - "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", "dev": true, + "dependencies": { + "semver": "^7.5.4" + }, "engines": { "node": ">=12" }, @@ -8834,21 +8853,22 @@ } }, "node_modules/eslint-plugin-es-x": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.5.0.tgz", - "integrity": "sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", + "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", "dev": true, + "funding": [ + "https://github.com/sponsors/ota-meshi", + "https://opencollective.com/eslint" + ], "dependencies": { "@eslint-community/eslint-utils": "^4.1.2", - "@eslint-community/regexpp": "^4.6.0", - "eslint-compat-utils": "^0.1.2" + "@eslint-community/regexpp": "^4.11.0", + "eslint-compat-utils": "^0.5.1" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - }, "peerDependencies": { "eslint": ">=8" } @@ -8926,19 +8946,19 @@ } }, "node_modules/eslint-plugin-n": { - "version": "17.11.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.11.1.tgz", - "integrity": "sha512-93IUD82N6tIEgjztVI/l3ElHtC2wTa9boJHrD8iN+NyDxjxz/daZUZKfkedjBZNdg6EqDk4irybUsiPwDqXAEA==", + "version": "17.13.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.13.1.tgz", + "integrity": "sha512-97qzhk1z3DdSJNCqT45EslwCu5+LB9GDadSyBItgKUfGsXAmN/aa7LRQ0ZxHffUxUzvgbTPJL27/pE9ZQWHy7A==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "enhanced-resolve": "^5.17.0", - "eslint-plugin-es-x": "^7.5.0", - "get-tsconfig": "^4.7.0", - "globals": "^15.8.0", - "ignore": "^5.2.4", + "@eslint-community/eslint-utils": "^4.4.1", + "enhanced-resolve": "^5.17.1", + "eslint-plugin-es-x": "^7.8.0", + "get-tsconfig": "^4.8.1", + "globals": "^15.11.0", + "ignore": "^5.3.2", "minimatch": "^9.0.5", - "semver": "^7.5.3" + "semver": "^7.6.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8960,9 +8980,9 @@ } }, "node_modules/eslint-plugin-n/node_modules/globals": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.8.0.tgz", - "integrity": "sha512-VZAJ4cewHTExBWDHR6yptdIBlx9YSSZuwojj9Nt5mBRXQzrKakDsVKQ1J63sklLvzAJm0X5+RpO4i3Y2hcOnFw==", + "version": "15.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz", + "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==", "dev": true, "engines": { "node": ">=18" @@ -9032,9 +9052,9 @@ } }, "node_modules/eslint-scope": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", - "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -9048,9 +9068,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", - "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -9234,14 +9254,14 @@ } }, "node_modules/espree": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", - "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, "dependencies": { - "acorn": "^8.12.0", + "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.1.0" + "eslint-visitor-keys": "^4.2.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -10151,9 +10171,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.0.tgz", - "integrity": "sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", "dev": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -10270,9 +10290,9 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, "node_modules/graphql": { @@ -10684,9 +10704,9 @@ "dev": true }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "engines": { "node": ">= 4" @@ -19299,26 +19319,26 @@ } }, "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "dev": true, "requires": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" }, "dependencies": { "eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true } } }, "@eslint-community/regexpp": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", - "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true }, "@eslint/config-array": { @@ -19382,9 +19402,9 @@ } }, "@eslint/js": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.13.0.tgz", - "integrity": "sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==", + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz", + "integrity": "sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==", "dev": true }, "@eslint/object-schema": { @@ -20027,19 +20047,27 @@ } }, "@humanfs/core": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.0.tgz", - "integrity": "sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true }, "@humanfs/node": { - "version": "0.16.5", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.5.tgz", - "integrity": "sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==", + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, "requires": { - "@humanfs/core": "^0.19.0", + "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.3.0" + }, + "dependencies": { + "@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true + } } }, "@humanwhocodes/module-importer": { @@ -20049,9 +20077,9 @@ "dev": true }, "@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", "dev": true }, "@ioredis/commands": { @@ -21246,9 +21274,9 @@ } }, "acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==" + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==" }, "acorn-import-attributes": { "version": "1.9.5", @@ -22921,9 +22949,9 @@ } }, "enhanced-resolve": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", - "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -23095,21 +23123,21 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.13.0.tgz", - "integrity": "sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==", + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz", + "integrity": "sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.11.0", + "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.18.0", "@eslint/core": "^0.7.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.13.0", + "@eslint/js": "9.14.0", "@eslint/plugin-kit": "^0.2.0", - "@humanfs/node": "^0.16.5", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.3.1", + "@humanwhocodes/retry": "^0.4.0", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", @@ -23117,9 +23145,9 @@ "cross-spawn": "^7.0.2", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.1.0", - "eslint-visitor-keys": "^4.1.0", - "espree": "^10.2.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -23253,10 +23281,13 @@ } }, "eslint-compat-utils": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz", - "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==", - "dev": true + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", + "dev": true, + "requires": { + "semver": "^7.5.4" + } }, "eslint-config-prettier": { "version": "9.1.0", @@ -23307,14 +23338,14 @@ } }, "eslint-plugin-es-x": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.5.0.tgz", - "integrity": "sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", + "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.1.2", - "@eslint-community/regexpp": "^4.6.0", - "eslint-compat-utils": "^0.1.2" + "@eslint-community/regexpp": "^4.11.0", + "eslint-compat-utils": "^0.5.1" } }, "eslint-plugin-import": { @@ -23380,19 +23411,19 @@ } }, "eslint-plugin-n": { - "version": "17.11.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.11.1.tgz", - "integrity": "sha512-93IUD82N6tIEgjztVI/l3ElHtC2wTa9boJHrD8iN+NyDxjxz/daZUZKfkedjBZNdg6EqDk4irybUsiPwDqXAEA==", + "version": "17.13.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.13.1.tgz", + "integrity": "sha512-97qzhk1z3DdSJNCqT45EslwCu5+LB9GDadSyBItgKUfGsXAmN/aa7LRQ0ZxHffUxUzvgbTPJL27/pE9ZQWHy7A==", "dev": true, "requires": { - "@eslint-community/eslint-utils": "^4.4.0", - "enhanced-resolve": "^5.17.0", - "eslint-plugin-es-x": "^7.5.0", - "get-tsconfig": "^4.7.0", - "globals": "^15.8.0", - "ignore": "^5.2.4", + "@eslint-community/eslint-utils": "^4.4.1", + "enhanced-resolve": "^5.17.1", + "eslint-plugin-es-x": "^7.8.0", + "get-tsconfig": "^4.8.1", + "globals": "^15.11.0", + "ignore": "^5.3.2", "minimatch": "^9.0.5", - "semver": "^7.5.3" + "semver": "^7.6.3" }, "dependencies": { "brace-expansion": { @@ -23405,9 +23436,9 @@ } }, "globals": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.8.0.tgz", - "integrity": "sha512-VZAJ4cewHTExBWDHR6yptdIBlx9YSSZuwojj9Nt5mBRXQzrKakDsVKQ1J63sklLvzAJm0X5+RpO4i3Y2hcOnFw==", + "version": "15.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz", + "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==", "dev": true }, "minimatch": { @@ -23438,9 +23469,9 @@ "dev": true }, "eslint-scope": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", - "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -23448,9 +23479,9 @@ } }, "eslint-visitor-keys": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", - "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true }, "esm": { @@ -23460,14 +23491,14 @@ "dev": true }, "espree": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", - "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, "requires": { - "acorn": "^8.12.0", + "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.1.0" + "eslint-visitor-keys": "^4.2.0" } }, "esquery": { @@ -24174,9 +24205,9 @@ } }, "get-tsconfig": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.0.tgz", - "integrity": "sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", "dev": true, "requires": { "resolve-pkg-maps": "^1.0.0" @@ -24262,9 +24293,9 @@ } }, "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, "graphql": { @@ -24588,9 +24619,9 @@ "dev": true }, "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true }, "import-fresh": { From 777ae3690310d0dae318af4388ea0cee0e8bdc08 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 14 Nov 2024 15:27:54 +0100 Subject: [PATCH 189/396] chore(deps): bump @opentelemetry/exporter-prometheus from 0.54.0 to 0.54.2 (#4314) --- .../opentelemetry-metrics/fixtures/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/opentelemetry-metrics/fixtures/package-lock.json b/test/opentelemetry-metrics/fixtures/package-lock.json index 0faf39e0d6..12b394a114 100644 --- a/test/opentelemetry-metrics/fixtures/package-lock.json +++ b/test/opentelemetry-metrics/fixtures/package-lock.json @@ -36,9 +36,9 @@ } }, "node_modules/@opentelemetry/exporter-prometheus": { - "version": "0.54.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.54.0.tgz", - "integrity": "sha512-httb+/c36hZvkIR9SqwXj+fLeE2XDdWfZqGO24MboNMHihmnvjE0/LN29I9CjsJqC2jEi8FErfQha/JeOfsFaA==", + "version": "0.54.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.54.2.tgz", + "integrity": "sha512-U/XoupMPmrdEc3tzSxvMft+r/qK2O6SigZWewpC0183UF0cnGlQr1sPx/VxXo7RXJ6zMxDFHhO2Z1AWApXD1Pw==", "dependencies": { "@opentelemetry/core": "1.27.0", "@opentelemetry/resources": "1.27.0", @@ -105,9 +105,9 @@ } }, "@opentelemetry/exporter-prometheus": { - "version": "0.54.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.54.0.tgz", - "integrity": "sha512-httb+/c36hZvkIR9SqwXj+fLeE2XDdWfZqGO24MboNMHihmnvjE0/LN29I9CjsJqC2jEi8FErfQha/JeOfsFaA==", + "version": "0.54.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.54.2.tgz", + "integrity": "sha512-U/XoupMPmrdEc3tzSxvMft+r/qK2O6SigZWewpC0183UF0cnGlQr1sPx/VxXo7RXJ6zMxDFHhO2Z1AWApXD1Pw==", "requires": { "@opentelemetry/core": "1.27.0", "@opentelemetry/resources": "1.27.0", From 3e491e7b8af544200bb8bf4415ee60c7a7714601 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Thu, 14 Nov 2024 15:29:16 +0100 Subject: [PATCH 190/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to 32099b9 (#4305) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index da1e960703..7baf61af17 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:74385d2e67fb0df0df261e57ea174bb2df6e858110ecd1e8928d06f53c9efa4b +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:32099b99697d9da842c1ccacdbef1beee05a68cddb817e858d7656df45ed4c93 ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 47ac2988c72dae1b595eee88fbba99eeecfc9f4a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 14 Nov 2024 15:30:05 +0100 Subject: [PATCH 191/396] chore(deps-dev): bump azure-functions-core-tools from 4.0.6280 to 4.0.6543 (#4300) --- .../fixtures/AJsAzureFnApp/package-lock.json | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/package-lock.json b/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/package-lock.json index 18590b1637..c2b5968f99 100644 --- a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/package-lock.json +++ b/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/package-lock.json @@ -11,9 +11,9 @@ } }, "node_modules/azure-functions-core-tools": { - "version": "4.0.6280", - "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.6280.tgz", - "integrity": "sha512-DVSgYNnT4POLbj/YV3FKtNdo9KT/M5Dl//slWEmVwZo1y4aJEsUApn6DtkZswut76I3S9eKGC5IaC84j5OGNaA==", + "version": "4.0.6543", + "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.6543.tgz", + "integrity": "sha512-YWbtgGWghgtFc4jZ6+Mrqnt88hsLIlbTBJz0SpkeZ4xTUqTFrlxj8n+tw//0vzIMYcC89T3zk+s3DFGawSV2gA==", "dev": true, "hasInstallScript": true, "hasShrinkwrap": true, @@ -25,7 +25,7 @@ "dependencies": { "chalk": "3.0.0", "extract-zip": "^2.0.1", - "https-proxy-agent": "5.0.0", + "https-proxy-agent": "5.0.1", "progress": "2.0.3", "rimraf": "4.4.1" }, @@ -382,14 +382,14 @@ }, "dependencies": { "azure-functions-core-tools": { - "version": "4.0.6280", - "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.6280.tgz", - "integrity": "sha512-DVSgYNnT4POLbj/YV3FKtNdo9KT/M5Dl//slWEmVwZo1y4aJEsUApn6DtkZswut76I3S9eKGC5IaC84j5OGNaA==", + "version": "4.0.6543", + "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.6543.tgz", + "integrity": "sha512-YWbtgGWghgtFc4jZ6+Mrqnt88hsLIlbTBJz0SpkeZ4xTUqTFrlxj8n+tw//0vzIMYcC89T3zk+s3DFGawSV2gA==", "dev": true, "requires": { "chalk": "3.0.0", "extract-zip": "^2.0.1", - "https-proxy-agent": "5.0.0", + "https-proxy-agent": "5.0.1", "progress": "2.0.3", "rimraf": "4.4.1" }, @@ -564,8 +564,7 @@ "dev": true }, "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "version": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "dev": true, "requires": { From 69d0d7a2e19a614668aa371f735ad2d298523446 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 10:18:33 +0100 Subject: [PATCH 192/396] chore(deps-dev): bump @elastic/elasticsearch from 8.15.1 to 8.16.0 (#4318) --- package-lock.json | 757 ++++++++++++++++++++++++++++++---------------- 1 file changed, 497 insertions(+), 260 deletions(-) diff --git a/package-lock.json b/package-lock.json index 69cadb4054..20bcdd7b4b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4035,12 +4035,13 @@ } }, "node_modules/@elastic/elasticsearch": { - "version": "8.15.1", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.15.1.tgz", - "integrity": "sha512-L3YzSaxrasMMGtcxnktiUDjS5f177L0zpHsBH+jL0LgPhdMk9xN/VKrAaYzvri86IlV5IbveA0ANV6o/BDUmhQ==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.16.0.tgz", + "integrity": "sha512-uiPC6AePESl/jakx+ZLarLsLdxDHiCSrpAkkXJ5Q8A78vadEQsTGXRUVFwWWkS8gfGthnT3O+QK6BHXuszd0KQ==", "dev": true, "dependencies": { - "@elastic/transport": "^8.8.1", + "@elastic/transport": "^8.9.1", + "apache-arrow": "^18.0.0", "tslib": "^2.4.0" }, "engines": { @@ -4048,9 +4049,9 @@ } }, "node_modules/@elastic/transport": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.8.1.tgz", - "integrity": "sha512-4RQIiChwNIx3B0O+2JdmTq/Qobj6+1g2RQnSv1gt4V2SVfAYjGwOKu0ZMKEHQOXYNG6+j/Chero2G9k3/wXLEw==", + "version": "8.9.1", + "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.9.1.tgz", + "integrity": "sha512-jasKNQeOb1vNf9aEYg+8zXmetaFjApDTSCC4QTl6aTixvyiRiSLcCiB8P6Q0lY9JIII/BhqNl8WbpFnsKitntw==", "dev": true, "dependencies": { "@opentelemetry/api": "1.x", @@ -6030,6 +6031,15 @@ "node": ">=14.0.0" } }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "dev": true, + "dependencies": { + "tslib": "^2.8.0" + } + }, "node_modules/@szmarczak/http-timer": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", @@ -6073,6 +6083,18 @@ "@types/responselike": "*" } }, + "node_modules/@types/command-line-args": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.2.3.tgz", + "integrity": "sha512-uv0aG6R0Y8WHZLTamZwtfsDLVRnOa+n+n5rEvFWL5Na5gZ8V2Teab/duDPFzIIIhs9qizDpcavCusCLJZu62Kw==", + "dev": true + }, + "node_modules/@types/command-line-usage": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/command-line-usage/-/command-line-usage-5.0.4.tgz", + "integrity": "sha512-BwR5KP3Es/CSht0xqBcUXS3qCAUVXwpRKsV2+arxeb65atasuXG9LykC9Ab10Cw3s2raH92ZqOeILaQbsB2ACg==", + "dev": true + }, "node_modules/@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -6453,6 +6475,39 @@ "node": ">=8" } }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansi-styles/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ansi-styles/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -6467,6 +6522,35 @@ "node": ">= 8" } }, + "node_modules/apache-arrow": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/apache-arrow/-/apache-arrow-18.0.0.tgz", + "integrity": "sha512-gFlPaqN9osetbB83zC29AbbZqGiCuFH1vyyPseJ+B7SIbfBtESV62mMT/CkiIt77W6ykC/nTWFzTXFs0Uldg4g==", + "dev": true, + "dependencies": { + "@swc/helpers": "^0.5.11", + "@types/command-line-args": "^5.2.3", + "@types/command-line-usage": "^5.0.4", + "@types/node": "^20.13.0", + "command-line-args": "^5.2.1", + "command-line-usage": "^7.0.1", + "flatbuffers": "^24.3.25", + "json-bignum": "^0.0.3", + "tslib": "^2.6.2" + }, + "bin": { + "arrow2csv": "bin/arrow2csv.js" + } + }, + "node_modules/apache-arrow/node_modules/@types/node": { + "version": "20.17.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.6.tgz", + "integrity": "sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ==", + "dev": true, + "dependencies": { + "undici-types": "~6.19.2" + } + }, "node_modules/apollo-datasource": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.2.tgz", @@ -6633,6 +6717,15 @@ "graphql": "^15.3.0 || ^16.0.0" } }, + "node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/array-buffer-byte-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", @@ -7510,6 +7603,37 @@ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", "dev": true }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk-template": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", + "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/chalk-template?sponsor=1" + } + }, "node_modules/character-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", @@ -7701,6 +7825,54 @@ "node": ">= 0.8" } }, + "node_modules/command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dev": true, + "dependencies": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/command-line-usage": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.3.tgz", + "integrity": "sha512-PqMLy5+YGwhMh1wS04mVG44oqDsgyLRSKJBdOo1bnYhMKBW65gZF1dRp2OZRhiTjgUHljy99qkO7bsctLaw35Q==", + "dev": true, + "dependencies": { + "array-back": "^6.2.2", + "chalk-template": "^0.4.0", + "table-layout": "^4.1.0", + "typical": "^7.1.1" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/command-line-usage/node_modules/array-back": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", + "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", + "dev": true, + "engines": { + "node": ">=12.17" + } + }, + "node_modules/command-line-usage/node_modules/typical": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-7.3.0.tgz", + "integrity": "sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==", + "dev": true, + "engines": { + "node": ">=12.17" + } + }, "node_modules/commander": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", @@ -9095,55 +9267,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/eslint/node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -9172,15 +9295,6 @@ "node": ">=10.13.0" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -9232,18 +9346,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/esm": { "version": "3.2.25", "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", @@ -9905,6 +10007,18 @@ "node": ">=14" } }, + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, + "dependencies": { + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/flat-cache": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", @@ -9918,6 +10032,12 @@ "node": ">=16" } }, + "node_modules/flatbuffers": { + "version": "24.3.25", + "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-24.3.25.tgz", + "integrity": "sha512-3HDgPbgiwWMI9zVB7VYBHaMrbOO7Gm0v+yD2FV/sCKj+9NDeVL7BOBYUuhWAQGKWOzBo8S9WdMvV0eixO233XQ==", + "dev": true + }, "node_modules/flatted": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", @@ -10445,6 +10565,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/has-property-descriptors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", @@ -11420,6 +11549,15 @@ "bignumber.js": "^9.0.0" } }, + "node_modules/json-bignum": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/json-bignum/-/json-bignum-0.0.3.tgz", + "integrity": "sha512-2WHyXj3OfHSgNyuzDbSxI1w2jgw5gkWSWhS7Qg4bWXx1nLk3jnbwfUeS0PSba3IzpTUWdHxBieELUzXRjQB2zg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -11860,6 +11998,12 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -11947,76 +12091,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/logform": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.0.tgz", @@ -15218,6 +15292,18 @@ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "dev": true }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -15245,6 +15331,28 @@ "url": "https://opencollective.com/unts" } }, + "node_modules/table-layout": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-4.1.1.tgz", + "integrity": "sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==", + "dev": true, + "dependencies": { + "array-back": "^6.2.2", + "wordwrapjs": "^5.1.0" + }, + "engines": { + "node": ">=12.17" + } + }, + "node_modules/table-layout/node_modules/array-back": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", + "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", + "dev": true, + "engines": { + "node": ">=12.17" + } + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -15589,9 +15697,9 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true }, "node_modules/tsscmp": { @@ -15728,6 +15836,15 @@ "node": ">=14.17" } }, + "node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/uglify-js": { "version": "3.15.4", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.4.tgz", @@ -16183,6 +16300,15 @@ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, + "node_modules/wordwrapjs": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.0.tgz", + "integrity": "sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg==", + "dev": true, + "engines": { + "node": ">=12.17" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -19286,19 +19412,20 @@ } }, "@elastic/elasticsearch": { - "version": "8.15.1", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.15.1.tgz", - "integrity": "sha512-L3YzSaxrasMMGtcxnktiUDjS5f177L0zpHsBH+jL0LgPhdMk9xN/VKrAaYzvri86IlV5IbveA0ANV6o/BDUmhQ==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.16.0.tgz", + "integrity": "sha512-uiPC6AePESl/jakx+ZLarLsLdxDHiCSrpAkkXJ5Q8A78vadEQsTGXRUVFwWWkS8gfGthnT3O+QK6BHXuszd0KQ==", "dev": true, "requires": { - "@elastic/transport": "^8.8.1", + "@elastic/transport": "^8.9.1", + "apache-arrow": "^18.0.0", "tslib": "^2.4.0" } }, "@elastic/transport": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.8.1.tgz", - "integrity": "sha512-4RQIiChwNIx3B0O+2JdmTq/Qobj6+1g2RQnSv1gt4V2SVfAYjGwOKu0ZMKEHQOXYNG6+j/Chero2G9k3/wXLEw==", + "version": "8.9.1", + "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.9.1.tgz", + "integrity": "sha512-jasKNQeOb1vNf9aEYg+8zXmetaFjApDTSCC4QTl6aTixvyiRiSLcCiB8P6Q0lY9JIII/BhqNl8WbpFnsKitntw==", "dev": true, "requires": { "@opentelemetry/api": "1.x", @@ -21022,6 +21149,15 @@ "tslib": "^2.5.0" } }, + "@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "dev": true, + "requires": { + "tslib": "^2.8.0" + } + }, "@szmarczak/http-timer": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", @@ -21062,6 +21198,18 @@ "@types/responselike": "*" } }, + "@types/command-line-args": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.2.3.tgz", + "integrity": "sha512-uv0aG6R0Y8WHZLTamZwtfsDLVRnOa+n+n5rEvFWL5Na5gZ8V2Teab/duDPFzIIIhs9qizDpcavCusCLJZu62Kw==", + "dev": true + }, + "@types/command-line-usage": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/command-line-usage/-/command-line-usage-5.0.4.tgz", + "integrity": "sha512-BwR5KP3Es/CSht0xqBcUXS3qCAUVXwpRKsV2+arxeb65atasuXG9LykC9Ab10Cw3s2raH92ZqOeILaQbsB2ACg==", + "dev": true + }, "@types/connect": { "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", @@ -21388,6 +21536,32 @@ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + }, + "dependencies": { + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, "anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -21399,6 +21573,34 @@ "picomatch": "^2.0.4" } }, + "apache-arrow": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/apache-arrow/-/apache-arrow-18.0.0.tgz", + "integrity": "sha512-gFlPaqN9osetbB83zC29AbbZqGiCuFH1vyyPseJ+B7SIbfBtESV62mMT/CkiIt77W6ykC/nTWFzTXFs0Uldg4g==", + "dev": true, + "requires": { + "@swc/helpers": "^0.5.11", + "@types/command-line-args": "^5.2.3", + "@types/command-line-usage": "^5.0.4", + "@types/node": "^20.13.0", + "command-line-args": "^5.2.1", + "command-line-usage": "^7.0.1", + "flatbuffers": "^24.3.25", + "json-bignum": "^0.0.3", + "tslib": "^2.6.2" + }, + "dependencies": { + "@types/node": { + "version": "20.17.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.6.tgz", + "integrity": "sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ==", + "dev": true, + "requires": { + "undici-types": "~6.19.2" + } + } + } + }, "apollo-datasource": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.2.tgz", @@ -21521,6 +21723,12 @@ "apollo-server-env": "^4.2.1" } }, + "array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true + }, "array-buffer-byte-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", @@ -22179,6 +22387,25 @@ } } }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chalk-template": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", + "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", + "dev": true, + "requires": { + "chalk": "^4.1.2" + } + }, "character-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", @@ -22333,6 +22560,44 @@ "delayed-stream": "~1.0.0" } }, + "command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dev": true, + "requires": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + } + }, + "command-line-usage": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.3.tgz", + "integrity": "sha512-PqMLy5+YGwhMh1wS04mVG44oqDsgyLRSKJBdOo1bnYhMKBW65gZF1dRp2OZRhiTjgUHljy99qkO7bsctLaw35Q==", + "dev": true, + "requires": { + "array-back": "^6.2.2", + "chalk-template": "^0.4.0", + "table-layout": "^4.1.0", + "typical": "^7.1.1" + }, + "dependencies": { + "array-back": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", + "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", + "dev": true + }, + "typical": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-7.3.0.tgz", + "integrity": "sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==", + "dev": true + } + } + }, "commander": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", @@ -23177,40 +23442,6 @@ "uri-js": "^4.2.2" } }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -23230,12 +23461,6 @@ "is-glob": "^4.0.3" } }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -23268,15 +23493,6 @@ "requires": { "p-limit": "^3.0.2" } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } } } }, @@ -24024,6 +24240,15 @@ "safe-regex2": "^2.0.0" } }, + "find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, + "requires": { + "array-back": "^3.0.1" + } + }, "flat-cache": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", @@ -24034,6 +24259,12 @@ "keyv": "^4.5.4" } }, + "flatbuffers": { + "version": "24.3.25", + "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-24.3.25.tgz", + "integrity": "sha512-3HDgPbgiwWMI9zVB7VYBHaMrbOO7Gm0v+yD2FV/sCKj+9NDeVL7BOBYUuhWAQGKWOzBo8S9WdMvV0eixO233XQ==", + "dev": true + }, "flatted": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", @@ -24408,6 +24639,12 @@ "get-intrinsic": "^1.2.2" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "has-property-descriptors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", @@ -25124,6 +25361,12 @@ "bignumber.js": "^9.0.0" } }, + "json-bignum": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/json-bignum/-/json-bignum-0.0.3.tgz", + "integrity": "sha512-2WHyXj3OfHSgNyuzDbSxI1w2jgw5gkWSWhS7Qg4bWXx1nLk3jnbwfUeS0PSba3IzpTUWdHxBieELUzXRjQB2zg==", + "dev": true + }, "json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -25483,6 +25726,12 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -25562,57 +25811,6 @@ "requires": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "logform": { @@ -28103,6 +28301,15 @@ "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "dev": true }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, "supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -28118,6 +28325,24 @@ "tslib": "^2.6.2" } }, + "table-layout": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-4.1.1.tgz", + "integrity": "sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==", + "dev": true, + "requires": { + "array-back": "^6.2.2", + "wordwrapjs": "^5.1.0" + }, + "dependencies": { + "array-back": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", + "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", + "dev": true + } + } + }, "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -28413,9 +28638,9 @@ } }, "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true }, "tsscmp": { @@ -28512,6 +28737,12 @@ "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "dev": true }, + "typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true + }, "uglify-js": { "version": "3.15.4", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.4.tgz", @@ -28864,6 +29095,12 @@ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, + "wordwrapjs": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.0.tgz", + "integrity": "sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg==", + "dev": true + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", From 447194a7e9376997262a9f1e93f3e923732a1fe6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 10:52:00 +0100 Subject: [PATCH 193/396] chore(deps-dev): bump undici from 6.20.1 to 6.21.0 (#4317) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 20bcdd7b4b..7050116f30 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15882,9 +15882,9 @@ } }, "node_modules/undici": { - "version": "6.20.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.20.1.tgz", - "integrity": "sha512-AjQF1QsmqfJys+LXfGTNum+qw4S88CojRInG/6t31W/1fk6G59s92bnAvGz5Cmur+kQv2SURXEvvudLmbrE8QA==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.0.tgz", + "integrity": "sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==", "dev": true, "engines": { "node": ">=18.17" @@ -28768,9 +28768,9 @@ "dev": true }, "undici": { - "version": "6.20.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.20.1.tgz", - "integrity": "sha512-AjQF1QsmqfJys+LXfGTNum+qw4S88CojRInG/6t31W/1fk6G59s92bnAvGz5Cmur+kQv2SURXEvvudLmbrE8QA==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.0.tgz", + "integrity": "sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==", "dev": true }, "undici-types": { From 193a73413a6d7790cb6c187cc6ecb6722d63a7ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Nov 2024 07:05:12 +0100 Subject: [PATCH 194/396] chore(deps-dev): bump the eslint group with 2 updates (#4316) Updates `eslint` from 9.14.0 to 9.15.0 Updates `eslint-plugin-n` from 17.13.1 to 17.13.2 --- package-lock.json | 142 +++++++++++++++++++++------------------------- 1 file changed, 64 insertions(+), 78 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7050116f30..3ad0b6f89e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4112,9 +4112,9 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", - "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz", + "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", "dev": true, "dependencies": { "@eslint/object-schema": "^2.1.4", @@ -4126,18 +4126,18 @@ } }, "node_modules/@eslint/core": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", - "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz", + "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/eslintrc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", - "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -4192,9 +4192,9 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz", - "integrity": "sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz", + "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4210,9 +4210,9 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz", - "integrity": "sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", + "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", "dev": true, "dependencies": { "levn": "^0.4.1" @@ -8084,9 +8084,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "dependencies": { "path-key": "^3.1.0", @@ -8892,26 +8892,26 @@ } }, "node_modules/eslint": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz", - "integrity": "sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz", + "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.18.0", - "@eslint/core": "^0.7.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.14.0", - "@eslint/plugin-kit": "^0.2.0", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.15.0", + "@eslint/plugin-kit": "^0.2.3", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.0", + "@humanwhocodes/retry": "^0.4.1", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.5", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.2.0", @@ -8930,8 +8930,7 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" @@ -9118,9 +9117,9 @@ } }, "node_modules/eslint-plugin-n": { - "version": "17.13.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.13.1.tgz", - "integrity": "sha512-97qzhk1z3DdSJNCqT45EslwCu5+LB9GDadSyBItgKUfGsXAmN/aa7LRQ0ZxHffUxUzvgbTPJL27/pE9ZQWHy7A==", + "version": "17.13.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.13.2.tgz", + "integrity": "sha512-MhBAKkT01h8cOXcTBTlpuR7bxH5OBUNpUXefsvwSVEy46cY4m/Kzr2osUCQvA3zJFD6KuCeNNDv0+HDuWk/OcA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.1", @@ -15537,12 +15536,6 @@ "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", "dev": true }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, "node_modules/thread-stream": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.7.0.tgz", @@ -19469,9 +19462,9 @@ "dev": true }, "@eslint/config-array": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", - "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz", + "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", "dev": true, "requires": { "@eslint/object-schema": "^2.1.4", @@ -19480,15 +19473,15 @@ } }, "@eslint/core": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", - "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz", + "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==", "dev": true }, "@eslint/eslintrc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", - "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -19529,9 +19522,9 @@ } }, "@eslint/js": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz", - "integrity": "sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz", + "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==", "dev": true }, "@eslint/object-schema": { @@ -19541,9 +19534,9 @@ "dev": true }, "@eslint/plugin-kit": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz", - "integrity": "sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", + "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", "dev": true, "requires": { "levn": "^0.4.1" @@ -22767,9 +22760,9 @@ } }, "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -23388,26 +23381,26 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz", - "integrity": "sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz", + "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.18.0", - "@eslint/core": "^0.7.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.14.0", - "@eslint/plugin-kit": "^0.2.0", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.15.0", + "@eslint/plugin-kit": "^0.2.3", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.0", + "@humanwhocodes/retry": "^0.4.1", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.5", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.2.0", @@ -23426,8 +23419,7 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "dependencies": { "ajv": { @@ -23627,9 +23619,9 @@ } }, "eslint-plugin-n": { - "version": "17.13.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.13.1.tgz", - "integrity": "sha512-97qzhk1z3DdSJNCqT45EslwCu5+LB9GDadSyBItgKUfGsXAmN/aa7LRQ0ZxHffUxUzvgbTPJL27/pE9ZQWHy7A==", + "version": "17.13.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.13.2.tgz", + "integrity": "sha512-MhBAKkT01h8cOXcTBTlpuR7bxH5OBUNpUXefsvwSVEy46cY4m/Kzr2osUCQvA3zJFD6KuCeNNDv0+HDuWk/OcA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.1", @@ -28495,12 +28487,6 @@ "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", "dev": true }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, "thread-stream": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.7.0.tgz", From 05c80359f0b4a183d73961d95372d8bf84e43406 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Thu, 21 Nov 2024 10:51:59 +0100 Subject: [PATCH 195/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to 973e72c (#4319) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 7baf61af17..36a2ccca32 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:32099b99697d9da842c1ccacdbef1beee05a68cddb817e858d7656df45ed4c93 +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:973e72c78eded337fef2f5231f0a2a5b1898c8354f3d2c2d062597b1318c5620 ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From ce64cee2b775e5764f575bc975dc7f37dd267bbb Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Fri, 22 Nov 2024 10:26:20 +0100 Subject: [PATCH 196/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to 55b297d (#4320) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 36a2ccca32..d9a20613ad 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:973e72c78eded337fef2f5231f0a2a5b1898c8354f3d2c2d062597b1318c5620 +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:55b297da5151d2a2997e8ab9729fe1304e4869389d7090ab7031cc29530f69f8 ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From b78c32feecaf3559de915d0a56517464df040807 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 16:34:05 +0100 Subject: [PATCH 197/396] chore(deps): bump docker/metadata-action from 5.5.1 to 5.6.1 (#4321) --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 81a688607b..0b74959cc0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -50,7 +50,7 @@ jobs: - name: Extract metadata (tags, labels) id: docker-meta - uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 # v5.5.1 + uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 # v5.6.1 with: images: ${{ env.DOCKER_IMAGE_NAME }} flavor: | @@ -83,7 +83,7 @@ jobs: - name: Extract metadata (tags, labels) (wolfi) id: docker-meta-wolfi - uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 # v5.5.1 + uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 # v5.6.1 with: images: ${{ env.DOCKER_IMAGE_NAME }} flavor: | From 323fc98bdea00aa9bf50bef6e73b08bfc1406328 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 16:34:43 +0100 Subject: [PATCH 198/396] chore(deps-dev): bump mongodb from 6.10.0 to 6.11.0 (#4325) --- package-lock.json | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3ad0b6f89e..529ad03af7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5026,9 +5026,9 @@ } }, "node_modules/@mongodb-js/saslprep": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.5.tgz", - "integrity": "sha512-XLNOMH66KhJzUJNwT/qlMnS4WsNDWD5ASdyaSH3EtK+F4r/CFGa3jT4GNi4mfOitGvWXtdLgQJkQjxSVrio+jA==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz", + "integrity": "sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==", "dev": true, "dependencies": { "sparse-bitfield": "^3.0.3" @@ -7439,9 +7439,9 @@ } }, "node_modules/bson": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.7.0.tgz", - "integrity": "sha512-w2IquM5mYzYZv6rs3uN2DZTOBe2a0zXLj53TGDqwF4l6Sz/XsISrisXOJihArF9+BZ6Cq/GjVht7Sjfmri7ytQ==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.0.tgz", + "integrity": "sha512-ROchNosXMJD2cbQGm84KoP7vOGPO6/bOAW0veMMbzhXLqoZptcaYRVLitwvuhwhjjpU1qP4YZRWLhgETdgqUQw==", "dev": true, "engines": { "node": ">=16.20.1" @@ -12419,13 +12419,13 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "node_modules/mongodb": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.10.0.tgz", - "integrity": "sha512-gP9vduuYWb9ZkDM546M+MP2qKVk5ZG2wPF63OvSRuUbqCR+11ZCAE1mOfllhlAG0wcoJY5yDL/rV3OmYEwXIzg==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.11.0.tgz", + "integrity": "sha512-yVbPw0qT268YKhG241vAMLaDQAPbRyTgo++odSgGc9kXnzOujQI60Iyj23B9sQQFPSvmNPvMZ3dsFz0aN55KgA==", "dev": true, "dependencies": { - "@mongodb-js/saslprep": "^1.1.5", - "bson": "^6.7.0", + "@mongodb-js/saslprep": "^1.1.9", + "bson": "^6.10.0", "mongodb-connection-string-url": "^3.0.0" }, "engines": { @@ -20322,9 +20322,9 @@ } }, "@mongodb-js/saslprep": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.5.tgz", - "integrity": "sha512-XLNOMH66KhJzUJNwT/qlMnS4WsNDWD5ASdyaSH3EtK+F4r/CFGa3jT4GNi4mfOitGvWXtdLgQJkQjxSVrio+jA==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz", + "integrity": "sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==", "dev": true, "requires": { "sparse-bitfield": "^3.0.3" @@ -22256,9 +22256,9 @@ } }, "bson": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.7.0.tgz", - "integrity": "sha512-w2IquM5mYzYZv6rs3uN2DZTOBe2a0zXLj53TGDqwF4l6Sz/XsISrisXOJihArF9+BZ6Cq/GjVht7Sjfmri7ytQ==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.0.tgz", + "integrity": "sha512-ROchNosXMJD2cbQGm84KoP7vOGPO6/bOAW0veMMbzhXLqoZptcaYRVLitwvuhwhjjpU1qP4YZRWLhgETdgqUQw==", "dev": true }, "buffer": { @@ -26052,13 +26052,13 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "mongodb": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.10.0.tgz", - "integrity": "sha512-gP9vduuYWb9ZkDM546M+MP2qKVk5ZG2wPF63OvSRuUbqCR+11ZCAE1mOfllhlAG0wcoJY5yDL/rV3OmYEwXIzg==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.11.0.tgz", + "integrity": "sha512-yVbPw0qT268YKhG241vAMLaDQAPbRyTgo++odSgGc9kXnzOujQI60Iyj23B9sQQFPSvmNPvMZ3dsFz0aN55KgA==", "dev": true, "requires": { - "@mongodb-js/saslprep": "^1.1.5", - "bson": "^6.7.0", + "@mongodb-js/saslprep": "^1.1.9", + "bson": "^6.10.0", "mongodb-connection-string-url": "^3.0.0" } }, From e597a5f9374adcfb20e9634ecc480fbec9a7f8d7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 16:36:33 +0100 Subject: [PATCH 199/396] chore(deps-dev): bump typescript from 5.6.3 to 5.7.2 (#4328) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 529ad03af7..5427f2f95d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15817,9 +15817,9 @@ } }, "node_modules/typescript": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -28718,9 +28718,9 @@ } }, "typescript": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", "dev": true }, "typical": { From 261199aef78e55ea8287f6e406d84ede95385549 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 16:38:56 +0100 Subject: [PATCH 200/396] chore(deps): bump @opentelemetry/core from 1.27.0 to 1.28.0 (#4326) --- package-lock.json | 60 ++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 54 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5427f2f95d..948f8e71e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5105,9 +5105,9 @@ } }, "node_modules/@opentelemetry/core": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", - "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", "dependencies": { "@opentelemetry/semantic-conventions": "1.27.0" }, @@ -5133,6 +5133,20 @@ "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, + "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/core": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", + "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, "node_modules/@opentelemetry/sdk-metrics": { "version": "1.27.0", "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.27.0.tgz", @@ -5148,6 +5162,20 @@ "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, + "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/core": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", + "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, "node_modules/@opentelemetry/semantic-conventions": { "version": "1.27.0", "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", @@ -20388,9 +20416,9 @@ "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" }, "@opentelemetry/core": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", - "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", "requires": { "@opentelemetry/semantic-conventions": "1.27.0" } @@ -20402,6 +20430,16 @@ "requires": { "@opentelemetry/core": "1.27.0", "@opentelemetry/semantic-conventions": "1.27.0" + }, + "dependencies": { + "@opentelemetry/core": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", + "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", + "requires": { + "@opentelemetry/semantic-conventions": "1.27.0" + } + } } }, "@opentelemetry/sdk-metrics": { @@ -20411,6 +20449,16 @@ "requires": { "@opentelemetry/core": "1.27.0", "@opentelemetry/resources": "1.27.0" + }, + "dependencies": { + "@opentelemetry/core": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", + "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", + "requires": { + "@opentelemetry/semantic-conventions": "1.27.0" + } + } } }, "@opentelemetry/semantic-conventions": { From 847557cb6bdffd13baf41f690774bae161adc0da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 16:49:53 +0100 Subject: [PATCH 201/396] chore(deps-dev): bump eslint-plugin-n from 17.13.2 to 17.14.0 (#4324) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 948f8e71e4..3470d8fd9d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9145,9 +9145,9 @@ } }, "node_modules/eslint-plugin-n": { - "version": "17.13.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.13.2.tgz", - "integrity": "sha512-MhBAKkT01h8cOXcTBTlpuR7bxH5OBUNpUXefsvwSVEy46cY4m/Kzr2osUCQvA3zJFD6KuCeNNDv0+HDuWk/OcA==", + "version": "17.14.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.14.0.tgz", + "integrity": "sha512-maxPLMEA0rPmRpoOlxEclKng4UpDe+N5BJS4t24I3UKnN109Qcivnfs37KMy84G0af3bxjog5lKctP5ObsvcTA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.1", @@ -23667,9 +23667,9 @@ } }, "eslint-plugin-n": { - "version": "17.13.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.13.2.tgz", - "integrity": "sha512-MhBAKkT01h8cOXcTBTlpuR7bxH5OBUNpUXefsvwSVEy46cY4m/Kzr2osUCQvA3zJFD6KuCeNNDv0+HDuWk/OcA==", + "version": "17.14.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.14.0.tgz", + "integrity": "sha512-maxPLMEA0rPmRpoOlxEclKng4UpDe+N5BJS4t24I3UKnN109Qcivnfs37KMy84G0af3bxjog5lKctP5ObsvcTA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.1", From a5bfbb63a64557bdecb759f630f3badf73dcec9e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 17:01:43 +0100 Subject: [PATCH 202/396] chore(deps-dev): bump @elastic/elasticsearch from 8.16.0 to 8.16.2 (#4327) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3470d8fd9d..72d2fbb58e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4035,9 +4035,9 @@ } }, "node_modules/@elastic/elasticsearch": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.16.0.tgz", - "integrity": "sha512-uiPC6AePESl/jakx+ZLarLsLdxDHiCSrpAkkXJ5Q8A78vadEQsTGXRUVFwWWkS8gfGthnT3O+QK6BHXuszd0KQ==", + "version": "8.16.2", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.16.2.tgz", + "integrity": "sha512-2ivc6uS97fbEeW4tNtg5mvh/Jy82ZLfcwQ1HhNhdYxyapNnQxIgZ83Zd8Ir+5jCPMDWKSYgwDb8t4GAINDDv2w==", "dev": true, "dependencies": { "@elastic/transport": "^8.9.1", @@ -19433,9 +19433,9 @@ } }, "@elastic/elasticsearch": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.16.0.tgz", - "integrity": "sha512-uiPC6AePESl/jakx+ZLarLsLdxDHiCSrpAkkXJ5Q8A78vadEQsTGXRUVFwWWkS8gfGthnT3O+QK6BHXuszd0KQ==", + "version": "8.16.2", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.16.2.tgz", + "integrity": "sha512-2ivc6uS97fbEeW4tNtg5mvh/Jy82ZLfcwQ1HhNhdYxyapNnQxIgZ83Zd8Ir+5jCPMDWKSYgwDb8t4GAINDDv2w==", "dev": true, "requires": { "@elastic/transport": "^8.9.1", From 2a5c036c9add885ceb7dc5ad15ab7057ca7e0408 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 17:02:29 +0100 Subject: [PATCH 203/396] chore(deps): bump @opentelemetry/sdk-metrics from 1.27.0 to 1.28.0 (#4329) --- package-lock.json | 84 ++++++++++------------------------------------- 1 file changed, 18 insertions(+), 66 deletions(-) diff --git a/package-lock.json b/package-lock.json index 72d2fbb58e..889d9317ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5119,25 +5119,11 @@ } }, "node_modules/@opentelemetry/resources": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.27.0.tgz", - "integrity": "sha512-jOwt2VJ/lUD5BLc+PMNymDrUCpm5PKi1E9oSVYAvz01U/VdndGmrtV3DU1pG4AwlYhJRHbHfOUIlpBeXCPw6QQ==", - "dependencies": { - "@opentelemetry/core": "1.27.0", - "@opentelemetry/semantic-conventions": "1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/core": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", - "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", + "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", "dependencies": { + "@opentelemetry/core": "1.28.0", "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { @@ -5148,12 +5134,12 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.27.0.tgz", - "integrity": "sha512-JzWgzlutoXCydhHWIbLg+r76m+m3ncqvkCcsswXAQ4gqKS+LOHKhq+t6fx1zNytvLuaOUBur7EvWxECc4jPQKg==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.28.0.tgz", + "integrity": "sha512-43tqMK/0BcKTyOvm15/WQ3HLr0Vu/ucAl/D84NO7iSlv6O4eOprxSHa3sUtmYkaZWHqdDJV0AHVz/R6u4JALVQ==", "dependencies": { - "@opentelemetry/core": "1.27.0", - "@opentelemetry/resources": "1.27.0" + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0" }, "engines": { "node": ">=14" @@ -5162,20 +5148,6 @@ "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/core": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", - "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", - "dependencies": { - "@opentelemetry/semantic-conventions": "1.27.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, "node_modules/@opentelemetry/semantic-conventions": { "version": "1.27.0", "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", @@ -20424,41 +20396,21 @@ } }, "@opentelemetry/resources": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.27.0.tgz", - "integrity": "sha512-jOwt2VJ/lUD5BLc+PMNymDrUCpm5PKi1E9oSVYAvz01U/VdndGmrtV3DU1pG4AwlYhJRHbHfOUIlpBeXCPw6QQ==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", + "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", "requires": { - "@opentelemetry/core": "1.27.0", + "@opentelemetry/core": "1.28.0", "@opentelemetry/semantic-conventions": "1.27.0" - }, - "dependencies": { - "@opentelemetry/core": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", - "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", - "requires": { - "@opentelemetry/semantic-conventions": "1.27.0" - } - } } }, "@opentelemetry/sdk-metrics": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.27.0.tgz", - "integrity": "sha512-JzWgzlutoXCydhHWIbLg+r76m+m3ncqvkCcsswXAQ4gqKS+LOHKhq+t6fx1zNytvLuaOUBur7EvWxECc4jPQKg==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.28.0.tgz", + "integrity": "sha512-43tqMK/0BcKTyOvm15/WQ3HLr0Vu/ucAl/D84NO7iSlv6O4eOprxSHa3sUtmYkaZWHqdDJV0AHVz/R6u4JALVQ==", "requires": { - "@opentelemetry/core": "1.27.0", - "@opentelemetry/resources": "1.27.0" - }, - "dependencies": { - "@opentelemetry/core": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", - "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", - "requires": { - "@opentelemetry/semantic-conventions": "1.27.0" - } - } + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0" } }, "@opentelemetry/semantic-conventions": { From 8a2f04242cab47575a79d0dcddeddb5a9127acc1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Nov 2024 12:00:58 +0100 Subject: [PATCH 204/396] chore(deps): bump @opentelemetry/exporter-prometheus from 0.54.2 to 0.55.0 in /test/opentelemetry-metrics/fixtures (#4322) --- .../fixtures/package-lock.json | 72 +++++++++---------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/test/opentelemetry-metrics/fixtures/package-lock.json b/test/opentelemetry-metrics/fixtures/package-lock.json index 12b394a114..c3538f5fbb 100644 --- a/test/opentelemetry-metrics/fixtures/package-lock.json +++ b/test/opentelemetry-metrics/fixtures/package-lock.json @@ -22,9 +22,9 @@ } }, "node_modules/@opentelemetry/core": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", - "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", "dependencies": { "@opentelemetry/semantic-conventions": "1.27.0" }, @@ -36,13 +36,13 @@ } }, "node_modules/@opentelemetry/exporter-prometheus": { - "version": "0.54.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.54.2.tgz", - "integrity": "sha512-U/XoupMPmrdEc3tzSxvMft+r/qK2O6SigZWewpC0183UF0cnGlQr1sPx/VxXo7RXJ6zMxDFHhO2Z1AWApXD1Pw==", + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.55.0.tgz", + "integrity": "sha512-huHo4Fw9W2jlMu67EKXTY1DMSzQepmEDTTElPBTJ/2qcdlrFFhuz+neJW9cQ7M7Db8qd7I5bpNdxObCn4ZEjnA==", "dependencies": { - "@opentelemetry/core": "1.27.0", - "@opentelemetry/resources": "1.27.0", - "@opentelemetry/sdk-metrics": "1.27.0" + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0", + "@opentelemetry/sdk-metrics": "1.28.0" }, "engines": { "node": ">=14" @@ -52,11 +52,11 @@ } }, "node_modules/@opentelemetry/resources": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.27.0.tgz", - "integrity": "sha512-jOwt2VJ/lUD5BLc+PMNymDrUCpm5PKi1E9oSVYAvz01U/VdndGmrtV3DU1pG4AwlYhJRHbHfOUIlpBeXCPw6QQ==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", + "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", "dependencies": { - "@opentelemetry/core": "1.27.0", + "@opentelemetry/core": "1.28.0", "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { @@ -67,12 +67,12 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.27.0.tgz", - "integrity": "sha512-JzWgzlutoXCydhHWIbLg+r76m+m3ncqvkCcsswXAQ4gqKS+LOHKhq+t6fx1zNytvLuaOUBur7EvWxECc4jPQKg==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.28.0.tgz", + "integrity": "sha512-43tqMK/0BcKTyOvm15/WQ3HLr0Vu/ucAl/D84NO7iSlv6O4eOprxSHa3sUtmYkaZWHqdDJV0AHVz/R6u4JALVQ==", "dependencies": { - "@opentelemetry/core": "1.27.0", - "@opentelemetry/resources": "1.27.0" + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0" }, "engines": { "node": ">=14" @@ -97,39 +97,39 @@ "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" }, "@opentelemetry/core": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", - "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", "requires": { "@opentelemetry/semantic-conventions": "1.27.0" } }, "@opentelemetry/exporter-prometheus": { - "version": "0.54.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.54.2.tgz", - "integrity": "sha512-U/XoupMPmrdEc3tzSxvMft+r/qK2O6SigZWewpC0183UF0cnGlQr1sPx/VxXo7RXJ6zMxDFHhO2Z1AWApXD1Pw==", + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.55.0.tgz", + "integrity": "sha512-huHo4Fw9W2jlMu67EKXTY1DMSzQepmEDTTElPBTJ/2qcdlrFFhuz+neJW9cQ7M7Db8qd7I5bpNdxObCn4ZEjnA==", "requires": { - "@opentelemetry/core": "1.27.0", - "@opentelemetry/resources": "1.27.0", - "@opentelemetry/sdk-metrics": "1.27.0" + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0", + "@opentelemetry/sdk-metrics": "1.28.0" } }, "@opentelemetry/resources": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.27.0.tgz", - "integrity": "sha512-jOwt2VJ/lUD5BLc+PMNymDrUCpm5PKi1E9oSVYAvz01U/VdndGmrtV3DU1pG4AwlYhJRHbHfOUIlpBeXCPw6QQ==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", + "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", "requires": { - "@opentelemetry/core": "1.27.0", + "@opentelemetry/core": "1.28.0", "@opentelemetry/semantic-conventions": "1.27.0" } }, "@opentelemetry/sdk-metrics": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.27.0.tgz", - "integrity": "sha512-JzWgzlutoXCydhHWIbLg+r76m+m3ncqvkCcsswXAQ4gqKS+LOHKhq+t6fx1zNytvLuaOUBur7EvWxECc4jPQKg==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.28.0.tgz", + "integrity": "sha512-43tqMK/0BcKTyOvm15/WQ3HLr0Vu/ucAl/D84NO7iSlv6O4eOprxSHa3sUtmYkaZWHqdDJV0AHVz/R6u4JALVQ==", "requires": { - "@opentelemetry/core": "1.27.0", - "@opentelemetry/resources": "1.27.0" + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0" } }, "@opentelemetry/semantic-conventions": { From fd21af99d37d7302e60558012a2f399dfea9c5fd Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Thu, 28 Nov 2024 12:02:39 +0100 Subject: [PATCH 205/396] github-actions: use v1 for the oblt-actions (#4331) --- .github/workflows/microbenchmark.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/microbenchmark.yml b/.github/workflows/microbenchmark.yml index d8858b1bd0..09d525ea12 100644 --- a/.github/workflows/microbenchmark.yml +++ b/.github/workflows/microbenchmark.yml @@ -21,7 +21,7 @@ jobs: timeout-minutes: 5 steps: - name: Run microbenchmark - uses: elastic/oblt-actions/buildkite/run@v1.5.0 + uses: elastic/oblt-actions/buildkite/run@v1 with: pipeline: "apm-agent-microbenchmark" token: ${{ secrets.BUILDKITE_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0b74959cc0..4a08b2ab85 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -115,7 +115,7 @@ jobs: subject-digest: ${{ steps.docker-push-wolfi.outputs.digest }} push-to-registry: true - - uses: elastic/oblt-actions/aws/auth@v1.10.0 + - uses: elastic/oblt-actions/aws/auth@v1 with: aws-account-id: "267093732750" From 05cfea8c68dc7a7533017c69534b6927508cc044 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2024 10:01:24 +0100 Subject: [PATCH 206/396] chore(deps-dev): bump @types/node from 22.9.0 to 22.10.1 (#4335) --- package-lock.json | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 889d9317ba..26f246983e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6195,12 +6195,12 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.9.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", - "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", + "version": "22.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", + "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", "dev": true, "dependencies": { - "undici-types": "~6.19.8" + "undici-types": "~6.20.0" } }, "node_modules/@types/node-fetch": { @@ -6227,6 +6227,12 @@ "node": ">= 6" } }, + "node_modules/@types/node/node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true + }, "node_modules/@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", @@ -21303,12 +21309,20 @@ "dev": true }, "@types/node": { - "version": "22.9.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", - "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", + "version": "22.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", + "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", "dev": true, "requires": { - "undici-types": "~6.19.8" + "undici-types": "~6.20.0" + }, + "dependencies": { + "undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true + } } }, "@types/node-fetch": { From 0cea84165d99523fa3ac5851495c024c23446791 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2024 10:10:56 +0100 Subject: [PATCH 207/396] chore(deps-dev): bump prettier from 3.3.3 to 3.4.1 (#4337) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 26f246983e..5797d8f120 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13617,9 +13617,9 @@ } }, "node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.1.tgz", + "integrity": "sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -26961,9 +26961,9 @@ "dev": true }, "prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.1.tgz", + "integrity": "sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==", "dev": true }, "prettier-linter-helpers": { From e0e8354e89776de3c8cb4482cd9eb7f0f899488e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2024 10:11:49 +0100 Subject: [PATCH 208/396] chore(deps): bump docker/build-push-action from 6.9.0 to 6.10.0 (#4332) --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4a08b2ab85..9f3e83ad8f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -63,7 +63,7 @@ jobs: - name: Build and Push Docker Image id: docker-push - uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # v6.9.0 + uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0 with: context: . platforms: linux/amd64,linux/arm64 @@ -97,7 +97,7 @@ jobs: - name: Build and Push Docker Image (wolfi) id: docker-push-wolfi - uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # v6.9.0 + uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0 with: context: . platforms: linux/amd64,linux/arm64 From 09aa9c1c74e0ccd1c8bf9eb14e75b44153823672 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2024 12:23:03 +0100 Subject: [PATCH 209/396] chore(deps-dev): bump the eslint group with 2 updates (#4333) Updates `eslint` from 9.15.0 to 9.16.0 Updates `eslint-plugin-promise` from 7.1.0 to 7.2.1 --- package-lock.json | 48 ++++++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5797d8f120..1d30bc0ef6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4192,9 +4192,9 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "9.15.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz", - "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==", + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.16.0.tgz", + "integrity": "sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8898,9 +8898,9 @@ } }, "node_modules/eslint": { - "version": "9.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz", - "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==", + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.16.0.tgz", + "integrity": "sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", @@ -8908,7 +8908,7 @@ "@eslint/config-array": "^0.19.0", "@eslint/core": "^0.9.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.15.0", + "@eslint/js": "9.16.0", "@eslint/plugin-kit": "^0.2.3", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -9214,10 +9214,13 @@ } }, "node_modules/eslint-plugin-promise": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.1.0.tgz", - "integrity": "sha512-8trNmPxdAy3W620WKDpaS65NlM5yAumod6XeC4LOb+jxlkG4IVcp68c6dXY2ev+uT4U1PtG57YDV6EGAXN0GbQ==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.2.1.tgz", + "integrity": "sha512-SWKjd+EuvWkYaS+uN2csvj0KoP43YTu7+phKQ5v+xw6+A0gutVX2yqCeCkC3uLCJFiPfR2dD8Es5L7yUsmvEaA==", "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -19528,9 +19531,9 @@ } }, "@eslint/js": { - "version": "9.15.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz", - "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==", + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.16.0.tgz", + "integrity": "sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==", "dev": true }, "@eslint/object-schema": { @@ -23395,9 +23398,9 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz", - "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==", + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.16.0.tgz", + "integrity": "sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", @@ -23405,7 +23408,7 @@ "@eslint/config-array": "^0.19.0", "@eslint/core": "^0.9.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.15.0", + "@eslint/js": "9.16.0", "@eslint/plugin-kit": "^0.2.3", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -23685,10 +23688,13 @@ } }, "eslint-plugin-promise": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.1.0.tgz", - "integrity": "sha512-8trNmPxdAy3W620WKDpaS65NlM5yAumod6XeC4LOb+jxlkG4IVcp68c6dXY2ev+uT4U1PtG57YDV6EGAXN0GbQ==", - "dev": true + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.2.1.tgz", + "integrity": "sha512-SWKjd+EuvWkYaS+uN2csvj0KoP43YTu7+phKQ5v+xw6+A0gutVX2yqCeCkC3uLCJFiPfR2dD8Es5L7yUsmvEaA==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0" + } }, "eslint-scope": { "version": "8.2.0", From 70debfb78397ea804fbc52c575252ca34d823c8b Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Mon, 2 Dec 2024 13:05:32 +0100 Subject: [PATCH 210/396] ci(updatecli): add policies autodiscovery, bump updatecli version and specs/jsons policies (#4338) --- .ci/updatecli/values.d/scm.yml | 7 +++++-- .ci/updatecli/values.d/update-compose.yml | 3 +++ .github/workflows/updatecli.yml | 6 ++++++ updatecli-compose.yaml | 10 ++++++++-- 4 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 .ci/updatecli/values.d/update-compose.yml diff --git a/.ci/updatecli/values.d/scm.yml b/.ci/updatecli/values.d/scm.yml index ff79a73ca4..1f8a711138 100644 --- a/.ci/updatecli/values.d/scm.yml +++ b/.ci/updatecli/values.d/scm.yml @@ -3,5 +3,8 @@ scm: owner: elastic repository: apm-agent-nodejs branch: main - -signedcommit: true \ No newline at end of file + commitusingapi: true + # begin update-compose policy values + user: obltmachine + email: obltmachine@users.noreply.github.com + # end update-compose policy values diff --git a/.ci/updatecli/values.d/update-compose.yml b/.ci/updatecli/values.d/update-compose.yml new file mode 100644 index 0000000000..02df609f2a --- /dev/null +++ b/.ci/updatecli/values.d/update-compose.yml @@ -0,0 +1,3 @@ +spec: + files: + - "updatecli-compose.yaml" \ No newline at end of file diff --git a/.github/workflows/updatecli.yml b/.github/workflows/updatecli.yml index 0ef635025a..8b2e5b480d 100644 --- a/.github/workflows/updatecli.yml +++ b/.github/workflows/updatecli.yml @@ -38,12 +38,18 @@ jobs: - uses: elastic/oblt-actions/updatecli/run@v1 with: command: --experimental compose diff + # TODO: update to the latest version so the policies can work as expected. + # latest changes in the policies require to use the dependson feature. + version: "v0.88.0" env: GITHUB_TOKEN: ${{ steps.get_token.outputs.token }} - uses: elastic/oblt-actions/updatecli/run@v1 with: command: --experimental compose apply + # TODO: update to the latest version so the policies can work as expected. + # latest changes in the policies require to use the dependson feature. + version: "v0.88.0" env: GITHUB_TOKEN: ${{ steps.get_token.outputs.token }} diff --git a/updatecli-compose.yaml b/updatecli-compose.yaml index 3239586d5c..efed4a1d33 100644 --- a/updatecli-compose.yaml +++ b/updatecli-compose.yaml @@ -2,13 +2,19 @@ # https://www.updatecli.io/docs/core/compose/ policies: - name: Handle apm-data server specs - policy: ghcr.io/elastic/oblt-updatecli-policies/apm/apm-data-spec:0.2.0@sha256:7069c0773d44a74c4c8103b4d9957b468f66081ee9d677238072fe11c4d2197c + policy: ghcr.io/elastic/oblt-updatecli-policies/apm/apm-data-spec:0.6.0@sha256:c0bbdec23541bed38df1342c95aeb601530a113db1ff11715c1c7616ed5e9e8b values: - .ci/updatecli/values.d/scm.yml - .ci/updatecli/values.d/apm-data-spec.yml - name: Handle apm json specs - policy: ghcr.io/elastic/oblt-updatecli-policies/apm/apm-json-specs:0.2.0@sha256:969a6d21eabd6ebea66cb29b35294a273d6dbc0f7da78589c416aedf08728e78 + policy: ghcr.io/elastic/oblt-updatecli-policies/apm/apm-json-specs:0.6.0@sha256:e5a74c159ceed02fd20515ea76fa25ff81e3ccf977e74e636f9973db86aa52a5 values: - .ci/updatecli/values.d/scm.yml - .ci/updatecli/values.d/apm-json-specs.yml + + - name: Update Updatecli policies + policy: ghcr.io/updatecli/policies/autodiscovery/updatecli:0.8.0@sha256:99e9e61b501575c2c176c39f2275998d198b590a3f6b1fe829f7315f8d457e7f + values: + - .ci/updatecli/values.d/scm.yml + - .ci/updatecli/values.d/update-compose.yml From 408063b434709097d22f8141f37ce40411ef3fd6 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Wed, 4 Dec 2024 10:56:19 +0100 Subject: [PATCH 211/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to ad2e15a (#4330) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index d9a20613ad..45dc748593 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:55b297da5151d2a2997e8ab9729fe1304e4869389d7090ab7031cc29530f69f8 +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:ad2e15a6b7fbd893990fd9bd39fb0f367282a9ba65e350655540e470858ef382 ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 21d3404243478928c50b4e15dd33d9f555f51861 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Dec 2024 17:49:03 +0100 Subject: [PATCH 212/396] chore(deps-dev): bump undici from 6.21.0 to 7.0.0 (#4336) --- .tav.yml | 5 +++++ docs/supported-technologies.asciidoc | 2 +- package-lock.json | 31 +++++++++++++++++++++------- package.json | 2 +- test/_is_undici_incompat.js | 8 ++++++- 5 files changed, 37 insertions(+), 11 deletions(-) diff --git a/.tav.yml b/.tav.yml index 2ececaf6f7..1098cec29d 100644 --- a/.tav.yml +++ b/.tav.yml @@ -504,6 +504,11 @@ aws-sdk: # - In undici@4.7.1 the `request.origin` property was added, which we need # in the 'undici:request:create' diagnostic message. undici: + - versions: + mode: max-7 + include: '>=7.0.0 <8' + node: '>=20.18.1' + commands: node test/instrumentation/modules/undici/undici.test.js - versions: mode: max-7 include: '>=6.0.0 <7' diff --git a/docs/supported-technologies.asciidoc b/docs/supported-technologies.asciidoc index 052b339797..979465fb4c 100644 --- a/docs/supported-technologies.asciidoc +++ b/docs/supported-technologies.asciidoc @@ -140,7 +140,7 @@ so those should be supported as well. |https://www.npmjs.com/package/pg[pg] |>=4.0.0 <9.0.0 |Will instrument all queries |https://www.npmjs.com/package/redis[redis] |>=2.0.0 <5.0.0 |Will instrument all queries |https://www.npmjs.com/package/tedious[tedious] |>=1.9 <20.0.0 | (Excluding v4.0.0.) Will instrument all queries -|https://www.npmjs.com/package/undici[undici] | >=4.7.1 <6 | Will instrument undici HTTP requests, except HTTP CONNECT. Requires node v14.17.0 or later, or the user to have installed the https://www.npmjs.com/package/diagnostics_channel['diagnostics_channel' polyfill]. +|https://www.npmjs.com/package/undici[undici] | >=4.7.1 <8 | Will instrument undici HTTP requests, except HTTP CONNECT. Requires node v14.17.0 or later, or the user to have installed the https://www.npmjs.com/package/diagnostics_channel['diagnostics_channel' polyfill]. |https://www.npmjs.com/package/ws[ws] |>=1.0.0 <8.0.0 |Will instrument outgoing WebSocket messages |https://www.npmjs.com/package/kafkajs[kafkajs] |>=2.0.0 <3.0.0 |Will instrument all send methods for producers and message and batch processing for consumers. |======================================================================= diff --git a/package-lock.json b/package-lock.json index 1d30bc0ef6..947e288133 100644 --- a/package-lock.json +++ b/package-lock.json @@ -126,7 +126,7 @@ "thunky": "^1.1.0", "tree-kill": "^1.2.2", "typescript": "^5.0.2", - "undici": "^6.2.1", + "undici": "^7.0.0", "vasync": "^2.2.0", "wait-on": "^8.0.0", "ws": "^7.2.1" @@ -4072,6 +4072,15 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "node_modules/@elastic/transport/node_modules/undici": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.0.tgz", + "integrity": "sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==", + "dev": true, + "engines": { + "node": ">=18.17" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", @@ -15884,12 +15893,12 @@ } }, "node_modules/undici": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.0.tgz", - "integrity": "sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.0.0.tgz", + "integrity": "sha512-c4xi3kWnQJrb7h2q8aJYKvUzmz7boCgz1cUCC6OwdeM5Tr2P0hDuthr2iut4ggqsz+Cnh20U/LoTzbKIdDS/Nw==", "dev": true, "engines": { - "node": ">=18.17" + "node": ">=20.18.1" } }, "node_modules/undici-types": { @@ -19444,6 +19453,12 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true + }, + "undici": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.0.tgz", + "integrity": "sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==", + "dev": true } } }, @@ -28774,9 +28789,9 @@ "dev": true }, "undici": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.0.tgz", - "integrity": "sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.0.0.tgz", + "integrity": "sha512-c4xi3kWnQJrb7h2q8aJYKvUzmz7boCgz1cUCC6OwdeM5Tr2P0hDuthr2iut4ggqsz+Cnh20U/LoTzbKIdDS/Nw==", "dev": true }, "undici-types": { diff --git a/package.json b/package.json index 9c5c39f8ed..c682584c69 100644 --- a/package.json +++ b/package.json @@ -205,7 +205,7 @@ "thunky": "^1.1.0", "tree-kill": "^1.2.2", "typescript": "^5.0.2", - "undici": "^6.2.1", + "undici": "^7.0.0", "vasync": "^2.2.0", "wait-on": "^8.0.0", "ws": "^7.2.1" diff --git a/test/_is_undici_incompat.js b/test/_is_undici_incompat.js index 0584eb6491..0c556123c6 100644 --- a/test/_is_undici_incompat.js +++ b/test/_is_undici_incompat.js @@ -29,7 +29,13 @@ function isUndiciIncompat() { const undiciVer = require('undici/package.json').version; const msg = `undici@${undiciVer} is incompatible with node@${nodeVer}`; - if (satisfies(undiciVer, '>=6.13.0') && satisfies(nodeVer, '<18.17.0')) { + if (satisfies(undiciVer, '>=7.0.0') && satisfies(nodeVer, '<20.18.1')) { + // https://github.com/nodejs/undici/pull/3880 + return msg; + } else if ( + satisfies(undiciVer, '>=6.13.0') && + satisfies(nodeVer, '<18.17.0') + ) { // See discussion at https://github.com/nodejs/undici/issues/3123 return msg; } else if (satisfies(undiciVer, '>=6.0.0') && satisfies(nodeVer, '<18.0.0')) { From 03a5f2f45dbd93fba0e7f45f1adb49f7843643eb Mon Sep 17 00:00:00 2001 From: David Luna Date: Fri, 6 Dec 2024 12:09:57 +0100 Subject: [PATCH 213/396] chore: update CHANGELOG (#4341) --- CHANGELOG.asciidoc | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 7868d6922a..f6ad3e111c 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -33,6 +33,23 @@ Notes: See the <> guide. +==== Unreleased + +[float] +===== Breaking changes + +[float] +===== Features + +* add support for `undici` v7. ({pull}4336[#4336]) + +[float] +===== Bug fixes + +[float] +===== Chores + + [[release-notes-4.8.1]] ==== 4.8.1 - 2024/11/04 From 3e615aac9bfeeff62e320abb5fe3d83486b6d264 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Dec 2024 13:19:44 +0100 Subject: [PATCH 214/396] chore(deps-dev): bump mysql2 from 3.11.4 to 3.11.5 (#4334) Add instrumentation for the new BaseConnection class. --- lib/instrumentation/modules/mysql2.js | 18 ++++++++++++++++-- package-lock.json | 12 ++++++------ 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/lib/instrumentation/modules/mysql2.js b/lib/instrumentation/modules/mysql2.js index b75d663b03..46f031fb23 100644 --- a/lib/instrumentation/modules/mysql2.js +++ b/lib/instrumentation/modules/mysql2.js @@ -27,8 +27,22 @@ module.exports = function (mysql2, agent, { version, enabled }) { var ins = agent._instrumentation; - shimmer.wrap(mysql2.Connection.prototype, 'query', wrapQuery); - shimmer.wrap(mysql2.Connection.prototype, 'execute', wrapQuery); + // mysql2@3.11.5 added BaseConnection class which is extended by Connection + // but is not in the public API so we need to extract it via prototype chain + // ref: https://github.com/sidorares/node-mysql2/pull/3081 + const baseClass = Object.getPrototypeOf(mysql2.Connection); + const baseProto = baseClass.prototype; + const hasQuery = typeof baseProto?.query === 'function'; + const hasExec = typeof baseProto?.execute === 'function'; + const shouldPatchBase = hasQuery && hasExec; + + if (shouldPatchBase) { + shimmer.wrap(baseProto, 'query', wrapQuery); + shimmer.wrap(baseProto, 'execute', wrapQuery); + } else { + shimmer.wrap(mysql2.Connection.prototype, 'query', wrapQuery); + shimmer.wrap(mysql2.Connection.prototype, 'execute', wrapQuery); + } return mysql2; diff --git a/package-lock.json b/package-lock.json index 947e288133..f8eb6440cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12599,9 +12599,9 @@ } }, "node_modules/mysql2": { - "version": "3.11.4", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.11.4.tgz", - "integrity": "sha512-Z2o3tY4Z8EvSRDwknaC40MdZ3+m0sKbpnXrShQLdxPrAvcNli7jLrD2Zd2IzsRMw4eK9Yle500FDmlkIqp+krg==", + "version": "3.11.5", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.11.5.tgz", + "integrity": "sha512-0XFu8rUmFN9vC0ME36iBvCUObftiMHItrYFhlCRvFWbLgpNqtC4Br/NmZX1HNCszxT0GGy5QtP+k3Q3eCJPaYA==", "dev": true, "dependencies": { "aws-ssl-profiles": "^1.1.1", @@ -26203,9 +26203,9 @@ } }, "mysql2": { - "version": "3.11.4", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.11.4.tgz", - "integrity": "sha512-Z2o3tY4Z8EvSRDwknaC40MdZ3+m0sKbpnXrShQLdxPrAvcNli7jLrD2Zd2IzsRMw4eK9Yle500FDmlkIqp+krg==", + "version": "3.11.5", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.11.5.tgz", + "integrity": "sha512-0XFu8rUmFN9vC0ME36iBvCUObftiMHItrYFhlCRvFWbLgpNqtC4Br/NmZX1HNCszxT0GGy5QtP+k3Q3eCJPaYA==", "dev": true, "requires": { "aws-ssl-profiles": "^1.1.1", From 0f1370ee200f4458cd84579b9df0e17192462b7f Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Sat, 7 Dec 2024 11:03:42 +0100 Subject: [PATCH 215/396] ci: pin updatecli version using .tool-versions and autobump (#4340) --- .github/workflows/updatecli.yml | 8 ++------ .tool-versions | 1 + updatecli-compose.yaml | 5 +++++ 3 files changed, 8 insertions(+), 6 deletions(-) create mode 100644 .tool-versions diff --git a/.github/workflows/updatecli.yml b/.github/workflows/updatecli.yml index 8b2e5b480d..e2d67bd22e 100644 --- a/.github/workflows/updatecli.yml +++ b/.github/workflows/updatecli.yml @@ -38,18 +38,14 @@ jobs: - uses: elastic/oblt-actions/updatecli/run@v1 with: command: --experimental compose diff - # TODO: update to the latest version so the policies can work as expected. - # latest changes in the policies require to use the dependson feature. - version: "v0.88.0" + version-file: .tool-versions env: GITHUB_TOKEN: ${{ steps.get_token.outputs.token }} - uses: elastic/oblt-actions/updatecli/run@v1 with: command: --experimental compose apply - # TODO: update to the latest version so the policies can work as expected. - # latest changes in the policies require to use the dependson feature. - version: "v0.88.0" + version-file: .tool-versions env: GITHUB_TOKEN: ${{ steps.get_token.outputs.token }} diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000000..3d067142fd --- /dev/null +++ b/.tool-versions @@ -0,0 +1 @@ +updatecli v0.88.0 \ No newline at end of file diff --git a/updatecli-compose.yaml b/updatecli-compose.yaml index efed4a1d33..953f2917bc 100644 --- a/updatecli-compose.yaml +++ b/updatecli-compose.yaml @@ -18,3 +18,8 @@ policies: values: - .ci/updatecli/values.d/scm.yml - .ci/updatecli/values.d/update-compose.yml + + - name: Update Updatecli version + policy: ghcr.io/elastic/oblt-updatecli-policies/updatecli/version:0.2.0@sha256:013a37ddcdb627c46e7cba6fb9d1d7bc144584fa9063843ae7ee0f6ef26b4bea + values: + - .ci/updatecli/values.d/scm.yml \ No newline at end of file From b3d021b31c68ffb0eaab343e9a4a6cfebed291e1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 11:51:43 +0100 Subject: [PATCH 216/396] chore(deps-dev): bump @babel/cli in the babel group (#4345) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index f8eb6440cb..d0bd147e39 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2444,9 +2444,9 @@ } }, "node_modules/@babel/cli": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.25.6.tgz", - "integrity": "sha512-Z+Doemr4VtvSD2SNHTrkiFZ1LX+JI6tyRXAAOb4N9khIuPyoEPmTPJarPm8ljJV1D6bnMQjyHMWTT9NeKbQuXA==", + "version": "7.26.4", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.26.4.tgz", + "integrity": "sha512-+mORf3ezU3p3qr+82WvJSnQNE1GAYeoCfEv4fik6B5/2cvKZ75AX8oawWQdXtM9MmndooQj15Jr9kelRFWsuRw==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", @@ -18329,9 +18329,9 @@ } }, "@babel/cli": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.25.6.tgz", - "integrity": "sha512-Z+Doemr4VtvSD2SNHTrkiFZ1LX+JI6tyRXAAOb4N9khIuPyoEPmTPJarPm8ljJV1D6bnMQjyHMWTT9NeKbQuXA==", + "version": "7.26.4", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.26.4.tgz", + "integrity": "sha512-+mORf3ezU3p3qr+82WvJSnQNE1GAYeoCfEv4fik6B5/2cvKZ75AX8oawWQdXtM9MmndooQj15Jr9kelRFWsuRw==", "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.25", From bc3e359bc39f136c3601268674461e3302f311dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 11:57:33 +0100 Subject: [PATCH 217/396] chore(deps): bump @opentelemetry/* dependencies (#4346) - Bumps `@opentelemetry/exporter-prometheus` from 0.55.0 to 0.56.0. - Bumps `@opentelemetry/core` from 1.28.0 to 1.29.0. - Bumps `@opentelemetry/resources` from 1.28.0 to 1.29.0. - Bumps `@opentelemetry/sdk-metrics` from 1.28.0 to 1.29.0. - Bumps `@opentelemetry/semantic-conventions` from 1.27.0 to 1.28.0. - Bumps `@opentelemetry/core` from 1.28.0 to 1.29.0. --- .../fixtures/package-lock.json | 92 +++++++++---------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/test/opentelemetry-metrics/fixtures/package-lock.json b/test/opentelemetry-metrics/fixtures/package-lock.json index c3538f5fbb..8770cd00cc 100644 --- a/test/opentelemetry-metrics/fixtures/package-lock.json +++ b/test/opentelemetry-metrics/fixtures/package-lock.json @@ -22,11 +22,11 @@ } }, "node_modules/@opentelemetry/core": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", - "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.29.0.tgz", + "integrity": "sha512-gmT7vAreXl0DTHD2rVZcw3+l2g84+5XiHIqdBUxXbExymPCvSsGOpiwMmn8nkiJur28STV31wnhIDrzWDPzjfA==", "dependencies": { - "@opentelemetry/semantic-conventions": "1.27.0" + "@opentelemetry/semantic-conventions": "1.28.0" }, "engines": { "node": ">=14" @@ -36,13 +36,13 @@ } }, "node_modules/@opentelemetry/exporter-prometheus": { - "version": "0.55.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.55.0.tgz", - "integrity": "sha512-huHo4Fw9W2jlMu67EKXTY1DMSzQepmEDTTElPBTJ/2qcdlrFFhuz+neJW9cQ7M7Db8qd7I5bpNdxObCn4ZEjnA==", + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.56.0.tgz", + "integrity": "sha512-5kFcTumUveNREskg6n4aaXx2o3ADc9YxDkArGCIegzErlc3zfzreO4Y7HDc/fYBnV9aIhJUk5P8yotyVCuymkQ==", "dependencies": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/resources": "1.28.0", - "@opentelemetry/sdk-metrics": "1.28.0" + "@opentelemetry/core": "1.29.0", + "@opentelemetry/resources": "1.29.0", + "@opentelemetry/sdk-metrics": "1.29.0" }, "engines": { "node": ">=14" @@ -52,12 +52,12 @@ } }, "node_modules/@opentelemetry/resources": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", - "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.29.0.tgz", + "integrity": "sha512-s7mLXuHZE7RQr1wwweGcaRp3Q4UJJ0wazeGlc/N5/XSe6UyXfsh1UQGMADYeg7YwD+cEdMtU1yJAUXdnFzYzyQ==", "dependencies": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/semantic-conventions": "1.27.0" + "@opentelemetry/core": "1.29.0", + "@opentelemetry/semantic-conventions": "1.28.0" }, "engines": { "node": ">=14" @@ -67,12 +67,12 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.28.0.tgz", - "integrity": "sha512-43tqMK/0BcKTyOvm15/WQ3HLr0Vu/ucAl/D84NO7iSlv6O4eOprxSHa3sUtmYkaZWHqdDJV0AHVz/R6u4JALVQ==", + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.29.0.tgz", + "integrity": "sha512-MkVtuzDjXZaUJSuJlHn6BSXjcQlMvHcsDV7LjY4P6AJeffMa4+kIGDjzsCf6DkAh6Vqlwag5EWEam3KZOX5Drw==", "dependencies": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/resources": "1.28.0" + "@opentelemetry/core": "1.29.0", + "@opentelemetry/resources": "1.29.0" }, "engines": { "node": ">=14" @@ -82,9 +82,9 @@ } }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", - "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", "engines": { "node": ">=14" } @@ -97,45 +97,45 @@ "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" }, "@opentelemetry/core": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", - "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.29.0.tgz", + "integrity": "sha512-gmT7vAreXl0DTHD2rVZcw3+l2g84+5XiHIqdBUxXbExymPCvSsGOpiwMmn8nkiJur28STV31wnhIDrzWDPzjfA==", "requires": { - "@opentelemetry/semantic-conventions": "1.27.0" + "@opentelemetry/semantic-conventions": "1.28.0" } }, "@opentelemetry/exporter-prometheus": { - "version": "0.55.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.55.0.tgz", - "integrity": "sha512-huHo4Fw9W2jlMu67EKXTY1DMSzQepmEDTTElPBTJ/2qcdlrFFhuz+neJW9cQ7M7Db8qd7I5bpNdxObCn4ZEjnA==", + "version": "0.56.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.56.0.tgz", + "integrity": "sha512-5kFcTumUveNREskg6n4aaXx2o3ADc9YxDkArGCIegzErlc3zfzreO4Y7HDc/fYBnV9aIhJUk5P8yotyVCuymkQ==", "requires": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/resources": "1.28.0", - "@opentelemetry/sdk-metrics": "1.28.0" + "@opentelemetry/core": "1.29.0", + "@opentelemetry/resources": "1.29.0", + "@opentelemetry/sdk-metrics": "1.29.0" } }, "@opentelemetry/resources": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", - "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.29.0.tgz", + "integrity": "sha512-s7mLXuHZE7RQr1wwweGcaRp3Q4UJJ0wazeGlc/N5/XSe6UyXfsh1UQGMADYeg7YwD+cEdMtU1yJAUXdnFzYzyQ==", "requires": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/semantic-conventions": "1.27.0" + "@opentelemetry/core": "1.29.0", + "@opentelemetry/semantic-conventions": "1.28.0" } }, "@opentelemetry/sdk-metrics": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.28.0.tgz", - "integrity": "sha512-43tqMK/0BcKTyOvm15/WQ3HLr0Vu/ucAl/D84NO7iSlv6O4eOprxSHa3sUtmYkaZWHqdDJV0AHVz/R6u4JALVQ==", + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.29.0.tgz", + "integrity": "sha512-MkVtuzDjXZaUJSuJlHn6BSXjcQlMvHcsDV7LjY4P6AJeffMa4+kIGDjzsCf6DkAh6Vqlwag5EWEam3KZOX5Drw==", "requires": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/resources": "1.28.0" + "@opentelemetry/core": "1.29.0", + "@opentelemetry/resources": "1.29.0" } }, "@opentelemetry/semantic-conventions": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", - "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==" + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==" } } } From 727493624d638c902998abebb191902cdb511bbe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 11:58:32 +0100 Subject: [PATCH 218/396] chore(deps-dev): bump express from 4.21.1 to 4.21.2 (#4348) --- package-lock.json | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index d0bd147e39..c7a40a7a14 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9467,9 +9467,9 @@ } }, "node_modules/express": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", - "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "dev": true, "dependencies": { "accepts": "~1.3.8", @@ -9491,7 +9491,7 @@ "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", + "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", @@ -9506,6 +9506,10 @@ }, "engines": { "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/express-end": { @@ -9608,9 +9612,9 @@ "dev": true }, "node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "dev": true }, "node_modules/express/node_modules/safe-buffer": { @@ -23801,9 +23805,9 @@ } }, "express": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", - "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "dev": true, "requires": { "accepts": "~1.3.8", @@ -23825,7 +23829,7 @@ "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", + "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", @@ -23886,9 +23890,9 @@ "dev": true }, "path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "dev": true }, "safe-buffer": { From 290324c0f37d2a97bb34bdbb42cf208d765d4691 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 11:59:12 +0100 Subject: [PATCH 219/396] chore(deps-dev): bump undici from 7.0.0 to 7.1.0 (#4349) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index c7a40a7a14..8a43d2cd99 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15897,9 +15897,9 @@ } }, "node_modules/undici": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.0.0.tgz", - "integrity": "sha512-c4xi3kWnQJrb7h2q8aJYKvUzmz7boCgz1cUCC6OwdeM5Tr2P0hDuthr2iut4ggqsz+Cnh20U/LoTzbKIdDS/Nw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.1.0.tgz", + "integrity": "sha512-3+mdX2R31khuLCm2mKExSlMdJsfol7bJkIMH80tdXA74W34rT1jKemUTlYR7WY3TqsV4wfOgpatWmmB2Jl1+5g==", "dev": true, "engines": { "node": ">=20.18.1" @@ -28793,9 +28793,9 @@ "dev": true }, "undici": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.0.0.tgz", - "integrity": "sha512-c4xi3kWnQJrb7h2q8aJYKvUzmz7boCgz1cUCC6OwdeM5Tr2P0hDuthr2iut4ggqsz+Cnh20U/LoTzbKIdDS/Nw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.1.0.tgz", + "integrity": "sha512-3+mdX2R31khuLCm2mKExSlMdJsfol7bJkIMH80tdXA74W34rT1jKemUTlYR7WY3TqsV4wfOgpatWmmB2Jl1+5g==", "dev": true }, "undici-types": { From 2591815ae64609043894ab99794c14d532cb1887 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 12:01:09 +0100 Subject: [PATCH 220/396] chore(deps): bump import-in-the-middle from 1.11.2 to 1.11.3 (#4351) --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8a43d2cd99..55a60a69cf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "fast-safe-stringify": "^2.0.7", "fast-stream-to-buffer": "^1.0.0", "http-headers": "^3.0.2", - "import-in-the-middle": "1.11.2", + "import-in-the-middle": "1.11.3", "json-bigint": "^1.0.0", "lru-cache": "10.2.0", "measured-reporting": "^1.51.1", @@ -10879,9 +10879,9 @@ } }, "node_modules/import-in-the-middle": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.2.tgz", - "integrity": "sha512-gK6Rr6EykBcc6cVWRSBR5TWf8nn6hZMYSRYqCcHa0l0d1fPK7JSYo6+Mlmck76jIX9aL/IZ71c06U2VpFwl1zA==", + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.3.tgz", + "integrity": "sha512-tNpKEb4AjZrCyrxi+Eyu43h5ig0O8ZRFSXPHh/00/o+4P4pKzVEW/m5lsVtsAT7fCIgmQOAPjdqecGDsBXRxsw==", "dependencies": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", @@ -24903,9 +24903,9 @@ } }, "import-in-the-middle": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.2.tgz", - "integrity": "sha512-gK6Rr6EykBcc6cVWRSBR5TWf8nn6hZMYSRYqCcHa0l0d1fPK7JSYo6+Mlmck76jIX9aL/IZ71c06U2VpFwl1zA==", + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.3.tgz", + "integrity": "sha512-tNpKEb4AjZrCyrxi+Eyu43h5ig0O8ZRFSXPHh/00/o+4P4pKzVEW/m5lsVtsAT7fCIgmQOAPjdqecGDsBXRxsw==", "requires": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", diff --git a/package.json b/package.json index c682584c69..d9172d06b6 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "fast-safe-stringify": "^2.0.7", "fast-stream-to-buffer": "^1.0.0", "http-headers": "^3.0.2", - "import-in-the-middle": "1.11.2", + "import-in-the-middle": "1.11.3", "json-bigint": "^1.0.0", "lru-cache": "10.2.0", "measured-reporting": "^1.51.1", From 451ebd52ec4b35fdb716a4fdccb79875af77439b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 12:02:22 +0100 Subject: [PATCH 221/396] chore(deps-dev): bump prettier from 3.4.1 to 3.4.2 (#4352) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 55a60a69cf..734f2b17e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13633,9 +13633,9 @@ } }, "node_modules/prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.1.tgz", - "integrity": "sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -26986,9 +26986,9 @@ "dev": true }, "prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.1.tgz", - "integrity": "sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", "dev": true }, "prettier-linter-helpers": { From 49c8a129eb3ab4070c06577e87274c903e0382e7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 12:04:17 +0100 Subject: [PATCH 222/396] chore(deps): bump actions/attest-build-provenance from 1.4.4 to 2.0.1 (#4344) --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9f3e83ad8f..30c44440b2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -44,7 +44,7 @@ jobs: - run: make -C .ci dist - name: Attest Lambda layer zip - uses: actions/attest-build-provenance@ef244123eb79f2f7a7e75d99086184180e6d0018 # v1.4.4 + uses: actions/attest-build-provenance@c4fbc648846ca6f503a13a2281a5e7b98aa57202 # v2.0.1 with: subject-path: "${{ github.workspace }}/build/aws/elastic-apm-node-lambda-layer-*.zip" @@ -75,7 +75,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image - uses: actions/attest-build-provenance@ef244123eb79f2f7a7e75d99086184180e6d0018 # v1.4.4 + uses: actions/attest-build-provenance@c4fbc648846ca6f503a13a2281a5e7b98aa57202 # v2.0.1 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push.outputs.digest }} @@ -109,7 +109,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image (wolfi) - uses: actions/attest-build-provenance@ef244123eb79f2f7a7e75d99086184180e6d0018 # v1.4.4 + uses: actions/attest-build-provenance@c4fbc648846ca6f503a13a2281a5e7b98aa57202 # v2.0.1 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push-wolfi.outputs.digest }} From 054fd3e23dcd0411a329146957ef011ede5abe35 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 12:26:37 +0100 Subject: [PATCH 223/396] chore(deps): bump @opentelemetry/* deps in root (#4353) - Bumps @opentelemetry/sdk-metrics from 1.28.0 to 1.29.0. - Bumps @opentelemetry/core from 1.28.0 to 1.29.0. - Bumps @opentelemetry/resources from 1.28.0 to 1.29.0. - Bumps @opentelemetry/seantic-conventions from 1.27.0 to 1.28.0. --- package-lock.json | 68 +++++++++++++++++++++++------------------------ 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/package-lock.json b/package-lock.json index 734f2b17e3..59caa81736 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5114,11 +5114,11 @@ } }, "node_modules/@opentelemetry/core": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", - "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.29.0.tgz", + "integrity": "sha512-gmT7vAreXl0DTHD2rVZcw3+l2g84+5XiHIqdBUxXbExymPCvSsGOpiwMmn8nkiJur28STV31wnhIDrzWDPzjfA==", "dependencies": { - "@opentelemetry/semantic-conventions": "1.27.0" + "@opentelemetry/semantic-conventions": "1.28.0" }, "engines": { "node": ">=14" @@ -5128,12 +5128,12 @@ } }, "node_modules/@opentelemetry/resources": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", - "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.29.0.tgz", + "integrity": "sha512-s7mLXuHZE7RQr1wwweGcaRp3Q4UJJ0wazeGlc/N5/XSe6UyXfsh1UQGMADYeg7YwD+cEdMtU1yJAUXdnFzYzyQ==", "dependencies": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/semantic-conventions": "1.27.0" + "@opentelemetry/core": "1.29.0", + "@opentelemetry/semantic-conventions": "1.28.0" }, "engines": { "node": ">=14" @@ -5143,12 +5143,12 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.28.0.tgz", - "integrity": "sha512-43tqMK/0BcKTyOvm15/WQ3HLr0Vu/ucAl/D84NO7iSlv6O4eOprxSHa3sUtmYkaZWHqdDJV0AHVz/R6u4JALVQ==", + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.29.0.tgz", + "integrity": "sha512-MkVtuzDjXZaUJSuJlHn6BSXjcQlMvHcsDV7LjY4P6AJeffMa4+kIGDjzsCf6DkAh6Vqlwag5EWEam3KZOX5Drw==", "dependencies": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/resources": "1.28.0" + "@opentelemetry/core": "1.29.0", + "@opentelemetry/resources": "1.29.0" }, "engines": { "node": ">=14" @@ -5158,9 +5158,9 @@ } }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", - "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", "engines": { "node": ">=14" } @@ -20416,35 +20416,35 @@ "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" }, "@opentelemetry/core": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", - "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.29.0.tgz", + "integrity": "sha512-gmT7vAreXl0DTHD2rVZcw3+l2g84+5XiHIqdBUxXbExymPCvSsGOpiwMmn8nkiJur28STV31wnhIDrzWDPzjfA==", "requires": { - "@opentelemetry/semantic-conventions": "1.27.0" + "@opentelemetry/semantic-conventions": "1.28.0" } }, "@opentelemetry/resources": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", - "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.29.0.tgz", + "integrity": "sha512-s7mLXuHZE7RQr1wwweGcaRp3Q4UJJ0wazeGlc/N5/XSe6UyXfsh1UQGMADYeg7YwD+cEdMtU1yJAUXdnFzYzyQ==", "requires": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/semantic-conventions": "1.27.0" + "@opentelemetry/core": "1.29.0", + "@opentelemetry/semantic-conventions": "1.28.0" } }, "@opentelemetry/sdk-metrics": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.28.0.tgz", - "integrity": "sha512-43tqMK/0BcKTyOvm15/WQ3HLr0Vu/ucAl/D84NO7iSlv6O4eOprxSHa3sUtmYkaZWHqdDJV0AHVz/R6u4JALVQ==", + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.29.0.tgz", + "integrity": "sha512-MkVtuzDjXZaUJSuJlHn6BSXjcQlMvHcsDV7LjY4P6AJeffMa4+kIGDjzsCf6DkAh6Vqlwag5EWEam3KZOX5Drw==", "requires": { - "@opentelemetry/core": "1.28.0", - "@opentelemetry/resources": "1.28.0" + "@opentelemetry/core": "1.29.0", + "@opentelemetry/resources": "1.29.0" } }, "@opentelemetry/semantic-conventions": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", - "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==" + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==" }, "@pkgr/core": { "version": "0.1.1", From 4d8f0af026167e3369a0ab4c56469287e97d138c Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Mon, 9 Dec 2024 18:28:53 +0100 Subject: [PATCH 224/396] github-actions: exclude bot from the triage (#4342) --- .github/workflows/labeler.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index 5539d304af..dc563904df 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -33,7 +33,7 @@ jobs: github-token: ${{ steps.get_token.outputs.token }} - name: Add community and triage labels - if: contains(steps.is_elastic_member.outputs.result, 'false') && github.actor != 'dependabot[bot]' + if: contains(steps.is_elastic_member.outputs.result, 'false') && github.actor != 'dependabot[bot]' && github.actor != 'elastic-observability-automation[bot]' uses: actions/github-script@v7 with: script: | From 12d6d6672e6ec6e019824ed4b03f4fa84e56503c Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Tue, 10 Dec 2024 10:08:21 -0800 Subject: [PATCH 225/396] fix: guard against apm-clients encoding/truncation of trace objects throwing (#4359) We have observed an exception from 'truncate.transaction()' twice, to my knowledge. I have been unable to reproduce it so far. A possible side-effect of client._encode throwing in the apm-client is that it effectively gets wedged ('corked()'). Refs: #1966 --- CHANGELOG.asciidoc | 5 ++ lib/apm-client/http-apm-client/index.js | 73 +++++++++++++++++++++---- 2 files changed, 68 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index f6ad3e111c..a31f9316a0 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -46,6 +46,11 @@ See the <> guide. [float] ===== Bug fixes +* Guard against a possible encoding error of tracing data in the APM client, + before it is sent. It is *possible* this could wedge the APM client, + resulting in the APM agent no longer sending tracing data. + ({pull}4359[#4359]) + [float] ===== Chores diff --git a/lib/apm-client/http-apm-client/index.js b/lib/apm-client/http-apm-client/index.js index 24055ba468..bf7a9dca9c 100644 --- a/lib/apm-client/http-apm-client/index.js +++ b/lib/apm-client/http-apm-client/index.js @@ -405,6 +405,15 @@ Client.prototype._resetEncodedMetadata = function () { // This is the only code path that should set `_encodedMetadata`. this._encodedMetadata = this._encode({ metadata }, Client.encoding.METADATA); + if (!this._encodedMetadata) { + // The APM client cannot function without encoded metadata. Handling this + // could be improved (e.g. log details and disable the APM agent). However, + // this suffices for now as we have never observed a metadata encoding + // failure. + throw new Error( + 'could not encode metadata (trace-level logging will include details)', + ); + } this._log.trace( { _encodedMetadata: this._encodedMetadata }, '_resetEncodedMetadata', @@ -504,6 +513,9 @@ Client.prototype._write = function (obj, enc, cb) { } else { const t = process.hrtime(); const chunk = this._encode(obj, enc); + if (!chunk) { + return; + } this._numEventsEnqueued++; this._chopper.write(chunk, cb); this._log.trace( @@ -579,12 +591,18 @@ Client.prototype._writeBatch = function (objs, cb) { const chunks = []; for (var i = 0; i < objs.length; i++) { const obj = objs[i]; - chunks.push(this._encode(obj.chunk, obj.encoding)); + const encoded = this._encode(obj.chunk, obj.encoding); + if (encoded) { + chunks.push(encoded); + } + } + if (chunks.length === 0) { + return; } const chunk = chunks.join(''); const encodeTimeMs = deltaMs(t); - this._numEventsEnqueued += objs.length; + this._numEventsEnqueued += chunks.length; this._chopper.write(chunk, cb); const fullTimeMs = deltaMs(t); @@ -601,7 +619,7 @@ Client.prototype._writeBatch = function (objs, cb) { { encodeTimeMs, fullTimeMs, - numEvents: objs.length, + numEvents: chunks.length, numBytes: chunk.length, }, '_writeBatch', @@ -687,24 +705,54 @@ Client.prototype._maybeUncork = function () { }; Client.prototype._encode = function (obj, enc) { - const out = {}; + let thing; + let truncFunc; + let outAttr; switch (enc) { case Client.encoding.SPAN: - out.span = truncate.span(obj.span, this._conf); + thing = obj.span; + truncFunc = truncate.span; + outAttr = 'span'; break; case Client.encoding.TRANSACTION: - out.transaction = truncate.transaction(obj.transaction, this._conf); + thing = obj.transaction; + truncFunc = truncate.transaction; + outAttr = 'transaction'; break; case Client.encoding.METADATA: - out.metadata = truncate.metadata(obj.metadata, this._conf); + thing = obj.metadata; + truncFunc = truncate.metadata; + outAttr = 'metadata'; break; case Client.encoding.ERROR: - out.error = truncate.error(obj.error, this._conf); + thing = obj.error; + truncFunc = truncate.error; + outAttr = 'error'; break; case Client.encoding.METRICSET: - out.metricset = truncate.metricset(obj.metricset, this._conf); + thing = obj.metricset; + truncFunc = truncate.metricset; + outAttr = 'metricset'; break; } + + const out = {}; + try { + out[outAttr] = truncFunc(thing, this._conf); + } catch (err) { + this._log.warn( + { + err, + // Only log full problematic object at TRACE level to limit noise. + thing: this._log.isLevelEnabled('trace') ? thing : '[REDACTED]', + thing_id: thing?.id, + thing_name: thing?.name, + }, + `could not encode "${outAttr}" object`, + ); + return null; + } + return ndjson.serialize(out); }; @@ -765,7 +813,6 @@ Client.prototype.lambdaRegisterTransaction = function (trans, awsRequestId) { { awsRequestId, traceId: trans.trace_id, transId: trans.id }, 'lambdaRegisterTransaction start', ); - var out = this._encode({ transaction: trans }, Client.encoding.TRANSACTION); const finish = (errOrErrMsg) => { const durationMs = performance.now() - startTime; @@ -784,6 +831,12 @@ Client.prototype.lambdaRegisterTransaction = function (trans, awsRequestId) { resolve(); // always resolve, never reject }; + var out = this._encode({ transaction: trans }, Client.encoding.TRANSACTION); + if (!out) { + finish('could not encode transaction'); + return; + } + // Every `POST /register/transaction` request must set the // `x-elastic-aws-request-id` header. Instead of creating a new options obj // each time, we just modify in-place. From 7a3f826b549f67e811c00d622be915bf3d24438f Mon Sep 17 00:00:00 2001 From: David Luna Date: Tue, 10 Dec 2024 22:31:31 +0100 Subject: [PATCH 226/396] release 4.9.0 (#4357) --- CHANGELOG.asciidoc | 9 ++++----- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index a31f9316a0..45096350a7 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -33,19 +33,18 @@ Notes: See the <> guide. -==== Unreleased - -[float] -===== Breaking changes +[[release-notes-4.9.0]] +==== 4.9.0 - 2024/12/09 [float] ===== Features -* add support for `undici` v7. ({pull}4336[#4336]) +* Add support for `undici` v7. ({pull}4336[#4336]) [float] ===== Bug fixes +* Fix to support a internal refactor in `mysql2` v3.11.5. ({pull}4334[#4334]) * Guard against a possible encoding error of tracing data in the APM client, before it is sent. It is *possible* this could wedge the APM client, resulting in the APM agent no longer sending tracing data. diff --git a/package-lock.json b/package-lock.json index 59caa81736..be404e0bc1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "elastic-apm-node", - "version": "4.8.1", + "version": "4.9.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "elastic-apm-node", - "version": "4.8.1", + "version": "4.9.0", "license": "BSD-2-Clause", "dependencies": { "@elastic/ecs-pino-format": "^1.5.0", diff --git a/package.json b/package.json index d9172d06b6..48f5684ecd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "elastic-apm-node", - "version": "4.8.1", + "version": "4.9.0", "description": "The official Elastic APM agent for Node.js", "type": "commonjs", "main": "index.js", From 6f877a4322f0543658ff0f4f08c5170e068216be Mon Sep 17 00:00:00 2001 From: "elastic-observability-automation[bot]" <180520183+elastic-observability-automation[bot]@users.noreply.github.com> Date: Thu, 12 Dec 2024 09:04:28 +0100 Subject: [PATCH 227/396] chore: deps(updatecli): Bump updatecli version to v0.89.0 (#4362) --- .tool-versions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tool-versions b/.tool-versions index 3d067142fd..433f827ca9 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -updatecli v0.88.0 \ No newline at end of file +updatecli v0.89.0 \ No newline at end of file From 5396162cc9ad16ecac453eac42f8f0503a16a0f6 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Thu, 12 Dec 2024 09:05:40 +0100 Subject: [PATCH 228/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to 1b51ff6 (#4363) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 45dc748593..467effb13e 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:ad2e15a6b7fbd893990fd9bd39fb0f367282a9ba65e350655540e470858ef382 +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:1b51ff6dba78c98d3e02b0cd64a8ce3238c7a40408d21e3af12a329d44db6f23 ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 6f73a1c0f65249b5ecd182ac6ba42fbeb12ce42e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 09:48:41 +0100 Subject: [PATCH 229/396] chore(deps): bump actions/attest-build-provenance from 2.0.1 to 2.1.0 (#4365) --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 30c44440b2..157641c53a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -44,7 +44,7 @@ jobs: - run: make -C .ci dist - name: Attest Lambda layer zip - uses: actions/attest-build-provenance@c4fbc648846ca6f503a13a2281a5e7b98aa57202 # v2.0.1 + uses: actions/attest-build-provenance@7668571508540a607bdfd90a87a560489fe372eb # v2.1.0 with: subject-path: "${{ github.workspace }}/build/aws/elastic-apm-node-lambda-layer-*.zip" @@ -75,7 +75,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image - uses: actions/attest-build-provenance@c4fbc648846ca6f503a13a2281a5e7b98aa57202 # v2.0.1 + uses: actions/attest-build-provenance@7668571508540a607bdfd90a87a560489fe372eb # v2.1.0 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push.outputs.digest }} @@ -109,7 +109,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image (wolfi) - uses: actions/attest-build-provenance@c4fbc648846ca6f503a13a2281a5e7b98aa57202 # v2.0.1 + uses: actions/attest-build-provenance@7668571508540a607bdfd90a87a560489fe372eb # v2.1.0 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push-wolfi.outputs.digest }} From fa2ddb67f0e214e217d2df9393c418f7deedc657 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 09:49:08 +0100 Subject: [PATCH 230/396] chore(deps-dev): bump mongodb from 6.11.0 to 6.12.0 (#4367) --- package-lock.json | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index be404e0bc1..1a24057511 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7454,9 +7454,9 @@ } }, "node_modules/bson": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.0.tgz", - "integrity": "sha512-ROchNosXMJD2cbQGm84KoP7vOGPO6/bOAW0veMMbzhXLqoZptcaYRVLitwvuhwhjjpU1qP4YZRWLhgETdgqUQw==", + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.1.tgz", + "integrity": "sha512-P92xmHDQjSKPLHqFxefqMxASNq/aWJMEZugpCjf+AF/pgcUpMMQCg7t7+ewko0/u8AapvF3luf/FoehddEK+sA==", "dev": true, "engines": { "node": ">=16.20.1" @@ -12441,13 +12441,13 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "node_modules/mongodb": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.11.0.tgz", - "integrity": "sha512-yVbPw0qT268YKhG241vAMLaDQAPbRyTgo++odSgGc9kXnzOujQI60Iyj23B9sQQFPSvmNPvMZ3dsFz0aN55KgA==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.12.0.tgz", + "integrity": "sha512-RM7AHlvYfS7jv7+BXund/kR64DryVI+cHbVAy9P61fnb1RcWZqOW1/Wj2YhqMCx+MuYhqTRGv7AwHBzmsCKBfA==", "dev": true, "dependencies": { "@mongodb-js/saslprep": "^1.1.9", - "bson": "^6.10.0", + "bson": "^6.10.1", "mongodb-connection-string-url": "^3.0.0" }, "engines": { @@ -12455,7 +12455,7 @@ }, "peerDependencies": { "@aws-sdk/credential-providers": "^3.188.0", - "@mongodb-js/zstd": "^1.1.0", + "@mongodb-js/zstd": "^1.1.0 || ^2.0.0", "gcp-metadata": "^5.2.0", "kerberos": "^2.0.1", "mongodb-client-encryption": ">=6.0.0 <7", @@ -22292,9 +22292,9 @@ } }, "bson": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.0.tgz", - "integrity": "sha512-ROchNosXMJD2cbQGm84KoP7vOGPO6/bOAW0veMMbzhXLqoZptcaYRVLitwvuhwhjjpU1qP4YZRWLhgETdgqUQw==", + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.1.tgz", + "integrity": "sha512-P92xmHDQjSKPLHqFxefqMxASNq/aWJMEZugpCjf+AF/pgcUpMMQCg7t7+ewko0/u8AapvF3luf/FoehddEK+sA==", "dev": true }, "buffer": { @@ -26091,13 +26091,13 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "mongodb": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.11.0.tgz", - "integrity": "sha512-yVbPw0qT268YKhG241vAMLaDQAPbRyTgo++odSgGc9kXnzOujQI60Iyj23B9sQQFPSvmNPvMZ3dsFz0aN55KgA==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.12.0.tgz", + "integrity": "sha512-RM7AHlvYfS7jv7+BXund/kR64DryVI+cHbVAy9P61fnb1RcWZqOW1/Wj2YhqMCx+MuYhqTRGv7AwHBzmsCKBfA==", "dev": true, "requires": { "@mongodb-js/saslprep": "^1.1.9", - "bson": "^6.10.0", + "bson": "^6.10.1", "mongodb-connection-string-url": "^3.0.0" } }, From 26be6654109d2ecc5f140662baf5942536d85f5a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 09:49:37 +0100 Subject: [PATCH 231/396] chore(deps-dev): bump @elastic/elasticsearch from 8.16.2 to 8.17.0 (#4368) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1a24057511..d651f5413f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4035,9 +4035,9 @@ } }, "node_modules/@elastic/elasticsearch": { - "version": "8.16.2", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.16.2.tgz", - "integrity": "sha512-2ivc6uS97fbEeW4tNtg5mvh/Jy82ZLfcwQ1HhNhdYxyapNnQxIgZ83Zd8Ir+5jCPMDWKSYgwDb8t4GAINDDv2w==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.17.0.tgz", + "integrity": "sha512-FZ+gQUrPsMpQ2RRIXwTmCoUeFCEausMhp4eQOyxT9j1cwGXHJrhelR6jffM1SC95kQUkB7+TcTq7oQ+bG2BQ9g==", "dev": true, "dependencies": { "@elastic/transport": "^8.9.1", @@ -19427,9 +19427,9 @@ } }, "@elastic/elasticsearch": { - "version": "8.16.2", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.16.2.tgz", - "integrity": "sha512-2ivc6uS97fbEeW4tNtg5mvh/Jy82ZLfcwQ1HhNhdYxyapNnQxIgZ83Zd8Ir+5jCPMDWKSYgwDb8t4GAINDDv2w==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.17.0.tgz", + "integrity": "sha512-FZ+gQUrPsMpQ2RRIXwTmCoUeFCEausMhp4eQOyxT9j1cwGXHJrhelR6jffM1SC95kQUkB7+TcTq7oQ+bG2BQ9g==", "dev": true, "requires": { "@elastic/transport": "^8.9.1", From 3cb974618e0786c3ca8810159837312fa1ce0945 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 09:50:12 +0100 Subject: [PATCH 232/396] chore(deps-dev): bump fastify from 5.1.0 to 5.2.0 (#4369) --- package-lock.json | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index d651f5413f..4cccf0fe72 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9826,9 +9826,9 @@ } }, "node_modules/fastify": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.1.0.tgz", - "integrity": "sha512-0SdUC5AoiSgMSc2Vxwv3WyKzyGMDJRAW/PgNsK1kZrnkO6MeqUIW9ovVg9F2UGIqtIcclYMyeJa4rK6OZc7Jxg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.2.0.tgz", + "integrity": "sha512-3s+Qt5S14Eq5dCpnE0FxTp3z4xKChI83ZnMv+k0FwX+VUoZrgCFoLAxpfdi/vT4y6Mk+g7aAMt9pgXDoZmkefQ==", "dev": true, "funding": [ { @@ -9853,7 +9853,7 @@ "process-warning": "^4.0.0", "proxy-addr": "^2.0.7", "rfdc": "^1.3.1", - "secure-json-parse": "^2.7.0", + "secure-json-parse": "^3.0.1", "semver": "^7.6.0", "toad-cache": "^3.7.0" } @@ -9924,6 +9924,12 @@ "ret": "~0.5.0" } }, + "node_modules/fastify/node_modules/secure-json-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-3.0.1.tgz", + "integrity": "sha512-9QR7G96th4QJ2+dJwvZB+JoXyt8PN+DbEjOr6kL2/JU4KH8Eb2sFdU+gt8EDdzWDWoWH0uocDdfCoFzdVSixUA==", + "dev": true + }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -24102,9 +24108,9 @@ } }, "fastify": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.1.0.tgz", - "integrity": "sha512-0SdUC5AoiSgMSc2Vxwv3WyKzyGMDJRAW/PgNsK1kZrnkO6MeqUIW9ovVg9F2UGIqtIcclYMyeJa4rK6OZc7Jxg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.2.0.tgz", + "integrity": "sha512-3s+Qt5S14Eq5dCpnE0FxTp3z4xKChI83ZnMv+k0FwX+VUoZrgCFoLAxpfdi/vT4y6Mk+g7aAMt9pgXDoZmkefQ==", "dev": true, "requires": { "@fastify/ajv-compiler": "^4.0.0", @@ -24119,7 +24125,7 @@ "process-warning": "^4.0.0", "proxy-addr": "^2.0.7", "rfdc": "^1.3.1", - "secure-json-parse": "^2.7.0", + "secure-json-parse": "^3.0.1", "semver": "^7.6.0", "toad-cache": "^3.7.0" }, @@ -24174,6 +24180,12 @@ "requires": { "ret": "~0.5.0" } + }, + "secure-json-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-3.0.1.tgz", + "integrity": "sha512-9QR7G96th4QJ2+dJwvZB+JoXyt8PN+DbEjOr6kL2/JU4KH8Eb2sFdU+gt8EDdzWDWoWH0uocDdfCoFzdVSixUA==", + "dev": true } } }, From 0b80eb1732aeda51f1ad53a3d0513c7362b2e839 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 11:16:19 +0100 Subject: [PATCH 233/396] chore(deps-dev): bump the eslint group with 2 updates (#4366) - Updates `eslint` from 9.16.0 to 9.17.0 - Updates `eslint-plugin-n` from 17.14.0 to 17.15.0 --- package-lock.json | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4cccf0fe72..e8b437f1ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4201,9 +4201,9 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "9.16.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.16.0.tgz", - "integrity": "sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==", + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", + "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8907,9 +8907,9 @@ } }, "node_modules/eslint": { - "version": "9.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.16.0.tgz", - "integrity": "sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==", + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.17.0.tgz", + "integrity": "sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", @@ -8917,7 +8917,7 @@ "@eslint/config-array": "^0.19.0", "@eslint/core": "^0.9.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.16.0", + "@eslint/js": "9.17.0", "@eslint/plugin-kit": "^0.2.3", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -8926,7 +8926,7 @@ "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.5", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.2.0", @@ -9132,9 +9132,9 @@ } }, "node_modules/eslint-plugin-n": { - "version": "17.14.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.14.0.tgz", - "integrity": "sha512-maxPLMEA0rPmRpoOlxEclKng4UpDe+N5BJS4t24I3UKnN109Qcivnfs37KMy84G0af3bxjog5lKctP5ObsvcTA==", + "version": "17.15.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.15.0.tgz", + "integrity": "sha512-xF3zJkOfLlFOm5TvmqmsnA9/fO+/z2pYs0dkuKXKN/ymS6UB1yEcaoIkqxLKQ9Dw/WmLX/Tdh6/5ZS5azVixFQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.1", @@ -19556,9 +19556,9 @@ } }, "@eslint/js": { - "version": "9.16.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.16.0.tgz", - "integrity": "sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==", + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", + "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==", "dev": true }, "@eslint/object-schema": { @@ -23423,9 +23423,9 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.16.0.tgz", - "integrity": "sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==", + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.17.0.tgz", + "integrity": "sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", @@ -23433,7 +23433,7 @@ "@eslint/config-array": "^0.19.0", "@eslint/core": "^0.9.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.16.0", + "@eslint/js": "9.17.0", "@eslint/plugin-kit": "^0.2.3", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -23442,7 +23442,7 @@ "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.5", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.2.0", @@ -23661,9 +23661,9 @@ } }, "eslint-plugin-n": { - "version": "17.14.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.14.0.tgz", - "integrity": "sha512-maxPLMEA0rPmRpoOlxEclKng4UpDe+N5BJS4t24I3UKnN109Qcivnfs37KMy84G0af3bxjog5lKctP5ObsvcTA==", + "version": "17.15.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.15.0.tgz", + "integrity": "sha512-xF3zJkOfLlFOm5TvmqmsnA9/fO+/z2pYs0dkuKXKN/ymS6UB1yEcaoIkqxLKQ9Dw/WmLX/Tdh6/5ZS5azVixFQ==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.1", From 6453fff2ce4d339e0444d655b0a60d9397da1cc9 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Wed, 18 Dec 2024 10:08:20 +0100 Subject: [PATCH 234/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to bfdeddb (#4371) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 467effb13e..cd835ed09e 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:1b51ff6dba78c98d3e02b0cd64a8ce3238c7a40408d21e3af12a329d44db6f23 +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:bfdeddb33330a281950c2a54adef991dbbe6a42832bc505d13b11beaf50ae73f ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From df03f05388a8c8d2c46e0fc871c2e079886c3fb6 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Tue, 24 Dec 2024 07:33:57 -0800 Subject: [PATCH 235/396] better logging for config state; release 4.10.0 (#4386) This cherry-picks an improvement from the 3.x branch: > This adds a periodic (once per minute) dump of effective config changes > from the default, once per minute at 'trace'-level. > > This also fixes an issue where a central-config update of `log_level` > did not update the *child* logger on the APM client. Only the agent's > own logger's level was updated. > > This adds trans.sampled to some debug logging output. and prepares for a v4.10.0 release. Refs: #4291 (equivalent on 3.x branch) --- CHANGELOG.asciidoc | 12 ++++++++++-- lib/agent.js | 18 ++++++++++++++++++ lib/apm-client/apm-client.js | 2 ++ lib/config/config.js | 22 ++++++++++++++++++++++ lib/instrumentation/index.js | 4 ++++ lib/instrumentation/transaction.js | 1 + package-lock.json | 4 ++-- package.json | 2 +- 8 files changed, 60 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 45096350a7..93a5792dad 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -33,6 +33,16 @@ Notes: See the <> guide. +[[release-notes-4.10.0]] +==== 4.10.0 - 2024/12/24 + +[float] +===== Features + +* Improve trace-level logging to better support debugging central config + and transaction sampling issues. ({issues}4291[#4291]) + + [[release-notes-4.9.0]] ==== 4.9.0 - 2024/12/09 @@ -50,8 +60,6 @@ See the <> guide. resulting in the APM agent no longer sending tracing data. ({pull}4359[#4359]) -[float] -===== Chores [[release-notes-4.8.1]] diff --git a/lib/agent.js b/lib/agent.js index 2a1e26dfd6..090ad6e45f 100644 --- a/lib/agent.js +++ b/lib/agent.js @@ -24,6 +24,7 @@ const errors = require('./errors'); const { InflightEventSet } = require('./InflightEventSet'); const { Instrumentation } = require('./instrumentation'); const { elasticApmAwsLambda } = require('./lambda'); +const logging = require('./logging'); const Metrics = require('./metrics'); const parsers = require('./parsers'); const symbols = require('./symbols'); @@ -317,6 +318,23 @@ Agent.prototype.start = function (opts) { this.logger.info(preambleData, 'Elastic APM Node.js Agent v%s', version); + if (!logging.isLoggerCustom(this.logger)) { + // Periodically dump the current config (delta from defaults) when logging + // at "trace"-level. This allows getting the effective config from a running + // agent by setting trace-level logging and getting 1 minute of logs. + // (Sometimes getting logs from application *start* is no possible.) + setInterval(() => { + if (this.logger.isLevelEnabled('trace')) { + try { + const currConfig = this._conf.getCurrConfig(); + this.logger.trace({ currConfig }, 'currConfig'); + } catch (err) { + this.logger.trace({ err }, 'error calculating currConfig'); + } + } + }, 60 * 1000).unref(); + } + if (isPreviewVersion) { this.logger.warn( 'Version %s is a pre-release and not intended for use in production environments', diff --git a/lib/apm-client/apm-client.js b/lib/apm-client/apm-client.js index d05a606c0a..1d0d999c2f 100644 --- a/lib/apm-client/apm-client.js +++ b/lib/apm-client/apm-client.js @@ -70,6 +70,8 @@ function createApmClient(config, agent) { !logging.isLoggerCustom(agent.logger) ) { logging.setLogLevel(agent.logger, value); + // Hackily also set the HttpApmClient._log level. + logging.setLogLevel(client._log, value); agent.logger.info( `Central config success: updated logger with new logLevel: ${value}`, ); diff --git a/lib/config/config.js b/lib/config/config.js index 09e1a85753..58c1e8459d 100644 --- a/lib/config/config.js +++ b/lib/config/config.js @@ -34,6 +34,7 @@ const { setStartOptions, getPreambleData, readEnvOptions, + CENTRAL_CONFIG_OPTS, } = require('./schema'); const { @@ -244,6 +245,27 @@ class Config { } return loggable; } + + // Returns an object showing the current config, excluding default values. + getCurrConfig() { + const currConfig = {}; + + // Start with the values from the logging preamble. This selected keys + // that were specified, and handles redaction. + for (let [k, v] of Object.entries(this.loggingPreambleData.config)) { + currConfig[k] = v.value; + } + + // Then add the current value of any var possibly set by central config. + currConfig.centralConfig = this.centralConfig; + if (this.centralConfig) { + for (let k of Object.values(CENTRAL_CONFIG_OPTS)) { + currConfig[k] = this[k]; + } + } + + return currConfig; + } } function validateServiceName(s) { diff --git a/lib/instrumentation/index.js b/lib/instrumentation/index.js index 626bf5493d..0b81cf8fc9 100644 --- a/lib/instrumentation/index.js +++ b/lib/instrumentation/index.js @@ -745,6 +745,10 @@ Instrumentation.prototype.addEndedTransaction = function (transaction) { !transaction.sampled && !agent._apmClient.supportsKeepingUnsampledTransaction() ) { + agent.logger.debug( + { trans: transaction.id, trace: transaction.traceId }, + 'dropping unsampled transaction', + ); return; } diff --git a/lib/instrumentation/transaction.js b/lib/instrumentation/transaction.js index d5be893936..5280bee322 100644 --- a/lib/instrumentation/transaction.js +++ b/lib/instrumentation/transaction.js @@ -88,6 +88,7 @@ function Transaction(agent, name, ...args) { trans: this.id, parent: this.parentId, trace: this.traceId, + sampled: this.sampled, name: this.name, type: this.type, }); diff --git a/package-lock.json b/package-lock.json index e8b437f1ce..da95bb1068 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "elastic-apm-node", - "version": "4.9.0", + "version": "4.10.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "elastic-apm-node", - "version": "4.9.0", + "version": "4.10.0", "license": "BSD-2-Clause", "dependencies": { "@elastic/ecs-pino-format": "^1.5.0", diff --git a/package.json b/package.json index 48f5684ecd..16c75daf9c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "elastic-apm-node", - "version": "4.9.0", + "version": "4.10.0", "description": "The official Elastic APM agent for Node.js", "type": "commonjs", "main": "index.js", From 86a84f55c28a1480aa8e1762f5c6dcfd9ff769c0 Mon Sep 17 00:00:00 2001 From: "elastic-observability-automation[bot]" <180520183+elastic-observability-automation[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 08:58:37 -0800 Subject: [PATCH 236/396] chore: APM agent json server schema 20bb1f9ac324c275c41f6f81ac0e5ef93... (#4387) --- test/integration/api-schema/apm-server-schema/span.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/integration/api-schema/apm-server-schema/span.json b/test/integration/api-schema/apm-server-schema/span.json index e86da9a69c..14eea1b15b 100644 --- a/test/integration/api-schema/apm-server-schema/span.json +++ b/test/integration/api-schema/apm-server-schema/span.json @@ -188,6 +188,9 @@ "object" ], "properties": { + "body": { + "description": "The http request body usually as a string, but may be a dictionary for multipart/form-data content" + }, "id": { "description": "ID holds the unique identifier for the http request.", "type": [ From b389a1cff20fee0fc9f101df9fb4012a58fb0646 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Mon, 6 Jan 2025 14:58:53 -0800 Subject: [PATCH 237/396] fix: get 'npm ci' working again (#4397) This is a workaround for `npm ci` failing with: Invalid: lock file's process-warning@4.0.0 does not satisfy process-warning@4.0.1 Closes: #4396 --- package-lock.json | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index da95bb1068..d85867d4be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13680,10 +13680,21 @@ "dev": true }, "node_modules/process-warning": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.0.tgz", - "integrity": "sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==", - "dev": true + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.1.tgz", + "integrity": "sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" }, "node_modules/promise": { "version": "7.3.1", @@ -27024,9 +27035,9 @@ "dev": true }, "process-warning": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.0.tgz", - "integrity": "sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.1.tgz", + "integrity": "sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==", "dev": true }, "promise": { From 53218de13d752f694a62d64f0d7e1e5b29825ead Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Jan 2025 11:11:24 +0100 Subject: [PATCH 238/396] chore(deps-dev): bump undici from 7.1.0 to 7.2.0 (#4382) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index d85867d4be..7050c9181e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15914,9 +15914,9 @@ } }, "node_modules/undici": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.1.0.tgz", - "integrity": "sha512-3+mdX2R31khuLCm2mKExSlMdJsfol7bJkIMH80tdXA74W34rT1jKemUTlYR7WY3TqsV4wfOgpatWmmB2Jl1+5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.2.0.tgz", + "integrity": "sha512-klt+0S55GBViA9nsq48/NSCo4YX5mjydjypxD7UmHh/brMu8h/Mhd/F7qAeoH2NOO8SDTk6kjnTFc4WpzmfYpQ==", "dev": true, "engines": { "node": ">=20.18.1" @@ -28816,9 +28816,9 @@ "dev": true }, "undici": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.1.0.tgz", - "integrity": "sha512-3+mdX2R31khuLCm2mKExSlMdJsfol7bJkIMH80tdXA74W34rT1jKemUTlYR7WY3TqsV4wfOgpatWmmB2Jl1+5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.2.0.tgz", + "integrity": "sha512-klt+0S55GBViA9nsq48/NSCo4YX5mjydjypxD7UmHh/brMu8h/Mhd/F7qAeoH2NOO8SDTk6kjnTFc4WpzmfYpQ==", "dev": true }, "undici-types": { From ce2f1082422ac53a2541bc19ad71db90a46939e0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Jan 2025 11:15:22 +0100 Subject: [PATCH 239/396] chore(deps): bump import-in-the-middle from 1.11.3 to 1.12.0 (#4383) --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7050c9181e..f45956a9f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "fast-safe-stringify": "^2.0.7", "fast-stream-to-buffer": "^1.0.0", "http-headers": "^3.0.2", - "import-in-the-middle": "1.11.3", + "import-in-the-middle": "1.12.0", "json-bigint": "^1.0.0", "lru-cache": "10.2.0", "measured-reporting": "^1.51.1", @@ -10885,9 +10885,9 @@ } }, "node_modules/import-in-the-middle": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.3.tgz", - "integrity": "sha512-tNpKEb4AjZrCyrxi+Eyu43h5ig0O8ZRFSXPHh/00/o+4P4pKzVEW/m5lsVtsAT7fCIgmQOAPjdqecGDsBXRxsw==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.12.0.tgz", + "integrity": "sha512-yAgSE7GmtRcu4ZUSFX/4v69UGXwugFFSdIQJ14LHPOPPQrWv8Y7O9PHsw8Ovk7bKCLe4sjXMbZFqGFcLHpZ89w==", "dependencies": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", @@ -24926,9 +24926,9 @@ } }, "import-in-the-middle": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.3.tgz", - "integrity": "sha512-tNpKEb4AjZrCyrxi+Eyu43h5ig0O8ZRFSXPHh/00/o+4P4pKzVEW/m5lsVtsAT7fCIgmQOAPjdqecGDsBXRxsw==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.12.0.tgz", + "integrity": "sha512-yAgSE7GmtRcu4ZUSFX/4v69UGXwugFFSdIQJ14LHPOPPQrWv8Y7O9PHsw8Ovk7bKCLe4sjXMbZFqGFcLHpZ89w==", "requires": { "acorn": "^8.8.2", "acorn-import-attributes": "^1.9.5", diff --git a/package.json b/package.json index 16c75daf9c..781fb68399 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "fast-safe-stringify": "^2.0.7", "fast-stream-to-buffer": "^1.0.0", "http-headers": "^3.0.2", - "import-in-the-middle": "1.11.3", + "import-in-the-middle": "1.12.0", "json-bigint": "^1.0.0", "lru-cache": "10.2.0", "measured-reporting": "^1.51.1", From c58b68fe3c5d56877dcc8478265e4c5dd2f231fa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Jan 2025 11:16:42 +0100 Subject: [PATCH 240/396] chore(deps-dev): bump eslint-plugin-n in the eslint group (#4378) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index f45956a9f0..dfea174a55 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9132,9 +9132,9 @@ } }, "node_modules/eslint-plugin-n": { - "version": "17.15.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.15.0.tgz", - "integrity": "sha512-xF3zJkOfLlFOm5TvmqmsnA9/fO+/z2pYs0dkuKXKN/ymS6UB1yEcaoIkqxLKQ9Dw/WmLX/Tdh6/5ZS5azVixFQ==", + "version": "17.15.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.15.1.tgz", + "integrity": "sha512-KFw7x02hZZkBdbZEFQduRGH4VkIH4MW97ClsbAM4Y4E6KguBJWGfWG1P4HEIpZk2bkoWf0bojpnjNAhYQP8beA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.1", @@ -23672,9 +23672,9 @@ } }, "eslint-plugin-n": { - "version": "17.15.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.15.0.tgz", - "integrity": "sha512-xF3zJkOfLlFOm5TvmqmsnA9/fO+/z2pYs0dkuKXKN/ymS6UB1yEcaoIkqxLKQ9Dw/WmLX/Tdh6/5ZS5azVixFQ==", + "version": "17.15.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.15.1.tgz", + "integrity": "sha512-KFw7x02hZZkBdbZEFQduRGH4VkIH4MW97ClsbAM4Y4E6KguBJWGfWG1P4HEIpZk2bkoWf0bojpnjNAhYQP8beA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.1", From e72731b93d78be788aab5a933e58c452b72b8144 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Jan 2025 11:18:25 +0100 Subject: [PATCH 241/396] chore(deps-dev): bump mysql2 from 3.11.5 to 3.12.0 (#4390) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index dfea174a55..090dc6b75c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12609,9 +12609,9 @@ } }, "node_modules/mysql2": { - "version": "3.11.5", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.11.5.tgz", - "integrity": "sha512-0XFu8rUmFN9vC0ME36iBvCUObftiMHItrYFhlCRvFWbLgpNqtC4Br/NmZX1HNCszxT0GGy5QtP+k3Q3eCJPaYA==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.12.0.tgz", + "integrity": "sha512-C8fWhVysZoH63tJbX8d10IAoYCyXy4fdRFz2Ihrt9jtPILYynFEKUUzpp1U7qxzDc3tMbotvaBH+sl6bFnGZiw==", "dev": true, "dependencies": { "aws-ssl-profiles": "^1.1.1", @@ -26230,9 +26230,9 @@ } }, "mysql2": { - "version": "3.11.5", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.11.5.tgz", - "integrity": "sha512-0XFu8rUmFN9vC0ME36iBvCUObftiMHItrYFhlCRvFWbLgpNqtC4Br/NmZX1HNCszxT0GGy5QtP+k3Q3eCJPaYA==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.12.0.tgz", + "integrity": "sha512-C8fWhVysZoH63tJbX8d10IAoYCyXy4fdRFz2Ihrt9jtPILYynFEKUUzpp1U7qxzDc3tMbotvaBH+sl6bFnGZiw==", "dev": true, "requires": { "aws-ssl-profiles": "^1.1.1", From e69047aef04236119daa7215b48d45b5fc91da2a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Jan 2025 11:21:07 +0100 Subject: [PATCH 242/396] chore(deps-dev): bump ioredis from 5.4.1 to 5.4.2 (#4381) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 090dc6b75c..6f5c560a72 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10951,9 +10951,9 @@ } }, "node_modules/ioredis": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.4.1.tgz", - "integrity": "sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.4.2.tgz", + "integrity": "sha512-0SZXGNGZ+WzISQ67QDyZ2x0+wVxjjUndtD8oSeik/4ajifeiRufed8fCb8QW8VMyi4MXcS+UO1k/0NGhvq1PAg==", "dev": true, "dependencies": { "@ioredis/commands": "^1.1.1", @@ -24980,9 +24980,9 @@ "dev": true }, "ioredis": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.4.1.tgz", - "integrity": "sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.4.2.tgz", + "integrity": "sha512-0SZXGNGZ+WzISQ67QDyZ2x0+wVxjjUndtD8oSeik/4ajifeiRufed8fCb8QW8VMyi4MXcS+UO1k/0NGhvq1PAg==", "dev": true, "requires": { "@ioredis/commands": "^1.1.1", From 9577ee3781a31cecb411d3f36af7b4d42c18463b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Jan 2025 13:45:49 +0100 Subject: [PATCH 243/396] chore(deps): bump agentkeepalive from 4.5.0 to 4.6.0 (#4391) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6f5c560a72..1471d58474 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6415,9 +6415,9 @@ } }, "node_modules/agentkeepalive": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", - "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", + "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", "dependencies": { "humanize-ms": "^1.2.1" }, @@ -21529,9 +21529,9 @@ } }, "agentkeepalive": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", - "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", + "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", "requires": { "humanize-ms": "^1.2.1" } From 50d5dbe67c0f5bf900254dbcd1348b0d5a37c221 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Jan 2025 14:28:10 +0100 Subject: [PATCH 244/396] chore(deps): bump @opentelemetry/sdk-metrics from 1.29.0 to 1.30.0 (#4380) --- package-lock.json | 48 +++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1471d58474..8adda331cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5114,9 +5114,9 @@ } }, "node_modules/@opentelemetry/core": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.29.0.tgz", - "integrity": "sha512-gmT7vAreXl0DTHD2rVZcw3+l2g84+5XiHIqdBUxXbExymPCvSsGOpiwMmn8nkiJur28STV31wnhIDrzWDPzjfA==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.0.tgz", + "integrity": "sha512-Q/3u/K73KUjTCnFUP97ZY+pBjQ1kPEgjOfXj/bJl8zW7GbXdkw6cwuyZk6ZTXkVgCBsYRYUzx4fvYK1jxdb9MA==", "dependencies": { "@opentelemetry/semantic-conventions": "1.28.0" }, @@ -5128,11 +5128,11 @@ } }, "node_modules/@opentelemetry/resources": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.29.0.tgz", - "integrity": "sha512-s7mLXuHZE7RQr1wwweGcaRp3Q4UJJ0wazeGlc/N5/XSe6UyXfsh1UQGMADYeg7YwD+cEdMtU1yJAUXdnFzYzyQ==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.0.tgz", + "integrity": "sha512-5mGMjL0Uld/99t7/pcd7CuVtJbkARckLVuiOX84nO8RtLtIz0/J6EOHM2TGvPZ6F4K+XjUq13gMx14w80SVCQg==", "dependencies": { - "@opentelemetry/core": "1.29.0", + "@opentelemetry/core": "1.30.0", "@opentelemetry/semantic-conventions": "1.28.0" }, "engines": { @@ -5143,12 +5143,12 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.29.0.tgz", - "integrity": "sha512-MkVtuzDjXZaUJSuJlHn6BSXjcQlMvHcsDV7LjY4P6AJeffMa4+kIGDjzsCf6DkAh6Vqlwag5EWEam3KZOX5Drw==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.0.tgz", + "integrity": "sha512-5kcj6APyRMvv6dEIP5plz2qfJAD4OMipBRT11u/pa1a68rHKI2Ln+iXVkAGKgx8o7CXbD7FdPypTUY88ZQgP4Q==", "dependencies": { - "@opentelemetry/core": "1.29.0", - "@opentelemetry/resources": "1.29.0" + "@opentelemetry/core": "1.30.0", + "@opentelemetry/resources": "1.30.0" }, "engines": { "node": ">=14" @@ -20433,29 +20433,29 @@ "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" }, "@opentelemetry/core": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.29.0.tgz", - "integrity": "sha512-gmT7vAreXl0DTHD2rVZcw3+l2g84+5XiHIqdBUxXbExymPCvSsGOpiwMmn8nkiJur28STV31wnhIDrzWDPzjfA==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.0.tgz", + "integrity": "sha512-Q/3u/K73KUjTCnFUP97ZY+pBjQ1kPEgjOfXj/bJl8zW7GbXdkw6cwuyZk6ZTXkVgCBsYRYUzx4fvYK1jxdb9MA==", "requires": { "@opentelemetry/semantic-conventions": "1.28.0" } }, "@opentelemetry/resources": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.29.0.tgz", - "integrity": "sha512-s7mLXuHZE7RQr1wwweGcaRp3Q4UJJ0wazeGlc/N5/XSe6UyXfsh1UQGMADYeg7YwD+cEdMtU1yJAUXdnFzYzyQ==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.0.tgz", + "integrity": "sha512-5mGMjL0Uld/99t7/pcd7CuVtJbkARckLVuiOX84nO8RtLtIz0/J6EOHM2TGvPZ6F4K+XjUq13gMx14w80SVCQg==", "requires": { - "@opentelemetry/core": "1.29.0", + "@opentelemetry/core": "1.30.0", "@opentelemetry/semantic-conventions": "1.28.0" } }, "@opentelemetry/sdk-metrics": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.29.0.tgz", - "integrity": "sha512-MkVtuzDjXZaUJSuJlHn6BSXjcQlMvHcsDV7LjY4P6AJeffMa4+kIGDjzsCf6DkAh6Vqlwag5EWEam3KZOX5Drw==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.0.tgz", + "integrity": "sha512-5kcj6APyRMvv6dEIP5plz2qfJAD4OMipBRT11u/pa1a68rHKI2Ln+iXVkAGKgx8o7CXbD7FdPypTUY88ZQgP4Q==", "requires": { - "@opentelemetry/core": "1.29.0", - "@opentelemetry/resources": "1.29.0" + "@opentelemetry/core": "1.30.0", + "@opentelemetry/resources": "1.30.0" } }, "@opentelemetry/semantic-conventions": { From b5d25c395fc1b9105da2e5a137a8d1999814fa0d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Jan 2025 14:29:16 +0100 Subject: [PATCH 245/396] chore(deps): bump @opentelemetry/sdk-metrics (#4384) --- .../fixtures/package-lock.json | 96 ++++++++++++++++--- .../fixtures/package.json | 2 +- 2 files changed, 86 insertions(+), 12 deletions(-) diff --git a/test/opentelemetry-metrics/fixtures/package-lock.json b/test/opentelemetry-metrics/fixtures/package-lock.json index 8770cd00cc..bd6e31aa8f 100644 --- a/test/opentelemetry-metrics/fixtures/package-lock.json +++ b/test/opentelemetry-metrics/fixtures/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/exporter-prometheus": ">=0.41.2 <2", - "@opentelemetry/sdk-metrics": "^1.27.0" + "@opentelemetry/sdk-metrics": "^1.30.0" } }, "node_modules/@opentelemetry/api": { @@ -51,6 +51,21 @@ "@opentelemetry/api": "^1.3.0" } }, + "node_modules/@opentelemetry/exporter-prometheus/node_modules/@opentelemetry/sdk-metrics": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.29.0.tgz", + "integrity": "sha512-MkVtuzDjXZaUJSuJlHn6BSXjcQlMvHcsDV7LjY4P6AJeffMa4+kIGDjzsCf6DkAh6Vqlwag5EWEam3KZOX5Drw==", + "dependencies": { + "@opentelemetry/core": "1.29.0", + "@opentelemetry/resources": "1.29.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, "node_modules/@opentelemetry/resources": { "version": "1.29.0", "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.29.0.tgz", @@ -67,12 +82,12 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.29.0.tgz", - "integrity": "sha512-MkVtuzDjXZaUJSuJlHn6BSXjcQlMvHcsDV7LjY4P6AJeffMa4+kIGDjzsCf6DkAh6Vqlwag5EWEam3KZOX5Drw==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.0.tgz", + "integrity": "sha512-5kcj6APyRMvv6dEIP5plz2qfJAD4OMipBRT11u/pa1a68rHKI2Ln+iXVkAGKgx8o7CXbD7FdPypTUY88ZQgP4Q==", "dependencies": { - "@opentelemetry/core": "1.29.0", - "@opentelemetry/resources": "1.29.0" + "@opentelemetry/core": "1.30.0", + "@opentelemetry/resources": "1.30.0" }, "engines": { "node": ">=14" @@ -81,6 +96,35 @@ "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, + "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/core": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.0.tgz", + "integrity": "sha512-Q/3u/K73KUjTCnFUP97ZY+pBjQ1kPEgjOfXj/bJl8zW7GbXdkw6cwuyZk6ZTXkVgCBsYRYUzx4fvYK1jxdb9MA==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/resources": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.0.tgz", + "integrity": "sha512-5mGMjL0Uld/99t7/pcd7CuVtJbkARckLVuiOX84nO8RtLtIz0/J6EOHM2TGvPZ6F4K+XjUq13gMx14w80SVCQg==", + "dependencies": { + "@opentelemetry/core": "1.30.0", + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, "node_modules/@opentelemetry/semantic-conventions": { "version": "1.28.0", "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", @@ -112,6 +156,17 @@ "@opentelemetry/core": "1.29.0", "@opentelemetry/resources": "1.29.0", "@opentelemetry/sdk-metrics": "1.29.0" + }, + "dependencies": { + "@opentelemetry/sdk-metrics": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.29.0.tgz", + "integrity": "sha512-MkVtuzDjXZaUJSuJlHn6BSXjcQlMvHcsDV7LjY4P6AJeffMa4+kIGDjzsCf6DkAh6Vqlwag5EWEam3KZOX5Drw==", + "requires": { + "@opentelemetry/core": "1.29.0", + "@opentelemetry/resources": "1.29.0" + } + } } }, "@opentelemetry/resources": { @@ -124,12 +179,31 @@ } }, "@opentelemetry/sdk-metrics": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.29.0.tgz", - "integrity": "sha512-MkVtuzDjXZaUJSuJlHn6BSXjcQlMvHcsDV7LjY4P6AJeffMa4+kIGDjzsCf6DkAh6Vqlwag5EWEam3KZOX5Drw==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.0.tgz", + "integrity": "sha512-5kcj6APyRMvv6dEIP5plz2qfJAD4OMipBRT11u/pa1a68rHKI2Ln+iXVkAGKgx8o7CXbD7FdPypTUY88ZQgP4Q==", "requires": { - "@opentelemetry/core": "1.29.0", - "@opentelemetry/resources": "1.29.0" + "@opentelemetry/core": "1.30.0", + "@opentelemetry/resources": "1.30.0" + }, + "dependencies": { + "@opentelemetry/core": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.0.tgz", + "integrity": "sha512-Q/3u/K73KUjTCnFUP97ZY+pBjQ1kPEgjOfXj/bJl8zW7GbXdkw6cwuyZk6ZTXkVgCBsYRYUzx4fvYK1jxdb9MA==", + "requires": { + "@opentelemetry/semantic-conventions": "1.28.0" + } + }, + "@opentelemetry/resources": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.0.tgz", + "integrity": "sha512-5mGMjL0Uld/99t7/pcd7CuVtJbkARckLVuiOX84nO8RtLtIz0/J6EOHM2TGvPZ6F4K+XjUq13gMx14w80SVCQg==", + "requires": { + "@opentelemetry/core": "1.30.0", + "@opentelemetry/semantic-conventions": "1.28.0" + } + } } }, "@opentelemetry/semantic-conventions": { diff --git a/test/opentelemetry-metrics/fixtures/package.json b/test/opentelemetry-metrics/fixtures/package.json index 33d1b1ee7e..8c10129770 100644 --- a/test/opentelemetry-metrics/fixtures/package.json +++ b/test/opentelemetry-metrics/fixtures/package.json @@ -5,6 +5,6 @@ "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/exporter-prometheus": ">=0.41.2 <2", - "@opentelemetry/sdk-metrics": "^1.27.0" + "@opentelemetry/sdk-metrics": "^1.30.0" } } From 584d4c2b4d6953ceef90cf5ff9c77c663f125c8d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Jan 2025 14:30:02 +0100 Subject: [PATCH 246/396] chore(deps): bump next from 14.2.10 to 14.2.21 in /examples/nextjs (#4394) --- examples/nextjs/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 39744d2409..669926d343 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "elastic-apm-node": "elastic/apm-agent-nodejs#main", - "next": "14.2.10", + "next": "14.2.21", "react": "18.2.0", "react-dom": "18.2.0" }, From 17c963498b022a939583c8ad37d1e3dc041db0ba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Jan 2025 15:32:22 +0100 Subject: [PATCH 247/396] chore(deps-dev): bump @apollo/server in the apollo group (#4395) --- package-lock.json | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8adda331cb..3fb7496bad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -199,15 +199,15 @@ "dev": true }, "node_modules/@apollo/server": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.11.2.tgz", - "integrity": "sha512-WUTHY7DDek8xAMn4Woa9Bl8duQUDzRYQkosX/d1DtCsBWESZyApR7ndnI5d6+W4KSTtqBHhJFkusEI7CWuIJXg==", + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.11.3.tgz", + "integrity": "sha512-mW8idE2q0/BN14mimfJU5DAnoPHZRrAWgwsVLBEdACds+mxapIYxIbI6AH4AsOpxfrpvHts3PCYDbopy1XPW1g==", "dev": true, "dependencies": { "@apollo/cache-control-types": "^1.0.3", "@apollo/server-gateway-interface": "^1.1.1", "@apollo/usage-reporting-protobuf": "^4.1.1", - "@apollo/utils.createhash": "^2.0.0", + "@apollo/utils.createhash": "^2.0.2", "@apollo/utils.fetcher": "^2.0.0", "@apollo/utils.isnodelike": "^2.0.0", "@apollo/utils.keyvaluecache": "^2.1.0", @@ -490,12 +490,12 @@ } }, "node_modules/@apollo/utils.createhash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.createhash/-/utils.createhash-2.0.0.tgz", - "integrity": "sha512-9GhGGD3J0HJF/VC+odwYpKi3Cg1NWrsO8GQvyGwDS5v/78I3154Hn8s4tpW+nqoaQ/lAvxdQQr3HM1b5HLM6Ww==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@apollo/utils.createhash/-/utils.createhash-2.0.2.tgz", + "integrity": "sha512-UkS3xqnVFLZ3JFpEmU/2cM2iKJotQXMoSTgxXsfQgXLC5gR1WaepoXagmYnPSA7Q/2cmnyTYK5OgAgoC4RULPg==", "dev": true, "dependencies": { - "@apollo/utils.isnodelike": "^2.0.0", + "@apollo/utils.isnodelike": "^2.0.1", "sha.js": "^2.4.11" }, "engines": { @@ -524,9 +524,9 @@ } }, "node_modules/@apollo/utils.isnodelike": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.isnodelike/-/utils.isnodelike-2.0.0.tgz", - "integrity": "sha512-77CiAM2qDXn0haQYrgX0UgrboQykb+bOHaz5p3KKItMwUZ/EFphzuB2vqHvubneIc9dxJcTx2L7MFDswRw/JAQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.isnodelike/-/utils.isnodelike-2.0.1.tgz", + "integrity": "sha512-w41XyepR+jBEuVpoRM715N2ZD0xMD413UiJx8w5xnAZD2ZkSJnMJBoIzauK83kJpSgNuR6ywbV29jG9NmxjK0Q==", "dev": true, "engines": { "node": ">=14" @@ -16479,15 +16479,15 @@ } }, "@apollo/server": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.11.2.tgz", - "integrity": "sha512-WUTHY7DDek8xAMn4Woa9Bl8duQUDzRYQkosX/d1DtCsBWESZyApR7ndnI5d6+W4KSTtqBHhJFkusEI7CWuIJXg==", + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.11.3.tgz", + "integrity": "sha512-mW8idE2q0/BN14mimfJU5DAnoPHZRrAWgwsVLBEdACds+mxapIYxIbI6AH4AsOpxfrpvHts3PCYDbopy1XPW1g==", "dev": true, "requires": { "@apollo/cache-control-types": "^1.0.3", "@apollo/server-gateway-interface": "^1.1.1", "@apollo/usage-reporting-protobuf": "^4.1.1", - "@apollo/utils.createhash": "^2.0.0", + "@apollo/utils.createhash": "^2.0.2", "@apollo/utils.fetcher": "^2.0.0", "@apollo/utils.isnodelike": "^2.0.0", "@apollo/utils.keyvaluecache": "^2.1.0", @@ -16693,12 +16693,12 @@ } }, "@apollo/utils.createhash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.createhash/-/utils.createhash-2.0.0.tgz", - "integrity": "sha512-9GhGGD3J0HJF/VC+odwYpKi3Cg1NWrsO8GQvyGwDS5v/78I3154Hn8s4tpW+nqoaQ/lAvxdQQr3HM1b5HLM6Ww==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@apollo/utils.createhash/-/utils.createhash-2.0.2.tgz", + "integrity": "sha512-UkS3xqnVFLZ3JFpEmU/2cM2iKJotQXMoSTgxXsfQgXLC5gR1WaepoXagmYnPSA7Q/2cmnyTYK5OgAgoC4RULPg==", "dev": true, "requires": { - "@apollo/utils.isnodelike": "^2.0.0", + "@apollo/utils.isnodelike": "^2.0.1", "sha.js": "^2.4.11" } }, @@ -16715,9 +16715,9 @@ "dev": true }, "@apollo/utils.isnodelike": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.isnodelike/-/utils.isnodelike-2.0.0.tgz", - "integrity": "sha512-77CiAM2qDXn0haQYrgX0UgrboQykb+bOHaz5p3KKItMwUZ/EFphzuB2vqHvubneIc9dxJcTx2L7MFDswRw/JAQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@apollo/utils.isnodelike/-/utils.isnodelike-2.0.1.tgz", + "integrity": "sha512-w41XyepR+jBEuVpoRM715N2ZD0xMD413UiJx8w5xnAZD2ZkSJnMJBoIzauK83kJpSgNuR6ywbV29jG9NmxjK0Q==", "dev": true }, "@apollo/utils.keyvaluecache": { From a84c5fd2cc9ab40857bcbd859242cc8eec2c4c4f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Jan 2025 15:34:35 +0100 Subject: [PATCH 248/396] chore(deps): bump @opentelemetry/exporter-prometheus from 0.56.0 to 0.57.0 in test fixtures(#4385) --- .../fixtures/package-lock.json | 126 ++++-------------- 1 file changed, 26 insertions(+), 100 deletions(-) diff --git a/test/opentelemetry-metrics/fixtures/package-lock.json b/test/opentelemetry-metrics/fixtures/package-lock.json index bd6e31aa8f..09ce1b8886 100644 --- a/test/opentelemetry-metrics/fixtures/package-lock.json +++ b/test/opentelemetry-metrics/fixtures/package-lock.json @@ -22,9 +22,9 @@ } }, "node_modules/@opentelemetry/core": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.29.0.tgz", - "integrity": "sha512-gmT7vAreXl0DTHD2rVZcw3+l2g84+5XiHIqdBUxXbExymPCvSsGOpiwMmn8nkiJur28STV31wnhIDrzWDPzjfA==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.0.tgz", + "integrity": "sha512-Q/3u/K73KUjTCnFUP97ZY+pBjQ1kPEgjOfXj/bJl8zW7GbXdkw6cwuyZk6ZTXkVgCBsYRYUzx4fvYK1jxdb9MA==", "dependencies": { "@opentelemetry/semantic-conventions": "1.28.0" }, @@ -36,13 +36,13 @@ } }, "node_modules/@opentelemetry/exporter-prometheus": { - "version": "0.56.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.56.0.tgz", - "integrity": "sha512-5kFcTumUveNREskg6n4aaXx2o3ADc9YxDkArGCIegzErlc3zfzreO4Y7HDc/fYBnV9aIhJUk5P8yotyVCuymkQ==", + "version": "0.57.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.57.0.tgz", + "integrity": "sha512-yjAfXoHcR+Ik03+eZMrrS5ErL7RcNkNScZc2o5dLnZyoEj5A0cCaQLHX5RJxldck8gg5Utmm0I5iItPqnve21w==", "dependencies": { - "@opentelemetry/core": "1.29.0", - "@opentelemetry/resources": "1.29.0", - "@opentelemetry/sdk-metrics": "1.29.0" + "@opentelemetry/core": "1.30.0", + "@opentelemetry/resources": "1.30.0", + "@opentelemetry/sdk-metrics": "1.30.0" }, "engines": { "node": ">=14" @@ -51,27 +51,12 @@ "@opentelemetry/api": "^1.3.0" } }, - "node_modules/@opentelemetry/exporter-prometheus/node_modules/@opentelemetry/sdk-metrics": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.29.0.tgz", - "integrity": "sha512-MkVtuzDjXZaUJSuJlHn6BSXjcQlMvHcsDV7LjY4P6AJeffMa4+kIGDjzsCf6DkAh6Vqlwag5EWEam3KZOX5Drw==", - "dependencies": { - "@opentelemetry/core": "1.29.0", - "@opentelemetry/resources": "1.29.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, "node_modules/@opentelemetry/resources": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.29.0.tgz", - "integrity": "sha512-s7mLXuHZE7RQr1wwweGcaRp3Q4UJJ0wazeGlc/N5/XSe6UyXfsh1UQGMADYeg7YwD+cEdMtU1yJAUXdnFzYzyQ==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.0.tgz", + "integrity": "sha512-5mGMjL0Uld/99t7/pcd7CuVtJbkARckLVuiOX84nO8RtLtIz0/J6EOHM2TGvPZ6F4K+XjUq13gMx14w80SVCQg==", "dependencies": { - "@opentelemetry/core": "1.29.0", + "@opentelemetry/core": "1.30.0", "@opentelemetry/semantic-conventions": "1.28.0" }, "engines": { @@ -96,35 +81,6 @@ "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, - "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/core": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.0.tgz", - "integrity": "sha512-Q/3u/K73KUjTCnFUP97ZY+pBjQ1kPEgjOfXj/bJl8zW7GbXdkw6cwuyZk6ZTXkVgCBsYRYUzx4fvYK1jxdb9MA==", - "dependencies": { - "@opentelemetry/semantic-conventions": "1.28.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/resources": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.0.tgz", - "integrity": "sha512-5mGMjL0Uld/99t7/pcd7CuVtJbkARckLVuiOX84nO8RtLtIz0/J6EOHM2TGvPZ6F4K+XjUq13gMx14w80SVCQg==", - "dependencies": { - "@opentelemetry/core": "1.30.0", - "@opentelemetry/semantic-conventions": "1.28.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, "node_modules/@opentelemetry/semantic-conventions": { "version": "1.28.0", "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", @@ -141,40 +97,29 @@ "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" }, "@opentelemetry/core": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.29.0.tgz", - "integrity": "sha512-gmT7vAreXl0DTHD2rVZcw3+l2g84+5XiHIqdBUxXbExymPCvSsGOpiwMmn8nkiJur28STV31wnhIDrzWDPzjfA==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.0.tgz", + "integrity": "sha512-Q/3u/K73KUjTCnFUP97ZY+pBjQ1kPEgjOfXj/bJl8zW7GbXdkw6cwuyZk6ZTXkVgCBsYRYUzx4fvYK1jxdb9MA==", "requires": { "@opentelemetry/semantic-conventions": "1.28.0" } }, "@opentelemetry/exporter-prometheus": { - "version": "0.56.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.56.0.tgz", - "integrity": "sha512-5kFcTumUveNREskg6n4aaXx2o3ADc9YxDkArGCIegzErlc3zfzreO4Y7HDc/fYBnV9aIhJUk5P8yotyVCuymkQ==", + "version": "0.57.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.57.0.tgz", + "integrity": "sha512-yjAfXoHcR+Ik03+eZMrrS5ErL7RcNkNScZc2o5dLnZyoEj5A0cCaQLHX5RJxldck8gg5Utmm0I5iItPqnve21w==", "requires": { - "@opentelemetry/core": "1.29.0", - "@opentelemetry/resources": "1.29.0", - "@opentelemetry/sdk-metrics": "1.29.0" - }, - "dependencies": { - "@opentelemetry/sdk-metrics": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.29.0.tgz", - "integrity": "sha512-MkVtuzDjXZaUJSuJlHn6BSXjcQlMvHcsDV7LjY4P6AJeffMa4+kIGDjzsCf6DkAh6Vqlwag5EWEam3KZOX5Drw==", - "requires": { - "@opentelemetry/core": "1.29.0", - "@opentelemetry/resources": "1.29.0" - } - } + "@opentelemetry/core": "1.30.0", + "@opentelemetry/resources": "1.30.0", + "@opentelemetry/sdk-metrics": "1.30.0" } }, "@opentelemetry/resources": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.29.0.tgz", - "integrity": "sha512-s7mLXuHZE7RQr1wwweGcaRp3Q4UJJ0wazeGlc/N5/XSe6UyXfsh1UQGMADYeg7YwD+cEdMtU1yJAUXdnFzYzyQ==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.0.tgz", + "integrity": "sha512-5mGMjL0Uld/99t7/pcd7CuVtJbkARckLVuiOX84nO8RtLtIz0/J6EOHM2TGvPZ6F4K+XjUq13gMx14w80SVCQg==", "requires": { - "@opentelemetry/core": "1.29.0", + "@opentelemetry/core": "1.30.0", "@opentelemetry/semantic-conventions": "1.28.0" } }, @@ -185,25 +130,6 @@ "requires": { "@opentelemetry/core": "1.30.0", "@opentelemetry/resources": "1.30.0" - }, - "dependencies": { - "@opentelemetry/core": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.0.tgz", - "integrity": "sha512-Q/3u/K73KUjTCnFUP97ZY+pBjQ1kPEgjOfXj/bJl8zW7GbXdkw6cwuyZk6ZTXkVgCBsYRYUzx4fvYK1jxdb9MA==", - "requires": { - "@opentelemetry/semantic-conventions": "1.28.0" - } - }, - "@opentelemetry/resources": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.0.tgz", - "integrity": "sha512-5mGMjL0Uld/99t7/pcd7CuVtJbkARckLVuiOX84nO8RtLtIz0/J6EOHM2TGvPZ6F4K+XjUq13gMx14w80SVCQg==", - "requires": { - "@opentelemetry/core": "1.30.0", - "@opentelemetry/semantic-conventions": "1.28.0" - } - } } }, "@opentelemetry/semantic-conventions": { From 5a0f04324cb43cd996db120b37b82f6127c2236b Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Tue, 7 Jan 2025 16:38:45 +0100 Subject: [PATCH 249/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to fc17dbf (#4376) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index cd835ed09e..5d313f29b8 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:bfdeddb33330a281950c2a54adef991dbbe6a42832bc505d13b11beaf50ae73f +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:fc17dbfabfa10f3abd0fec8a2edf0b54a4b1cd4a6b04c8eaec381f661f9f266e ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From ff08a1140e5c2f6bf8646005891eec365cafcaae Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Tue, 7 Jan 2025 09:14:36 -0800 Subject: [PATCH 250/396] fix: instrumentation of `@aws-sdk/client-*` v3.723.0 and later now works (#4398) v3.723.0 and later of some aws-sdk-js v3 clients updated to use `@smithy/smithy-client@4` which is part of what is instrumented. --- .tav.yml | 58 ++++++++++++------- CHANGELOG.asciidoc | 18 ++++++ .../modules/@smithy/smithy-client.js | 2 +- 3 files changed, 57 insertions(+), 21 deletions(-) diff --git a/.tav.yml b/.tav.yml index 1098cec29d..fcca1426fa 100644 --- a/.tav.yml +++ b/.tav.yml @@ -467,14 +467,20 @@ aws-sdk: - node test/instrumentation/modules/aws-sdk/dynamodb.test.js '@aws-sdk/client-s3': - versions: - # - 3.377.0 was a bad release (https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1828#issuecomment-1834276719) - mode: max-7 - include: '>=3.15.0 <4' - exclude: '3.377.0' - commands: - - node test/instrumentation/modules/@aws-sdk/client-s3.test.js - node: '>=14' + - versions: + # - 3.377.0 was a bad release (https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1828#issuecomment-1834276719) + mode: max-5 + include: '>=3.15.0 <3.723.0' + exclude: '3.377.0' + node: '>=14' + commands: + - node test/instrumentation/modules/@aws-sdk/client-s3.test.js + - versions: + mode: max-5 + include: '>=3.723.0 <4' + node: '>=18' + commands: + - node test/instrumentation/modules/@aws-sdk/client-s3.test.js '@aws-sdk/client-dynamodb': versions: @@ -485,20 +491,32 @@ aws-sdk: node: '>=14' '@aws-sdk/client-sns': - versions: - mode: max-7 - include: '>=3.15.0 <4' - commands: - - node test/instrumentation/modules/@aws-sdk/client-sns.test.js - node: '>=14' + - versions: + mode: max-7 + include: '>=3.15.0 <3.723.0' + node: '>=14' + commands: + - node test/instrumentation/modules/@aws-sdk/client-sns.test.js + - versions: + mode: max-5 + include: '>=3.723.0 <4' + node: '>=18' + commands: + - node test/instrumentation/modules/@aws-sdk/client-sns.test.js '@aws-sdk/client-sqs': - versions: - mode: max-7 - include: '>=3.15.0 <4' - commands: - - node test/instrumentation/modules/@aws-sdk/client-sqs.test.js - node: '>=14' + - versions: + mode: max-7 + include: '>=3.15.0 <3.723.0' + node: '>=14' + commands: + - node test/instrumentation/modules/@aws-sdk/client-sqs.test.js + - versions: + mode: max-5 + include: '>=3.723.0 <4' + node: '>=18' + commands: + - node test/instrumentation/modules/@aws-sdk/client-sqs.test.js # - undici@4.7.0 added its diagnostics_channel support. # - In undici@4.7.1 the `request.origin` property was added, which we need diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 93a5792dad..3eff56acc0 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -33,6 +33,24 @@ Notes: See the <> guide. +==== Unreleased + +[float] +===== Breaking changes + +[float] +===== Features + +[float] +===== Bug fixes + +* Fix instrumentation of `@aws-sdk/client-s3`, `@aws-sdk/client-sqs`, and + `@aws-sdk/client-sns` for versions 3.723.0 and later. (Internally the AWS SDK + clients updated to `@smithy/smithy-client@4`.) + +[float] +===== Chores + [[release-notes-4.10.0]] ==== 4.10.0 - 2024/12/24 diff --git a/lib/instrumentation/modules/@smithy/smithy-client.js b/lib/instrumentation/modules/@smithy/smithy-client.js index e20eb767c6..fb128e53a9 100644 --- a/lib/instrumentation/modules/@smithy/smithy-client.js +++ b/lib/instrumentation/modules/@smithy/smithy-client.js @@ -110,7 +110,7 @@ module.exports = function (mod, agent, { name, version, enabled }) { // `@smithy/` npm org. if ( name === '@smithy/smithy-client' && - !semver.satisfies(version, '>=1 <4') + !semver.satisfies(version, '>=1 <5') ) { agent.logger.debug( 'cannot instrument @aws-sdk/client-*: @smithy/smithy-client version %s not supported', From c728116698ac5295978a677d2e7e777b686c9af2 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Tue, 7 Jan 2025 10:37:49 -0800 Subject: [PATCH 251/396] chore: support passing relevant release tags to update-4x-branch.sh as arguments (#4400) ./dev-utils/update-4x-branch.sh [TARGTAG [LASTTAG]] Passing TARGTAG is needed when the HEAD commit is no longer the tagged release commit. Passing LASTTAG is necessary if the 4.x branch wasn't updated for a particular release. --- dev-utils/update-4x-branch.sh | 41 ++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/dev-utils/update-4x-branch.sh b/dev-utils/update-4x-branch.sh index b82932e26f..9564901162 100755 --- a/dev-utils/update-4x-branch.sh +++ b/dev-utils/update-4x-branch.sh @@ -4,6 +4,8 @@ # just-tagged release. The 4.x branch needs to be updated for the current docs # build. # +# Usage: +# ./dev-utils/update-4x-branch.sh [TARGTAG [LASTTAG]] if [ "$TRACE" != "" ]; then export PS4='${BASH_SOURCE}:${LINENO}: ${FUNCNAME[0]:+${FUNCNAME[0]}(): }' @@ -27,24 +29,37 @@ cd $WRKDIR git clone git@github.com:elastic/apm-agent-nodejs.git cd apm-agent-nodejs -TARGTAG=$(git tag --points-at HEAD) +# Allow passing in target tag (first arg), in case the latest commit is no +# longer the tagged release commit. +TARGTAG="$1" +if [[ -z "$TARGTAG" ]]; then + TARGTAG=$(git tag --points-at HEAD) +fi if [[ ! ("$TARGTAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]$) ]]; then - fatal "the tag on HEAD, '${TARGTAG}', does not look like a release tag" + fatal "the target tag, '${TARGTAG}', does not look like a release tag" fi # echo "TARGTAG=$TARGTAG" -readonly NUM_COMMITS_SANITY_GUARD=200 -LASTTAG=$( - git log --pretty=format:%h -$NUM_COMMITS_SANITY_GUARD | tail -n +2 | while read sha; do - possible=$(git tag --points-at $sha) - if [[ "$possible" =~ ^v[0-9]+\.[0-9]+\.[0-9]$ ]]; then - echo $possible - break - fi - done -) +# Allow passing in last tag (second arg), in case the 4.x branch wasn't updated +# for some previous releases. +LASTTAG="$2" if [[ -z "$LASTTAG" ]]; then - fatal "could not find previous release tag in last $NUM_COMMITS_SANITY_GUARD commits" + readonly NUM_COMMITS_SANITY_GUARD=200 + LASTTAG=$( + git log --pretty=format:%h -$NUM_COMMITS_SANITY_GUARD | tail -n +2 | while read sha; do + possible=$(git tag --points-at $sha) + if [[ "$possible" =~ ^v[0-9]+\.[0-9]+\.[0-9]$ ]]; then + echo $possible + break + fi + done + ) + if [[ -z "$LASTTAG" ]]; then + fatal "could not find previous release tag in last $NUM_COMMITS_SANITY_GUARD commits" + fi +fi +if [[ ! ("$LASTTAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]$) ]]; then + fatal "the last tag, '${LASTTAG}', does not look like a release tag" fi # echo "LASTTAG=$LASTTAG" From ebfd956f9ace3b4383d1be093520b2c2612d7931 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Wed, 8 Jan 2025 07:14:52 -0800 Subject: [PATCH 252/396] chore: slack-lite notifications (#4401) An alternative to https://github.com/integrations/slack for Slack notifications for issue/PR actions. Refs: https://github.com/elastic/elastic-otel-node/pull/496 This switches to the older form of styling Slack 'attachments' eschewing the newer 'blocks', which don't style quite as nicely IMHO. --- .github/workflows/slack.yml | 124 ++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 .github/workflows/slack.yml diff --git a/.github/workflows/slack.yml b/.github/workflows/slack.yml new file mode 100644 index 0000000000..27850465cd --- /dev/null +++ b/.github/workflows/slack.yml @@ -0,0 +1,124 @@ +# Post a slack message something like the following for issue and PR actions: +# <$url|$title> +# | $repo#$num · issue opened by $user +# +# Configuration: +# 1. Set `SLACK_CHANNEL`. +# 2. Add a `SLACK_BOT_TOKEN` secret to your repo. This is the "Bot User OAuth +# Token" from the "OAuth & Permissions" section of your Slack App +# (https://api.slack.com/apps). The token must have the `chat:write` +# permission. +# 3. Optionally tweak the `if:` and `on:` sections below to control which issue +# and PR events are skipped. + +name: slack + +env: + SLACK_CHANNEL: "#apm-agent-node" + +on: + issues: + types: [opened, reopened, closed] + pull_request: + types: [opened, ready_for_review, reopened, closed] + +jobs: + slack: + # Skip notification if: + # - dependabot or renovate PRs, too noisy + # - draft PRs + if: ${{ !(github.event.action == 'opened' && github.event.pull_request.draft) || + github.event.pull_request.user.login != 'dependabot[bot]' || + github.event.pull_request.user.login != 'elastic-renovate-prod[bot]' }} + runs-on: ubuntu-latest + steps: + - name: Prepare Slack message + id: prepare + shell: python + env: + GITHUB_CONTEXT: ${{ toJson(github) }} + run: | + import os + from pprint import pprint + import json + + CLOSED_RED = '#cb2431' + GITHUB_BLACK = '#24292f' + MERGED_PURPLE = '#6f42c1' + OPEN_GREEN = '#36a64f' + DRAFT_GRAY = '#6a737d' + + ctx = json.loads(os.environ["GITHUB_CONTEXT"]) + # pprint(ctx) # for dev/debugging + event = ctx["event"] + action = event["action"] + if "issue" in event: + title = event["issue"]["title"] + url = event["issue"]["html_url"] + num = event["issue"]["number"] + action_str = f"issue {action}" + color = { + "opened": OPEN_GREEN, + "reopened": OPEN_GREEN, + "closed": CLOSED_RED, + }.get(action, "#ffffff") + elif "pull_request" in event: + title = event["pull_request"]["title"] + url = event["pull_request"]["html_url"] + num = event["pull_request"]["number"] + if action == "closed": + if event["pull_request"]["merged"]: + action_str = "PR merged" + color = MERGED_PURPLE + else: + action_str = "PR closed" + color = CLOSED_RED + elif event["pull_request"]["draft"]: + action_str = "PR in draft" + color = DRAFT_GRAY + elif action == "ready_for_review": + action_str = "PR ready for review" + color = OPEN_GREEN + else: + action_str = "PR opened" + color = OPEN_GREEN + else: + pprint(ctx) + raise ValueError('unexpected event: not an issue or PR event') + + payload = { + "channel": os.environ["SLACK_CHANNEL"], + + # Note: Omitting the "text" field is intentional, so that it is not + # rendered by default. Guidelines on accessibility in: + # https://api.slack.com/methods/chat.postMessage#text-blocks-attachments + # are unclear for "attachments" usage. This competes with: + # https://api.slack.com/reference/messaging/attachments#guidelines__message-attachments-as-objects + # guidelines to group all object data inside the attachment. + # The downside is that the `chatMessage` below results in warnings + # from the Slack API about not including the top-level "text". + #"text": title, + + # Intentionally *not* using Slack's newer blocks, + # https://api.slack.com/messaging/attachments-to-blocks + # because styling with the older syntax is slightly nicer, IMHO. + "attachments": [ + { + "color": color, + "title": title, + "title_link": url, + "footer": f"{ctx['repository']}#{num} · *{action_str}* by {event['sender']['login']}", + "footer_icon": "https://github.githubassets.com/favicon.ico" + } + ] + } + + with open(os.environ.get("GITHUB_OUTPUT"), "a") as f: + f.write("payload={}".format(json.dumps(payload))) + + - name: Post Slack message + uses: slackapi/slack-github-action@v2.0.0 + with: + method: chat.postMessage + token: ${{ secrets.SLACK_BOT_TOKEN }} + payload: ${{ steps.prepare.outputs.payload }} From e14a25fcbbf237b8c8d3b52cce0f0964e798d633 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Thu, 9 Jan 2025 08:41:34 -0800 Subject: [PATCH 253/396] chore(labeler): don't label PRs from our renovate bot as a community PR (#4403) E.g. note how https://github.com/elastic/apm-agent-nodejs/pull/4402 was so labeled and should not have been. --- .github/workflows/labeler.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index dc563904df..f339b4d31c 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -33,7 +33,10 @@ jobs: github-token: ${{ steps.get_token.outputs.token }} - name: Add community and triage labels - if: contains(steps.is_elastic_member.outputs.result, 'false') && github.actor != 'dependabot[bot]' && github.actor != 'elastic-observability-automation[bot]' + if: contains(steps.is_elastic_member.outputs.result, 'false') && + github.actor != 'dependabot[bot]' && + github.actor != 'elastic-renovate-prod[bot]' && + github.actor != 'elastic-observability-automation[bot]' uses: actions/github-script@v7 with: script: | From b12bb5422cc020ba105d1991cfbcf6ada248e7bc Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Thu, 9 Jan 2025 08:51:45 -0800 Subject: [PATCH 254/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to f2813ac (#4402) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 5d313f29b8..026ea13fc3 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:fc17dbfabfa10f3abd0fec8a2edf0b54a4b1cd4a6b04c8eaec381f661f9f266e +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:f2813ac649de3b3e90bfed50723c59cbfba803fd8d021bd522fc3dc4802b0cdb ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 6e047fefe0f95973fccdf7698506c5a674a81c24 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Thu, 9 Jan 2025 10:35:02 -0800 Subject: [PATCH 255/396] chore(ci): change from ubuntu-latest to ubuntu-24.04 (#4404) This is (a) to avoid the warnings in workflow runs, e.g.: test-tav (@apollo/server 22) ubuntu-latest pipelines will use ubuntu-24.04 soon. For more details, see https://github.com/actions/runner-images/issues/10636 and (b) to try it out ahead of the switch. --- .github/workflows/addToProject.yml | 2 +- .github/workflows/edge.yml | 4 ++-- .github/workflows/labeler.yml | 2 +- .github/workflows/microbenchmark.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/slack.yml | 2 +- .github/workflows/tav-command.yml | 4 ++-- .github/workflows/tav.yml | 4 ++-- .github/workflows/test-docs.yml | 2 +- .github/workflows/test.yml | 6 +++--- .github/workflows/updatecli.yml | 2 +- 11 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/addToProject.yml b/.github/workflows/addToProject.yml index 52611a9b9d..3bdfd0a895 100644 --- a/.github/workflows/addToProject.yml +++ b/.github/workflows/addToProject.yml @@ -9,7 +9,7 @@ permissions: jobs: add_to_project: if: github.event.issue && github.event.issue.milestone - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Get token id: get_token diff --git a/.github/workflows/edge.yml b/.github/workflows/edge.yml index 14c9b4e0bd..207cf01b3f 100644 --- a/.github/workflows/edge.yml +++ b/.github/workflows/edge.yml @@ -27,7 +27,7 @@ jobs: # made, these will stop and there will be no value in testing v17 nightlies. # test-nightly: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 timeout-minutes: 30 strategy: fail-fast: false @@ -44,7 +44,7 @@ jobs: # The node.js project *sometimes* produces "rc" builds leading up to a new # release. They get uploaded to: https://nodejs.org/download/rc/ test-rc: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 timeout-minutes: 30 strategy: fail-fast: false diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index f339b4d31c..b1e3607c70 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -13,7 +13,7 @@ permissions: jobs: triage: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Get token id: get_token diff --git a/.github/workflows/microbenchmark.yml b/.github/workflows/microbenchmark.yml index 09d525ea12..3e63af3025 100644 --- a/.github/workflows/microbenchmark.yml +++ b/.github/workflows/microbenchmark.yml @@ -17,7 +17,7 @@ permissions: jobs: microbenchmark: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 timeout-minutes: 5 steps: - name: Run microbenchmark diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 157641c53a..098fa3829d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,7 +15,7 @@ permissions: jobs: release: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 env: DOCKER_IMAGE_NAME: docker.elastic.co/observability/apm-agent-nodejs steps: diff --git a/.github/workflows/slack.yml b/.github/workflows/slack.yml index 27850465cd..d300b5eebc 100644 --- a/.github/workflows/slack.yml +++ b/.github/workflows/slack.yml @@ -30,7 +30,7 @@ jobs: if: ${{ !(github.event.action == 'opened' && github.event.pull_request.draft) || github.event.pull_request.user.login != 'dependabot[bot]' || github.event.pull_request.user.login != 'elastic-renovate-prod[bot]' }} - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Prepare Slack message id: prepare diff --git a/.github/workflows/tav-command.yml b/.github/workflows/tav-command.yml index ea6fb43adb..68d44316ba 100644 --- a/.github/workflows/tav-command.yml +++ b/.github/workflows/tav-command.yml @@ -14,7 +14,7 @@ permissions: jobs: command-validation: if: startsWith(github.event.review.body, '/test tav') - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 timeout-minutes: 5 permissions: pull-requests: write @@ -132,7 +132,7 @@ jobs: test-tav: needs: command-validation - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 timeout-minutes: 40 strategy: max-parallel: 15 diff --git a/.github/workflows/tav.yml b/.github/workflows/tav.yml index 0bcb52399d..a0dcdeb945 100644 --- a/.github/workflows/tav.yml +++ b/.github/workflows/tav.yml @@ -21,7 +21,7 @@ permissions: jobs: prepare-matrix: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 timeout-minutes: 5 outputs: permutations: ${{ steps.transform.outputs.permutations }} @@ -59,7 +59,7 @@ jobs: test-tav: needs: prepare-matrix - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 timeout-minutes: 40 strategy: max-parallel: 15 diff --git a/.github/workflows/test-docs.yml b/.github/workflows/test-docs.yml index ee10f943fe..2b99309092 100644 --- a/.github/workflows/test-docs.yml +++ b/.github/workflows/test-docs.yml @@ -17,6 +17,6 @@ permissions: jobs: test: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - run: echo "No build required" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 600b93a359..af8212411e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -32,7 +32,7 @@ permissions: jobs: lint: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 @@ -164,7 +164,7 @@ jobs: - '16.0' - '14' - '14.17' - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 @@ -197,7 +197,7 @@ jobs: # failure if at least one job listed "needs" is not successful. test: if: always() - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 needs: - lint - test-vers diff --git a/.github/workflows/updatecli.yml b/.github/workflows/updatecli.yml index e2d67bd22e..92d28867d9 100644 --- a/.github/workflows/updatecli.yml +++ b/.github/workflows/updatecli.yml @@ -10,7 +10,7 @@ permissions: jobs: compose: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 permissions: contents: read packages: read From 1f3d4fdbc0b69ea875a05116e5df790c7760d464 Mon Sep 17 00:00:00 2001 From: "elastic-observability-automation[bot]" <180520183+elastic-observability-automation[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 14:15:35 -0800 Subject: [PATCH 256/396] deps: Bump updatecli version to v0.92.0 (#4405) --- .tool-versions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tool-versions b/.tool-versions index 433f827ca9..e9de826baa 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -updatecli v0.89.0 \ No newline at end of file +updatecli v0.92.0 \ No newline at end of file From c84d09d64adcf2841d3073124c4c400bc33e7502 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 14:16:42 -0800 Subject: [PATCH 257/396] chore(deps-dev): bump wait-on from 8.0.1 to 8.0.2 (#4408) --- package-lock.json | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3fb7496bad..acf545d21f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7060,9 +7060,9 @@ "dev": true }, "node_modules/axios": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", - "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", "dev": true, "dependencies": { "follow-redirects": "^1.15.6", @@ -7071,9 +7071,9 @@ } }, "node_modules/axios/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "dev": true, "dependencies": { "asynckit": "^0.4.0", @@ -16152,12 +16152,12 @@ } }, "node_modules/wait-on": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.1.tgz", - "integrity": "sha512-1wWQOyR2LVVtaqrcIL2+OM+x7bkpmzVROa0Nf6FryXkS+er5Sa1kzFGjzZRqLnHa3n1rACFLeTwUqE1ETL9Mig==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.2.tgz", + "integrity": "sha512-qHlU6AawrgAIHlueGQHQ+ETcPLAauXbnoTKl3RKq20W0T8x0DKVAo5xWIYjHSyvHxQlcYbFdR0jp4T9bDVITFA==", "dev": true, "dependencies": { - "axios": "^1.7.7", + "axios": "^1.7.9", "joi": "^17.13.3", "lodash": "^4.17.21", "minimist": "^1.2.8", @@ -22021,9 +22021,9 @@ "dev": true }, "axios": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", - "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", "dev": true, "requires": { "follow-redirects": "^1.15.6", @@ -22032,9 +22032,9 @@ }, "dependencies": { "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "dev": true, "requires": { "asynckit": "^0.4.0", @@ -28999,12 +28999,12 @@ "dev": true }, "wait-on": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.1.tgz", - "integrity": "sha512-1wWQOyR2LVVtaqrcIL2+OM+x7bkpmzVROa0Nf6FryXkS+er5Sa1kzFGjzZRqLnHa3n1rACFLeTwUqE1ETL9Mig==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.2.tgz", + "integrity": "sha512-qHlU6AawrgAIHlueGQHQ+ETcPLAauXbnoTKl3RKq20W0T8x0DKVAo5xWIYjHSyvHxQlcYbFdR0jp4T9bDVITFA==", "dev": true, "requires": { - "axios": "^1.7.7", + "axios": "^1.7.9", "joi": "^17.13.3", "lodash": "^4.17.21", "minimist": "^1.2.8", From 45284fad4b375757139ced7986ce472b5a46e9e8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 14:21:30 -0800 Subject: [PATCH 258/396] chore(deps-dev): bump fastify from 5.2.0 to 5.2.1 (#4409) --- package-lock.json | 65 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 57 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index acf545d21f..f5566a1e33 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4266,6 +4266,12 @@ "fastify-plugin": "^5.0.0" } }, + "node_modules/@fastify/forwarded": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fastify/forwarded/-/forwarded-3.0.0.tgz", + "integrity": "sha512-kJExsp4JCms7ipzg7SJ3y8DwmePaELHxKYtg+tZow+k0znUTf3cb+npgyqm8+ATZOdmfgfydIebPDWM172wfyA==", + "dev": true + }, "node_modules/@fastify/merge-json-schemas": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz", @@ -4275,6 +4281,25 @@ "fast-deep-equal": "^3.1.3" } }, + "node_modules/@fastify/proxy-addr": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@fastify/proxy-addr/-/proxy-addr-5.0.0.tgz", + "integrity": "sha512-37qVVA1qZ5sgH7KpHkkC4z9SK6StIsIcOmpjvMPXNb3vx2GQxhZocogVYbr2PbbeLCQxYIPDok307xEvRZOzGA==", + "dev": true, + "dependencies": { + "@fastify/forwarded": "^3.0.0", + "ipaddr.js": "^2.1.0" + } + }, + "node_modules/@fastify/proxy-addr/node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/@graphql-tools/merge": { "version": "8.2.10", "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.10.tgz", @@ -9826,9 +9851,9 @@ } }, "node_modules/fastify": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.2.0.tgz", - "integrity": "sha512-3s+Qt5S14Eq5dCpnE0FxTp3z4xKChI83ZnMv+k0FwX+VUoZrgCFoLAxpfdi/vT4y6Mk+g7aAMt9pgXDoZmkefQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.2.1.tgz", + "integrity": "sha512-rslrNBF67eg8/Gyn7P2URV8/6pz8kSAscFL4EThZJ8JBMaXacVdVE4hmUcnPNKERl5o/xTiBSLfdowBRhVF1WA==", "dev": true, "funding": [ { @@ -9844,6 +9869,7 @@ "@fastify/ajv-compiler": "^4.0.0", "@fastify/error": "^4.0.0", "@fastify/fast-json-stringify-compiler": "^5.0.0", + "@fastify/proxy-addr": "^5.0.0", "abstract-logging": "^2.0.1", "avvio": "^9.0.0", "fast-json-stringify": "^6.0.0", @@ -9851,7 +9877,6 @@ "light-my-request": "^6.0.0", "pino": "^9.0.0", "process-warning": "^4.0.0", - "proxy-addr": "^2.0.7", "rfdc": "^1.3.1", "secure-json-parse": "^3.0.1", "semver": "^7.6.0", @@ -19623,6 +19648,12 @@ "fastify-plugin": "^5.0.0" } }, + "@fastify/forwarded": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fastify/forwarded/-/forwarded-3.0.0.tgz", + "integrity": "sha512-kJExsp4JCms7ipzg7SJ3y8DwmePaELHxKYtg+tZow+k0znUTf3cb+npgyqm8+ATZOdmfgfydIebPDWM172wfyA==", + "dev": true + }, "@fastify/merge-json-schemas": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz", @@ -19632,6 +19663,24 @@ "fast-deep-equal": "^3.1.3" } }, + "@fastify/proxy-addr": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@fastify/proxy-addr/-/proxy-addr-5.0.0.tgz", + "integrity": "sha512-37qVVA1qZ5sgH7KpHkkC4z9SK6StIsIcOmpjvMPXNb3vx2GQxhZocogVYbr2PbbeLCQxYIPDok307xEvRZOzGA==", + "dev": true, + "requires": { + "@fastify/forwarded": "^3.0.0", + "ipaddr.js": "^2.1.0" + }, + "dependencies": { + "ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "dev": true + } + } + }, "@graphql-tools/merge": { "version": "8.2.10", "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.10.tgz", @@ -24119,14 +24168,15 @@ } }, "fastify": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.2.0.tgz", - "integrity": "sha512-3s+Qt5S14Eq5dCpnE0FxTp3z4xKChI83ZnMv+k0FwX+VUoZrgCFoLAxpfdi/vT4y6Mk+g7aAMt9pgXDoZmkefQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.2.1.tgz", + "integrity": "sha512-rslrNBF67eg8/Gyn7P2URV8/6pz8kSAscFL4EThZJ8JBMaXacVdVE4hmUcnPNKERl5o/xTiBSLfdowBRhVF1WA==", "dev": true, "requires": { "@fastify/ajv-compiler": "^4.0.0", "@fastify/error": "^4.0.0", "@fastify/fast-json-stringify-compiler": "^5.0.0", + "@fastify/proxy-addr": "^5.0.0", "abstract-logging": "^2.0.1", "avvio": "^9.0.0", "fast-json-stringify": "^6.0.0", @@ -24134,7 +24184,6 @@ "light-my-request": "^6.0.0", "pino": "^9.0.0", "process-warning": "^4.0.0", - "proxy-addr": "^2.0.7", "rfdc": "^1.3.1", "secure-json-parse": "^3.0.1", "semver": "^7.6.0", From 2cf2f3ae2f0ac66b2109e3b331067a435f931cce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 14:22:59 -0800 Subject: [PATCH 259/396] chore(deps-dev): bump @fastify/formbody from 8.0.1 to 8.0.2 (#4411) --- package-lock.json | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index f5566a1e33..d93f360649 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4257,10 +4257,20 @@ } }, "node_modules/@fastify/formbody": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@fastify/formbody/-/formbody-8.0.1.tgz", - "integrity": "sha512-LPrcadSIK8TrQk510Zdj56fnw7cyHq0/PW0YHGGM8ycGL4X7XAex+FKcwpzB4i5lF9eykc71a4EtcO9AEoByqw==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@fastify/formbody/-/formbody-8.0.2.tgz", + "integrity": "sha512-84v5J2KrkXzjgBpYnaNRPqwgMsmY7ZDjuj0YVuMR3NXCJRCgKEZy/taSP1wUYGn0onfxJpLyRGDLa+NMaDJtnA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], "dependencies": { "fast-querystring": "^1.1.2", "fastify-plugin": "^5.0.0" @@ -19639,9 +19649,9 @@ } }, "@fastify/formbody": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@fastify/formbody/-/formbody-8.0.1.tgz", - "integrity": "sha512-LPrcadSIK8TrQk510Zdj56fnw7cyHq0/PW0YHGGM8ycGL4X7XAex+FKcwpzB4i5lF9eykc71a4EtcO9AEoByqw==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@fastify/formbody/-/formbody-8.0.2.tgz", + "integrity": "sha512-84v5J2KrkXzjgBpYnaNRPqwgMsmY7ZDjuj0YVuMR3NXCJRCgKEZy/taSP1wUYGn0onfxJpLyRGDLa+NMaDJtnA==", "dev": true, "requires": { "fast-querystring": "^1.1.2", From d501b3e635a2fcac85073497cf544813d218c795 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 14:24:26 -0800 Subject: [PATCH 260/396] chore(deps-dev): bump eslint from 9.17.0 to 9.18.0 in the eslint group (#4407) --- package-lock.json | 70 ++++++++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 31 deletions(-) diff --git a/package-lock.json b/package-lock.json index d93f360649..1277109460 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4135,10 +4135,13 @@ } }, "node_modules/@eslint/core": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz", - "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", + "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.15" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -4201,9 +4204,9 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", - "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz", + "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4219,11 +4222,12 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", - "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", + "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", "dev": true, "dependencies": { + "@eslint/core": "^0.10.0", "levn": "^0.4.1" }, "engines": { @@ -8942,18 +8946,18 @@ } }, "node_modules/eslint": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.17.0.tgz", - "integrity": "sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz", + "integrity": "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.9.0", + "@eslint/core": "^0.10.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.17.0", - "@eslint/plugin-kit": "^0.2.3", + "@eslint/js": "9.18.0", + "@eslint/plugin-kit": "^0.2.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.1", @@ -19553,10 +19557,13 @@ } }, "@eslint/core": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz", - "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==", - "dev": true + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", + "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.15" + } }, "@eslint/eslintrc": { "version": "3.2.0", @@ -19602,9 +19609,9 @@ } }, "@eslint/js": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", - "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz", + "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==", "dev": true }, "@eslint/object-schema": { @@ -19614,11 +19621,12 @@ "dev": true }, "@eslint/plugin-kit": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", - "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", + "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", "dev": true, "requires": { + "@eslint/core": "^0.10.0", "levn": "^0.4.1" } }, @@ -23493,18 +23501,18 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.17.0.tgz", - "integrity": "sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz", + "integrity": "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.9.0", + "@eslint/core": "^0.10.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.17.0", - "@eslint/plugin-kit": "^0.2.3", + "@eslint/js": "9.18.0", + "@eslint/plugin-kit": "^0.2.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.1", From e5d4a0dd8adfd8ec81373354239bacaef381abc8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 14:38:23 -0800 Subject: [PATCH 261/396] chore(deps-dev): bump undici from 7.2.0 to 7.2.1 (#4410) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1277109460..14ff71caaa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15953,9 +15953,9 @@ } }, "node_modules/undici": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.2.0.tgz", - "integrity": "sha512-klt+0S55GBViA9nsq48/NSCo4YX5mjydjypxD7UmHh/brMu8h/Mhd/F7qAeoH2NOO8SDTk6kjnTFc4WpzmfYpQ==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.2.1.tgz", + "integrity": "sha512-U2k0XHLJfaciARRxDcqTk2AZQsGXerHzdvfCZcy1hNhSf5KCAF4jIQQxL+apQviOekhRFPqED6Of5/+LcUSLzQ==", "dev": true, "engines": { "node": ">=20.18.1" @@ -28883,9 +28883,9 @@ "dev": true }, "undici": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.2.0.tgz", - "integrity": "sha512-klt+0S55GBViA9nsq48/NSCo4YX5mjydjypxD7UmHh/brMu8h/Mhd/F7qAeoH2NOO8SDTk6kjnTFc4WpzmfYpQ==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.2.1.tgz", + "integrity": "sha512-U2k0XHLJfaciARRxDcqTk2AZQsGXerHzdvfCZcy1hNhSf5KCAF4jIQQxL+apQviOekhRFPqED6Of5/+LcUSLzQ==", "dev": true }, "undici-types": { From 2e3f0db76fba8a6900b0db7c493f90dbbb99767a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 14:46:41 -0800 Subject: [PATCH 262/396] chore(deps-dev): bump typescript from 5.7.2 to 5.7.3 (#4412) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 14ff71caaa..ac72801890 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15895,9 +15895,9 @@ } }, "node_modules/typescript": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", - "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -28847,9 +28847,9 @@ } }, "typescript": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", - "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", "dev": true }, "typical": { From 18b266d4eda86d80a8de51659ee137170ebba2fc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 17:04:34 -0800 Subject: [PATCH 263/396] chore(deps): bump cookie and light-my-request (#4416) Updates `cookie` from 0.6.0 to 0.7.2 Updates `light-my-request` from 6.0.0 to 6.5.1 --- package-lock.json | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index ac72801890..e72a3b6220 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12039,23 +12039,33 @@ } }, "node_modules/light-my-request": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-6.0.0.tgz", - "integrity": "sha512-kFkFXrmKCL0EEeOmJybMH5amWFd+AFvlvMlvFTRxCUwbhfapZqDmeLMPoWihntnYY6JpoQDE9k+vOzObF1fDqg==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-6.5.1.tgz", + "integrity": "sha512-0q82RyxIextuDtkA0UDofhPHIiQ2kmpa7fwElCSlm/8nQl36cDU1Cw+CAO90Es0lReH2HChClKL84I86Nc52hg==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], "dependencies": { - "cookie": "^0.6.0", + "cookie": "^1.0.1", "process-warning": "^4.0.0", "set-cookie-parser": "^2.6.0" } }, "node_modules/light-my-request/node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=18" } }, "node_modules/lodash": { @@ -25823,20 +25833,20 @@ } }, "light-my-request": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-6.0.0.tgz", - "integrity": "sha512-kFkFXrmKCL0EEeOmJybMH5amWFd+AFvlvMlvFTRxCUwbhfapZqDmeLMPoWihntnYY6JpoQDE9k+vOzObF1fDqg==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-6.5.1.tgz", + "integrity": "sha512-0q82RyxIextuDtkA0UDofhPHIiQ2kmpa7fwElCSlm/8nQl36cDU1Cw+CAO90Es0lReH2HChClKL84I86Nc52hg==", "dev": true, "requires": { - "cookie": "^0.6.0", + "cookie": "^1.0.1", "process-warning": "^4.0.0", "set-cookie-parser": "^2.6.0" }, "dependencies": { "cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", "dev": true } } From 6a04fc2589cf51954ff97907177332ff38a52c1d Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Tue, 14 Jan 2025 07:17:30 -0800 Subject: [PATCH 264/396] fix(slack notifications): don't attempt to post a slack message if don't have one (#527) (#4414) This fixes a 'SlackError: Missing input!' error when skipping a notification, e.g. for a dependabot PR: https://github.com/elastic/elastic-otel-node/actions/runs/12743214047/job/35512726091?pr=526 Refs: https://github.com/elastic/elastic-otel-node/pull/527 --- .github/workflows/slack.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/slack.yml b/.github/workflows/slack.yml index d300b5eebc..1cbfc4292e 100644 --- a/.github/workflows/slack.yml +++ b/.github/workflows/slack.yml @@ -117,6 +117,7 @@ jobs: f.write("payload={}".format(json.dumps(payload))) - name: Post Slack message + if: ${{ steps.prepare.outputs.payload }} uses: slackapi/slack-github-action@v2.0.0 with: method: chat.postMessage From 97952d12b15268b54bc077ada152053a84a261da Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Tue, 14 Jan 2025 07:18:32 -0800 Subject: [PATCH 265/396] chore: disable dependabot updates of the test app used for the experimental Next.js instrumentation (#4415) The next.js instrumentation is experimental and support is locked to an old/deprecated version of Next.js and is unlikely to move forward from there. There is no value in dependabot updates for this test app. --- .github/dependabot.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 084410981a..de123d0346 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -55,14 +55,6 @@ updates: reviewers: - "elastic/apm-agent-node-js" - - package-ecosystem: "npm" - directory: "/test/instrumentation/modules/next/a-nextjs-app" - schedule: - interval: "weekly" - open-pull-requests-limit: 5 - reviewers: - - "elastic/apm-agent-node-js" - - package-ecosystem: "npm" directory: "/test/opentelemetry-bridge" schedule: From bfefd78d32fe977fcd05eaa3a9a0b494d35828ab Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Tue, 14 Jan 2025 07:18:52 -0800 Subject: [PATCH 266/396] test: excise 'request' library from our tests (#4417) The 'request' library is long since deprecated. I'm tired of the security warnings for its deps. --- package-lock.json | 426 ------------------ package.json | 1 - test/cloud-metadata/test-server.test.js | 177 ++++---- .../modules/http/request.test.js | 10 +- test/sanitize-field-names/_shared.js | 35 ++ test/sanitize-field-names/express.test.js | 24 +- test/sanitize-field-names/fastify.test.js | 23 +- test/sanitize-field-names/hapi.test.js | 23 +- test/sanitize-field-names/koa.test.js | 23 +- test/sanitize-field-names/restify.test.js | 23 +- 10 files changed, 182 insertions(+), 583 deletions(-) diff --git a/package-lock.json b/package-lock.json index e72a3b6220..128fe8c817 100644 --- a/package-lock.json +++ b/package-lock.json @@ -117,7 +117,6 @@ "prettier": "^3.0.0", "pug": "^3.0.1", "redis": "^4.3.0", - "request": "^2.88.2", "restify": "^11.0.0", "rimraf": "^3.0.2", "tape": "^5.0.0", @@ -7074,15 +7073,6 @@ "node": ">=4.0" } }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/aws-ssl-profiles": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.1.tgz", @@ -7092,12 +7082,6 @@ "node": ">= 6.0.0" } }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, "node_modules/axios": { "version": "1.7.9", "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", @@ -7620,12 +7604,6 @@ } ] }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, "node_modules/cassandra-driver": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/cassandra-driver/-/cassandra-driver-4.7.2.tgz", @@ -9724,12 +9702,6 @@ "node": ">= 0.8" } }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -10144,29 +10116,6 @@ "is-callable": "^1.1.3" } }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, "node_modules/formidable": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", @@ -10541,51 +10490,6 @@ "node": ">=0.10.0" } }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dev": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/har-validator/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/har-validator/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "node_modules/has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -10821,21 +10725,6 @@ "node": ">= 14" } }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, "node_modules/http2-wrapper": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", @@ -11408,12 +11297,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, "node_modules/is-unc-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", @@ -11495,12 +11378,6 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, "node_modules/jackpot": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/jackpot/-/jackpot-0.0.6.tgz", @@ -11724,21 +11601,6 @@ "safe-buffer": "^5.0.1" } }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/jstransformer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", @@ -12928,15 +12790,6 @@ "node": "*" } }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -13285,12 +13138,6 @@ "node": ">=8" } }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, "node_modules/pg": { "version": "8.13.1", "resolved": "https://registry.npmjs.org/pg/-/pg-8.13.1.tgz", @@ -13773,12 +13620,6 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, "node_modules/pug": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.3.tgz", @@ -14224,57 +14065,6 @@ "resolved": "https://registry.npmjs.org/relative-microtime/-/relative-microtime-2.0.0.tgz", "integrity": "sha512-l18ha6HEZc+No/uK4GyAnNxgKW7nvEe35IaeN54sShMojtqik2a6GbTyuiezkjpPaqP874Z3lW5ysBo5irz4NA==" }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request/node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/request/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, "node_modules/require_optional": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", @@ -15717,19 +15507,6 @@ "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==", "dev": true }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, "node_modules/tr46": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", @@ -15792,18 +15569,6 @@ "node": ">=0.6.x" } }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", @@ -22079,24 +21844,12 @@ } } }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, "aws-ssl-profiles": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.1.tgz", "integrity": "sha512-+H+kuK34PfMaI9PNU/NSjBKL5hh/KDM9J72kwYeYEm0A8B1AC4fuCy3qsjnA7lxklgyXsB68yn8Z2xoZEjgwCQ==", "dev": true }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, "axios": { "version": "1.7.9", "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", @@ -22475,12 +22228,6 @@ "integrity": "sha512-WTrjUCSMp3LYX0nE12ECkV0a+e6LC85E0Auz75555/qr78Oc8YWhEPNfDd6SHdtlCMSzqtuXY0uyEMNRcsKpKw==", "dev": true }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, "cassandra-driver": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/cassandra-driver/-/cassandra-driver-4.7.2.tgz", @@ -24075,12 +23822,6 @@ "mini-queue": "0.0.14" } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -24422,23 +24163,6 @@ "is-callable": "^1.1.3" } }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, "formidable": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", @@ -24702,42 +24426,6 @@ } } }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "dependencies": { - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - } - } - }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -24923,17 +24611,6 @@ "debug": "^4.3.4" } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, "http2-wrapper": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", @@ -25323,12 +25000,6 @@ "which-typed-array": "^1.1.14" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, "is-unc-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", @@ -25389,12 +25060,6 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, "jackpot": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/jackpot/-/jackpot-0.0.6.tgz", @@ -25590,18 +25255,6 @@ } } }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, "jstransformer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", @@ -26531,12 +26184,6 @@ "integrity": "sha1-StCAk21EPCVhrtnyGX7//iX05QY=", "dev": true }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -26795,12 +26442,6 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, "pg": { "version": "8.13.1", "resolved": "https://registry.npmjs.org/pg/-/pg-8.13.1.tgz", @@ -27142,12 +26783,6 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, "pug": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.3.tgz", @@ -27514,48 +27149,6 @@ "resolved": "https://registry.npmjs.org/relative-microtime/-/relative-microtime-2.0.0.tgz", "integrity": "sha512-l18ha6HEZc+No/uK4GyAnNxgKW7nvEe35IaeN54sShMojtqik2a6GbTyuiezkjpPaqP874Z3lW5ysBo5irz4NA==" }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - } - } - }, "require_optional": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", @@ -28709,16 +28302,6 @@ "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==", "dev": true }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, "tr46": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", @@ -28774,15 +28357,6 @@ "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", "dev": true }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", diff --git a/package.json b/package.json index 781fb68399..00cdb8ce35 100644 --- a/package.json +++ b/package.json @@ -196,7 +196,6 @@ "prettier": "^3.0.0", "pug": "^3.0.1", "redis": "^4.3.0", - "request": "^2.88.2", "restify": "^11.0.0", "rimraf": "^3.0.2", "tape": "^5.0.0", diff --git a/test/cloud-metadata/test-server.test.js b/test/cloud-metadata/test-server.test.js index 279813cfd4..dd2859b5e8 100644 --- a/test/cloud-metadata/test-server.test.js +++ b/test/cloud-metadata/test-server.test.js @@ -5,9 +5,9 @@ */ 'use strict'; +const http = require('http'); const { createTestServer } = require('./_lib'); const tape = require('tape'); -const request = require('request'); tape.test('test the test server: valid', function (t) { const serverAws = createTestServer('aws', 'default aws fixture'); @@ -32,14 +32,17 @@ tape.test('basic metadata request: aws', function (t) { const url = `http://127.0.0.1:${ listener.address().port }/latest/dynamic/instance-identity/document`; - request(url, function (error, response, rawBody) { - if (error) { - throw error; - } - const body = JSON.parse(rawBody); - t.ok(body.version, 'version set'); - listener.close(); - t.end(); + http.get(url, (res) => { + const chunks = []; + res.on('data', (chunk) => { + chunks.push(chunk); + }); + res.on('end', () => { + const body = JSON.parse(Buffer.concat(chunks)); + t.ok(body.version, 'version set'); + listener.close(); + t.end(); + }); }); }); }); @@ -47,92 +50,112 @@ tape.test('basic metadata request: aws', function (t) { tape.test('basic metadata request: gcp', function (t) { const serverGcp = createTestServer('gcp', 'default gcp fixture'); const listener = serverGcp.listen(0, function () { - const url = `http://127.0.0.1:${ - listener.address().port - }/computeMetadata/v1/?recursive=true`; - const options = { - url, - headers: { - 'Metadata-Flavor': 'Google', + http.get( + { + hostname: '127.0.0.1', + port: listener.address().port, + path: '/computeMetadata/v1/?recursive=true', + headers: { + 'Metadata-Flavor': 'Google', + }, }, - }; - request(options, function (error, response, rawBody) { - if (error) { - throw error; - } - const body = JSON.parse(rawBody); - t.ok(body.instance.id, 'id set'); - listener.close(); - t.end(); - }); + (res) => { + const chunks = []; + res.on('data', (chunk) => { + chunks.push(chunk); + }); + res.on('end', () => { + const body = JSON.parse(Buffer.concat(chunks)); + t.ok(body.instance.id, 'id set'); + listener.close(); + t.end(); + }); + }, + ); }); }); tape.test('basic metadata request: azure', function (t) { const serverAzure = createTestServer('azure', 'default azure fixture'); const listener = serverAzure.listen(0, function () { - const url = `http://127.0.0.1:${ - listener.address().port - }/metadata/instance?api-version=2020-09-01`; - const options = { - url, - headers: { - Metadata: 'true', + http.get( + { + hostname: '127.0.0.1', + port: listener.address().port, + path: '/metadata/instance?api-version=2020-09-01', + headers: { + Metadata: 'true', + }, }, - }; - request(options, function (error, response, rawBody) { - if (error) { - throw error; - } - const body = JSON.parse(rawBody); - t.ok(body.compute.vmId, 'vmId set'); - listener.close(); - t.end(); - }); + (res) => { + const chunks = []; + res.on('data', (chunk) => { + chunks.push(chunk); + }); + res.on('end', () => { + const body = JSON.parse(Buffer.concat(chunks)); + t.ok(body.compute.vmId, 'vmId set'); + listener.close(); + t.end(); + }); + }, + ); }); }); tape.test('IMDSv2 token fetching: aws', function (t) { const serverAws = createTestServer('aws-IMDSv2', 'default aws fixture'); const listener = serverAws.listen(0, function () { - const urlToken = `http://127.0.0.1:${ - listener.address().port - }/latest/api/token`; - const optionsToken = { - url: urlToken, - headers: { - 'X-aws-ec2-metadata-token-ttl-seconds': '300', + // First request to get API token. + const req = http.request( + { + method: 'PUT', + hostname: '127.0.0.1', + port: listener.address().port, + path: '/latest/api/token', + headers: { + 'X-aws-ec2-metadata-token-ttl-seconds': '300', + }, }, - }; - request.put( - optionsToken, - function (errorToken, responseToken, rawBodyToken) { - // token request succeded, now make real request - t.equals( - rawBodyToken, - 'AQAAAOaONNcThIsIsAfAkEtOkEn_b94UPLuLYRThIsIsAfAkEtOkEn==', - 'returns correct fake token', - ); - const url = `http://127.0.0.1:${ - listener.address().port - }/latest/dynamic/instance-identity/document`; - const options = { - url, - headers: { - 'X-aws-ec2-metadata-token': rawBodyToken, - }, - }; - request(options, function (error, response, rawBody) { - if (error) { - throw error; - } + (res) => { + const chunks = []; + res.on('data', (chunk) => { + chunks.push(chunk); + }); + res.on('end', () => { + const rawBodyToken = Buffer.concat(chunks).toString('utf8'); + t.equals( + rawBodyToken, + 'AQAAAOaONNcThIsIsAfAkEtOkEn_b94UPLuLYRThIsIsAfAkEtOkEn==', + 'returns correct fake token', + ); - const body = JSON.parse(rawBody); - t.ok(body.version, 'version set'); - listener.close(); - t.end(); + // Second request to get metadata, using that token. + http.get( + { + hostname: '127.0.0.1', + port: listener.address().port, + path: '/latest/dynamic/instance-identity/document', + headers: { + 'X-aws-ec2-metadata-token': rawBodyToken, + }, + }, + (res) => { + const chunks = []; + res.on('data', (chunk) => { + chunks.push(chunk); + }); + res.on('end', () => { + const body = JSON.parse(Buffer.concat(chunks)); + t.ok(body.version, 'version set'); + listener.close(); + t.end(); + }); + }, + ); }); }, ); + req.end(); }); }); diff --git a/test/instrumentation/modules/http/request.test.js b/test/instrumentation/modules/http/request.test.js index f77967de2b..0ce44a492f 100644 --- a/test/instrumentation/modules/http/request.test.js +++ b/test/instrumentation/modules/http/request.test.js @@ -20,7 +20,6 @@ var http = require('http'); var test = require('tape'); var express = require('express'); -var request = require('request'); var mockClient = require('../../../_mock_http_client'); var findObjInArray = require('../../../_utils').findObjInArray; @@ -52,7 +51,9 @@ test('request', function (t) { }); app.get('/', (req, res) => { - request(`http://localhost:${req.socket.localPort}/test`).pipe(res); + http.get(`http://localhost:${req.socket.localPort}/test`, (cres) => { + cres.pipe(res); + }); }); sendRequest(server); @@ -83,7 +84,10 @@ test('Outcome', function (t) { }); app.get('/', (req, res) => { - request(`http://localhost:${req.socket.localPort}/test`).pipe(res); + http.get(`http://localhost:${req.socket.localPort}/test`, (cres) => { + res.statusCode = cres.statusCode; + cres.pipe(res); + }); }); sendRequest(server); diff --git a/test/sanitize-field-names/_shared.js b/test/sanitize-field-names/_shared.js index 21fde0c9bf..b20aff1c6d 100644 --- a/test/sanitize-field-names/_shared.js +++ b/test/sanitize-field-names/_shared.js @@ -5,6 +5,8 @@ */ 'use strict'; + +const http = require('http'); const querystring = require('querystring'); const mockClient = require('../_mock_http_client'); @@ -114,9 +116,42 @@ function getBodyAsObject(string) { } } +/** + * Convenience function to make an form-encoded HTTP POST request and callback + * with the body, `cb(null, res, body)`. + */ +function requestPost(url, headers, form, cb) { + const u = new URL(url); + const req = http.request( + { + method: 'POST', + hostname: u.hostname, + port: u.port, + path: u.pathname + u.search, + headers: Object.assign( + { 'content-type': 'application/x-www-form-urlencoded' }, + headers, + ), + }, + (res) => { + const chunks = []; + res.on('data', (chunk) => { + chunks.push(chunk); + }); + res.on('end', () => { + const body = Buffer.concat(chunks).toString('utf8'); + cb(null, res, body); + }); + }, + ); + req.write(querystring.encode(form)); + req.end(); +} + module.exports = { createAgentConfig, getBodyAsObject, + requestPost, resetAgent, assertRequestHeadersWithFixture, assertResponseHeadersWithFixture, diff --git a/test/sanitize-field-names/express.test.js b/test/sanitize-field-names/express.test.js index d276963b32..ae4a136ac0 100644 --- a/test/sanitize-field-names/express.test.js +++ b/test/sanitize-field-names/express.test.js @@ -8,6 +8,7 @@ const { createAgentConfig } = require('./_shared'); const agent = require('../..').start(createAgentConfig()); const { + requestPost, resetAgent, assertRequestHeadersWithFixture, assertResponseHeadersWithFixture, @@ -15,7 +16,6 @@ const { } = require('./_shared'); const test = require('tape'); -const request = require('request'); const express = require('express'); const bodyParser = require('body-parser'); const fixtures = require('./_fixtures'); @@ -52,21 +52,13 @@ function runTest( }); const server = app.listen(0, '0.0.0.0', () => { - const url = `http://${server.address().address}:${ - server.address().port - }/test`; - request.post( - url, - { - form: formFields, - headers: requestHeaders, - }, - function (error, response, body) { - t.error(error); - t.ok(body, 'received response'); - t.end(); - }, - ); + const addr = server.address(); + const url = `http://${addr.address}:${addr.port}/test`; + requestPost(url, requestHeaders, formFields, (err, _res, body) => { + t.error(err); + t.ok(body, 'received response'); + t.end(); + }); }); const done = () => { diff --git a/test/sanitize-field-names/fastify.test.js b/test/sanitize-field-names/fastify.test.js index f284704d2b..1136faef67 100644 --- a/test/sanitize-field-names/fastify.test.js +++ b/test/sanitize-field-names/fastify.test.js @@ -15,13 +15,13 @@ if (isFastifyIncompat) { } const { + requestPost, resetAgent, assertFormsWithFixture, assertRequestHeadersWithFixture, assertResponseHeadersWithFixture, } = require('./_shared'); const test = require('tape'); -const request = require('request'); const fastify = require('fastify'); const fastifyFormbody = require('@fastify/formbody'); const fixtures = require('./_fixtures'); @@ -64,20 +64,13 @@ function runTest( throw err; } const url = `${address}/test`; - request.post( - url, - { - form: formFields, - headers: requestHeaders, - }, - function (error, response, body) { - if (error) { - t.fail(error); - } - t.ok(body, 'received response'); - t.end(); - }, - ); + requestPost(url, requestHeaders, formFields, (err, _res, body) => { + if (err) { + t.fail(err); + } + t.ok(body, 'received response'); + t.end(); + }); }); const done = () => { diff --git a/test/sanitize-field-names/hapi.test.js b/test/sanitize-field-names/hapi.test.js index 937f5d4667..76362b445c 100644 --- a/test/sanitize-field-names/hapi.test.js +++ b/test/sanitize-field-names/hapi.test.js @@ -7,6 +7,7 @@ 'use strict'; const { + requestPost, assertRequestHeadersWithFixture, assertResponseHeadersWithFixture, assertFormsWithFixture, @@ -22,7 +23,6 @@ if (isHapiIncompat()) { } const test = require('tape'); -const request = require('request'); const Hapi = require('@hapi/hapi'); const fixtures = require('./_fixtures'); @@ -96,18 +96,11 @@ async function runTest( await server.start(); const url = server.info.uri + '/test'; - request.post( - url, - { - form: formFields, - headers: requestHeaders, - }, - function (error, response, body) { - if (error) { - t.fail(error); - } - t.ok(body, 'received response'); - t.end(); - }, - ); + requestPost(url, requestHeaders, formFields, (err, _res, body) => { + if (err) { + t.fail(err); + } + t.ok(body, 'received response'); + t.end(); + }); } diff --git a/test/sanitize-field-names/koa.test.js b/test/sanitize-field-names/koa.test.js index 0e7d2fb9b1..eba2bc54b1 100644 --- a/test/sanitize-field-names/koa.test.js +++ b/test/sanitize-field-names/koa.test.js @@ -8,12 +8,12 @@ const { createAgentConfig } = require('./_shared'); const agent = require('../..').start(createAgentConfig()); const { + requestPost, resetAgent, assertRequestHeadersWithFixture, assertResponseHeadersWithFixture, } = require('./_shared'); const test = require('tape'); -const request = require('request'); const Koa = require('koa'); const koaBodyparser = require('koa-bodyparser'); const fixtures = require('./_fixtures'); @@ -83,19 +83,12 @@ function runTest( const url = `http://${server.address().address}:${ server.address().port }/test`; - request.post( - url, - { - form: formFields, - headers: requestHeaders, - }, - function (error, response, body) { - if (error) { - t.fail(error); - } - t.ok(body, 'received response'); - t.end(); - }, - ); + requestPost(url, requestHeaders, formFields, (err, _res, body) => { + if (err) { + t.fail(err); + } + t.ok(body, 'received response'); + t.end(); + }); }); } diff --git a/test/sanitize-field-names/restify.test.js b/test/sanitize-field-names/restify.test.js index d9120f38b7..43191bd35e 100644 --- a/test/sanitize-field-names/restify.test.js +++ b/test/sanitize-field-names/restify.test.js @@ -15,13 +15,13 @@ if (isRestifyIncompat) { const { createAgentConfig } = require('./_shared'); const agent = require('../..').start(createAgentConfig()); const { + requestPost, resetAgent, assertRequestHeadersWithFixture, assertResponseHeadersWithFixture, assertFormsWithFixture, } = require('./_shared'); const test = require('tape'); -const request = require('request'); const restify = require('restify'); const fixtures = require('./_fixtures'); @@ -93,19 +93,12 @@ function runTest( server.listen(0, '0.0.0.0', () => { const url = `${server.url}/test`; - request.post( - url, - { - form: formFields, - headers: requestHeaders, - }, - function (error, response, body) { - if (error) { - t.fail(error); - } - t.ok(body, 'received response'); - t.end(); - }, - ); + requestPost(url, requestHeaders, formFields, (err, _res, body) => { + if (err) { + t.fail(err); + } + t.ok(body, 'received response'); + t.end(); + }); }); } From 6f3711e8eee0ec82f360f135bbf04bcf412039fd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 15:31:51 +0000 Subject: [PATCH 267/396] chore(deps): bump docker/build-push-action in the github-actions group (#4406) Bumps the github-actions group with 1 update: [docker/build-push-action](https://github.com/docker/build-push-action). Updates `docker/build-push-action` from 6.10.0 to 6.11.0 - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/48aba3b46d1b1fec4febb7c5d0c644b249a11355...b32b51a8eda65d6793cd0494a773d4f6bcef32dc) --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 098fa3829d..07b85248aa 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -63,7 +63,7 @@ jobs: - name: Build and Push Docker Image id: docker-push - uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0 + uses: docker/build-push-action@b32b51a8eda65d6793cd0494a773d4f6bcef32dc # v6.11.0 with: context: . platforms: linux/amd64,linux/arm64 @@ -97,7 +97,7 @@ jobs: - name: Build and Push Docker Image (wolfi) id: docker-push-wolfi - uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0 + uses: docker/build-push-action@b32b51a8eda65d6793cd0494a773d4f6bcef32dc # v6.11.0 with: context: . platforms: linux/amd64,linux/arm64 From 4d6c30891df6430e3477ba02e944e57cfbdb4769 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Tue, 14 Jan 2025 14:25:38 -0800 Subject: [PATCH 268/396] fix(slack notifications): correct the if-logic for skipping some notifications (#4423) --- .github/workflows/slack.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/slack.yml b/.github/workflows/slack.yml index 1cbfc4292e..3de28511cb 100644 --- a/.github/workflows/slack.yml +++ b/.github/workflows/slack.yml @@ -27,9 +27,11 @@ jobs: # Skip notification if: # - dependabot or renovate PRs, too noisy # - draft PRs - if: ${{ !(github.event.action == 'opened' && github.event.pull_request.draft) || - github.event.pull_request.user.login != 'dependabot[bot]' || - github.event.pull_request.user.login != 'elastic-renovate-prod[bot]' }} + if: ${{ !( + (github.event.action == 'opened' && github.event.pull_request.draft) || + github.event.pull_request.user.login == 'dependabot[bot]' || + github.event.pull_request.user.login == 'elastic-renovate-prod[bot]' + ) }} runs-on: ubuntu-24.04 steps: - name: Prepare Slack message @@ -117,7 +119,6 @@ jobs: f.write("payload={}".format(json.dumps(payload))) - name: Post Slack message - if: ${{ steps.prepare.outputs.payload }} uses: slackapi/slack-github-action@v2.0.0 with: method: chat.postMessage From 62d24dcadf67d6c105b156f8bcaaee32d2c5b300 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Thu, 16 Jan 2025 09:58:03 -0800 Subject: [PATCH 269/396] chore(deps): update OTel deps (#4425) @opentelemetry/core: 1.30.0 -> 1.30.1 @opentelemetry/resources: 1.30.0 -> 1.30.1 @opentelemetry/sdk-metrics: 1.30.0 -> 1.30.1 @opentelemetry/exporter-prometheus: 0.57.0 -> 0.57.1 --- package-lock.json | 48 ++++++------- .../fixtures/package-lock.json | 72 +++++++++---------- 2 files changed, 60 insertions(+), 60 deletions(-) diff --git a/package-lock.json b/package-lock.json index 128fe8c817..8e7e520e1c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5152,9 +5152,9 @@ } }, "node_modules/@opentelemetry/core": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.0.tgz", - "integrity": "sha512-Q/3u/K73KUjTCnFUP97ZY+pBjQ1kPEgjOfXj/bJl8zW7GbXdkw6cwuyZk6ZTXkVgCBsYRYUzx4fvYK1jxdb9MA==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", "dependencies": { "@opentelemetry/semantic-conventions": "1.28.0" }, @@ -5166,11 +5166,11 @@ } }, "node_modules/@opentelemetry/resources": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.0.tgz", - "integrity": "sha512-5mGMjL0Uld/99t7/pcd7CuVtJbkARckLVuiOX84nO8RtLtIz0/J6EOHM2TGvPZ6F4K+XjUq13gMx14w80SVCQg==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz", + "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==", "dependencies": { - "@opentelemetry/core": "1.30.0", + "@opentelemetry/core": "1.30.1", "@opentelemetry/semantic-conventions": "1.28.0" }, "engines": { @@ -5181,12 +5181,12 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.0.tgz", - "integrity": "sha512-5kcj6APyRMvv6dEIP5plz2qfJAD4OMipBRT11u/pa1a68rHKI2Ln+iXVkAGKgx8o7CXbD7FdPypTUY88ZQgP4Q==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.1.tgz", + "integrity": "sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog==", "dependencies": { - "@opentelemetry/core": "1.30.0", - "@opentelemetry/resources": "1.30.0" + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1" }, "engines": { "node": ">=14" @@ -20275,29 +20275,29 @@ "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" }, "@opentelemetry/core": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.0.tgz", - "integrity": "sha512-Q/3u/K73KUjTCnFUP97ZY+pBjQ1kPEgjOfXj/bJl8zW7GbXdkw6cwuyZk6ZTXkVgCBsYRYUzx4fvYK1jxdb9MA==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", "requires": { "@opentelemetry/semantic-conventions": "1.28.0" } }, "@opentelemetry/resources": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.0.tgz", - "integrity": "sha512-5mGMjL0Uld/99t7/pcd7CuVtJbkARckLVuiOX84nO8RtLtIz0/J6EOHM2TGvPZ6F4K+XjUq13gMx14w80SVCQg==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz", + "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==", "requires": { - "@opentelemetry/core": "1.30.0", + "@opentelemetry/core": "1.30.1", "@opentelemetry/semantic-conventions": "1.28.0" } }, "@opentelemetry/sdk-metrics": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.0.tgz", - "integrity": "sha512-5kcj6APyRMvv6dEIP5plz2qfJAD4OMipBRT11u/pa1a68rHKI2Ln+iXVkAGKgx8o7CXbD7FdPypTUY88ZQgP4Q==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.1.tgz", + "integrity": "sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog==", "requires": { - "@opentelemetry/core": "1.30.0", - "@opentelemetry/resources": "1.30.0" + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1" } }, "@opentelemetry/semantic-conventions": { diff --git a/test/opentelemetry-metrics/fixtures/package-lock.json b/test/opentelemetry-metrics/fixtures/package-lock.json index 09ce1b8886..e8e5dbb855 100644 --- a/test/opentelemetry-metrics/fixtures/package-lock.json +++ b/test/opentelemetry-metrics/fixtures/package-lock.json @@ -22,9 +22,9 @@ } }, "node_modules/@opentelemetry/core": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.0.tgz", - "integrity": "sha512-Q/3u/K73KUjTCnFUP97ZY+pBjQ1kPEgjOfXj/bJl8zW7GbXdkw6cwuyZk6ZTXkVgCBsYRYUzx4fvYK1jxdb9MA==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", "dependencies": { "@opentelemetry/semantic-conventions": "1.28.0" }, @@ -36,13 +36,13 @@ } }, "node_modules/@opentelemetry/exporter-prometheus": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.57.0.tgz", - "integrity": "sha512-yjAfXoHcR+Ik03+eZMrrS5ErL7RcNkNScZc2o5dLnZyoEj5A0cCaQLHX5RJxldck8gg5Utmm0I5iItPqnve21w==", + "version": "0.57.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.57.1.tgz", + "integrity": "sha512-lwwOQzyvhzioGCYmIh7mXo+RLSoEVhuO0dFzWeEiQhFkjSUOPgKQKNTgYtl2KO1L7XIbHp5LIgn4nZrYx191Rg==", "dependencies": { - "@opentelemetry/core": "1.30.0", - "@opentelemetry/resources": "1.30.0", - "@opentelemetry/sdk-metrics": "1.30.0" + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1", + "@opentelemetry/sdk-metrics": "1.30.1" }, "engines": { "node": ">=14" @@ -52,11 +52,11 @@ } }, "node_modules/@opentelemetry/resources": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.0.tgz", - "integrity": "sha512-5mGMjL0Uld/99t7/pcd7CuVtJbkARckLVuiOX84nO8RtLtIz0/J6EOHM2TGvPZ6F4K+XjUq13gMx14w80SVCQg==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz", + "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==", "dependencies": { - "@opentelemetry/core": "1.30.0", + "@opentelemetry/core": "1.30.1", "@opentelemetry/semantic-conventions": "1.28.0" }, "engines": { @@ -67,12 +67,12 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.0.tgz", - "integrity": "sha512-5kcj6APyRMvv6dEIP5plz2qfJAD4OMipBRT11u/pa1a68rHKI2Ln+iXVkAGKgx8o7CXbD7FdPypTUY88ZQgP4Q==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.1.tgz", + "integrity": "sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog==", "dependencies": { - "@opentelemetry/core": "1.30.0", - "@opentelemetry/resources": "1.30.0" + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1" }, "engines": { "node": ">=14" @@ -97,39 +97,39 @@ "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" }, "@opentelemetry/core": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.0.tgz", - "integrity": "sha512-Q/3u/K73KUjTCnFUP97ZY+pBjQ1kPEgjOfXj/bJl8zW7GbXdkw6cwuyZk6ZTXkVgCBsYRYUzx4fvYK1jxdb9MA==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", "requires": { "@opentelemetry/semantic-conventions": "1.28.0" } }, "@opentelemetry/exporter-prometheus": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.57.0.tgz", - "integrity": "sha512-yjAfXoHcR+Ik03+eZMrrS5ErL7RcNkNScZc2o5dLnZyoEj5A0cCaQLHX5RJxldck8gg5Utmm0I5iItPqnve21w==", + "version": "0.57.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.57.1.tgz", + "integrity": "sha512-lwwOQzyvhzioGCYmIh7mXo+RLSoEVhuO0dFzWeEiQhFkjSUOPgKQKNTgYtl2KO1L7XIbHp5LIgn4nZrYx191Rg==", "requires": { - "@opentelemetry/core": "1.30.0", - "@opentelemetry/resources": "1.30.0", - "@opentelemetry/sdk-metrics": "1.30.0" + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1", + "@opentelemetry/sdk-metrics": "1.30.1" } }, "@opentelemetry/resources": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.0.tgz", - "integrity": "sha512-5mGMjL0Uld/99t7/pcd7CuVtJbkARckLVuiOX84nO8RtLtIz0/J6EOHM2TGvPZ6F4K+XjUq13gMx14w80SVCQg==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz", + "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==", "requires": { - "@opentelemetry/core": "1.30.0", + "@opentelemetry/core": "1.30.1", "@opentelemetry/semantic-conventions": "1.28.0" } }, "@opentelemetry/sdk-metrics": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.0.tgz", - "integrity": "sha512-5kcj6APyRMvv6dEIP5plz2qfJAD4OMipBRT11u/pa1a68rHKI2Ln+iXVkAGKgx8o7CXbD7FdPypTUY88ZQgP4Q==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.1.tgz", + "integrity": "sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog==", "requires": { - "@opentelemetry/core": "1.30.0", - "@opentelemetry/resources": "1.30.0" + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1" } }, "@opentelemetry/semantic-conventions": { From dc8140701af2c0fff5530b6cf30bb9ef9af59b10 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 12:12:14 +0100 Subject: [PATCH 270/396] chore(deps): bump docker/build-push-action in the github-actions group (#4427) --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 07b85248aa..47c0046160 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -63,7 +63,7 @@ jobs: - name: Build and Push Docker Image id: docker-push - uses: docker/build-push-action@b32b51a8eda65d6793cd0494a773d4f6bcef32dc # v6.11.0 + uses: docker/build-push-action@67a2d409c0a876cbe6b11854e3e25193efe4e62d # v6.12.0 with: context: . platforms: linux/amd64,linux/arm64 @@ -97,7 +97,7 @@ jobs: - name: Build and Push Docker Image (wolfi) id: docker-push-wolfi - uses: docker/build-push-action@b32b51a8eda65d6793cd0494a773d4f6bcef32dc # v6.11.0 + uses: docker/build-push-action@67a2d409c0a876cbe6b11854e3e25193efe4e62d # v6.12.0 with: context: . platforms: linux/amd64,linux/arm64 From 44d5fc314b8f544d112a5bce5b73df4a560270ee Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 12:33:38 +0100 Subject: [PATCH 271/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to ea157dd (#4424) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 026ea13fc3..460860cec5 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:f2813ac649de3b3e90bfed50723c59cbfba803fd8d021bd522fc3dc4802b0cdb +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:ea157dd3d70787c6b6dc9e14dda1ff103c781d4c3f9a544393ff4583dd80c9d0 ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 4db0a458ee07090906c0f7b115e712c1ee8dfe52 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 18:34:34 +0100 Subject: [PATCH 272/396] chore(deps-dev): bump undici from 7.2.1 to 7.2.3 (#4429) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8e7e520e1c..ba2bcda101 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15728,9 +15728,9 @@ } }, "node_modules/undici": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.2.1.tgz", - "integrity": "sha512-U2k0XHLJfaciARRxDcqTk2AZQsGXerHzdvfCZcy1hNhSf5KCAF4jIQQxL+apQviOekhRFPqED6Of5/+LcUSLzQ==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.2.3.tgz", + "integrity": "sha512-2oSLHaDalSt2/O/wHA9M+/ZPAOcU2yrSP/cdBYJ+YxZskiPYDSqHbysLSlD7gq3JMqOoJI5O31RVU3BxX/MnAA==", "dev": true, "engines": { "node": ">=20.18.1" @@ -28467,9 +28467,9 @@ "dev": true }, "undici": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.2.1.tgz", - "integrity": "sha512-U2k0XHLJfaciARRxDcqTk2AZQsGXerHzdvfCZcy1hNhSf5KCAF4jIQQxL+apQviOekhRFPqED6Of5/+LcUSLzQ==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.2.3.tgz", + "integrity": "sha512-2oSLHaDalSt2/O/wHA9M+/ZPAOcU2yrSP/cdBYJ+YxZskiPYDSqHbysLSlD7gq3JMqOoJI5O31RVU3BxX/MnAA==", "dev": true }, "undici-types": { From bff2e232a60fad15935d531ae94c6d830fae705e Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Mon, 20 Jan 2025 09:35:37 -0800 Subject: [PATCH 273/396] feat(azure-functions): support Azure Functions programming model v4 (#4426) See https://learn.microsoft.com/en-ca/azure/azure-functions/functions-node-upgrade-v4 This builds on the work in https://github.com/elastic/apm-agent-nodejs/pull/4178 by @qzxlkj, which provide most of the runtime code fix. The rest of this is adding testing and updated examples and docs. Refs: https://github.com/elastic/apm-agent-nodejs/pull/4178 Closes: https://github.com/elastic/apm-agent-nodejs/issues/3185 --- .github/dependabot.yml | 10 +- CHANGELOG.asciidoc | 7 +- docs/azure-functions.asciidoc | 23 +- docs/supported-technologies.asciidoc | 2 +- eslint.config.js | 2 +- examples/an-azure-function-app/Bye/index.js | 11 - .../an-azure-function-app/Hi/function.json | 19 - examples/an-azure-function-app/Hi/index.js | 28 -- examples/an-azure-function-app/initapm.js | 3 - examples/an-azure-function-app/package.json | 13 - .../.gitignore | 0 .../.npmrc | 0 examples/azure-function-app/Makefile | 15 + .../README.md | 27 +- examples/azure-function-app/host.json | 15 + examples/azure-function-app/initapm.js | 1 + .../local.settings.json | 2 +- examples/azure-function-app/package.json | 18 + .../azure-function-app/src/functions/Hello.js | 24 + lib/instrumentation/azure-functions.js | 51 ++- lib/instrumentation/transaction.js | 1 + .../azure-functions/azfunctestutils.js | 139 ++++++ ...ons.test.js => azure-functions-v3.test.js} | 190 ++------ .../azure-functions-v4.test.js | 341 ++++++++++++++ .../AJsAzureFnApp/HttpFnError/function.json | 19 - .../fixtures/AJsAzureFnApp/README.md | 12 - .../{AJsAzureFnApp => azfunc3}/.gitignore | 0 .../HttpFn1/function.json | 0 .../HttpFn1/index.js | 0 .../HttpFnBindingsRes/function.json | 0 .../HttpFnBindingsRes/index.js | 0 .../HttpFnContextDone/function.json | 0 .../HttpFnContextDone/index.js | 0 .../HttpFnDistTraceA/function.json | 0 .../HttpFnDistTraceA/index.js | 0 .../HttpFnDistTraceB/function.json | 0 .../HttpFnDistTraceB/index.js | 0 .../azfunc3/HttpFnError}/function.json | 0 .../HttpFnError/index.js | 0 .../HttpFnReturnContext/function.json | 0 .../HttpFnReturnContext/index.js | 0 .../HttpFnReturnObject/function.json | 0 .../HttpFnReturnObject/index.js | 0 .../HttpFnReturnResponseData/function.json | 0 .../HttpFnReturnResponseData/index.js | 0 .../HttpFnReturnString/function.json | 0 .../HttpFnReturnString/index.js | 0 .../HttpFnRouteTemplate/function.json | 0 .../HttpFnRouteTemplate/index.js | 0 .../fixtures/azfunc3/README.md | 3 + .../{AJsAzureFnApp => azfunc3}/host.json | 0 .../{AJsAzureFnApp => azfunc3}/initapm.js | 0 .../local.settings.json | 2 +- .../package-lock.json | 2 +- .../{AJsAzureFnApp => azfunc3}/package.json | 0 .../fixtures/azfunc4/.funcignore | 10 + .../azure-functions/fixtures/azfunc4/.npmrc | 1 + .../fixtures/azfunc4/README.md | 3 + .../fixtures/azfunc4}/host.json | 2 +- .../fixtures/azfunc4/initapm.js | 10 + .../fixtures/azfunc4/local.settings.json | 14 + .../fixtures/azfunc4/package-lock.json | 426 ++++++++++++++++++ .../fixtures/azfunc4/package.json | 13 + .../azfunc4/src/functions/HttpExample.js | 20 + 64 files changed, 1162 insertions(+), 317 deletions(-) delete mode 100644 examples/an-azure-function-app/Bye/index.js delete mode 100644 examples/an-azure-function-app/Hi/function.json delete mode 100644 examples/an-azure-function-app/Hi/index.js delete mode 100644 examples/an-azure-function-app/initapm.js delete mode 100644 examples/an-azure-function-app/package.json rename examples/{an-azure-function-app => azure-function-app}/.gitignore (100%) rename examples/{an-azure-function-app => azure-function-app}/.npmrc (100%) create mode 100644 examples/azure-function-app/Makefile rename examples/{an-azure-function-app => azure-function-app}/README.md (63%) create mode 100644 examples/azure-function-app/host.json create mode 100644 examples/azure-function-app/initapm.js rename examples/{an-azure-function-app => azure-function-app}/local.settings.json (79%) create mode 100644 examples/azure-function-app/package.json create mode 100644 examples/azure-function-app/src/functions/Hello.js create mode 100644 test/instrumentation/azure-functions/azfunctestutils.js rename test/instrumentation/azure-functions/{azure-functions.test.js => azure-functions-v3.test.js} (78%) create mode 100644 test/instrumentation/azure-functions/azure-functions-v4.test.js delete mode 100644 test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnError/function.json delete mode 100644 test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/README.md rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/.gitignore (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/HttpFn1/function.json (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/HttpFn1/index.js (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/HttpFnBindingsRes/function.json (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/HttpFnBindingsRes/index.js (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/HttpFnContextDone/function.json (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/HttpFnContextDone/index.js (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/HttpFnDistTraceA/function.json (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/HttpFnDistTraceA/index.js (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/HttpFnDistTraceB/function.json (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/HttpFnDistTraceB/index.js (100%) rename {examples/an-azure-function-app/Bye => test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnError}/function.json (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/HttpFnError/index.js (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/HttpFnReturnContext/function.json (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/HttpFnReturnContext/index.js (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/HttpFnReturnObject/function.json (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/HttpFnReturnObject/index.js (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/HttpFnReturnResponseData/function.json (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/HttpFnReturnResponseData/index.js (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/HttpFnReturnString/function.json (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/HttpFnReturnString/index.js (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/HttpFnRouteTemplate/function.json (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/HttpFnRouteTemplate/index.js (100%) create mode 100644 test/instrumentation/azure-functions/fixtures/azfunc3/README.md rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/host.json (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/initapm.js (100%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/local.settings.json (92%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/package-lock.json (99%) rename test/instrumentation/azure-functions/fixtures/{AJsAzureFnApp => azfunc3}/package.json (100%) create mode 100644 test/instrumentation/azure-functions/fixtures/azfunc4/.funcignore create mode 100644 test/instrumentation/azure-functions/fixtures/azfunc4/.npmrc create mode 100644 test/instrumentation/azure-functions/fixtures/azfunc4/README.md rename {examples/an-azure-function-app => test/instrumentation/azure-functions/fixtures/azfunc4}/host.json (89%) create mode 100644 test/instrumentation/azure-functions/fixtures/azfunc4/initapm.js create mode 100644 test/instrumentation/azure-functions/fixtures/azfunc4/local.settings.json create mode 100644 test/instrumentation/azure-functions/fixtures/azfunc4/package-lock.json create mode 100644 test/instrumentation/azure-functions/fixtures/azfunc4/package.json create mode 100644 test/instrumentation/azure-functions/fixtures/azfunc4/src/functions/HttpExample.js diff --git a/.github/dependabot.yml b/.github/dependabot.yml index de123d0346..6c9e1961e2 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -48,7 +48,15 @@ updates: - "eslint*" - package-ecosystem: "npm" - directory: "/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp" + directory: "/test/instrumentation/azure-functions/fixtures/azfunc3" + schedule: + interval: "weekly" + open-pull-requests-limit: 5 + reviewers: + - "elastic/apm-agent-node-js" + + - package-ecosystem: "npm" + directory: "/test/instrumentation/azure-functions/fixtures/azfunc4" schedule: interval: "weekly" open-pull-requests-limit: 5 diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 3eff56acc0..fdbc45e701 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -41,12 +41,15 @@ See the <> guide. [float] ===== Features +* Support instrumentation of Azure Functions using the https://learn.microsoft.com/en-ca/azure/azure-functions/functions-node-upgrade-v4[v4 Node.js programming model]. + ({pull}4426[#4426]) + [float] ===== Bug fixes * Fix instrumentation of `@aws-sdk/client-s3`, `@aws-sdk/client-sqs`, and - `@aws-sdk/client-sns` for versions 3.723.0 and later. (Internally the AWS SDK - clients updated to `@smithy/smithy-client@4`.) + `@aws-sdk/client-sns` for versions 3.723.0 and later. Internally the AWS SDK + clients updated to `@smithy/smithy-client@4`. ({pull}4398[#4398]) [float] ===== Chores diff --git a/docs/azure-functions.asciidoc b/docs/azure-functions.asciidoc index 08aa0884e2..cb91dfd669 100644 --- a/docs/azure-functions.asciidoc +++ b/docs/azure-functions.asciidoc @@ -9,7 +9,7 @@ endif::[] === Monitoring Node.js Azure Functions -The Node.js APM Agent can trace function invocations in an https://learn.microsoft.com/en-us/azure/azure-functions/[Azure Functions] app. +The Node.js APM Agent can trace function invocations in an https://learn.microsoft.com/en-us/azure/azure-functions/[Azure Functions] app, using either v3 or https://learn.microsoft.com/en-us/azure/azure-functions/functions-node-upgrade-v4[v4 of the Node.js programming model]. [float] @@ -36,7 +36,7 @@ will result in unreasonably large deployments that will be very slow to publish and will run your Azure Function app VM out of disk space. ==== -You can also take a look at and use this https://github.com/elastic/apm-agent-nodejs/tree/main/examples/an-azure-function-app/[Azure Functions example app with Elastic APM already integrated]. +You can also take a look at and use this https://github.com/elastic/apm-agent-nodejs/tree/main/examples/azure-function-app/[Azure Functions example app with Elastic APM already integrated]. [float] [[azure-functions-setup]] @@ -69,17 +69,14 @@ require('elastic-apm-node').start({ ---- <1> Optional <> can be added here. -2. Add a "main" entry to your package.json pointing to the app init file. +2. Change the "main" entry in your "package.json" to point to the initapm.js file. + [source,json] ---- ... - "main": "initapm.js", + "main": "{initapm.js,src/functions/*.js}", ... ---- -+ -If your application already has a "main" init file, you can instead add the -`require('elastic-apm-node').start()` to top of that file. [float] @@ -103,7 +100,7 @@ For example: image::./images/azure-functions-configuration.png[Configuring the APM Agent in the Azure Portal] -For local testing via `func start` you can set these environment variables in +For local testing via `func start`, you can set these environment variables in your terminal, or in the "local.settings.json" file. See the <> for full details on supported configuration variables. @@ -127,13 +124,11 @@ of time, so allow a minute or so for data to appear. [[azure-functions-limitations]] ==== Limitations -This instrumentation does not send an APM transaction or error to APM server when -a handler has an `uncaughtException` or `unhandledRejection`. -The Azure Functions Node.js reference https://learn.microsoft.com/en-ca/azure/azure-functions/functions-reference-node#use-async-and-await[has a section] with best practices for avoiding these cases. +Distributed tracing for incoming HTTP requests to Azure Functions (using v4 of the programming model) does *not* work, because of a issue with Azure's handling of trace-context. See https://github.com/elastic/apm-agent-nodejs/pull/4426#issuecomment-2596922653[this] for details. + +Azure Functions instrumentation currently does _not_ collect system metrics in the background because of a concern with unintentionally increasing Azure Functions costs (for Consumption plans). -Azure Functions instrumentation currently does _not_ collect system metrics in -the background because of a concern with unintentionally increasing Azure -Functions costs (for Consumption plans). +Elastic APM's <> is not supported for Azure Functions. [float] diff --git a/docs/supported-technologies.asciidoc b/docs/supported-technologies.asciidoc index 979465fb4c..db51748035 100644 --- a/docs/supported-technologies.asciidoc +++ b/docs/supported-technologies.asciidoc @@ -63,7 +63,7 @@ These are the frameworks that we officially support: |======================================================================= | Framework | Version | Note | <> | N/A | -| <> | ~4 | See https://learn.microsoft.com/en-ca/azure/azure-functions/set-runtime-version[the guide on Azure Functions runtime versions]. +| <> | v3, v4 | https://learn.microsoft.com/en-us/azure/azure-functions/functions-node-upgrade-v4[Node.js programming model v3 and v4] | <> | ^4.0.0 | | <> | >=1.0.0 | See also https://www.fastify.io/docs/latest/Reference/LTS/[Fastify's own LTS documentation] | <> | >=17.9.0 <22.0.0 | diff --git a/eslint.config.js b/eslint.config.js index c05b5de444..ecadd738cf 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -30,7 +30,7 @@ module.exports = [ 'examples/esbuild/dist/**', 'examples/typescript/dist/**', - 'examples/an-azure-function-app/**', + 'examples/azure-function-app/**', 'lib/opentelemetry-bridge/opentelemetry-core-mini/**', 'test/babel/out.js', 'test/lambda/fixtures/esbuild-bundled-handler/hello.js', diff --git a/examples/an-azure-function-app/Bye/index.js b/examples/an-azure-function-app/Bye/index.js deleted file mode 100644 index f0d0364ce0..0000000000 --- a/examples/an-azure-function-app/Bye/index.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = async function (context, _req) { - const body = JSON.stringify({ good: 'bye' }) - context.res = { - status: 200, - headers: { - 'Content-Type': 'application/json', - 'Content-Length': Buffer.byteLength(body) - }, - body - } -} diff --git a/examples/an-azure-function-app/Hi/function.json b/examples/an-azure-function-app/Hi/function.json deleted file mode 100644 index 91052aaf8a..0000000000 --- a/examples/an-azure-function-app/Hi/function.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "bindings": [ - { - "authLevel": "Anonymous", - "type": "httpTrigger", - "direction": "in", - "name": "req", - "methods": [ - "get", - "post" - ] - }, - { - "type": "http", - "direction": "out", - "name": "res" - } - ] -} \ No newline at end of file diff --git a/examples/an-azure-function-app/Hi/index.js b/examples/an-azure-function-app/Hi/index.js deleted file mode 100644 index 2a50aa6ac0..0000000000 --- a/examples/an-azure-function-app/Hi/index.js +++ /dev/null @@ -1,28 +0,0 @@ -const http = require('http') -const https = require('https') - -module.exports = async function (context, req) { - return new Promise((resolve, reject) => { - // Call the 'Bye' Function in this same Function App... - const url = new URL(req.url) - url.pathname = '/api/Bye' - const proto = (url.protocol === 'https:' ? https : http) - proto.get(url, res => { - res.resume() - res.on('error', reject) - res.on('end', () => { - // ... then respond. - const body = JSON.stringify({ hi: 'there' }) - context.res = { - status: 200, - headers: { - 'Content-Type': 'application/json', - 'Content-Length': Buffer.byteLength(body) - }, - body - } - resolve() - }) - }) - }) -} diff --git a/examples/an-azure-function-app/initapm.js b/examples/an-azure-function-app/initapm.js deleted file mode 100644 index 482b0b1be4..0000000000 --- a/examples/an-azure-function-app/initapm.js +++ /dev/null @@ -1,3 +0,0 @@ -require('elastic-apm-node').start({ - // ... -}) diff --git a/examples/an-azure-function-app/package.json b/examples/an-azure-function-app/package.json deleted file mode 100644 index 275269bd46..0000000000 --- a/examples/an-azure-function-app/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "an-azure-function-app", - "version": "1.0.0", - "description": "An example Azure Function app showing Elastic APM integration for tracing/monitoring", - "private": true, - "main": "initapm.js", - "scripts": { - "start": "func start" - }, - "dependencies": { - "elastic-apm-node": "^3.42.0" - } -} diff --git a/examples/an-azure-function-app/.gitignore b/examples/azure-function-app/.gitignore similarity index 100% rename from examples/an-azure-function-app/.gitignore rename to examples/azure-function-app/.gitignore diff --git a/examples/an-azure-function-app/.npmrc b/examples/azure-function-app/.npmrc similarity index 100% rename from examples/an-azure-function-app/.npmrc rename to examples/azure-function-app/.npmrc diff --git a/examples/azure-function-app/Makefile b/examples/azure-function-app/Makefile new file mode 100644 index 0000000000..cb7b5530b9 --- /dev/null +++ b/examples/azure-function-app/Makefile @@ -0,0 +1,15 @@ +APP_NAME=$(USER)-example-azure-function-app + +.PHONY: print-app-name +print-app-name: + @echo "APP_NAME: $(APP_NAME)" + +.PHONY: publish +publish: + func azure functionapp publish "$(APP_NAME)" + +# Note that the Azure Functions log stream is extremely flaky. Don't expect it +# to reliably be able to show logs from the deployed function app. +.PHONY: logstream +logstream: + func azure functionapp logstream "$(APP_NAME)" diff --git a/examples/an-azure-function-app/README.md b/examples/azure-function-app/README.md similarity index 63% rename from examples/an-azure-function-app/README.md rename to examples/azure-function-app/README.md index e34bd852a7..f6dafbca62 100644 --- a/examples/an-azure-function-app/README.md +++ b/examples/azure-function-app/README.md @@ -1,10 +1,10 @@ -This directory holds a very small Azure Function App implemented in Node.js -and setup to be traced by the Elastic APM agent. The App has two "functions": - -1. `Hi` - an HTTP-triggered function that will call the `Bye` function, then - respond with `{"hi":"there"}`. -2. `Bye` - an HTTP-triggered function that will respond with `{"good":"bye"}`. +This directory holds a simple Azure Function (using v4 of the Node.js +programming model) implemented in Node.js and setup to be traced by the Elastic +APM agent. The App has a single function: +- `Hello`: an HTTP-triggered function that will call worldtimeapi.org to get + the current time in Vancouver and respond with + `{"hello": "world", "current time in Vancouver": "..."}` # Testing locally @@ -13,14 +13,7 @@ and setup to be traced by the Elastic APM agent. The App has two "functions": 2. Install the [Azure Functions Core Tools](https://github.com/Azure/azure-functions-core-tools), which provide a `func` CLI tool for running Azure Functions locally for - development, and for publishing an Function App to Azure. One way to - install is via: - - npm install -g azure-functions-core-tools@4 - - It is recommended that you **not** install it in the local `./node_modules` - folder, because its large install size will get in the way of publishing to - Azure. + development, and for publishing an Function App to Azure. 3. Set environment variable to configure the APM agent, for example: @@ -29,12 +22,12 @@ and setup to be traced by the Elastic APM agent. The App has two "functions": export ELASTIC_APM_SECRET_TOKEN=... ``` -4. `npm start` +4. `npm start` (This calls `func start` to run the Azure Function app locally.) 5. In a separate terminal, call the Azure Function via: ``` - curl -i http://localhost:7071/api/Hi + curl -i http://localhost:7071/api/Hello ``` @@ -52,7 +45,7 @@ and setup to be traced by the Elastic APM agent. The App has two "functions": 4. Call your functions: ``` - curl -i https://.azurewebsites.net/api/hi + curl -i https://.azurewebsites.net/api/hello ``` The result (after a minute for data to propagate) should be a `` service diff --git a/examples/azure-function-app/host.json b/examples/azure-function-app/host.json new file mode 100644 index 0000000000..06d01bdaa9 --- /dev/null +++ b/examples/azure-function-app/host.json @@ -0,0 +1,15 @@ +{ + "version": "2.0", + "logging": { + "applicationInsights": { + "samplingSettings": { + "isEnabled": true, + "excludedTypes": "Request" + } + } + }, + "extensionBundle": { + "id": "Microsoft.Azure.Functions.ExtensionBundle", + "version": "[4.*, 5.0.0)" + } +} diff --git a/examples/azure-function-app/initapm.js b/examples/azure-function-app/initapm.js new file mode 100644 index 0000000000..00a368a32e --- /dev/null +++ b/examples/azure-function-app/initapm.js @@ -0,0 +1 @@ +require('elastic-apm-node').start() diff --git a/examples/an-azure-function-app/local.settings.json b/examples/azure-function-app/local.settings.json similarity index 79% rename from examples/an-azure-function-app/local.settings.json rename to examples/azure-function-app/local.settings.json index 9dcd935ef0..8638bc7ec7 100644 --- a/examples/an-azure-function-app/local.settings.json +++ b/examples/azure-function-app/local.settings.json @@ -5,7 +5,7 @@ "AzureWebJobsStorage": "", "REGION_NAME": "test-region-name", - "WEBSITE_SITE_NAME": "an-azure-function-app", + "WEBSITE_SITE_NAME": "example-azure-function-app", "WEBSITE_INSTANCE_ID": "test-website-instance-id" } } diff --git a/examples/azure-function-app/package.json b/examples/azure-function-app/package.json new file mode 100644 index 0000000000..bd09f8c86d --- /dev/null +++ b/examples/azure-function-app/package.json @@ -0,0 +1,18 @@ +{ + "name": "example-azure-function-app", + "version": "2.0.0", + "description": "An example Azure Function app showing Elastic APM integration for tracing/monitoring", + "private": true, + "main": "{initapm.js,src/functions/*.js}", + "engines": { + "node": ">=20" + }, + "scripts": { + "start": "func start", + "dev:sync-local-apm-agent-changes": "rsync -av ../../lib/ ./node_modules/elastic-apm-node/lib/" + }, + "dependencies": { + "@azure/functions": "^4.0.0", + "elastic-apm-node": "^4.11.0" + } +} diff --git a/examples/azure-function-app/src/functions/Hello.js b/examples/azure-function-app/src/functions/Hello.js new file mode 100644 index 0000000000..5d2bc432f4 --- /dev/null +++ b/examples/azure-function-app/src/functions/Hello.js @@ -0,0 +1,24 @@ +const { app } = require('@azure/functions'); + +app.http('Hello', { + methods: ['GET'], + authLevel: 'anonymous', + handler: async (_request, _context) => { + const url = new URL('http://worldtimeapi.org/api/timezone/America/Vancouver'); + const timeRes = await fetch(url, { signal: AbortSignal.timeout(5000) }); + const timeBody = await timeRes.json(); + + const body = JSON.stringify({ + hello: 'world', + 'current time in Vancouver': timeBody.datetime + }); + return { + status: 200, + headers: { + 'Content-Type': 'application/json', + 'Content-Length': Buffer.byteLength(body) + }, + body + }; + }, +}); diff --git a/lib/instrumentation/azure-functions.js b/lib/instrumentation/azure-functions.js index ea1247bae0..d158a1b8b6 100644 --- a/lib/instrumentation/azure-functions.js +++ b/lib/instrumentation/azure-functions.js @@ -363,30 +363,55 @@ function instrument(agent) { isFirstRun = false; } + // In programming model v3 the InvocationContext includes + // `bindingDefinitions` and `executionContext`. In v4 the structure is a + // little different. + let bindingDefinitions = context.bindingDefinitions; + if (!bindingDefinitions) { + bindingDefinitions = []; + // Input bindings + bindingDefinitions.push({ + name: context?.options?.trigger?.name, + type: context?.options?.trigger?.type, + direction: context?.options?.trigger?.direction, + }); + // Output bindings + bindingDefinitions.push(context?.options?.return); + } + let executionContext = context.executionContext; + if (!executionContext) { + executionContext = { + functionDirectory: '', + functionName: context.functionName, + }; + } + const funcInfo = (hookCtx.hookData.funcInfo = new FunctionInfo( - context.bindingDefinitions, - context.executionContext, + bindingDefinitions, + executionContext, log, )); const triggerType = funcInfo.triggerType; - // Handle trace-context. - // Note: We ignore the `context.traceContext`. By default it is W3C - // trace-context that continues the given traceparent in headers. However, - // we do not injest that span, so would get a broken distributed trace if - // we included it. + // `InvocationContext.traceContext` is broken: it results in sampled=false + // (i.e. traces are discarded) and/or broken traces because it creates an + // internal Span ID in the trace that cannot be ingested. + // See this for full explanation: + // https://github.com/elastic/apm-agent-nodejs/pull/4426#issuecomment-2596922653 let traceparent; let tracestate; - if (triggerType === TRIGGER_HTTP && context.req && context.req.headers) { - traceparent = - context.req.headers.traceparent || - context.req.headers['elastic-apm-traceparent']; + if (triggerType === TRIGGER_HTTP && context?.req?.headers?.traceparent) { + traceparent = context.req.headers.traceparent; tracestate = context.req.headers.tracestate; + log.trace( + { traceparent, tracestate }, + 'azure-functions: get trace-context from HTTP trigger request headers', + ); } const trans = (hookCtx.hookData.trans = ins.startTransaction( // This is the default name. Trigger-specific values are added below. - context.executionContext.functionName, + executionContext.functionName, TRANS_TYPE_FROM_TRIGGER_TYPE[triggerType], { childOf: traceparent, @@ -399,7 +424,7 @@ function instrument(agent) { const accountId = getAzureAccountId(); const resourceGroup = process.env.WEBSITE_RESOURCE_GROUP; const fnAppName = process.env.WEBSITE_SITE_NAME; - const fnName = context.executionContext.functionName; + const fnName = executionContext.functionName; const faasData = { trigger: { type: FAAS_TRIGGER_TYPE_FROM_TRIGGER_TYPE[triggerType], diff --git a/lib/instrumentation/transaction.js b/lib/instrumentation/transaction.js index 5280bee322..feb9d469df 100644 --- a/lib/instrumentation/transaction.js +++ b/lib/instrumentation/transaction.js @@ -91,6 +91,7 @@ function Transaction(agent, name, ...args) { sampled: this.sampled, name: this.name, type: this.type, + traceparent: this.traceparent, }); this._defaultName = name || ''; diff --git a/test/instrumentation/azure-functions/azfunctestutils.js b/test/instrumentation/azure-functions/azfunctestutils.js new file mode 100644 index 0000000000..910cf2c7a6 --- /dev/null +++ b/test/instrumentation/azure-functions/azfunctestutils.js @@ -0,0 +1,139 @@ +/* + * Copyright Elasticsearch B.V. and other contributors where applicable. + * Licensed under the BSD 2-Clause License; you may not use this file except in + * compliance with the BSD 2-Clause License. + */ + +'use strict'; + +const http = require('http'); + +/** + * Wait for the test "func start" to be ready. + * + * This polls the admin endpoint until + * it gets a 200 response, assuming the server is ready by then. + * It times out after ~60s -- so long because startup on Windows CI has been + * found to take a long time (it is downloading 250MB+ in "ExtensionBundle"s). + * + * @param {Test} t - This is only used to `t.comment(...)` with progress. + * @param {Function} cb - Calls `cb(err)` if there was a timeout, `cb()` on + * success. + */ +function waitForServerReady(t, cb) { + let sentinel = 30; + const INTERVAL_MS = 2000; + + const pollForServerReady = () => { + const req = http.get( + 'http://127.0.0.1:7071/admin/functions', + { + agent: false, + timeout: 500, + }, + (res) => { + res.resume(); + res.on('end', () => { + if (res.statusCode !== 200) { + scheduleNextPoll(`statusCode=${res.statusCode}`); + } else { + cb(); + } + }); + }, + ); + req.on('error', (err) => { + scheduleNextPoll(err.message); + }); + }; + + const scheduleNextPoll = (msg) => { + t.comment( + `[sentinel=${sentinel} ${new Date().toISOString()}] wait another 2s for server ready: ${msg}`, + ); + sentinel--; + if (sentinel <= 0) { + cb(new Error('timed out')); + } else { + setTimeout(pollForServerReady, INTERVAL_MS); + } + }; + + pollForServerReady(); +} + +async function makeTestRequest(t, testReq) { + return new Promise((resolve, reject) => { + const reqOpts = testReq.reqOpts; + const url = `http://127.0.0.1:7071${reqOpts.path}`; + t.comment( + `makeTestRequest: "${testReq.testName}" (${reqOpts.method} ${url})`, + ); + const req = http.request( + url, + { + method: reqOpts.method, + }, + (res) => { + const chunks = []; + res.on('data', (chunk) => { + chunks.push(chunk); + }); + res.on('end', () => { + const body = Buffer.concat(chunks); + if (testReq.expectedRes.statusCode) { + t.equal( + res.statusCode, + testReq.expectedRes.statusCode, + `res.statusCode === ${testReq.expectedRes.statusCode}`, + ); + } + if (testReq.expectedRes.headers) { + for (const [k, v] of Object.entries(testReq.expectedRes.headers)) { + if (v instanceof RegExp) { + t.ok( + v.test(res.headers[k]), + `res.headers[${JSON.stringify(k)}] =~ ${v}`, + ); + } else { + t.equal( + res.headers[k], + v, + `res.headers[${JSON.stringify(k)}] === ${JSON.stringify(v)}`, + ); + } + } + } + if (testReq.expectedRes.body) { + if (testReq.expectedRes.body instanceof RegExp) { + t.ok( + testReq.expectedRes.body.test(body), + `body =~ ${testReq.expectedRes.body}`, + ); + } else if (typeof testReq.expectedRes.body === 'string') { + t.equal(body.toString(), testReq.expectedRes.body, 'body'); + } else { + t.fail( + `unsupported type for TEST_REQUESTS[].expectedRes.body: ${typeof testReq + .expectedRes.body}`, + ); + } + } + resolve(); + }); + }, + ); + req.on('error', reject); + req.end(); + }); +} + +function getEventField(e, fieldName) { + return (e.transaction || e.error || e.span)[fieldName]; +} + +module.exports = { + getEventField, + makeTestRequest, + waitForServerReady, +}; diff --git a/test/instrumentation/azure-functions/azure-functions.test.js b/test/instrumentation/azure-functions/azure-functions-v3.test.js similarity index 78% rename from test/instrumentation/azure-functions/azure-functions.test.js rename to test/instrumentation/azure-functions/azure-functions-v3.test.js index 758435bc2d..9c368cade9 100644 --- a/test/instrumentation/azure-functions/azure-functions.test.js +++ b/test/instrumentation/azure-functions/azure-functions-v3.test.js @@ -6,10 +6,11 @@ 'use strict'; +// Test Azure Functions programming model v3. + const assert = require('assert'); const { exec, spawn } = require('child_process'); const fs = require('fs'); -const http = require('http'); const os = require('os'); const path = require('path'); @@ -19,13 +20,20 @@ const treekill = require('tree-kill'); const { MockAPMServer } = require('../../_mock_apm_server'); const { formatForTComment } = require('../../_utils'); - -if (!semver.satisfies(process.version, '>=14.1.0 <19')) { - // The "14.1.0" version is selected to skip testing on Node.js v14.0.0 - // because of the issue described here: - // https://github.com/elastic/apm-agent-nodejs/issues/3279#issuecomment-1532084620 +const { + getEventField, + makeTestRequest, + waitForServerReady, +} = require('./azfunctestutils'); + +// Azure Functions programming model v3 supports node 14.x-20.x: +// https://learn.microsoft.com/en-ca/azure/azure-functions/functions-reference-node?tabs=javascript%2Cwindows%2Cazure-cli&pivots=nodejs-model-v4#supported-versions +// However, let's only test with node 18.x for now. The testing involves +// installing the ridiculously large "azure-functions-core-tools" dep, so it +// isn't worth testing all versions. +if (!semver.satisfies(process.version, '^18.0.1')) { console.log( - `# SKIP Azure Functions runtime ~4 does not support node ${process.version} (https://aka.ms/functions-node-versions)`, + '# SKIP Azure Functions v3 tests, only testing with Node.js v18.latest', ); process.exit(); } else if (os.platform() === 'win32') { @@ -35,130 +43,6 @@ if (!semver.satisfies(process.version, '>=14.1.0 <19')) { process.exit(); } -/** - * Wait for the test "func start" to be ready. - * - * This polls the admin endpoint until - * it gets a 200 response, assuming the server is ready by then. - * It times out after ~60s -- so long because startup on Windows CI has been - * found to take a long time (it is downloading 250MB+ in "ExtensionBundle"s). - * - * @param {Test} t - This is only used to `t.comment(...)` with progress. - * @param {Function} cb - Calls `cb(err)` if there was a timeout, `cb()` on - * success. - */ -function waitForServerReady(t, cb) { - let sentinel = 30; - const INTERVAL_MS = 2000; - - const pollForServerReady = () => { - const req = http.get( - 'http://127.0.0.1:7071/admin/functions', - { - agent: false, - timeout: 500, - }, - (res) => { - res.resume(); - res.on('end', () => { - if (res.statusCode !== 200) { - scheduleNextPoll(`statusCode=${res.statusCode}`); - } else { - cb(); - } - }); - }, - ); - req.on('error', (err) => { - scheduleNextPoll(err.message); - }); - }; - - const scheduleNextPoll = (msg) => { - t.comment( - `[sentinel=${sentinel} ${new Date().toISOString()}] wait another 2s for server ready: ${msg}`, - ); - sentinel--; - if (sentinel <= 0) { - cb(new Error('timed out')); - } else { - setTimeout(pollForServerReady, INTERVAL_MS); - } - }; - - pollForServerReady(); -} - -async function makeTestRequest(t, testReq) { - return new Promise((resolve, reject) => { - const reqOpts = testReq.reqOpts; - const url = `http://127.0.0.1:7071${reqOpts.path}`; - t.comment( - `makeTestRequest: "${testReq.testName}" (${reqOpts.method} ${url})`, - ); - const req = http.request( - url, - { - method: reqOpts.method, - }, - (res) => { - const chunks = []; - res.on('data', (chunk) => { - chunks.push(chunk); - }); - res.on('end', () => { - const body = Buffer.concat(chunks); - if (testReq.expectedRes.statusCode) { - t.equal( - res.statusCode, - testReq.expectedRes.statusCode, - `res.statusCode === ${testReq.expectedRes.statusCode}`, - ); - } - if (testReq.expectedRes.headers) { - for (const [k, v] of Object.entries(testReq.expectedRes.headers)) { - if (v instanceof RegExp) { - t.ok( - v.test(res.headers[k]), - `res.headers[${JSON.stringify(k)}] =~ ${v}`, - ); - } else { - t.equal( - res.headers[k], - v, - `res.headers[${JSON.stringify(k)}] === ${JSON.stringify(v)}`, - ); - } - } - } - if (testReq.expectedRes.body) { - if (testReq.expectedRes.body instanceof RegExp) { - t.ok( - testReq.expectedRes.body.test(body), - `body =~ ${testReq.expectedRes.body}`, - ); - } else if (typeof testReq.expectedRes.body === 'string') { - t.equal(body.toString(), testReq.expectedRes.body, 'body'); - } else { - t.fail( - `unsupported type for TEST_REQUESTS[].expectedRes.body: ${typeof testReq - .expectedRes.body}`, - ); - } - } - resolve(); - }); - }, - ); - req.on('error', reject); - req.end(); - }); -} - -function getEventField(e, fieldName) { - return (e.transaction || e.error || e.span)[fieldName]; -} - /** * Assert that the given `apmEvents` (events that the mock APM server received) * match all the expected APM events in `TEST_REQUESTS`. @@ -168,7 +52,7 @@ function checkExpectedApmEvents(t, apmEvents) { if (apmEvents.length > 0) { const metadata = apmEvents.shift().metadata; t.ok(metadata, 'metadata is first event'); - t.equal(metadata.service.name, 'AJsAzureFnApp', 'metadata.service.name'); + t.equal(metadata.service.name, 'azfunc3', 'metadata.service.name'); t.equal( metadata.service.framework.name, 'Azure Functions', @@ -196,7 +80,7 @@ function checkExpectedApmEvents(t, apmEvents) { ); t.equal( metadata.cloud.instance.name, - 'AJsAzureFnApp', + 'azfunc3', 'metadata.cloud.instance.name', ); t.equal( @@ -256,7 +140,7 @@ function checkExpectedApmEvents(t, apmEvents) { const UUID_RE = /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i; -const fnAppDir = path.join(__dirname, 'fixtures', 'AJsAzureFnApp'); +const fnAppDir = path.join(__dirname, 'fixtures', 'azfunc3'); const funcExe = path.resolve(fnAppDir, 'node_modules/.bin/func') + (os.platform() === 'win32' ? '.cmd' : ''); @@ -277,14 +161,10 @@ var TEST_REQUESTS = [ t.equal(trans.type, 'request', 'transaction.type'); t.equal(trans.outcome, 'success', 'transaction.outcome'); t.equal(trans.result, 'HTTP 2xx', 'transaction.result'); - t.equal( - trans.faas.name, - 'AJsAzureFnApp/HttpFn1', - 'transaction.faas.name', - ); + t.equal(trans.faas.name, 'azfunc3/HttpFn1', 'transaction.faas.name'); t.equal( trans.faas.id, - '/subscriptions/2491fc8e-f7c1-4020-b9c6-78509919fd16/resourceGroups/my-resource-group/providers/Microsoft.Web/sites/AJsAzureFnApp/functions/HttpFn1', + '/subscriptions/2491fc8e-f7c1-4020-b9c6-78509919fd16/resourceGroups/my-resource-group/providers/Microsoft.Web/sites/azfunc3/functions/HttpFn1', 'transaction.faas.id', ); t.equal(trans.faas.trigger.type, 'http', 'transaction.faas.trigger.type'); @@ -332,11 +212,7 @@ var TEST_REQUESTS = [ t.equal(trans.name, 'GET /api/HttpFnError', 'transaction.name'); t.equal(trans.outcome, 'failure', 'transaction.outcome'); t.equal(trans.result, 'HTTP 5xx', 'transaction.result'); - t.equal( - trans.faas.name, - 'AJsAzureFnApp/HttpFnError', - 'transaction.faas.name', - ); + t.equal(trans.faas.name, 'azfunc3/HttpFnError', 'transaction.faas.name'); t.equal(trans.faas.coldstart, false, 'transaction.faas.coldstart'); t.equal( trans.context.request.method, @@ -538,14 +414,10 @@ var TEST_REQUESTS = [ const trans = apmEventsForReq[0].transaction; t.equal(trans.name, 'GET /api/HttpFn1', 'transaction.name'); t.equal(trans.result, 'HTTP 2xx', 'transaction.result'); - t.equal( - trans.faas.name, - 'AJsAzureFnApp/HttpFn1', - 'transaction.faas.name', - ); + t.equal(trans.faas.name, 'azfunc3/HttpFn1', 'transaction.faas.name'); t.equal( trans.faas.id, - '/subscriptions/2491fc8e-f7c1-4020-b9c6-78509919fd16/resourceGroups/my-resource-group/providers/Microsoft.Web/sites/AJsAzureFnApp/functions/HttpFn1', + '/subscriptions/2491fc8e-f7c1-4020-b9c6-78509919fd16/resourceGroups/my-resource-group/providers/Microsoft.Web/sites/azfunc3/functions/HttpFn1', 'transaction.faas.id', ); t.equal( @@ -574,12 +446,12 @@ var TEST_REQUESTS = [ t.equal(trans.result, 'HTTP 2xx', 'transaction.result'); t.equal( trans.faas.name, - 'AJsAzureFnApp/HttpFnRouteTemplate', + 'azfunc3/HttpFnRouteTemplate', 'transaction.faas.name', ); t.equal( trans.faas.id, - '/subscriptions/2491fc8e-f7c1-4020-b9c6-78509919fd16/resourceGroups/my-resource-group/providers/Microsoft.Web/sites/AJsAzureFnApp/functions/HttpFnRouteTemplate', + '/subscriptions/2491fc8e-f7c1-4020-b9c6-78509919fd16/resourceGroups/my-resource-group/providers/Microsoft.Web/sites/azfunc3/functions/HttpFnRouteTemplate', 'transaction.faas.id', ); t.equal( @@ -605,7 +477,7 @@ var TEST_REQUESTS = [ t.equal(apmEventsForReq.length, 4); const t1 = apmEventsForReq[0].transaction; t.equal(t1.name, 'GET /api/HttpFnDistTraceA', 't1.name'); - t.equal(t1.faas.name, 'AJsAzureFnApp/HttpFnDistTraceA', 't1.faas.name'); + t.equal(t1.faas.name, 'azfunc3/HttpFnDistTraceA', 't1.faas.name'); const s1 = apmEventsForReq[1].span; t.equal(s1.name, 'spanA', 's1.name'); t.equal(s1.parent_id, t1.id, 's1 is a child of t1'); @@ -615,7 +487,7 @@ var TEST_REQUESTS = [ t.equal(s2.parent_id, s1.id, 's2 is a child of s1'); const t2 = apmEventsForReq[3].transaction; t.equal(t2.name, 'GET /api/HttpFnDistTraceB', 't2.name'); - t.equal(t2.faas.name, 'AJsAzureFnApp/HttpFnDistTraceB', 't2.faas.name'); + t.equal(t2.faas.name, 'azfunc3/HttpFnDistTraceB', 't2.faas.name'); t.equal(t2.parent_id, s2.id, 't2 is a child of s2'); t.equal( t2.context.request.headers.traceparent, @@ -659,7 +531,7 @@ tape.test( }, ); -tape.test('azure functions', function (suite) { +tape.test('azure functions v3', function (suite) { let apmServer; let apmServerUrl; @@ -673,7 +545,7 @@ tape.test('azure functions', function (suite) { }); let fnAppProc; - suite.test('setup: "func start" for AJsAzureFnApp fixture', (t) => { + suite.test('setup: "func start" for azfunc3 fixture', (t) => { fnAppProc = spawn(funcExe, ['start'], { cwd: fnAppDir, env: Object.assign({}, process.env, { @@ -698,11 +570,11 @@ tape.test('azure functions', function (suite) { // binaries to "$fnAppDir/node_modules/azure-functions-core-tools/...", // which means a local test run on macOS followed by an attempted test run // in Docker will result in a crash: - // node_tests_1 | # ["func start" stderr] /app/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/node_modules/azure-functions-core-tools/bin/func: 1: Syntax error: "(" unexpected + // node_tests_1 | # ["func start" stderr] /app/test/instrumentation/azure-functions/fixtures/azfunc3/node_modules/azure-functions-core-tools/bin/func: 1: Syntax error: "(" unexpected // node_tests_1 | not ok 2 "func start" failed early: code=2 // For now the workaround is to manually clean that tree before running // tests on a separate OS: - // rm -rf test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/node_modules + // rm -rf test/instrumentation/azure-functions/fixtures/azfunc3/node_modules t.fail(`"func start" failed early: code=${code}`); fnAppProc = null; clearTimeout(earlyCloseTimer); diff --git a/test/instrumentation/azure-functions/azure-functions-v4.test.js b/test/instrumentation/azure-functions/azure-functions-v4.test.js new file mode 100644 index 0000000000..80977f2505 --- /dev/null +++ b/test/instrumentation/azure-functions/azure-functions-v4.test.js @@ -0,0 +1,341 @@ +/* + * Copyright Elasticsearch B.V. and other contributors where applicable. + * Licensed under the BSD 2-Clause License; you may not use this file except in + * compliance with the BSD 2-Clause License. + */ + +'use strict'; + +// Test Azure Functions programming model v4. + +const assert = require('assert'); +const { exec, spawn } = require('child_process'); +const fs = require('fs'); +const os = require('os'); +const path = require('path'); + +const semver = require('semver'); +const tape = require('tape'); +const treekill = require('tree-kill'); + +const { MockAPMServer } = require('../../_mock_apm_server'); +const { formatForTComment } = require('../../_utils'); +const { + getEventField, + makeTestRequest, + waitForServerReady, +} = require('./azfunctestutils'); + +// Azure Functions programming model v4 supports node 18.x-20.x: +// https://learn.microsoft.com/en-ca/azure/azure-functions/functions-reference-node?tabs=javascript%2Cwindows%2Cazure-cli&pivots=nodejs-model-v4#supported-versions +// However, let's only test with node 20.x for now. The testing involves +// installing the ridiculously large "azure-functions-core-tools" dep, so it +// isn't worth testing all versions. +if (!semver.satisfies(process.version, '^20.0.1')) { + console.log( + '# SKIP Azure Functions v4 tests, only testing with Node.js v20.latest', + ); + process.exit(); +} else if (os.platform() === 'win32') { + console.log( + '# SKIP Azure Functions tests on Windows because of flaky azure-functions-core-tools install (see https://github.com/elastic/apm-agent-nodejs/issues/3107)', + ); + process.exit(); +} + +/** + * Assert that the given `apmEvents` (events that the mock APM server received) + * match all the expected APM events in `TEST_REQUESTS`. + */ +function checkExpectedApmEvents(t, apmEvents) { + // metadata + if (apmEvents.length > 0) { + const metadata = apmEvents.shift().metadata; + t.ok(metadata, 'metadata is first event'); + t.equal(metadata.service.name, 'azfunc4', 'metadata.service.name'); + t.equal( + metadata.service.framework.name, + 'Azure Functions', + 'metadata.service.framework.name', + ); + t.equal( + metadata.service.framework.version, + '~4', + 'metadata.service.framework.version', + ); + t.equal( + metadata.service.runtime.name, + 'node', + 'metadata.service.runtime.name', + ); + t.equal( + metadata.service.node.configured_name, + 'test-website-instance-id', + 'metadata.service.node.configured_name', + ); + t.equal( + metadata.cloud.account.id, + '2491fc8e-f7c1-4020-b9c6-78509919fd16', + 'metadata.cloud.account.id', + ); + t.equal( + metadata.cloud.instance.name, + 'azfunc4', + 'metadata.cloud.instance.name', + ); + t.equal( + metadata.cloud.project.name, + 'my-resource-group', + 'metadata.cloud.project.name', + ); + t.equal(metadata.cloud.provider, 'azure', 'metadata.cloud.provider'); + t.equal(metadata.cloud.region, 'test-region-name', 'metadata.cloud.region'); + t.equal( + metadata.cloud.service.name, + 'functions', + 'metadata.cloud.service.name', + ); + } + + // Filter out any metadata from separate requests, and metricsets which we + // aren't testing. + apmEvents = apmEvents.filter((e) => !e.metadata).filter((e) => !e.metricset); + + // Sort all the remaining APM events and check expectations from TEST_REQUESTS. + apmEvents = apmEvents.sort((a, b) => { + return getEventField(a, 'timestamp') < getEventField(b, 'timestamp') + ? -1 + : 1; + }); + TEST_REQUESTS.forEach((testReq) => { + t.comment(`check APM events for "${testReq.testName}"`); + // Collect all events for this transaction's trace_id, and pass that to + // the `checkApmEvents` function for this request. + let apmEventsForReq = []; + if (apmEvents.length > 0) { + assert( + apmEvents[0].transaction, + `next APM event is a transaction: ${JSON.stringify(apmEvents[0])}`, + ); + const traceId = apmEvents[0].transaction.trace_id; + apmEventsForReq = apmEvents.filter( + (e) => getEventField(e, 'trace_id') === traceId, + ); + apmEvents = apmEvents.filter( + (e) => getEventField(e, 'trace_id') !== traceId, + ); + } + testReq.checkApmEvents(t, apmEventsForReq); + }); + + t.equal( + apmEvents.length, + 0, + 'no additional unexpected APM server events: ' + JSON.stringify(apmEvents), + ); +} + +// ---- tests + +const UUID_RE = + /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i; + +const fnAppDir = path.join(__dirname, 'fixtures', 'azfunc4'); +const funcExe = + path.resolve(fnAppDir, 'node_modules/.bin/func') + + (os.platform() === 'win32' ? '.cmd' : ''); + +var TEST_REQUESTS = [ + { + testName: 'HttpExample', + reqOpts: { method: 'GET', path: '/api/HttpExample' }, + expectedRes: { + statusCode: 200, // the Azure Functions default + headers: { myheadername: 'MyHeaderValue' }, + body: 'HttpExample body', + }, + checkApmEvents: (t, apmEventsForReq) => { + t.equal(apmEventsForReq.length, 1); + const trans = apmEventsForReq[0].transaction; + t.equal(trans.name, 'GET /api/HttpExample', 'transaction.name'); + t.equal(trans.type, 'request', 'transaction.type'); + t.equal(trans.outcome, 'success', 'transaction.outcome'); + t.equal(trans.result, 'HTTP 2xx', 'transaction.result'); + t.equal(trans.faas.name, 'azfunc4/HttpExample', 'transaction.faas.name'); + t.equal( + trans.faas.id, + '/subscriptions/2491fc8e-f7c1-4020-b9c6-78509919fd16/resourceGroups/my-resource-group/providers/Microsoft.Web/sites/azfunc4/functions/HttpExample', + 'transaction.faas.id', + ); + t.equal(trans.faas.trigger.type, 'http', 'transaction.faas.trigger.type'); + t.ok( + UUID_RE.test(trans.faas.execution), + 'transaction.faas.execution ' + trans.faas.execution, + ); + t.equal(trans.faas.coldstart, true, 'transaction.faas.coldstart'); + t.equal( + trans.context.request.method, + 'GET', + 'transaction.context.request.method', + ); + t.equal( + trans.context.request.url.full, + 'http://127.0.0.1:7071/api/HttpExample', + 'transaction.context.request.url.full', + ); + t.ok( + trans.context.request.headers, + 'transaction.context.request.headers', + ); + t.equal( + trans.context.response.status_code, + 200, + 'transaction.context.response.status_code', + ); + t.equal( + trans.context.response.headers.MyHeaderName, + 'MyHeaderValue', + 'transaction.context.response.headers.MyHeaderName', + ); + }, + }, + // TODO: test more of the cases that are covered in azure-functions-v3.test.js +]; + +// We need to `npm ci` for a first test run. +tape.test( + `setup: npm ci (in ${fnAppDir})`, + { skip: fs.existsSync(funcExe) }, + (t) => { + const startTime = Date.now(); + exec( + 'npm ci', + { + cwd: fnAppDir, + }, + function (err, stdout, stderr) { + t.error( + err, + `"npm ci" succeeded (took ${(Date.now() - startTime) / 1000}s)`, + ); + if (err) { + t.comment( + `$ npm ci\n-- stdout --\n${stdout}\n-- stderr --\n${stderr}\n--`, + ); + } + t.end(); + }, + ); + }, +); + +tape.test('azure functions v4', function (suite) { + let apmServer; + let apmServerUrl; + + suite.test('setup', function (t) { + apmServer = new MockAPMServer(); + apmServer.start(function (serverUrl) { + apmServerUrl = serverUrl; + t.comment('mock APM apmServerUrl: ' + apmServerUrl); + t.end(); + }); + }); + + let fnAppProc; + suite.test('setup: "func start" for azfunc4 fixture', (t) => { + fnAppProc = spawn(funcExe, ['start'], { + cwd: fnAppDir, + env: Object.assign({}, process.env, { + ELASTIC_APM_SERVER_URL: apmServerUrl, + ELASTIC_APM_API_REQUEST_TIME: '2s', + }), + }); + fnAppProc.on('error', (err) => { + t.error(err, 'no error from "func start"'); + }); + fnAppProc.stdout.on('data', (data) => { + t.comment(`["func start" stdout] ${formatForTComment(data)}`); + }); + fnAppProc.stderr.on('data', (data) => { + t.comment(`["func start" stderr] ${formatForTComment(data)}`); + }); + + // Allow some time for an early fail of `func start`, e.g. if there is + // already a user of port 7071... + const onEarlyClose = (code) => { + // Warning/Limitation: The 'npm ci' above installs platform-specific + // binaries to "$fnAppDir/node_modules/azure-functions-core-tools/...", + // which means a local test run on macOS followed by an attempted test run + // in Docker will result in a crash: + // node_tests_1 | # ["func start" stderr] /app/test/instrumentation/azure-functions/fixtures/azfunc3/node_modules/azure-functions-core-tools/bin/func: 1: Syntax error: "(" unexpected + // node_tests_1 | not ok 2 "func start" failed early: code=2 + // For now the workaround is to manually clean that tree before running + // tests on a separate OS: + // rm -rf test/instrumentation/azure-functions/fixtures/azfunc3/node_modules + t.fail(`"func start" failed early: code=${code}`); + fnAppProc = null; + clearTimeout(earlyCloseTimer); + t.end(); + }; + fnAppProc.on('close', onEarlyClose); + const earlyCloseTimer = setTimeout(() => { + fnAppProc.removeListener('close', onEarlyClose); + + // ... then wait for the server to be ready. + waitForServerReady(t, (waitErr) => { + if (waitErr) { + t.fail( + `error waiting for "func start" to be ready: ${waitErr.message}`, + ); + treekill(fnAppProc.pid, 'SIGKILL'); + fnAppProc = null; + } else { + t.comment('"func start" is ready'); + } + t.end(); + }); + }, 1000); + }); + + suite.test('make requests', async (t) => { + if (!fnAppProc) { + t.skip('there is no fnAppProc'); + t.end(); + return; + } + + apmServer.clear(); + for (let i = 0; i < TEST_REQUESTS.length; i++) { + await makeTestRequest(t, TEST_REQUESTS[i]); + } + + t.end(); + }); + + suite.test('check all APM events', (t) => { + if (!fnAppProc) { + t.skip('there is no fnAppProc'); + t.end(); + return; + } + + // To ensure we get all the trace data from the instrumented function app + // server, we wait 2x the `apiRequestTime` (set above) before stopping it. + fnAppProc.on('close', (_code) => { + checkExpectedApmEvents(t, apmServer.events); + t.end(); + }); + t.comment('wait 4s for trace data to be sent before closing "func start"'); + setTimeout(() => { + treekill(fnAppProc.pid, 'SIGKILL'); + }, 4000); // 2x ELASTIC_APM_API_REQUEST_TIME set above + }); + + suite.test('teardown', function (t) { + apmServer.close(); + t.end(); + }); + + suite.end(); +}); diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnError/function.json b/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnError/function.json deleted file mode 100644 index 91052aaf8a..0000000000 --- a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnError/function.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "bindings": [ - { - "authLevel": "Anonymous", - "type": "httpTrigger", - "direction": "in", - "name": "req", - "methods": [ - "get", - "post" - ] - }, - { - "type": "http", - "direction": "out", - "name": "res" - } - ] -} \ No newline at end of file diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/README.md b/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/README.md deleted file mode 100644 index e9264594af..0000000000 --- a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/README.md +++ /dev/null @@ -1,12 +0,0 @@ -A Node.js JavaScript Azure function app to be used for testing of -elastic-apm-node. - -# Notes on how this was created - -- `func init AJsAzureFnApp` -- Remove "azure-functions-core-tools" devDep and move to top-level to share - between possibly many fixtures. -- An HTTP-triggered function: `func new --name HttpFn1 --template "HTTP trigger" --authlevel "anonymous"` -- ... - - diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/.gitignore b/test/instrumentation/azure-functions/fixtures/azfunc3/.gitignore similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/.gitignore rename to test/instrumentation/azure-functions/fixtures/azfunc3/.gitignore diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFn1/function.json b/test/instrumentation/azure-functions/fixtures/azfunc3/HttpFn1/function.json similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFn1/function.json rename to test/instrumentation/azure-functions/fixtures/azfunc3/HttpFn1/function.json diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFn1/index.js b/test/instrumentation/azure-functions/fixtures/azfunc3/HttpFn1/index.js similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFn1/index.js rename to test/instrumentation/azure-functions/fixtures/azfunc3/HttpFn1/index.js diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnBindingsRes/function.json b/test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnBindingsRes/function.json similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnBindingsRes/function.json rename to test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnBindingsRes/function.json diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnBindingsRes/index.js b/test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnBindingsRes/index.js similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnBindingsRes/index.js rename to test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnBindingsRes/index.js diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnContextDone/function.json b/test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnContextDone/function.json similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnContextDone/function.json rename to test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnContextDone/function.json diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnContextDone/index.js b/test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnContextDone/index.js similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnContextDone/index.js rename to test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnContextDone/index.js diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnDistTraceA/function.json b/test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnDistTraceA/function.json similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnDistTraceA/function.json rename to test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnDistTraceA/function.json diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnDistTraceA/index.js b/test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnDistTraceA/index.js similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnDistTraceA/index.js rename to test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnDistTraceA/index.js diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnDistTraceB/function.json b/test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnDistTraceB/function.json similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnDistTraceB/function.json rename to test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnDistTraceB/function.json diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnDistTraceB/index.js b/test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnDistTraceB/index.js similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnDistTraceB/index.js rename to test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnDistTraceB/index.js diff --git a/examples/an-azure-function-app/Bye/function.json b/test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnError/function.json similarity index 100% rename from examples/an-azure-function-app/Bye/function.json rename to test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnError/function.json diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnError/index.js b/test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnError/index.js similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnError/index.js rename to test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnError/index.js diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnReturnContext/function.json b/test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnReturnContext/function.json similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnReturnContext/function.json rename to test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnReturnContext/function.json diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnReturnContext/index.js b/test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnReturnContext/index.js similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnReturnContext/index.js rename to test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnReturnContext/index.js diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnReturnObject/function.json b/test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnReturnObject/function.json similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnReturnObject/function.json rename to test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnReturnObject/function.json diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnReturnObject/index.js b/test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnReturnObject/index.js similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnReturnObject/index.js rename to test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnReturnObject/index.js diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnReturnResponseData/function.json b/test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnReturnResponseData/function.json similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnReturnResponseData/function.json rename to test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnReturnResponseData/function.json diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnReturnResponseData/index.js b/test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnReturnResponseData/index.js similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnReturnResponseData/index.js rename to test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnReturnResponseData/index.js diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnReturnString/function.json b/test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnReturnString/function.json similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnReturnString/function.json rename to test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnReturnString/function.json diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnReturnString/index.js b/test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnReturnString/index.js similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnReturnString/index.js rename to test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnReturnString/index.js diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnRouteTemplate/function.json b/test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnRouteTemplate/function.json similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnRouteTemplate/function.json rename to test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnRouteTemplate/function.json diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnRouteTemplate/index.js b/test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnRouteTemplate/index.js similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/HttpFnRouteTemplate/index.js rename to test/instrumentation/azure-functions/fixtures/azfunc3/HttpFnRouteTemplate/index.js diff --git a/test/instrumentation/azure-functions/fixtures/azfunc3/README.md b/test/instrumentation/azure-functions/fixtures/azfunc3/README.md new file mode 100644 index 0000000000..9e3ea2e8ed --- /dev/null +++ b/test/instrumentation/azure-functions/fixtures/azfunc3/README.md @@ -0,0 +1,3 @@ +A Node.js Azure Functions app, using **version 3** of the Node.js +programming model. See: +https://learn.microsoft.com/en-ca/azure/azure-functions/functions-node-upgrade-v4 diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/host.json b/test/instrumentation/azure-functions/fixtures/azfunc3/host.json similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/host.json rename to test/instrumentation/azure-functions/fixtures/azfunc3/host.json diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/initapm.js b/test/instrumentation/azure-functions/fixtures/azfunc3/initapm.js similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/initapm.js rename to test/instrumentation/azure-functions/fixtures/azfunc3/initapm.js diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/local.settings.json b/test/instrumentation/azure-functions/fixtures/azfunc3/local.settings.json similarity index 92% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/local.settings.json rename to test/instrumentation/azure-functions/fixtures/azfunc3/local.settings.json index 51058f07a5..8910ca349e 100644 --- a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/local.settings.json +++ b/test/instrumentation/azure-functions/fixtures/azfunc3/local.settings.json @@ -7,7 +7,7 @@ "WEBSITE_NODE_DEFAULT_VERSION": "~16", "FUNCTIONS_EXTENSION_VERSION": "~4", - "WEBSITE_SITE_NAME": "AJsAzureFnApp", + "WEBSITE_SITE_NAME": "azfunc3", "WEBSITE_OWNER_NAME": "2491fc8e-f7c1-4020-b9c6-78509919fd16+my-resource-group-ARegionShortNamewebspace", "WEBSITE_RESOURCE_GROUP": "my-resource-group", "WEBSITE_INSTANCE_ID": "test-website-instance-id", diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/package-lock.json b/test/instrumentation/azure-functions/fixtures/azfunc3/package-lock.json similarity index 99% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/package-lock.json rename to test/instrumentation/azure-functions/fixtures/azfunc3/package-lock.json index c2b5968f99..786aa2cee4 100644 --- a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/package-lock.json +++ b/test/instrumentation/azure-functions/fixtures/azfunc3/package-lock.json @@ -1,5 +1,5 @@ { - "name": "AJsAzureFnApp", + "name": "azfunc3", "version": "1.0.0", "lockfileVersion": 2, "requires": true, diff --git a/test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/package.json b/test/instrumentation/azure-functions/fixtures/azfunc3/package.json similarity index 100% rename from test/instrumentation/azure-functions/fixtures/AJsAzureFnApp/package.json rename to test/instrumentation/azure-functions/fixtures/azfunc3/package.json diff --git a/test/instrumentation/azure-functions/fixtures/azfunc4/.funcignore b/test/instrumentation/azure-functions/fixtures/azfunc4/.funcignore new file mode 100644 index 0000000000..17bd0f697c --- /dev/null +++ b/test/instrumentation/azure-functions/fixtures/azfunc4/.funcignore @@ -0,0 +1,10 @@ +*.js.map +*.ts +.git* +.vscode +local.settings.json +test +getting_started.md +node_modules/@types/ +node_modules/azure-functions-core-tools/ +node_modules/typescript/ \ No newline at end of file diff --git a/test/instrumentation/azure-functions/fixtures/azfunc4/.npmrc b/test/instrumentation/azure-functions/fixtures/azfunc4/.npmrc new file mode 100644 index 0000000000..4eae7876ff --- /dev/null +++ b/test/instrumentation/azure-functions/fixtures/azfunc4/.npmrc @@ -0,0 +1 @@ +lockfile-version=3 diff --git a/test/instrumentation/azure-functions/fixtures/azfunc4/README.md b/test/instrumentation/azure-functions/fixtures/azfunc4/README.md new file mode 100644 index 0000000000..1da6020a3a --- /dev/null +++ b/test/instrumentation/azure-functions/fixtures/azfunc4/README.md @@ -0,0 +1,3 @@ +A Node.js Azure Functions app, using **version 4** of the Node.js +programming model. See: +https://learn.microsoft.com/en-ca/azure/azure-functions/functions-node-upgrade-v4 diff --git a/examples/an-azure-function-app/host.json b/test/instrumentation/azure-functions/fixtures/azfunc4/host.json similarity index 89% rename from examples/an-azure-function-app/host.json rename to test/instrumentation/azure-functions/fixtures/azfunc4/host.json index fd4bee790b..9df913614d 100644 --- a/examples/an-azure-function-app/host.json +++ b/test/instrumentation/azure-functions/fixtures/azfunc4/host.json @@ -10,6 +10,6 @@ }, "extensionBundle": { "id": "Microsoft.Azure.Functions.ExtensionBundle", - "version": "[3.*, 4.0.0)" + "version": "[4.*, 5.0.0)" } } \ No newline at end of file diff --git a/test/instrumentation/azure-functions/fixtures/azfunc4/initapm.js b/test/instrumentation/azure-functions/fixtures/azfunc4/initapm.js new file mode 100644 index 0000000000..db2f85666c --- /dev/null +++ b/test/instrumentation/azure-functions/fixtures/azfunc4/initapm.js @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and other contributors where applicable. + * Licensed under the BSD 2-Clause License; you may not use this file except in + * compliance with the BSD 2-Clause License. + */ + +// For the normal use case an "initapm.js" would look like: +// module.exports = require('elastic-apm-node').start(/* { ... } */) + +module.exports = require('../../../../../').start(); diff --git a/test/instrumentation/azure-functions/fixtures/azfunc4/local.settings.json b/test/instrumentation/azure-functions/fixtures/azfunc4/local.settings.json new file mode 100644 index 0000000000..574eb48063 --- /dev/null +++ b/test/instrumentation/azure-functions/fixtures/azfunc4/local.settings.json @@ -0,0 +1,14 @@ +{ + "IsEncrypted": false, + "Values": { + "FUNCTIONS_WORKER_RUNTIME": "node", + "AzureWebJobsStorage": "", + + "FUNCTIONS_EXTENSION_VERSION": "~4", + "WEBSITE_SITE_NAME": "azfunc4", + "WEBSITE_OWNER_NAME": "2491fc8e-f7c1-4020-b9c6-78509919fd16+my-resource-group-ARegionShortNamewebspace", + "WEBSITE_RESOURCE_GROUP": "my-resource-group", + "WEBSITE_INSTANCE_ID": "test-website-instance-id", + "REGION_NAME": "test-region-name" + } +} diff --git a/test/instrumentation/azure-functions/fixtures/azfunc4/package-lock.json b/test/instrumentation/azure-functions/fixtures/azfunc4/package-lock.json new file mode 100644 index 0000000000..e78727a8d2 --- /dev/null +++ b/test/instrumentation/azure-functions/fixtures/azfunc4/package-lock.json @@ -0,0 +1,426 @@ +{ + "name": "azfunc4", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "version": "1.0.0", + "dependencies": { + "@azure/functions": "^4.0.0", + "azure-functions-core-tools": "^4.0.6821" + } + }, + "node_modules/@azure/functions": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@azure/functions/-/functions-4.6.0.tgz", + "integrity": "sha512-vGq9jXlgrJ3KaI8bepgfpk26zVY8vFZsQukF85qjjKTAR90eFOOBNaa+mc/0ViDY2lcdrU2fL/o1pQyZUtTDsw==", + "dependencies": { + "cookie": "^0.7.0", + "long": "^4.0.0", + "undici": "^5.13.0" + }, + "engines": { + "node": ">=18.0" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "engines": { + "node": ">=14" + } + }, + "node_modules/azure-functions-core-tools": { + "version": "4.0.6821", + "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.6821.tgz", + "integrity": "sha512-D+VcQKPk+aVk9WRO56zlkq9xmeO+kxixDIMEIH2tG9OSSSxmioNOdjkpEnZuUEUdv6PPFn9vybcLhGCXL4Xftg==", + "hasInstallScript": true, + "hasShrinkwrap": true, + "os": [ + "win32", + "darwin", + "linux" + ], + "dependencies": { + "chalk": "3.0.0", + "extract-zip": "^2.0.1", + "https-proxy-agent": "5.0.1", + "progress": "2.0.3", + "rimraf": "4.4.1" + }, + "bin": { + "azfun": "lib/main.js", + "azurefunctions": "lib/main.js", + "func": "lib/main.js" + }, + "engines": { + "node": ">=6.9.1" + } + }, + "node_modules/azure-functions-core-tools/node_modules/@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" + }, + "node_modules/azure-functions-core-tools/node_modules/@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", + "optional": true + }, + "node_modules/azure-functions-core-tools/node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/azure-functions-core-tools/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/azure-functions-core-tools/node_modules/ansi-styles": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.0.tgz", + "integrity": "sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg==", + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/azure-functions-core-tools/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/azure-functions-core-tools/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/azure-functions-core-tools/node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "engines": { + "node": "*" + } + }, + "node_modules/azure-functions-core-tools/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/azure-functions-core-tools/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/azure-functions-core-tools/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/azure-functions-core-tools/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/azure-functions-core-tools/node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/azure-functions-core-tools/node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/azure-functions-core-tools/node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/azure-functions-core-tools/node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/azure-functions-core-tools/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/azure-functions-core-tools/node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/azure-functions-core-tools/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/azure-functions-core-tools/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/azure-functions-core-tools/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/azure-functions-core-tools/node_modules/minimatch": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/azure-functions-core-tools/node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/azure-functions-core-tools/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/azure-functions-core-tools/node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/azure-functions-core-tools/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/azure-functions-core-tools/node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/azure-functions-core-tools/node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, + "node_modules/azure-functions-core-tools/node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/azure-functions-core-tools/node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/azure-functions-core-tools/node_modules/rimraf": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", + "license": "ISC", + "dependencies": { + "glob": "^9.2.0" + }, + "bin": { + "rimraf": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/azure-functions-core-tools/node_modules/supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/azure-functions-core-tools/node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/azure-functions-core-tools/node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, + "node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + } + } +} diff --git a/test/instrumentation/azure-functions/fixtures/azfunc4/package.json b/test/instrumentation/azure-functions/fixtures/azfunc4/package.json new file mode 100644 index 0000000000..4f755c02b7 --- /dev/null +++ b/test/instrumentation/azure-functions/fixtures/azfunc4/package.json @@ -0,0 +1,13 @@ +{ + "name": "", + "version": "1.0.0", + "description": "", + "main": "{initapm.js,src/functions/*.js}", + "scripts": { + "start": "func start" + }, + "dependencies": { + "@azure/functions": "^4.0.0", + "azure-functions-core-tools": "^4.0.6821" + } +} diff --git a/test/instrumentation/azure-functions/fixtures/azfunc4/src/functions/HttpExample.js b/test/instrumentation/azure-functions/fixtures/azfunc4/src/functions/HttpExample.js new file mode 100644 index 0000000000..4b85e0f3f3 --- /dev/null +++ b/test/instrumentation/azure-functions/fixtures/azfunc4/src/functions/HttpExample.js @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and other contributors where applicable. + * Licensed under the BSD 2-Clause License; you may not use this file except in + * compliance with the BSD 2-Clause License. + */ + +const { app } = require('@azure/functions'); + +app.http('HttpExample', { + methods: ['GET', 'POST'], + authLevel: 'anonymous', + handler: async (_request, _context) => { + return { + body: 'HttpExample body', + headers: { + MyHeaderName: 'MyHeaderValue', + }, + }; + }, +}); From 5c6c35ba885898c3242d7e4c3e4bbfeba1e649bd Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Mon, 20 Jan 2025 09:59:30 -0800 Subject: [PATCH 274/396] release 4.11.0 (#4432) --- CHANGELOG.asciidoc | 8 ++------ docs/esm.asciidoc | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index fdbc45e701..6d415e6393 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -33,10 +33,8 @@ Notes: See the <> guide. -==== Unreleased - -[float] -===== Breaking changes +[[release-notes-4.11.0]] +==== 4.11.0 - 2025/01/20 [float] ===== Features @@ -51,8 +49,6 @@ See the <> guide. `@aws-sdk/client-sns` for versions 3.723.0 and later. Internally the AWS SDK clients updated to `@smithy/smithy-client@4`. ({pull}4398[#4398]) -[float] -===== Chores [[release-notes-4.10.0]] ==== 4.10.0 - 2024/12/24 diff --git a/docs/esm.asciidoc b/docs/esm.asciidoc index d984b3881e..32ca0c8f36 100644 --- a/docs/esm.asciidoc +++ b/docs/esm.asciidoc @@ -36,7 +36,7 @@ when invoked as follows: export ELASTIC_APM_SERVER_URL='https://...apm...cloud.es.io:443' export ELASTIC_APM_SECRET_TOKEN='...' node -r elastic-apm-node/start.js \ - --experimental-loader=elastic-apm-node/loader.mjs' \ + --experimental-loader=elastic-apm-node/loader.mjs \ node server.mjs ---- diff --git a/package-lock.json b/package-lock.json index ba2bcda101..f33942b7ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "elastic-apm-node", - "version": "4.10.0", + "version": "4.11.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "elastic-apm-node", - "version": "4.10.0", + "version": "4.11.0", "license": "BSD-2-Clause", "dependencies": { "@elastic/ecs-pino-format": "^1.5.0", diff --git a/package.json b/package.json index 00cdb8ce35..794fefe389 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "elastic-apm-node", - "version": "4.10.0", + "version": "4.11.0", "description": "The official Elastic APM agent for Node.js", "type": "commonjs", "main": "index.js", From 64674cf8c041d412684e19624d09d0adc8a40181 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 13:42:30 -0800 Subject: [PATCH 275/396] chore(deps-dev): bump azure-functions-core-tools (#4431) --- .../fixtures/azfunc3/package-lock.json | 296 ++++++++++-------- 1 file changed, 165 insertions(+), 131 deletions(-) diff --git a/test/instrumentation/azure-functions/fixtures/azfunc3/package-lock.json b/test/instrumentation/azure-functions/fixtures/azfunc3/package-lock.json index 786aa2cee4..845b57e4e5 100644 --- a/test/instrumentation/azure-functions/fixtures/azfunc3/package-lock.json +++ b/test/instrumentation/azure-functions/fixtures/azfunc3/package-lock.json @@ -11,12 +11,13 @@ } }, "node_modules/azure-functions-core-tools": { - "version": "4.0.6543", - "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.6543.tgz", - "integrity": "sha512-YWbtgGWghgtFc4jZ6+Mrqnt88hsLIlbTBJz0SpkeZ4xTUqTFrlxj8n+tw//0vzIMYcC89T3zk+s3DFGawSV2gA==", + "version": "4.0.6821", + "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.6821.tgz", + "integrity": "sha512-D+VcQKPk+aVk9WRO56zlkq9xmeO+kxixDIMEIH2tG9OSSSxmioNOdjkpEnZuUEUdv6PPFn9vybcLhGCXL4Xftg==", "dev": true, "hasInstallScript": true, "hasShrinkwrap": true, + "license": "MIT", "os": [ "win32", "darwin", @@ -87,19 +88,20 @@ } }, "node_modules/azure-functions-core-tools/node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" }, "node_modules/azure-functions-core-tools/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/azure-functions-core-tools/node_modules/buffer-crc32": { @@ -142,20 +144,22 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/azure-functions-core-tools/node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, "node_modules/azure-functions-core-tools/node_modules/debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/azure-functions-core-tools/node_modules/end-of-stream": { @@ -199,8 +203,9 @@ "node_modules/azure-functions-core-tools/node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" }, "node_modules/azure-functions-core-tools/node_modules/get-stream": { "version": "5.2.0", @@ -218,20 +223,19 @@ } }, "node_modules/azure-functions-core-tools/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -247,10 +251,11 @@ } }, "node_modules/azure-functions-core-tools/node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -259,39 +264,45 @@ "node": ">= 6" } }, - "node_modules/azure-functions-core-tools/node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "node_modules/azure-functions-core-tools/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/azure-functions-core-tools/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "license": "ISC" }, "node_modules/azure-functions-core-tools/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", "dev": true, + "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/azure-functions-core-tools/node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" } }, "node_modules/azure-functions-core-tools/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, "node_modules/azure-functions-core-tools/node_modules/once": { "version": "1.4.0", @@ -302,13 +313,31 @@ "wrappy": "1" } }, - "node_modules/azure-functions-core-tools/node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "node_modules/azure-functions-core-tools/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/azure-functions-core-tools/node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" } }, "node_modules/azure-functions-core-tools/node_modules/pend": { @@ -337,15 +366,19 @@ } }, "node_modules/azure-functions-core-tools/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", "dev": true, + "license": "ISC", "dependencies": { - "glob": "^7.1.3" + "glob": "^9.2.0" }, "bin": { - "rimraf": "bin.js" + "rimraf": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=14" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -382,9 +415,9 @@ }, "dependencies": { "azure-functions-core-tools": { - "version": "4.0.6543", - "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.6543.tgz", - "integrity": "sha512-YWbtgGWghgtFc4jZ6+Mrqnt88hsLIlbTBJz0SpkeZ4xTUqTFrlxj8n+tw//0vzIMYcC89T3zk+s3DFGawSV2gA==", + "version": "4.0.6821", + "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.6821.tgz", + "integrity": "sha512-D+VcQKPk+aVk9WRO56zlkq9xmeO+kxixDIMEIH2tG9OSSSxmioNOdjkpEnZuUEUdv6PPFn9vybcLhGCXL4Xftg==", "dev": true, "requires": { "chalk": "3.0.0", @@ -437,19 +470,18 @@ } }, "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "buffer-crc32": { @@ -483,19 +515,13 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "^2.1.3" } }, "end-of-stream": { @@ -531,7 +557,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, "get-stream": { @@ -544,17 +570,15 @@ } }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" } }, "has-flag": { @@ -564,43 +588,40 @@ "dev": true }, "https-proxy-agent": { - "version": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "requires": { "agent-base": "6", "debug": "4" } }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true }, "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", + "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" } }, + "minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true + }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "once": { @@ -612,11 +633,23 @@ "wrappy": "1" } }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "requires": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true + } + } }, "pend": { "version": "1.2.0", @@ -641,11 +674,12 @@ } }, "rimraf": { - "version": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", + "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", "dev": true, "requires": { - "glob": "^7.1.3" + "glob": "^9.2.0" } }, "supports-color": { From 7802d8d2dc9fb132ec2f244214f3d8efa7e5157e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Jan 2025 09:51:51 +0100 Subject: [PATCH 276/396] chore(deps-dev): bump the eslint group across 1 directory with 2 updates (#4428) - Updates `eslint-config-prettier` from 9.1.0 to 10.0.1 - Updates `eslint-plugin-prettier` from 5.2.1 to 5.2.3 --- package-lock.json | 30 ++++++++++++++++-------------- package.json | 2 +- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index f33942b7ce..045247c5dc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -77,7 +77,7 @@ "diagnostics_channel": "^1.1.0", "elasticsearch": "^16.7.3", "eslint": "^9.0.0", - "eslint-config-prettier": "^9.0.0", + "eslint-config-prettier": "^10.0.1", "eslint-plugin-import": "^2.28.0", "eslint-plugin-license-header": "^0.6.0", "eslint-plugin-n": "^17.2.0", @@ -8998,12 +8998,13 @@ } }, "node_modules/eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.0.1.tgz", + "integrity": "sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==", "dev": true, + "license": "MIT", "bin": { - "eslint-config-prettier": "bin/cli.js" + "eslint-config-prettier": "build/bin/cli.js" }, "peerDependencies": { "eslint": ">=7.0.0" @@ -9210,10 +9211,11 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", - "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.3.tgz", + "integrity": "sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==", "dev": true, + "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0", "synckit": "^0.9.1" @@ -23375,9 +23377,9 @@ } }, "eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.0.1.tgz", + "integrity": "sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==", "dev": true }, "eslint-import-resolver-node": { @@ -23538,9 +23540,9 @@ } }, "eslint-plugin-prettier": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", - "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.3.tgz", + "integrity": "sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0", diff --git a/package.json b/package.json index 794fefe389..b320b0d8ea 100644 --- a/package.json +++ b/package.json @@ -156,7 +156,7 @@ "diagnostics_channel": "^1.1.0", "elasticsearch": "^16.7.3", "eslint": "^9.0.0", - "eslint-config-prettier": "^9.0.0", + "eslint-config-prettier": "^10.0.1", "eslint-plugin-import": "^2.28.0", "eslint-plugin-license-header": "^0.6.0", "eslint-plugin-n": "^17.2.0", From 64dade93f76fc64d132a24df567c065c240098a5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Jan 2025 15:21:40 +0100 Subject: [PATCH 277/396] chore(deps): bump undici from 5.28.4 to 5.28.5 in azure funcitons test fixtures(#4435) --- .../azure-functions/fixtures/azfunc4/package-lock.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/test/instrumentation/azure-functions/fixtures/azfunc4/package-lock.json b/test/instrumentation/azure-functions/fixtures/azfunc4/package-lock.json index e78727a8d2..0d6e62d72f 100644 --- a/test/instrumentation/azure-functions/fixtures/azfunc4/package-lock.json +++ b/test/instrumentation/azure-functions/fixtures/azfunc4/package-lock.json @@ -412,9 +412,10 @@ "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" }, "node_modules/undici": { - "version": "5.28.4", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", - "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "version": "5.28.5", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz", + "integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==", + "license": "MIT", "dependencies": { "@fastify/busboy": "^2.0.0" }, From 871310c50140481aee3c4b46bc682d5785397b8b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Jan 2025 10:58:45 +0100 Subject: [PATCH 278/396] chore(deps-dev): bump undici from 6.21.0 to 7.3.0 (#4436) --- package-lock.json | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 045247c5dc..4fee05a4f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4072,10 +4072,11 @@ "dev": true }, "node_modules/@elastic/transport/node_modules/undici": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.0.tgz", - "integrity": "sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==", + "version": "6.21.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz", + "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18.17" } @@ -15730,10 +15731,11 @@ } }, "node_modules/undici": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.2.3.tgz", - "integrity": "sha512-2oSLHaDalSt2/O/wHA9M+/ZPAOcU2yrSP/cdBYJ+YxZskiPYDSqHbysLSlD7gq3JMqOoJI5O31RVU3BxX/MnAA==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.3.0.tgz", + "integrity": "sha512-Qy96NND4Dou5jKoSJ2gm8ax8AJM/Ey9o9mz7KN1bb9GP+G0l20Zw8afxTnY2f4b7hmhn/z8aC2kfArVQlAhFBw==", "dev": true, + "license": "MIT", "engines": { "node": ">=20.18.1" } @@ -19292,9 +19294,9 @@ "dev": true }, "undici": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.0.tgz", - "integrity": "sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==", + "version": "6.21.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz", + "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==", "dev": true } } @@ -28469,9 +28471,9 @@ "dev": true }, "undici": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.2.3.tgz", - "integrity": "sha512-2oSLHaDalSt2/O/wHA9M+/ZPAOcU2yrSP/cdBYJ+YxZskiPYDSqHbysLSlD7gq3JMqOoJI5O31RVU3BxX/MnAA==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.3.0.tgz", + "integrity": "sha512-Qy96NND4Dou5jKoSJ2gm8ax8AJM/Ey9o9mz7KN1bb9GP+G0l20Zw8afxTnY2f4b7hmhn/z8aC2kfArVQlAhFBw==", "dev": true }, "undici-types": { From 2d46a76c266f5d39dc142b9d12e9caeda95ec52a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2025 09:35:18 +0100 Subject: [PATCH 279/396] chore(deps-dev): bump eslint from 9.18.0 to 9.19.0 in the eslint group (#4440) --- package-lock.json | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4fee05a4f0..b1d8985e62 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4204,10 +4204,11 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz", - "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==", + "version": "9.19.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.19.0.tgz", + "integrity": "sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -8925,17 +8926,18 @@ } }, "node_modules/eslint": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz", - "integrity": "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==", + "version": "9.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.19.0.tgz", + "integrity": "sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.0", "@eslint/core": "^0.10.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.18.0", + "@eslint/js": "9.19.0", "@eslint/plugin-kit": "^0.2.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -19388,9 +19390,9 @@ } }, "@eslint/js": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz", - "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==", + "version": "9.19.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.19.0.tgz", + "integrity": "sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==", "dev": true }, "@eslint/object-schema": { @@ -23262,9 +23264,9 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz", - "integrity": "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==", + "version": "9.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.19.0.tgz", + "integrity": "sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", @@ -23272,7 +23274,7 @@ "@eslint/config-array": "^0.19.0", "@eslint/core": "^0.10.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.18.0", + "@eslint/js": "9.19.0", "@eslint/plugin-kit": "^0.2.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", From d76ef4019b8c6569786ccbbc3d26b8745575ed82 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2025 09:36:23 +0100 Subject: [PATCH 280/396] chore(deps): bump the github-actions group with 2 updates (#4439) - Updates `actions/attest-build-provenance` from 2.1.0 to 2.2.0 - Updates `docker/build-push-action` from 6.12.0 to 6.13.0 --- .github/workflows/release.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 47c0046160..db20097aaf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -44,7 +44,7 @@ jobs: - run: make -C .ci dist - name: Attest Lambda layer zip - uses: actions/attest-build-provenance@7668571508540a607bdfd90a87a560489fe372eb # v2.1.0 + uses: actions/attest-build-provenance@520d128f165991a6c774bcb264f323e3d70747f4 # v2.2.0 with: subject-path: "${{ github.workspace }}/build/aws/elastic-apm-node-lambda-layer-*.zip" @@ -63,7 +63,7 @@ jobs: - name: Build and Push Docker Image id: docker-push - uses: docker/build-push-action@67a2d409c0a876cbe6b11854e3e25193efe4e62d # v6.12.0 + uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 # v6.13.0 with: context: . platforms: linux/amd64,linux/arm64 @@ -75,7 +75,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image - uses: actions/attest-build-provenance@7668571508540a607bdfd90a87a560489fe372eb # v2.1.0 + uses: actions/attest-build-provenance@520d128f165991a6c774bcb264f323e3d70747f4 # v2.2.0 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push.outputs.digest }} @@ -97,7 +97,7 @@ jobs: - name: Build and Push Docker Image (wolfi) id: docker-push-wolfi - uses: docker/build-push-action@67a2d409c0a876cbe6b11854e3e25193efe4e62d # v6.12.0 + uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 # v6.13.0 with: context: . platforms: linux/amd64,linux/arm64 @@ -109,7 +109,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image (wolfi) - uses: actions/attest-build-provenance@7668571508540a607bdfd90a87a560489fe372eb # v2.1.0 + uses: actions/attest-build-provenance@520d128f165991a6c774bcb264f323e3d70747f4 # v2.2.0 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push-wolfi.outputs.digest }} From 643da43a76256d02c8b8d30a13a8bdbecf551d36 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2025 09:37:21 +0100 Subject: [PATCH 281/396] chore(deps): update docker.elastic.co/wolfi/chainguard-base:latest docker digest to bd40170 (#4437) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 460860cec5..883893f994 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:ea157dd3d70787c6b6dc9e14dda1ff103c781d4c3f9a544393ff4583dd80c9d0 +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:bd401704a162a7937cd1015f755ca9da9aba0fdf967fc6bf90bf8d3f6b2eb557 ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From b4d37b5a613eeb794bcc0d761fb4d34cd4d3c55e Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Wed, 29 Jan 2025 14:24:52 -0800 Subject: [PATCH 282/396] test: test FIPS 140 compliance (#4441) Adds a 'test-fips' CI workflow that is run weekly. Complains to Slack if it fails. Also: This simplifies down from 3 different usages of a generated cert in a number of test files. We also update the generated cert to be RSA 2048 for FIPS 140. We can also now drop the https-pem devDep which was generating a cert in a post-install script, which is sometimes painful with supply-chain security efforts. --- .github/workflows/test-fips.yml | 64 +++++++++++++++++++ package-lock.json | 56 ---------------- package.json | 1 - test/apm-client/http-apm-client/lib/utils.js | 51 +++------------ test/fixtures/certs/.gitignore | 1 + test/fixtures/certs/README.md | 6 ++ test/fixtures/certs/cert.pem | 20 ++++++ test/fixtures/certs/key.pem | 28 ++++++++ test/fixtures/certs/regenerate-cert.sh | 9 +++ .../modules/@aws-sdk/client-dynamodb.test.js | 3 + .../modules/@aws-sdk/client-s3.test.js | 3 + .../modules/@aws-sdk/client-sns.test.js | 3 + .../modules/@aws-sdk/client-sqs.test.js | 3 + .../modules/@elastic/elasticsearch.test.js | 3 + .../modules/apollo-server-express.test.js | 3 + .../modules/aws-sdk/aws4-retries.test.js | 3 + .../modules/aws-sdk/dynamodb.test.js | 3 + .../modules/aws-sdk/s3.test.js | 3 + .../modules/aws-sdk/sns.test.js | 3 + .../modules/aws-sdk/sqs.test.js | 3 + .../modules/bluebird/bluebird.test.js | 3 + .../modules/bluebird/cancel.test.js | 3 + .../cassandra-driver/cassandra-driver.test.js | 3 + .../modules/elasticsearch.test.js | 3 + .../modules/express-queue.test.js | 3 + .../modules/express/basic.test.js | 3 + .../express/capture-exceptions-off.test.js | 3 + .../express/capture-exceptions-on.test.js | 3 + .../modules/express/set-framework.test.js | 3 + .../modules/fastify/async-await.test.js | 3 + .../modules/fastify/set-framework.test.js | 3 + .../modules/finalhandler.test.js | 3 + .../modules/generic-pool.test.js | 3 + test/instrumentation/modules/graphql.test.js | 3 + .../modules/handlebars.test.js | 3 + .../modules/http/_echo_server.js | 15 ++++- test/instrumentation/modules/http2.test.js | 37 ++++++++--- test/instrumentation/modules/ioredis.test.js | 3 + .../modules/kafkajs/kafkajs.test.js | 3 + .../modules/koa-router/new-name.test.js | 3 + .../modules/koa-router/old-name.test.js | 3 + .../instrumentation/modules/memcached.test.js | 3 + .../modules/mimic-response.test.js | 3 + .../modules/mongodb-core.test.js | 3 + .../modules/mongodb/mongodb.test.js | 3 + .../modules/mysql/mysql.test.js | 3 + .../modules/mysql/pool-release-1.test.js | 3 + .../modules/mysql2/mysql.test.js | 3 + .../modules/mysql2/pool-release-1.test.js | 3 + .../pg/knex-no-span-stack-traces.test.js | 3 + test/instrumentation/modules/pg/knex.test.js | 3 + test/instrumentation/modules/pg/pg.test.js | 3 + test/instrumentation/modules/pug.test.js | 3 + .../instrumentation/modules/redis-2-3.test.js | 3 + .../modules/redis-disabled.test.js | 3 + test/instrumentation/modules/redis.test.js | 3 + .../modules/redis4-legacy.test.js | 3 + .../modules/restify/basic.test.js | 3 + .../modules/restify/set-framework.test.js | 3 + test/instrumentation/modules/tedious.test.js | 3 + .../modules/undici/fetch.test.js | 3 + .../modules/undici/undici.test.js | 3 + test/instrumentation/modules/ws.test.js | 3 + .../integration/abort-on-invalid-cert.test.js | 10 ++- test/integration/allow-invalid-cert.test.js | 11 +++- test/integration/cert.pem | 14 ---- test/integration/key.pem | 16 ----- .../integration/verify-server-ca-cert.test.js | 10 ++- test/sanitize-field-names/_shared.js | 1 + test/sanitize-field-names/hapi.test.js | 2 +- 70 files changed, 360 insertions(+), 148 deletions(-) create mode 100644 .github/workflows/test-fips.yml create mode 100644 test/fixtures/certs/.gitignore create mode 100644 test/fixtures/certs/README.md create mode 100644 test/fixtures/certs/cert.pem create mode 100644 test/fixtures/certs/key.pem create mode 100644 test/fixtures/certs/regenerate-cert.sh delete mode 100644 test/integration/cert.pem delete mode 100644 test/integration/key.pem diff --git a/.github/workflows/test-fips.yml b/.github/workflows/test-fips.yml new file mode 100644 index 0000000000..fd41e2d0e8 --- /dev/null +++ b/.github/workflows/test-fips.yml @@ -0,0 +1,64 @@ +name: test-fips + +# Test FIPS 140 compliance by running tests inside a FIPS-140-configured +# Docker container (the Chainguard base FIPS container). This is run weekly +# (no need to run for every commit or PR). Slack is notified if the weekly run +# fails. + +on: + workflow_dispatch: + schedule: + # Every Tuesday at 6:00 AM + - cron: '0 6 * * 2' + +# Limit the access of the generated GITHUB_TOKEN. +permissions: + contents: read + +jobs: + test-fips: + runs-on: ubuntu-24.04 + # https://docs.github.com/en/actions/writing-workflows/choosing-where-your-workflow-runs/running-jobs-in-a-container + # docker run -it --rm --name fipsy docker.elastic.co/wolfi/chainguard-base-fips:latest + container: + image: docker.elastic.co/wolfi/chainguard-base-fips:latest + credentials: + username: ${{ secrets.ELASTIC_DOCKER_USERNAME }} + password: ${{ secrets.ELASTIC_DOCKER_PASSWORD }} + timeout-minutes: 30 + steps: + - run: | + apk update + apk add nodejs npm + - uses: actions/checkout@v4 + - name: Is Node.js running in FIPS mode? + run: | + node -e 'const isFips = require("node:crypto").getFips(); console.log("isFips:", isFips); assert(isFips)' + - run: npm ci + - run: node test/test.js + env: + # TEST_WITHOUT_SERVICES skips instrumentation tests that rely on a + # running service, like a database. This var was added because I + # don't know how to get GH Action `services:` to be available to this + # test suite running in the `container:`. This shouldn't matter for + # FIPS-related testing because no instrumentations use crypto. + TEST_WITHOUT_SERVICES: 'true' + + # Pull Slack notification handling out to a separate job, because I cannot + # get it working inside the container. + notify-on-failure: + if: always() + runs-on: ubuntu-24.04 + needs: test-fips + steps: + - id: check + uses: elastic/oblt-actions/check-dependent-jobs@v1 + with: + jobs: ${{ toJSON(needs) }} + - name: Notify in Slack + if: steps.check.outputs.status == 'failure' + uses: elastic/oblt-actions/slack/notify-result@v1.16.0 + with: + bot-token: ${{ secrets.SLACK_BOT_TOKEN }} + channel-id: "#apm-agent-node" + message: ':warning: test-fips workflow run ${{ github.run_id }} failed' diff --git a/package-lock.json b/package-lock.json index b1d8985e62..a9fdd3f645 100644 --- a/package-lock.json +++ b/package-lock.json @@ -93,7 +93,6 @@ "got": "^11.8.5", "graphql": "^16.6.0", "handlebars": "^4.7.3", - "https-pem": "^3.0.0", "ioredis": "^5.1.0", "js-yaml": "^4.1.0", "json": "^11.0.0", @@ -10743,16 +10742,6 @@ "node": ">=10.19.0" } }, - "node_modules/https-pem": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/https-pem/-/https-pem-3.0.0.tgz", - "integrity": "sha512-JqYVRTpk1WeXziwBaTX6eyXod6Dt70d/kehtY3DR6ygl+11XgcksTjSl4NjZbNCKK3rpTB1qH9hnu75RSOFUWQ==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "selfsigned": "^2.0.1" - } - }, "node_modules/https-proxy-agent": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", @@ -12707,15 +12696,6 @@ "webidl-conversions": "^3.0.0" } }, - "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "dev": true, - "engines": { - "node": ">= 6.13.0" - } - }, "node_modules/node-releases": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", @@ -14491,18 +14471,6 @@ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", "dev": true }, - "node_modules/selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", - "dev": true, - "dependencies": { - "node-forge": "^1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", @@ -24627,15 +24595,6 @@ "resolve-alpn": "^1.0.0" } }, - "https-pem": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/https-pem/-/https-pem-3.0.0.tgz", - "integrity": "sha512-JqYVRTpk1WeXziwBaTX6eyXod6Dt70d/kehtY3DR6ygl+11XgcksTjSl4NjZbNCKK3rpTB1qH9hnu75RSOFUWQ==", - "dev": true, - "requires": { - "selfsigned": "^2.0.1" - } - }, "https-proxy-agent": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", @@ -26121,12 +26080,6 @@ } } }, - "node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "dev": true - }, "node-releases": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", @@ -27472,15 +27425,6 @@ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", "dev": true }, - "selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", - "dev": true, - "requires": { - "node-forge": "^1" - } - }, "semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", diff --git a/package.json b/package.json index b320b0d8ea..95eb51fde5 100644 --- a/package.json +++ b/package.json @@ -172,7 +172,6 @@ "got": "^11.8.5", "graphql": "^16.6.0", "handlebars": "^4.7.3", - "https-pem": "^3.0.0", "ioredis": "^5.1.0", "js-yaml": "^4.1.0", "json": "^11.0.0", diff --git a/test/apm-client/http-apm-client/lib/utils.js b/test/apm-client/http-apm-client/lib/utils.js index 6877c94e14..53ca3648c9 100644 --- a/test/apm-client/http-apm-client/lib/utils.js +++ b/test/apm-client/http-apm-client/lib/utils.js @@ -6,9 +6,11 @@ 'use strict'; +const fs = require('fs'); const http = require('http'); const https = require('https'); const os = require('os'); +const path = require('path'); const { URL } = require('url'); const zlib = require('zlib'); const semver = require('semver'); @@ -23,6 +25,13 @@ exports.assertMetadata = assertMetadata; exports.assertEvent = assertEvent; exports.validOpts = validOpts; +const tlsCert = fs.readFileSync( + path.resolve(__dirname, '../../../fixtures/certs/cert.pem'), +); +const tlsKey = fs.readFileSync( + path.resolve(__dirname, '../../../fixtures/certs/key.pem'), +); + function APMServer(opts, onreq) { if (typeof opts === 'function') return APMServer(null, opts); opts = opts || {}; @@ -235,45 +244,3 @@ function validOpts(opts) { opts, ); } - -// tlsCert and tlsKey were generated via the same method as Go's builtin -// test certificate/key pair, using -// https://github.com/golang/go/blob/master/src/crypto/tls/generate_cert.go: -// -// go run generate_cert.go --rsa-bits 1024 --host 127.0.0.1,::1,localhost \ -// --ca --start-date "Jan 1 00:00:00 1970" \ -// --duration=1000000h -// -// The certificate is valid for 127.0.0.1, ::1, and localhost; and expires in the year 2084. - -const tlsCert = `-----BEGIN CERTIFICATE----- -MIICETCCAXqgAwIBAgIQQalo5z3llnTiwERMPZQxujANBgkqhkiG9w0BAQsFADAS -MRAwDgYDVQQKEwdBY21lIENvMCAXDTcwMDEwMTAwMDAwMFoYDzIwODQwMTI5MTYw -MDAwWjASMRAwDgYDVQQKEwdBY21lIENvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB -iQKBgQDrW9Z8jSgTMeN9Dt36HBj/kbU/aeFp10GshKm8IKWBpyyWKrTSjiYJIpTK -l/6sdC77UCDokYAk66T+IXIvvRvqOtD1HUt+KLlqZ7acunTp1Qq4PnASHBm9fdKs -F1c8gWlEXOMzCsC5BmokcijW7z8JTKszAVi2vpq5MHbtYxZXKQIDAQABo2YwZDAO -BgNVHQ8BAf8EBAMCAqQwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUw -AwEB/zAsBgNVHREEJTAjgglsb2NhbGhvc3SHBH8AAAGHEAAAAAAAAAAAAAAAAAAA -AAEwDQYJKoZIhvcNAQELBQADgYEA4yzI/6gjkACdvrnlFm/MJlDQztPYYEAtQ6Sp -0q0PMQcynLfhH94KMjxJb31HNPJYXr7UrE6gwL2sUnfioXUTQTk35okpphR8MGu2 -hZ704px4wdeK/9B5Vh96oMZLYhm9SXizRVAZz7bPFYNMrhyk9lrWZXOaX526w4wI -Y5LTiUQ= ------END CERTIFICATE-----`; - -const tlsKey = `-----BEGIN PRIVATE KEY----- -MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAOtb1nyNKBMx430O -3focGP+RtT9p4WnXQayEqbwgpYGnLJYqtNKOJgkilMqX/qx0LvtQIOiRgCTrpP4h -ci+9G+o60PUdS34ouWpntpy6dOnVCrg+cBIcGb190qwXVzyBaURc4zMKwLkGaiRy -KNbvPwlMqzMBWLa+mrkwdu1jFlcpAgMBAAECgYEAtZc9LQooIm86izHeWOw26XD9 -u/iwf94igL42y70QlbFreE1pCI++jwvMa2fMijh2S1bunSIuEc5yldUuaeDp2FtJ -k7U9orbJspnWy6ixk1KgpjffdHP73r4S3a5G81G8sq9Uvwl0vxF90eTvg9C7kUfk -J1YMy4zcpLtwkCHEkNUCQQDx79t6Dqswi8vDoS0+MCIJNCO4J49ZchL8aXE8n9GT -mF+eOsKy6e5qYH0oYPpeXchwf1tWhX1gBCb3fXrtOoPTAkEA+QoX9S1XofY8YS1M -iNVVSkLjpKgVoTQVe4j+vj16NHouVQ+oOvEUca2LTrHRx+utdar1NSexl51NO0Lj -3sqnkwJAPNWCC3Pqyb8tEljRxoRV2piYrrKL0gLkEUH2LjdFfGZhDKlb0Z8OywLO -Fbwk2FuejeMINX5FY0JIBg0wPrxq7wJAMoot2n/dLO0/y6jZw1sn9+4jLKM/4Hsl -cPCYYhsv1b6F8JVA2tVaBMfnYY0MubnGdf6/zI3FqLMvnTsx62DNKQJBAMYUaw/D -plXTexeEU/c0BRxQdOkGmDqOQtnuRQUCQq6gu+occTeilgFoKHWT3QcZHIpHxawJ -N2K67EWPRgr3suE= ------END PRIVATE KEY-----`; diff --git a/test/fixtures/certs/.gitignore b/test/fixtures/certs/.gitignore new file mode 100644 index 0000000000..2536019b02 --- /dev/null +++ b/test/fixtures/certs/.gitignore @@ -0,0 +1 @@ +/generate_cert.go diff --git a/test/fixtures/certs/README.md b/test/fixtures/certs/README.md new file mode 100644 index 0000000000..c4fb658524 --- /dev/null +++ b/test/fixtures/certs/README.md @@ -0,0 +1,6 @@ +This dir holds a self-signed TLS certificate (and key) to be used from some +HTTPS tests. + +They were generated via the same method as Go's builtin test certificate/key +pair, using https://github.com/golang/go/blob/master/src/crypto/tls/generate_cert.go. +Use "./regenerate.sh" to regenerate the TLS cert if necessary. diff --git a/test/fixtures/certs/cert.pem b/test/fixtures/certs/cert.pem new file mode 100644 index 0000000000..73779c7371 --- /dev/null +++ b/test/fixtures/certs/cert.pem @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDNzCCAh+gAwIBAgIQGUMr0aqX8M8e3S/On3YzNzANBgkqhkiG9w0BAQsFADAS +MRAwDgYDVQQKEwdBY21lIENvMCAXDTcwMDEwMTAwMDAwMFoYDzIwODQwMTI5MTYw +MDAwWjASMRAwDgYDVQQKEwdBY21lIENvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAwamgs6WRC9RFVur2ejltBOtA71+qPXl1rWRx7tMMYzzUXl4YLdGj +tHxAv2XK1IzEH1WsdB1fkOosWoEMlExBMje5i3w2fZmrfdwHjTB7HRhfA8jtRDvC +zswHqeuMsierSYgs/HD4ZGe0ep3wCa2cEsNZpwG0UERLFIv/mCe9Sz61CmduFEBT +0YPxQKRLP3LN9pnD9afliP+yGZx8OvOQhqAD7mKIyoZWUPtZJi7rHHJ3dEXgnZKc +XvSzhgUV8dtW4ER0UuQ3y08L2cntzQRQDNC0R/oyiCm9o224YARu35VSuKGb2YCY +2ZlxuziWKtvF1I1JKpx83JqrNSGXWYom3QIDAQABo4GGMIGDMA4GA1UdDwEB/wQE +AwICpDATBgNVHSUEDDAKBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud +DgQWBBSEutVWCaITNGTjJ97epH9sul9q0jAsBgNVHREEJTAjgglsb2NhbGhvc3SH +BH8AAAGHEAAAAAAAAAAAAAAAAAAAAAEwDQYJKoZIhvcNAQELBQADggEBAGUa4teT +78ux/5skaLeB5J7PUzT5e+9eCKtIhZBW+7ZZMueMdTsP1CGpvc758+LWgiPkEeX+ +RbC1F8s5UZhqA5Jj0lnTCRglrc7L0irgCWMYm9UTjgaeB/4u3yH0fJtz+Z7CP7ZM +A4rFmqRuiGxdiLAa6iqtiKvL6bsyvU4OVr+qaBU24vQnMxK/Usjsi/t26aDPkpmE +qi4owSRiWTKwf1W3RJmrdJNXHAhybcy8HHLL50uIntEu1B6LBjZDL1B3vRWyNVN6 +4w+cpFPmC6gGfqq8Xm2QLhVUUHljkrCUY1sgSItivS2qBHeDEURnwWxkii3SBnRj +/g6fc37lUT9FNeM= +-----END CERTIFICATE----- diff --git a/test/fixtures/certs/key.pem b/test/fixtures/certs/key.pem new file mode 100644 index 0000000000..63cf97b9c9 --- /dev/null +++ b/test/fixtures/certs/key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDBqaCzpZEL1EVW +6vZ6OW0E60DvX6o9eXWtZHHu0wxjPNReXhgt0aO0fEC/ZcrUjMQfVax0HV+Q6ixa +gQyUTEEyN7mLfDZ9mat93AeNMHsdGF8DyO1EO8LOzAep64yyJ6tJiCz8cPhkZ7R6 +nfAJrZwSw1mnAbRQREsUi/+YJ71LPrUKZ24UQFPRg/FApEs/cs32mcP1p+WI/7IZ +nHw685CGoAPuYojKhlZQ+1kmLusccnd0ReCdkpxe9LOGBRXx21bgRHRS5DfLTwvZ +ye3NBFAM0LRH+jKIKb2jbbhgBG7flVK4oZvZgJjZmXG7OJYq28XUjUkqnHzcmqs1 +IZdZiibdAgMBAAECggEBAItnFiWarZENSKhrU+bhRWeADGsCuuGrd5jLr/OQ+d7J +X7laFB+PQz7dHiJoHJvphBdmLVAcALmoxyqSsEJjrZ5/XFFapUK+BiL/6nOojUaB +T4vC63/tYKpJVc7rnohzY6n3myJQE4z61YBaBfqBfNJIylUcNfZ9Ymo06FRXbrwk +88vQyL2ROqJKB3QlGtF3vCWWForqMfpsxph1EeUUYla2Se54FN+83X9xGa0QIGTt +1+z9vU7zfBWNnJS6oYYevSy3DST4CdQe9yXmCyds7KyZdL5K7BLtscK4p08L/ZIB +4AFOBk0boQvhyYP64RIrmuW3q/jPXnfkA3klYpFdVwUCgYEA3F1Nk+f394e3Y/Oy +vYrNeoWfxI7vhmB2OyDeq2jhWUnG+GLsD7UZ5wcurpp8/u5eP9Bv9NkoVG/bhuP4 +8AK0FS4eT8pRMxQecpnpQU1+PjDbDypTKnjfn2ktrVRb1HNf4LENC5jlE4oPfr95 +OWdRBgGZQs1PMjphXNjubDrf/McCgYEA4PrqUrIoORrUA9JyIbUsszgX99TEiIcD +9ZbdF710N8vNiCKuMQT17sYXsv53/xz07aeSKauRX8Gt5+zIDyj7tN+CPQSp1qBn +lyJGQ9Ur3kQCLxrX4pyOXV6GVtXJfvVrAuh4LdcXz5IsS3AzRNZx0bKQbTqBM279 +GfRfml828zsCgYB7ZfgaOgy+XQ5R91aBE2gLEyarcAsrKXsrkzV9sQZ39Htp/iMI +jLZLi9cVSUdzjlHS1ErNRolx9w1sVN7CsBDdx2yL69RakQqXzB41RkrKUptou5/E +qdk3sDM224Vsy4rGDP8sHlsw/N++b0RX48YYYe7L3KJbkxuQXZ3tl250YwKBgQDW +fiJ9KSG0H+HWqwLpJCQz0dz4CUA+sgqSUH0FrzhoIcQYcIgGcCZQuUfK/VVGQkM5 +eTOeytXUp4C3x0WNPpOLhDRVHGcYGuHoc2LuNQSX6drzMfJ1OLF6Ty5hB34NrsmR +gjVh7tniqgfU/GnEzXbCaC3OFaMseDqSTiv/r5tiFQKBgDTYsqWHpBTXMvPebB+L +ZMqqX/s9ngFaFsiZj6x6783hGA7DeGc7/8bkynP3FtcXbA42JP20tLR+DtdKdJ1g +7jcSHkoC6ufGHkuq4pYD8Egys65Fggmh3xIgOzY8i+9X11ko1fXvVLFhVCNqC1a3 +VtnqKIRCPO1khrzCjPNwawpn +-----END PRIVATE KEY----- diff --git a/test/fixtures/certs/regenerate-cert.sh b/test/fixtures/certs/regenerate-cert.sh new file mode 100644 index 0000000000..a46fa22c56 --- /dev/null +++ b/test/fixtures/certs/regenerate-cert.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env sh +# +# Regenerate the certificate files that are used for tests using TLS. +# The certificate is valid for 127.0.0.1, ::1, and localhost; and expires in the year 2084. + +curl -O https://raw.githubusercontent.com/golang/go/refs/heads/master/src/crypto/tls/generate_cert.go +go run generate_cert.go --rsa-bits 2048 --host 127.0.0.1,::1,localhost \ + --ca --start-date "Jan 1 00:00:00 1970" \ + --duration=1000000h diff --git a/test/instrumentation/modules/@aws-sdk/client-dynamodb.test.js b/test/instrumentation/modules/@aws-sdk/client-dynamodb.test.js index 48ceeffa77..438357e40d 100644 --- a/test/instrumentation/modules/@aws-sdk/client-dynamodb.test.js +++ b/test/instrumentation/modules/@aws-sdk/client-dynamodb.test.js @@ -15,6 +15,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } const test = require('tape'); diff --git a/test/instrumentation/modules/@aws-sdk/client-s3.test.js b/test/instrumentation/modules/@aws-sdk/client-s3.test.js index 086c639df7..3d3134ad51 100644 --- a/test/instrumentation/modules/@aws-sdk/client-s3.test.js +++ b/test/instrumentation/modules/@aws-sdk/client-s3.test.js @@ -18,6 +18,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } const test = require('tape'); diff --git a/test/instrumentation/modules/@aws-sdk/client-sns.test.js b/test/instrumentation/modules/@aws-sdk/client-sns.test.js index e26ee86dfb..0c70c269aa 100644 --- a/test/instrumentation/modules/@aws-sdk/client-sns.test.js +++ b/test/instrumentation/modules/@aws-sdk/client-sns.test.js @@ -14,6 +14,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } const test = require('tape'); diff --git a/test/instrumentation/modules/@aws-sdk/client-sqs.test.js b/test/instrumentation/modules/@aws-sdk/client-sqs.test.js index 8c1596631e..991c5eb856 100644 --- a/test/instrumentation/modules/@aws-sdk/client-sqs.test.js +++ b/test/instrumentation/modules/@aws-sdk/client-sqs.test.js @@ -18,6 +18,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } const test = require('tape'); diff --git a/test/instrumentation/modules/@elastic/elasticsearch.test.js b/test/instrumentation/modules/@elastic/elasticsearch.test.js index 625a9ad8c6..700c6eea57 100644 --- a/test/instrumentation/modules/@elastic/elasticsearch.test.js +++ b/test/instrumentation/modules/@elastic/elasticsearch.test.js @@ -17,6 +17,9 @@ const isUndiciIncompat = require('../../../_is_undici_incompat')(); if (isUndiciIncompat) { console.log(`# SKIP dependency issue: ${isUndiciIncompat}`); process.exit(); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } process.env.ELASTIC_APM_TEST = true; diff --git a/test/instrumentation/modules/apollo-server-express.test.js b/test/instrumentation/modules/apollo-server-express.test.js index 777b58b8cb..fda75f81ed 100644 --- a/test/instrumentation/modules/apollo-server-express.test.js +++ b/test/instrumentation/modules/apollo-server-express.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } var agent = require('../../..').start({ diff --git a/test/instrumentation/modules/aws-sdk/aws4-retries.test.js b/test/instrumentation/modules/aws-sdk/aws4-retries.test.js index 1fdbfa8bc0..aed2c0da95 100644 --- a/test/instrumentation/modules/aws-sdk/aws4-retries.test.js +++ b/test/instrumentation/modules/aws-sdk/aws4-retries.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } // Test the fix for bug #2134, that AWS4 signature auth with the aws-sdk diff --git a/test/instrumentation/modules/aws-sdk/dynamodb.test.js b/test/instrumentation/modules/aws-sdk/dynamodb.test.js index e5fe6762de..12cdc75c8d 100644 --- a/test/instrumentation/modules/aws-sdk/dynamodb.test.js +++ b/test/instrumentation/modules/aws-sdk/dynamodb.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } const agent = require('../../../..').start({ diff --git a/test/instrumentation/modules/aws-sdk/s3.test.js b/test/instrumentation/modules/aws-sdk/s3.test.js index 12801c2dbe..56e6574004 100644 --- a/test/instrumentation/modules/aws-sdk/s3.test.js +++ b/test/instrumentation/modules/aws-sdk/s3.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } // Test S3 instrumentation of the 'aws-sdk' module. diff --git a/test/instrumentation/modules/aws-sdk/sns.test.js b/test/instrumentation/modules/aws-sdk/sns.test.js index 28b8de8dca..806b866e76 100644 --- a/test/instrumentation/modules/aws-sdk/sns.test.js +++ b/test/instrumentation/modules/aws-sdk/sns.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } const agent = require('../../../..').start({ diff --git a/test/instrumentation/modules/aws-sdk/sqs.test.js b/test/instrumentation/modules/aws-sdk/sqs.test.js index 4d76050fbe..995d7f322f 100644 --- a/test/instrumentation/modules/aws-sdk/sqs.test.js +++ b/test/instrumentation/modules/aws-sdk/sqs.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } const { execFile } = require('child_process'); diff --git a/test/instrumentation/modules/bluebird/bluebird.test.js b/test/instrumentation/modules/bluebird/bluebird.test.js index 061bb3a437..d0ace5b189 100644 --- a/test/instrumentation/modules/bluebird/bluebird.test.js +++ b/test/instrumentation/modules/bluebird/bluebird.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } // The unhandledRejection will be fired by our bluebird tests, which is to be diff --git a/test/instrumentation/modules/bluebird/cancel.test.js b/test/instrumentation/modules/bluebird/cancel.test.js index 1fc16aaaf6..d42756717e 100644 --- a/test/instrumentation/modules/bluebird/cancel.test.js +++ b/test/instrumentation/modules/bluebird/cancel.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } var agent = require('../../../..').start({ diff --git a/test/instrumentation/modules/cassandra-driver/cassandra-driver.test.js b/test/instrumentation/modules/cassandra-driver/cassandra-driver.test.js index 63098d395b..245fb86830 100644 --- a/test/instrumentation/modules/cassandra-driver/cassandra-driver.test.js +++ b/test/instrumentation/modules/cassandra-driver/cassandra-driver.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } const test = require('tape'); diff --git a/test/instrumentation/modules/elasticsearch.test.js b/test/instrumentation/modules/elasticsearch.test.js index 4ad82d7c59..eb161b0033 100644 --- a/test/instrumentation/modules/elasticsearch.test.js +++ b/test/instrumentation/modules/elasticsearch.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } process.env.ELASTIC_APM_TEST = true; diff --git a/test/instrumentation/modules/express-queue.test.js b/test/instrumentation/modules/express-queue.test.js index 973b4d30c7..7255744234 100644 --- a/test/instrumentation/modules/express-queue.test.js +++ b/test/instrumentation/modules/express-queue.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } var agent = require('../../..').start({ diff --git a/test/instrumentation/modules/express/basic.test.js b/test/instrumentation/modules/express/basic.test.js index 9dde1c4744..c0b70d6750 100644 --- a/test/instrumentation/modules/express/basic.test.js +++ b/test/instrumentation/modules/express/basic.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } var agent = require('../../../..').start({ diff --git a/test/instrumentation/modules/express/capture-exceptions-off.test.js b/test/instrumentation/modules/express/capture-exceptions-off.test.js index fff4d964ef..dbeb07fe3f 100644 --- a/test/instrumentation/modules/express/capture-exceptions-off.test.js +++ b/test/instrumentation/modules/express/capture-exceptions-off.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } const agent = require('../../../..').start({ diff --git a/test/instrumentation/modules/express/capture-exceptions-on.test.js b/test/instrumentation/modules/express/capture-exceptions-on.test.js index 76ad424837..9c59511bec 100644 --- a/test/instrumentation/modules/express/capture-exceptions-on.test.js +++ b/test/instrumentation/modules/express/capture-exceptions-on.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } const agent = require('../../../..').start({ diff --git a/test/instrumentation/modules/express/set-framework.test.js b/test/instrumentation/modules/express/set-framework.test.js index e834a62481..cff01bfbd7 100644 --- a/test/instrumentation/modules/express/set-framework.test.js +++ b/test/instrumentation/modules/express/set-framework.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } const agent = require('../../../..').start({ diff --git a/test/instrumentation/modules/fastify/async-await.test.js b/test/instrumentation/modules/fastify/async-await.test.js index 540003d189..73090316b1 100644 --- a/test/instrumentation/modules/fastify/async-await.test.js +++ b/test/instrumentation/modules/fastify/async-await.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } require('../../../..').start({ diff --git a/test/instrumentation/modules/fastify/set-framework.test.js b/test/instrumentation/modules/fastify/set-framework.test.js index 904faf0b76..5fd574e42c 100644 --- a/test/instrumentation/modules/fastify/set-framework.test.js +++ b/test/instrumentation/modules/fastify/set-framework.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } const agent = require('../../../..').start({ diff --git a/test/instrumentation/modules/finalhandler.test.js b/test/instrumentation/modules/finalhandler.test.js index a41a4a9daf..d986b83495 100644 --- a/test/instrumentation/modules/finalhandler.test.js +++ b/test/instrumentation/modules/finalhandler.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } var agent = require('../../..').start({ diff --git a/test/instrumentation/modules/generic-pool.test.js b/test/instrumentation/modules/generic-pool.test.js index 23aee93d99..49e522b6b6 100644 --- a/test/instrumentation/modules/generic-pool.test.js +++ b/test/instrumentation/modules/generic-pool.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } var agent = require('../../..').start({ diff --git a/test/instrumentation/modules/graphql.test.js b/test/instrumentation/modules/graphql.test.js index a3033dc0ca..9fad6114c0 100644 --- a/test/instrumentation/modules/graphql.test.js +++ b/test/instrumentation/modules/graphql.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } var agent = require('../../..').start({ diff --git a/test/instrumentation/modules/handlebars.test.js b/test/instrumentation/modules/handlebars.test.js index 73d91ff532..17036ecfce 100644 --- a/test/instrumentation/modules/handlebars.test.js +++ b/test/instrumentation/modules/handlebars.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } process.env.ELASTIC_APM_TEST = true; diff --git a/test/instrumentation/modules/http/_echo_server.js b/test/instrumentation/modules/http/_echo_server.js index 437206d1ab..3549533c31 100644 --- a/test/instrumentation/modules/http/_echo_server.js +++ b/test/instrumentation/modules/http/_echo_server.js @@ -6,16 +6,27 @@ 'use strict'; +const fs = require('fs'); var http = require('http'); var https = require('https'); +const path = require('path'); var zlib = require('zlib'); -var pem = require('https-pem'); +const tlsOpts = { + cert: fs.readFileSync( + path.resolve(__dirname, '../../../fixtures/certs/cert.pem'), + ), + key: fs.readFileSync( + path.resolve(__dirname, '../../../fixtures/certs/key.pem'), + ), +}; process.title = 'echo-server'; var server = - process.argv[2] === 'https' ? https.createServer(pem) : http.createServer(); + process.argv[2] === 'https' + ? https.createServer(tlsOpts) + : http.createServer(); server.on('request', function (req, res) { var acceptEncoding = req.headers['accept-encoding'] || ''; diff --git a/test/instrumentation/modules/http2.test.js b/test/instrumentation/modules/http2.test.js index f9831683b8..f156721bba 100644 --- a/test/instrumentation/modules/http2.test.js +++ b/test/instrumentation/modules/http2.test.js @@ -18,9 +18,9 @@ var ins = agent._instrumentation; var fs = require('fs'); var https = require('https'); var http2 = require('http2'); +const path = require('path'); var semver = require('semver'); -var pem = require('https-pem'); var test = require('tape'); var mockClient = require('../../_mock_http_client'); @@ -31,6 +31,13 @@ if (semver.satisfies(process.version, '8.x')) { process.exit(); } +const tlsOpts = { + cert: fs.readFileSync( + path.resolve(__dirname, '../../fixtures/certs/cert.pem'), + ), + key: fs.readFileSync(path.resolve(__dirname, '../../fixtures/certs/key.pem')), +}; + var isSecure = [false, true]; isSecure.forEach((secure) => { var method = secure ? 'createSecureServer' : 'createServer'; @@ -60,7 +67,7 @@ isSecure.forEach((secure) => { var port; var server = secure - ? http2.createSecureServer(pem, onRequest) + ? http2.createSecureServer(tlsOpts, onRequest) : http2.createServer(onRequest); var onError = (err) => t.error(err); @@ -90,7 +97,9 @@ isSecure.forEach((secure) => { }); var port; - var server = secure ? http2.createSecureServer(pem) : http2.createServer(); + var server = secure + ? http2.createSecureServer(tlsOpts) + : http2.createServer(); var onError = (err) => t.error(err); server.on('error', onError); @@ -131,7 +140,9 @@ isSecure.forEach((secure) => { }); var port; - var server = secure ? http2.createSecureServer(pem) : http2.createServer(); + var server = secure + ? http2.createSecureServer(tlsOpts) + : http2.createServer(); var onError = (err) => t.error(err); server.on('error', onError); @@ -179,7 +190,9 @@ isSecure.forEach((secure) => { }); var port; - var server = secure ? http2.createSecureServer(pem) : http2.createServer(); + var server = secure + ? http2.createSecureServer(tlsOpts) + : http2.createServer(); var onError = (err) => t.error(err); server.on('error', onError); @@ -227,7 +240,9 @@ isSecure.forEach((secure) => { }); var port; - var server = secure ? http2.createSecureServer(pem) : http2.createServer(); + var server = secure + ? http2.createSecureServer(tlsOpts) + : http2.createServer(); var onError = (err) => t.error(err); server.on('error', onError); @@ -274,7 +289,9 @@ isSecure.forEach((secure) => { var port; var client; - var server = secure ? http2.createSecureServer(pem) : http2.createServer(); + var server = secure + ? http2.createSecureServer(tlsOpts) + : http2.createServer(); var onError = (err) => t.error(err); server.on('error', onError); @@ -417,7 +434,9 @@ isSecure.forEach((secure) => { }); var port; - var server = secure ? http2.createSecureServer(pem) : http2.createServer(); + var server = secure + ? http2.createSecureServer(tlsOpts) + : http2.createServer(); var onError = (err) => t.error(err); server.on('error', onError); @@ -491,7 +510,7 @@ test('handling HTTP/1.1 request to http2.createSecureServer with allowHTTP1:true }); var port; - var serverOpts = Object.assign({ allowHTTP1: true }, pem); + var serverOpts = Object.assign({ allowHTTP1: true }, tlsOpts); var server = http2.createSecureServer(serverOpts); server.on('request', function onRequest(req, res) { var trans = ins.currTransaction(); diff --git a/test/instrumentation/modules/ioredis.test.js b/test/instrumentation/modules/ioredis.test.js index 8ea3722fad..473c132ae2 100644 --- a/test/instrumentation/modules/ioredis.test.js +++ b/test/instrumentation/modules/ioredis.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } var agent = require('../../..').start({ diff --git a/test/instrumentation/modules/kafkajs/kafkajs.test.js b/test/instrumentation/modules/kafkajs/kafkajs.test.js index c3f5fb12bc..42184c03ab 100644 --- a/test/instrumentation/modules/kafkajs/kafkajs.test.js +++ b/test/instrumentation/modules/kafkajs/kafkajs.test.js @@ -10,6 +10,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } const test = require('tape'); diff --git a/test/instrumentation/modules/koa-router/new-name.test.js b/test/instrumentation/modules/koa-router/new-name.test.js index 52cace26a8..ed0a9a43b0 100644 --- a/test/instrumentation/modules/koa-router/new-name.test.js +++ b/test/instrumentation/modules/koa-router/new-name.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } require('./shared')('@koa/router'); diff --git a/test/instrumentation/modules/koa-router/old-name.test.js b/test/instrumentation/modules/koa-router/old-name.test.js index bc3cf13d76..aa55d55fb1 100644 --- a/test/instrumentation/modules/koa-router/old-name.test.js +++ b/test/instrumentation/modules/koa-router/old-name.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } require('./shared')('koa-router'); diff --git a/test/instrumentation/modules/memcached.test.js b/test/instrumentation/modules/memcached.test.js index 3ce93b15b1..8308963229 100644 --- a/test/instrumentation/modules/memcached.test.js +++ b/test/instrumentation/modules/memcached.test.js @@ -10,6 +10,9 @@ if (process.platform === 'win32') { console.log('# SKIP memcached does not support Windows'); process.exit(); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } var agent = require('../../..').start({ diff --git a/test/instrumentation/modules/mimic-response.test.js b/test/instrumentation/modules/mimic-response.test.js index 2735f913a6..147fdf4b4b 100644 --- a/test/instrumentation/modules/mimic-response.test.js +++ b/test/instrumentation/modules/mimic-response.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } var agent = require('../../..').start({ diff --git a/test/instrumentation/modules/mongodb-core.test.js b/test/instrumentation/modules/mongodb-core.test.js index 4b1c621940..ceeb1c5be9 100644 --- a/test/instrumentation/modules/mongodb-core.test.js +++ b/test/instrumentation/modules/mongodb-core.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } var agent = require('../../..').start({ diff --git a/test/instrumentation/modules/mongodb/mongodb.test.js b/test/instrumentation/modules/mongodb/mongodb.test.js index 672f9600de..f33cc32ce4 100644 --- a/test/instrumentation/modules/mongodb/mongodb.test.js +++ b/test/instrumentation/modules/mongodb/mongodb.test.js @@ -17,6 +17,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } const isMongodbIncompat = require('../../../_is_mongodb_incompat')(); diff --git a/test/instrumentation/modules/mysql/mysql.test.js b/test/instrumentation/modules/mysql/mysql.test.js index b23d55f341..609384deef 100644 --- a/test/instrumentation/modules/mysql/mysql.test.js +++ b/test/instrumentation/modules/mysql/mysql.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } var agent = require('../../../..').start({ diff --git a/test/instrumentation/modules/mysql/pool-release-1.test.js b/test/instrumentation/modules/mysql/pool-release-1.test.js index 96cefa09f6..61103685d1 100644 --- a/test/instrumentation/modules/mysql/pool-release-1.test.js +++ b/test/instrumentation/modules/mysql/pool-release-1.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } var agent = require('../../../..').start({ diff --git a/test/instrumentation/modules/mysql2/mysql.test.js b/test/instrumentation/modules/mysql2/mysql.test.js index 989fff92a8..70476e6c82 100644 --- a/test/instrumentation/modules/mysql2/mysql.test.js +++ b/test/instrumentation/modules/mysql2/mysql.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } const semver = require('semver'); diff --git a/test/instrumentation/modules/mysql2/pool-release-1.test.js b/test/instrumentation/modules/mysql2/pool-release-1.test.js index 7475e995fa..6fbc0b97d8 100644 --- a/test/instrumentation/modules/mysql2/pool-release-1.test.js +++ b/test/instrumentation/modules/mysql2/pool-release-1.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } const semver = require('semver'); diff --git a/test/instrumentation/modules/pg/knex-no-span-stack-traces.test.js b/test/instrumentation/modules/pg/knex-no-span-stack-traces.test.js index 5ccff10ab9..6db7888cb2 100644 --- a/test/instrumentation/modules/pg/knex-no-span-stack-traces.test.js +++ b/test/instrumentation/modules/pg/knex-no-span-stack-traces.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } require('../../../..').start({ diff --git a/test/instrumentation/modules/pg/knex.test.js b/test/instrumentation/modules/pg/knex.test.js index 2294d7099a..bc4fd7709a 100644 --- a/test/instrumentation/modules/pg/knex.test.js +++ b/test/instrumentation/modules/pg/knex.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } process.env.ELASTIC_APM_TEST = true; diff --git a/test/instrumentation/modules/pg/pg.test.js b/test/instrumentation/modules/pg/pg.test.js index 7fd1e3d2ce..8365ec2c3c 100644 --- a/test/instrumentation/modules/pg/pg.test.js +++ b/test/instrumentation/modules/pg/pg.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } var agent = require('../../../..').start({ diff --git a/test/instrumentation/modules/pug.test.js b/test/instrumentation/modules/pug.test.js index 22e907f1b3..6543e5ec33 100644 --- a/test/instrumentation/modules/pug.test.js +++ b/test/instrumentation/modules/pug.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } process.env.ELASTIC_APM_TEST = true; diff --git a/test/instrumentation/modules/redis-2-3.test.js b/test/instrumentation/modules/redis-2-3.test.js index 3c6ba3ff51..c267355582 100644 --- a/test/instrumentation/modules/redis-2-3.test.js +++ b/test/instrumentation/modules/redis-2-3.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } var redisVersion = require('redis/package.json').version; diff --git a/test/instrumentation/modules/redis-disabled.test.js b/test/instrumentation/modules/redis-disabled.test.js index 58f7f51195..c22e6f2a7f 100644 --- a/test/instrumentation/modules/redis-disabled.test.js +++ b/test/instrumentation/modules/redis-disabled.test.js @@ -11,6 +11,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } const redisVersion = require('redis/package.json').version; diff --git a/test/instrumentation/modules/redis.test.js b/test/instrumentation/modules/redis.test.js index 9e277c8a08..2e5a70d162 100644 --- a/test/instrumentation/modules/redis.test.js +++ b/test/instrumentation/modules/redis.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } const redisVersion = require('redis/package.json').version; diff --git a/test/instrumentation/modules/redis4-legacy.test.js b/test/instrumentation/modules/redis4-legacy.test.js index 1f96809845..df4bff93c7 100644 --- a/test/instrumentation/modules/redis4-legacy.test.js +++ b/test/instrumentation/modules/redis4-legacy.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } // this test file is about testing `legacyMode` diff --git a/test/instrumentation/modules/restify/basic.test.js b/test/instrumentation/modules/restify/basic.test.js index 8233507099..c956e70b15 100644 --- a/test/instrumentation/modules/restify/basic.test.js +++ b/test/instrumentation/modules/restify/basic.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } const isRestifyIncompat = require('../../../_is_restify_incompat')(); diff --git a/test/instrumentation/modules/restify/set-framework.test.js b/test/instrumentation/modules/restify/set-framework.test.js index 1a6f273b62..a8c6db3dc5 100644 --- a/test/instrumentation/modules/restify/set-framework.test.js +++ b/test/instrumentation/modules/restify/set-framework.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } const isRestifyIncompat = require('../../../_is_restify_incompat')(); diff --git a/test/instrumentation/modules/tedious.test.js b/test/instrumentation/modules/tedious.test.js index 6f3499076c..f80d9e4c1c 100644 --- a/test/instrumentation/modules/tedious.test.js +++ b/test/instrumentation/modules/tedious.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } const agent = require('../../../').start({ diff --git a/test/instrumentation/modules/undici/fetch.test.js b/test/instrumentation/modules/undici/fetch.test.js index 4467aac050..9c74b567e2 100644 --- a/test/instrumentation/modules/undici/fetch.test.js +++ b/test/instrumentation/modules/undici/fetch.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } // Test node v18's `fetch` implementation (based on undici). diff --git a/test/instrumentation/modules/undici/undici.test.js b/test/instrumentation/modules/undici/undici.test.js index e4cf13d6a3..91f5881731 100644 --- a/test/instrumentation/modules/undici/undici.test.js +++ b/test/instrumentation/modules/undici/undici.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } process.env.ELASTIC_APM_TEST = true; diff --git a/test/instrumentation/modules/ws.test.js b/test/instrumentation/modules/ws.test.js index 6c0c2f094b..de3b7bdd0d 100644 --- a/test/instrumentation/modules/ws.test.js +++ b/test/instrumentation/modules/ws.test.js @@ -9,6 +9,9 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { console.log('# SKIP: GH Actions do not support docker services on Windows'); process.exit(0); +} else if (process.env.TEST_WITHOUT_SERVICES === 'true') { + console.log('# SKIP: env.TEST_WITHOUT_SERVICES=true'); + process.exit(0); } var agent = require('../../..').start({ diff --git a/test/integration/abort-on-invalid-cert.test.js b/test/integration/abort-on-invalid-cert.test.js index 2d1ff2d402..2ff52eb81c 100644 --- a/test/integration/abort-on-invalid-cert.test.js +++ b/test/integration/abort-on-invalid-cert.test.js @@ -6,8 +6,15 @@ 'use strict'; +const fs = require('fs'); +const path = require('path'); var getPort = require('get-port'); +const tlsOpts = { + cert: fs.readFileSync(path.resolve(__dirname, '../fixtures/certs/cert.pem')), + key: fs.readFileSync(path.resolve(__dirname, '../fixtures/certs/key.pem')), +}; + getPort().then( function (port) { var agent = require('../../').start({ @@ -18,13 +25,12 @@ getPort().then( }); var https = require('https'); - var pem = require('https-pem'); var test = require('tape'); test('should not allow self signed certificate', function (t) { t.plan(1); - var server = https.createServer(pem, function (req, res) { + var server = https.createServer(tlsOpts, function (req, res) { // Gotcha: there's no way to know if the agent failed except setting // `logLevel < error` and looking at stderr, which is a bit cumbersome. // This is easier. diff --git a/test/integration/allow-invalid-cert.test.js b/test/integration/allow-invalid-cert.test.js index 03ef4fbbfc..a2a6107cce 100644 --- a/test/integration/allow-invalid-cert.test.js +++ b/test/integration/allow-invalid-cert.test.js @@ -6,8 +6,16 @@ 'use strict'; +const fs = require('fs'); +const path = require('path'); + var getPort = require('get-port'); +const tlsOpts = { + cert: fs.readFileSync(path.resolve(__dirname, '../fixtures/certs/cert.pem')), + key: fs.readFileSync(path.resolve(__dirname, '../fixtures/certs/key.pem')), +}; + getPort().then( function (port) { var agent = require('../../').start({ @@ -22,13 +30,12 @@ getPort().then( }); var https = require('https'); - var pem = require('https-pem'); var test = require('tape'); test('should allow self signed certificate', function (t) { t.plan(3); - var server = https.createServer(pem, function (req, res) { + var server = https.createServer(tlsOpts, function (req, res) { t.pass('server received client request'); res.end(); }); diff --git a/test/integration/cert.pem b/test/integration/cert.pem deleted file mode 100644 index cdb0610ac3..0000000000 --- a/test/integration/cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICETCCAXqgAwIBAgIQQalo5z3llnTiwERMPZQxujANBgkqhkiG9w0BAQsFADAS -MRAwDgYDVQQKEwdBY21lIENvMCAXDTcwMDEwMTAwMDAwMFoYDzIwODQwMTI5MTYw -MDAwWjASMRAwDgYDVQQKEwdBY21lIENvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB -iQKBgQDrW9Z8jSgTMeN9Dt36HBj/kbU/aeFp10GshKm8IKWBpyyWKrTSjiYJIpTK -l/6sdC77UCDokYAk66T+IXIvvRvqOtD1HUt+KLlqZ7acunTp1Qq4PnASHBm9fdKs -F1c8gWlEXOMzCsC5BmokcijW7z8JTKszAVi2vpq5MHbtYxZXKQIDAQABo2YwZDAO -BgNVHQ8BAf8EBAMCAqQwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUw -AwEB/zAsBgNVHREEJTAjgglsb2NhbGhvc3SHBH8AAAGHEAAAAAAAAAAAAAAAAAAA -AAEwDQYJKoZIhvcNAQELBQADgYEA4yzI/6gjkACdvrnlFm/MJlDQztPYYEAtQ6Sp -0q0PMQcynLfhH94KMjxJb31HNPJYXr7UrE6gwL2sUnfioXUTQTk35okpphR8MGu2 -hZ704px4wdeK/9B5Vh96oMZLYhm9SXizRVAZz7bPFYNMrhyk9lrWZXOaX526w4wI -Y5LTiUQ= ------END CERTIFICATE----- diff --git a/test/integration/key.pem b/test/integration/key.pem deleted file mode 100644 index 10789e1347..0000000000 --- a/test/integration/key.pem +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAOtb1nyNKBMx430O -3focGP+RtT9p4WnXQayEqbwgpYGnLJYqtNKOJgkilMqX/qx0LvtQIOiRgCTrpP4h -ci+9G+o60PUdS34ouWpntpy6dOnVCrg+cBIcGb190qwXVzyBaURc4zMKwLkGaiRy -KNbvPwlMqzMBWLa+mrkwdu1jFlcpAgMBAAECgYEAtZc9LQooIm86izHeWOw26XD9 -u/iwf94igL42y70QlbFreE1pCI++jwvMa2fMijh2S1bunSIuEc5yldUuaeDp2FtJ -k7U9orbJspnWy6ixk1KgpjffdHP73r4S3a5G81G8sq9Uvwl0vxF90eTvg9C7kUfk -J1YMy4zcpLtwkCHEkNUCQQDx79t6Dqswi8vDoS0+MCIJNCO4J49ZchL8aXE8n9GT -mF+eOsKy6e5qYH0oYPpeXchwf1tWhX1gBCb3fXrtOoPTAkEA+QoX9S1XofY8YS1M -iNVVSkLjpKgVoTQVe4j+vj16NHouVQ+oOvEUca2LTrHRx+utdar1NSexl51NO0Lj -3sqnkwJAPNWCC3Pqyb8tEljRxoRV2piYrrKL0gLkEUH2LjdFfGZhDKlb0Z8OywLO -Fbwk2FuejeMINX5FY0JIBg0wPrxq7wJAMoot2n/dLO0/y6jZw1sn9+4jLKM/4Hsl -cPCYYhsv1b6F8JVA2tVaBMfnYY0MubnGdf6/zI3FqLMvnTsx62DNKQJBAMYUaw/D -plXTexeEU/c0BRxQdOkGmDqOQtnuRQUCQq6gu+occTeilgFoKHWT3QcZHIpHxawJ -N2K67EWPRgr3suE= ------END PRIVATE KEY----- diff --git a/test/integration/verify-server-ca-cert.test.js b/test/integration/verify-server-ca-cert.test.js index 7494c4bbe0..87b97f4129 100644 --- a/test/integration/verify-server-ca-cert.test.js +++ b/test/integration/verify-server-ca-cert.test.js @@ -21,7 +21,7 @@ getPort().then( centralConfig: false, apmServerVersion: '8.0.0', disableInstrumentations: ['https'], // avoid the agent instrumenting the mock APM Server - serverCaCertFile: path.join(__dirname, 'cert.pem'), // self-signed certificate + serverCaCertFile: path.join(__dirname, '../fixtures/certs/cert.pem'), // self-signed certificate }); var https = require('https'); @@ -30,8 +30,12 @@ getPort().then( test('should allow self signed certificate', function (t) { t.plan(3); - var cert = fs.readFileSync(path.join(__dirname, 'cert.pem')); - var key = fs.readFileSync(path.join(__dirname, 'key.pem')); + var cert = fs.readFileSync( + path.join(__dirname, '../fixtures/certs/cert.pem'), + ); + var key = fs.readFileSync( + path.join(__dirname, '../fixtures/certs/key.pem'), + ); var server = https.createServer({ cert, key }, function (req, res) { t.pass('server received client request'); diff --git a/test/sanitize-field-names/_shared.js b/test/sanitize-field-names/_shared.js index b20aff1c6d..62ecf36759 100644 --- a/test/sanitize-field-names/_shared.js +++ b/test/sanitize-field-names/_shared.js @@ -96,6 +96,7 @@ function createAgentConfig(values = {}) { metricsInterval: 0, centralConfig: false, captureBody: 'all', + apmServerVersion: '8.17.0', }; const agentConfig = Object.assign(values, defaultAgentConfig); diff --git a/test/sanitize-field-names/hapi.test.js b/test/sanitize-field-names/hapi.test.js index 76362b445c..469da53ca8 100644 --- a/test/sanitize-field-names/hapi.test.js +++ b/test/sanitize-field-names/hapi.test.js @@ -64,7 +64,7 @@ async function runTest( agent._config(agentConfig); const server = Hapi.server({ port: 0, - host: 'localhost', + host: '127.0.0.1', }); // resets agent values for tests. Callback fires From 3cb9b29d3ff5c2358c128dd67dddfe6f3d34be97 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 12:03:19 +0100 Subject: [PATCH 283/396] chore(deps-dev): bump mongodb from 6.12.0 to 6.13.0 (#4446) --- package-lock.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index a9fdd3f645..f2cba041d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12352,10 +12352,11 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "node_modules/mongodb": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.12.0.tgz", - "integrity": "sha512-RM7AHlvYfS7jv7+BXund/kR64DryVI+cHbVAy9P61fnb1RcWZqOW1/Wj2YhqMCx+MuYhqTRGv7AwHBzmsCKBfA==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.13.0.tgz", + "integrity": "sha512-KeESYR5TEaFxOuwRqkOm3XOsMqCSkdeDMjaW5u2nuKfX7rqaofp7JQGoi7sVqQcNJTKuveNbzZtWMstb8ABP6Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@mongodb-js/saslprep": "^1.1.9", "bson": "^6.10.1", @@ -25809,9 +25810,9 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "mongodb": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.12.0.tgz", - "integrity": "sha512-RM7AHlvYfS7jv7+BXund/kR64DryVI+cHbVAy9P61fnb1RcWZqOW1/Wj2YhqMCx+MuYhqTRGv7AwHBzmsCKBfA==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.13.0.tgz", + "integrity": "sha512-KeESYR5TEaFxOuwRqkOm3XOsMqCSkdeDMjaW5u2nuKfX7rqaofp7JQGoi7sVqQcNJTKuveNbzZtWMstb8ABP6Q==", "dev": true, "requires": { "@mongodb-js/saslprep": "^1.1.9", From 4f0efaec55df552bb8e2330fca89b04f442bafff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 12:03:57 +0100 Subject: [PATCH 284/396] chore(deps-dev): bump @types/node from 22.10.1 to 22.13.0 (#4447) --- package-lock.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index f2cba041d8..004913fa75 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6243,10 +6243,11 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", - "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", + "version": "22.13.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.0.tgz", + "integrity": "sha512-ClIbNe36lawluuvq3+YYhnIN2CELi+6q8NpnM7PYp4hBn/TatfboPgVSm2rwKRfnV2M+Ty9GWDFI64KEe+kysA==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~6.20.0" } @@ -21165,9 +21166,9 @@ "dev": true }, "@types/node": { - "version": "22.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", - "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", + "version": "22.13.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.0.tgz", + "integrity": "sha512-ClIbNe36lawluuvq3+YYhnIN2CELi+6q8NpnM7PYp4hBn/TatfboPgVSm2rwKRfnV2M+Ty9GWDFI64KEe+kysA==", "dev": true, "requires": { "undici-types": "~6.20.0" From 52a6766ba8bf799080a31ea160db457d6b3ff1e5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 12:08:20 +0100 Subject: [PATCH 285/396] chore(deps): bump require-in-the-middle from 7.4.0 to 7.5.0 (#4448) --- package-lock.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 004913fa75..7c8187ce34 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14090,9 +14090,10 @@ } }, "node_modules/require-in-the-middle": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.4.0.tgz", - "integrity": "sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.0.tgz", + "integrity": "sha512-/Tvpny/RVVicqlYTKwt/GtpZRsPG1CmJNhxVKGz+Sy/4MONfXCVNK69MFgGKdUt0/324q3ClI2dICcPgISrC8g==", + "license": "MIT", "dependencies": { "debug": "^4.3.5", "module-details-from-path": "^1.0.3", @@ -27141,9 +27142,9 @@ "dev": true }, "require-in-the-middle": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.4.0.tgz", - "integrity": "sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.0.tgz", + "integrity": "sha512-/Tvpny/RVVicqlYTKwt/GtpZRsPG1CmJNhxVKGz+Sy/4MONfXCVNK69MFgGKdUt0/324q3ClI2dICcPgISrC8g==", "requires": { "debug": "^4.3.5", "module-details-from-path": "^1.0.3", From 4752c48ae8784c2591b348d8767a70d335643596 Mon Sep 17 00:00:00 2001 From: "elastic-observability-automation[bot]" <180520183+elastic-observability-automation[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 16:01:35 +0100 Subject: [PATCH 286/396] chore: deps(updatecli): Bump updatecli version to v0.93.1 (#4450) --- .tool-versions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tool-versions b/.tool-versions index e9de826baa..0cf1b341d1 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -updatecli v0.92.0 \ No newline at end of file +updatecli v0.93.1 \ No newline at end of file From 1b1ad56a59a1d3657e7baa1ac944c9e08ffec895 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2025 11:40:32 +0100 Subject: [PATCH 287/396] chore(deps-dev): bump eslint from 9.19.0 to 9.20.0 in the eslint group (#4453) --- package-lock.json | 54 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7c8187ce34..1393d05663 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4203,9 +4203,9 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "9.19.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.19.0.tgz", - "integrity": "sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==", + "version": "9.20.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.20.0.tgz", + "integrity": "sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==", "dev": true, "license": "MIT", "engines": { @@ -8926,18 +8926,18 @@ } }, "node_modules/eslint": { - "version": "9.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.19.0.tgz", - "integrity": "sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==", + "version": "9.20.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.0.tgz", + "integrity": "sha512-aL4F8167Hg4IvsW89ejnpTwx+B/UQRzJPGgbIOl+4XqffWsahVVsLEWoZvnrVuwpWmnRd7XeXmQI1zlKcFDteA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.10.0", + "@eslint/core": "^0.11.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.19.0", + "@eslint/js": "9.20.0", "@eslint/plugin-kit": "^0.2.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -9290,6 +9290,19 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/@eslint/core": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.11.0.tgz", + "integrity": "sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/eslint/node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -19361,9 +19374,9 @@ } }, "@eslint/js": { - "version": "9.19.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.19.0.tgz", - "integrity": "sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==", + "version": "9.20.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.20.0.tgz", + "integrity": "sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==", "dev": true }, "@eslint/object-schema": { @@ -23235,17 +23248,17 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.19.0.tgz", - "integrity": "sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==", + "version": "9.20.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.0.tgz", + "integrity": "sha512-aL4F8167Hg4IvsW89ejnpTwx+B/UQRzJPGgbIOl+4XqffWsahVVsLEWoZvnrVuwpWmnRd7XeXmQI1zlKcFDteA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.10.0", + "@eslint/core": "^0.11.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.19.0", + "@eslint/js": "9.20.0", "@eslint/plugin-kit": "^0.2.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -23276,6 +23289,15 @@ "optionator": "^0.9.3" }, "dependencies": { + "@eslint/core": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.11.0.tgz", + "integrity": "sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.15" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", From 8a8f7f9b9461b8a74a89cdd2f50c02676b974cb9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2025 11:52:23 +0100 Subject: [PATCH 288/396] chore(deps-dev): bump prettier from 3.4.2 to 3.5.0 (#4454) --- package-lock.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1393d05663..00c8a134cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13535,10 +13535,11 @@ } }, "node_modules/prettier": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", - "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.0.tgz", + "integrity": "sha512-quyMrVt6svPS7CjQ9gKb3GLEX/rl3BCL2oa/QkNcXv4YNVBC9olt3s+H7ukto06q7B1Qz46PbrKLO34PR6vXcA==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -26711,9 +26712,9 @@ "dev": true }, "prettier": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", - "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.0.tgz", + "integrity": "sha512-quyMrVt6svPS7CjQ9gKb3GLEX/rl3BCL2oa/QkNcXv4YNVBC9olt3s+H7ukto06q7B1Qz46PbrKLO34PR6vXcA==", "dev": true }, "prettier-linter-helpers": { From fce1a38ee0682cee8ac681e406f7428c43c15747 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2025 11:53:05 +0100 Subject: [PATCH 289/396] chore(deps): bump import-in-the-middle from 1.12.0 to 1.13.0 (#4455) --- package-lock.json | 19 ++++++++++--------- package.json | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 00c8a134cc..b4cf8f5758 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "fast-safe-stringify": "^2.0.7", "fast-stream-to-buffer": "^1.0.0", "http-headers": "^3.0.2", - "import-in-the-middle": "1.12.0", + "import-in-the-middle": "1.13.0", "json-bigint": "^1.0.0", "lru-cache": "10.2.0", "measured-reporting": "^1.51.1", @@ -10821,11 +10821,12 @@ } }, "node_modules/import-in-the-middle": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.12.0.tgz", - "integrity": "sha512-yAgSE7GmtRcu4ZUSFX/4v69UGXwugFFSdIQJ14LHPOPPQrWv8Y7O9PHsw8Ovk7bKCLe4sjXMbZFqGFcLHpZ89w==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.13.0.tgz", + "integrity": "sha512-YG86SYDtrL/Yu8JgfWb7kjQ0myLeT1whw6fs/ZHFkXFcbk9zJU9lOCsSJHpvaPumU11nN3US7NW6x1YTk+HrUA==", + "license": "Apache-2.0", "dependencies": { - "acorn": "^8.8.2", + "acorn": "^8.14.0", "acorn-import-attributes": "^1.9.5", "cjs-module-lexer": "^1.2.2", "module-details-from-path": "^1.0.3" @@ -24671,11 +24672,11 @@ } }, "import-in-the-middle": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.12.0.tgz", - "integrity": "sha512-yAgSE7GmtRcu4ZUSFX/4v69UGXwugFFSdIQJ14LHPOPPQrWv8Y7O9PHsw8Ovk7bKCLe4sjXMbZFqGFcLHpZ89w==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.13.0.tgz", + "integrity": "sha512-YG86SYDtrL/Yu8JgfWb7kjQ0myLeT1whw6fs/ZHFkXFcbk9zJU9lOCsSJHpvaPumU11nN3US7NW6x1YTk+HrUA==", "requires": { - "acorn": "^8.8.2", + "acorn": "^8.14.0", "acorn-import-attributes": "^1.9.5", "cjs-module-lexer": "^1.2.2", "module-details-from-path": "^1.0.3" diff --git a/package.json b/package.json index 95eb51fde5..eff1c50618 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "fast-safe-stringify": "^2.0.7", "fast-stream-to-buffer": "^1.0.0", "http-headers": "^3.0.2", - "import-in-the-middle": "1.12.0", + "import-in-the-middle": "1.13.0", "json-bigint": "^1.0.0", "lru-cache": "10.2.0", "measured-reporting": "^1.51.1", From 55bcf9003e9005e24524ea4a4664a672b56153f1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2025 12:06:23 +0100 Subject: [PATCH 290/396] chore(deps): bump require-in-the-middle from 7.5.0 to 7.5.1 (#4456) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index b4cf8f5758..b8e37660e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14105,9 +14105,9 @@ } }, "node_modules/require-in-the-middle": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.0.tgz", - "integrity": "sha512-/Tvpny/RVVicqlYTKwt/GtpZRsPG1CmJNhxVKGz+Sy/4MONfXCVNK69MFgGKdUt0/324q3ClI2dICcPgISrC8g==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.1.tgz", + "integrity": "sha512-fgZEz/t3FDrU9o7EhI+iNNq1pNNpJImOvX72HUd6RoFiw8MaKd8/gR5tLuc8A0G0e55LMbP6ImjnmXY6zrTmjw==", "license": "MIT", "dependencies": { "debug": "^4.3.5", @@ -27166,9 +27166,9 @@ "dev": true }, "require-in-the-middle": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.0.tgz", - "integrity": "sha512-/Tvpny/RVVicqlYTKwt/GtpZRsPG1CmJNhxVKGz+Sy/4MONfXCVNK69MFgGKdUt0/324q3ClI2dICcPgISrC8g==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.1.tgz", + "integrity": "sha512-fgZEz/t3FDrU9o7EhI+iNNq1pNNpJImOvX72HUd6RoFiw8MaKd8/gR5tLuc8A0G0e55LMbP6ImjnmXY6zrTmjw==", "requires": { "debug": "^4.3.5", "module-details-from-path": "^1.0.3", From 21a3d9c8605d0546f9ae07932336db98f93cb300 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2025 12:08:14 +0100 Subject: [PATCH 291/396] chore(deps): bump @azure/functions (#4458) --- .../azure-functions/fixtures/azfunc4/package-lock.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/test/instrumentation/azure-functions/fixtures/azfunc4/package-lock.json b/test/instrumentation/azure-functions/fixtures/azfunc4/package-lock.json index 0d6e62d72f..4900c94fb7 100644 --- a/test/instrumentation/azure-functions/fixtures/azfunc4/package-lock.json +++ b/test/instrumentation/azure-functions/fixtures/azfunc4/package-lock.json @@ -12,9 +12,10 @@ } }, "node_modules/@azure/functions": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@azure/functions/-/functions-4.6.0.tgz", - "integrity": "sha512-vGq9jXlgrJ3KaI8bepgfpk26zVY8vFZsQukF85qjjKTAR90eFOOBNaa+mc/0ViDY2lcdrU2fL/o1pQyZUtTDsw==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@azure/functions/-/functions-4.6.1.tgz", + "integrity": "sha512-Py2Az29yk+A21vHES/rL6iU3ptKB+vVz3sGTjm0jSPFjG4kPbhFLi5vFI7YkCPMGeoD4WMIjHqTAeXvnFrBUBA==", + "license": "MIT", "dependencies": { "cookie": "^0.7.0", "long": "^4.0.0", From 8d9d5fd26993fad5924977aad9c8d5bfdb59e595 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2025 12:34:02 +0100 Subject: [PATCH 292/396] chore(deps-dev): bump ioredis from 5.4.2 to 5.5.0 (#4457) --- package-lock.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index b8e37660e5..fccbc6e3b5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10888,10 +10888,11 @@ } }, "node_modules/ioredis": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.4.2.tgz", - "integrity": "sha512-0SZXGNGZ+WzISQ67QDyZ2x0+wVxjjUndtD8oSeik/4ajifeiRufed8fCb8QW8VMyi4MXcS+UO1k/0NGhvq1PAg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.5.0.tgz", + "integrity": "sha512-7CutT89g23FfSa8MDoIFs2GYYa0PaNiW/OrT+nRyjRXHDZd17HmIgy+reOQ/yhh72NznNjGuS8kbCAcA4Ro4mw==", "dev": true, + "license": "MIT", "dependencies": { "@ioredis/commands": "^1.1.1", "cluster-key-slot": "^1.1.0", @@ -24726,9 +24727,9 @@ "dev": true }, "ioredis": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.4.2.tgz", - "integrity": "sha512-0SZXGNGZ+WzISQ67QDyZ2x0+wVxjjUndtD8oSeik/4ajifeiRufed8fCb8QW8VMyi4MXcS+UO1k/0NGhvq1PAg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.5.0.tgz", + "integrity": "sha512-7CutT89g23FfSa8MDoIFs2GYYa0PaNiW/OrT+nRyjRXHDZd17HmIgy+reOQ/yhh72NznNjGuS8kbCAcA4Ro4mw==", "dev": true, "requires": { "@ioredis/commands": "^1.1.1", From 4b275b78aeb2e04db24fcbb4fc333ad1ebe1c067 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2025 12:23:26 +0100 Subject: [PATCH 293/396] chore(deps): update wolfi (versioned) (#4444) --- .github/workflows/test-fips.yml | 2 +- Dockerfile.wolfi | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-fips.yml b/.github/workflows/test-fips.yml index fd41e2d0e8..81cc846f73 100644 --- a/.github/workflows/test-fips.yml +++ b/.github/workflows/test-fips.yml @@ -21,7 +21,7 @@ jobs: # https://docs.github.com/en/actions/writing-workflows/choosing-where-your-workflow-runs/running-jobs-in-a-container # docker run -it --rm --name fipsy docker.elastic.co/wolfi/chainguard-base-fips:latest container: - image: docker.elastic.co/wolfi/chainguard-base-fips:latest + image: docker.elastic.co/wolfi/chainguard-base-fips:latest@sha256:0570bec1936a461ab26c2e5b917e2485965d75e4b46bf550b3e34f69fe1f626e credentials: username: ${{ secrets.ELASTIC_DOCKER_USERNAME }} password: ${{ secrets.ELASTIC_DOCKER_PASSWORD }} diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 883893f994..1dfeea01f5 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:bd401704a162a7937cd1015f755ca9da9aba0fdf967fc6bf90bf8d3f6b2eb557 +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:d74b1fda6b7fee2c90b410df258e005c049e0672fe16d79d00e58f14fb69f90b ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 4660c6633cc883ebbf1f319f830b91693e4d1080 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2025 13:06:01 +0100 Subject: [PATCH 294/396] chore(deps-dev): bump the eslint group with 2 updates (#4461) - Updates `eslint` from 9.20.0 to 9.20.1 - Updates `eslint-plugin-license-header` from 0.6.1 to 0.7.0 --- package-lock.json | 27 ++++++++++++++------------- package.json | 2 +- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index fccbc6e3b5..ad32101809 100644 --- a/package-lock.json +++ b/package-lock.json @@ -79,7 +79,7 @@ "eslint": "^9.0.0", "eslint-config-prettier": "^10.0.1", "eslint-plugin-import": "^2.28.0", - "eslint-plugin-license-header": "^0.6.0", + "eslint-plugin-license-header": "^0.7.0", "eslint-plugin-n": "^17.2.0", "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-promise": "^7.0.0", @@ -8926,9 +8926,9 @@ } }, "node_modules/eslint": { - "version": "9.20.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.0.tgz", - "integrity": "sha512-aL4F8167Hg4IvsW89ejnpTwx+B/UQRzJPGgbIOl+4XqffWsahVVsLEWoZvnrVuwpWmnRd7XeXmQI1zlKcFDteA==", + "version": "9.20.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.1.tgz", + "integrity": "sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==", "dev": true, "license": "MIT", "dependencies": { @@ -9144,10 +9144,11 @@ } }, "node_modules/eslint-plugin-license-header": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-license-header/-/eslint-plugin-license-header-0.6.1.tgz", - "integrity": "sha512-9aIz8q3OaMr1/uQmCGCWySjTs5nEXUJexNegz/8lluNcZbEl82Ag1Vyr1Hu3oIveRW1NbXDPs6nu4zu9mbrmWA==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-license-header/-/eslint-plugin-license-header-0.7.0.tgz", + "integrity": "sha512-7J6uFW0rv/wtGzN3xMuVkH3EOeeuJ+g92HXTSe70mV0Vw0gX6HK0+24IfV6pmR6qz1/UP/zjVEgtyAMGqxjjvw==", "dev": true, + "license": "MIT", "dependencies": { "requireindex": "^1.2.0" } @@ -23251,9 +23252,9 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.20.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.0.tgz", - "integrity": "sha512-aL4F8167Hg4IvsW89ejnpTwx+B/UQRzJPGgbIOl+4XqffWsahVVsLEWoZvnrVuwpWmnRd7XeXmQI1zlKcFDteA==", + "version": "9.20.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.1.tgz", + "integrity": "sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", @@ -23489,9 +23490,9 @@ } }, "eslint-plugin-license-header": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-license-header/-/eslint-plugin-license-header-0.6.1.tgz", - "integrity": "sha512-9aIz8q3OaMr1/uQmCGCWySjTs5nEXUJexNegz/8lluNcZbEl82Ag1Vyr1Hu3oIveRW1NbXDPs6nu4zu9mbrmWA==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-license-header/-/eslint-plugin-license-header-0.7.0.tgz", + "integrity": "sha512-7J6uFW0rv/wtGzN3xMuVkH3EOeeuJ+g92HXTSe70mV0Vw0gX6HK0+24IfV6pmR6qz1/UP/zjVEgtyAMGqxjjvw==", "dev": true, "requires": { "requireindex": "^1.2.0" diff --git a/package.json b/package.json index eff1c50618..3e371da6ad 100644 --- a/package.json +++ b/package.json @@ -158,7 +158,7 @@ "eslint": "^9.0.0", "eslint-config-prettier": "^10.0.1", "eslint-plugin-import": "^2.28.0", - "eslint-plugin-license-header": "^0.6.0", + "eslint-plugin-license-header": "^0.7.0", "eslint-plugin-n": "^17.2.0", "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-promise": "^7.0.0", From c14b83ac38aee7da746bcc2d5e842657c85a2e6a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2025 13:07:24 +0100 Subject: [PATCH 295/396] chore(deps-dev): bump koa from 2.15.3 to 2.15.4 (#4462) --- package-lock.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index ad32101809..2b1534d938 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11743,10 +11743,11 @@ } }, "node_modules/koa": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.15.3.tgz", - "integrity": "sha512-j/8tY9j5t+GVMLeioLaxweJiKUayFhlGqNTzf2ZGwL0ZCQijd2RLHK0SLW5Tsko8YyyqCZC2cojIb0/s62qTAg==", + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.15.4.tgz", + "integrity": "sha512-7fNBIdrU2PEgLljXoPWoyY4r1e+ToWCmzS/wwMPbUNs7X+5MMET1ObhJBlUkF5uZG9B6QhM2zS1TsH6adegkiQ==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "^1.3.5", "cache-content-type": "^1.0.0", @@ -25341,9 +25342,9 @@ } }, "koa": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.15.3.tgz", - "integrity": "sha512-j/8tY9j5t+GVMLeioLaxweJiKUayFhlGqNTzf2ZGwL0ZCQijd2RLHK0SLW5Tsko8YyyqCZC2cojIb0/s62qTAg==", + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.15.4.tgz", + "integrity": "sha512-7fNBIdrU2PEgLljXoPWoyY4r1e+ToWCmzS/wwMPbUNs7X+5MMET1ObhJBlUkF5uZG9B6QhM2zS1TsH6adegkiQ==", "dev": true, "requires": { "accepts": "^1.3.5", From 94379c97626c034ada0e93a0018c1ca534fb5a59 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2025 09:37:16 +0100 Subject: [PATCH 296/396] chore(deps-dev): bump prettier from 3.5.0 to 3.5.1 (#4464) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2b1534d938..382e001492 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13539,9 +13539,9 @@ } }, "node_modules/prettier": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.0.tgz", - "integrity": "sha512-quyMrVt6svPS7CjQ9gKb3GLEX/rl3BCL2oa/QkNcXv4YNVBC9olt3s+H7ukto06q7B1Qz46PbrKLO34PR6vXcA==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.1.tgz", + "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==", "dev": true, "license": "MIT", "bin": { @@ -26716,9 +26716,9 @@ "dev": true }, "prettier": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.0.tgz", - "integrity": "sha512-quyMrVt6svPS7CjQ9gKb3GLEX/rl3BCL2oa/QkNcXv4YNVBC9olt3s+H7ukto06q7B1Qz46PbrKLO34PR6vXcA==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.1.tgz", + "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==", "dev": true }, "prettier-linter-helpers": { From da2a06d0aba99e489da7df4662d00f44991e7101 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2025 09:38:01 +0100 Subject: [PATCH 297/396] chore(deps-dev): bump pg from 8.13.1 to 8.13.3 (#4463) --- package-lock.json | 49 +++++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/package-lock.json b/package-lock.json index 382e001492..f6852f5b93 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13143,14 +13143,15 @@ } }, "node_modules/pg": { - "version": "8.13.1", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.13.1.tgz", - "integrity": "sha512-OUir1A0rPNZlX//c7ksiu7crsGZTKSOXJPgtNiHGIlC9H0lO+NC6ZDYksSgBYY/thSWhnSRBv8w1lieNNGATNQ==", + "version": "8.13.3", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.13.3.tgz", + "integrity": "sha512-P6tPt9jXbL9HVu/SSRERNYaYG++MjnscnegFh9pPHihfoBSujsrka0hyuymMzeJKFWrcG8wvCKy8rCe8e5nDUQ==", "dev": true, + "license": "MIT", "dependencies": { "pg-connection-string": "^2.7.0", - "pg-pool": "^3.7.0", - "pg-protocol": "^1.7.0", + "pg-pool": "^3.7.1", + "pg-protocol": "^1.7.1", "pg-types": "^2.1.0", "pgpass": "1.x" }, @@ -13192,19 +13193,21 @@ } }, "node_modules/pg-pool": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.7.0.tgz", - "integrity": "sha512-ZOBQForurqh4zZWjrgSwwAtzJ7QiRX0ovFkZr2klsen3Nm0aoh33Ls0fzfv3imeH/nw/O27cjdz5kzYJfeGp/g==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.7.1.tgz", + "integrity": "sha512-xIOsFoh7Vdhojas6q3596mXFsR8nwBQBXX5JiV7p9buEVAGqYL4yFzclON5P9vFrpu1u7Zwl2oriyDa89n0wbw==", "dev": true, + "license": "MIT", "peerDependencies": { "pg": ">=8.0" } }, "node_modules/pg-protocol": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.0.tgz", - "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==", - "dev": true + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.1.tgz", + "integrity": "sha512-gjTHWGYWsEgy9MsY0Gp6ZJxV24IjDqdpTW7Eh0x+WfJLFsm/TJx1MzL6T0D88mBvkpxotCQ6TwW6N+Kko7lhgQ==", + "dev": true, + "license": "MIT" }, "node_modules/pg-types": { "version": "2.2.0", @@ -26432,15 +26435,15 @@ "dev": true }, "pg": { - "version": "8.13.1", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.13.1.tgz", - "integrity": "sha512-OUir1A0rPNZlX//c7ksiu7crsGZTKSOXJPgtNiHGIlC9H0lO+NC6ZDYksSgBYY/thSWhnSRBv8w1lieNNGATNQ==", + "version": "8.13.3", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.13.3.tgz", + "integrity": "sha512-P6tPt9jXbL9HVu/SSRERNYaYG++MjnscnegFh9pPHihfoBSujsrka0hyuymMzeJKFWrcG8wvCKy8rCe8e5nDUQ==", "dev": true, "requires": { "pg-cloudflare": "^1.1.1", "pg-connection-string": "^2.7.0", - "pg-pool": "^3.7.0", - "pg-protocol": "^1.7.0", + "pg-pool": "^3.7.1", + "pg-protocol": "^1.7.1", "pg-types": "^2.1.0", "pgpass": "1.x" }, @@ -26473,15 +26476,15 @@ "dev": true }, "pg-pool": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.7.0.tgz", - "integrity": "sha512-ZOBQForurqh4zZWjrgSwwAtzJ7QiRX0ovFkZr2klsen3Nm0aoh33Ls0fzfv3imeH/nw/O27cjdz5kzYJfeGp/g==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.7.1.tgz", + "integrity": "sha512-xIOsFoh7Vdhojas6q3596mXFsR8nwBQBXX5JiV7p9buEVAGqYL4yFzclON5P9vFrpu1u7Zwl2oriyDa89n0wbw==", "dev": true }, "pg-protocol": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.0.tgz", - "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.1.tgz", + "integrity": "sha512-gjTHWGYWsEgy9MsY0Gp6ZJxV24IjDqdpTW7Eh0x+WfJLFsm/TJx1MzL6T0D88mBvkpxotCQ6TwW6N+Kko7lhgQ==", "dev": true }, "pg-types": { From fc37783b9e5ae51b64cc5d7cd89a2aa35c4aa89f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2025 11:18:27 -0800 Subject: [PATCH 298/396] chore(deps): bump @opentelemetry/exporter-prometheus (#4460) Bumps [@opentelemetry/exporter-prometheus](https://github.com/open-telemetry/opentelemetry-js) from 0.57.1 to 0.57.2. --- .../fixtures/package-lock.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/test/opentelemetry-metrics/fixtures/package-lock.json b/test/opentelemetry-metrics/fixtures/package-lock.json index e8e5dbb855..cef242197a 100644 --- a/test/opentelemetry-metrics/fixtures/package-lock.json +++ b/test/opentelemetry-metrics/fixtures/package-lock.json @@ -36,9 +36,10 @@ } }, "node_modules/@opentelemetry/exporter-prometheus": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.57.1.tgz", - "integrity": "sha512-lwwOQzyvhzioGCYmIh7mXo+RLSoEVhuO0dFzWeEiQhFkjSUOPgKQKNTgYtl2KO1L7XIbHp5LIgn4nZrYx191Rg==", + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.57.2.tgz", + "integrity": "sha512-VqIqXnuxWMWE/1NatAGtB1PvsQipwxDcdG4RwA/umdBcW3/iOHp0uejvFHTRN2O78ZPged87ErJajyUBPUhlDQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/resources": "1.30.1", @@ -105,9 +106,9 @@ } }, "@opentelemetry/exporter-prometheus": { - "version": "0.57.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.57.1.tgz", - "integrity": "sha512-lwwOQzyvhzioGCYmIh7mXo+RLSoEVhuO0dFzWeEiQhFkjSUOPgKQKNTgYtl2KO1L7XIbHp5LIgn4nZrYx191Rg==", + "version": "0.57.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.57.2.tgz", + "integrity": "sha512-VqIqXnuxWMWE/1NatAGtB1PvsQipwxDcdG4RwA/umdBcW3/iOHp0uejvFHTRN2O78ZPged87ErJajyUBPUhlDQ==", "requires": { "@opentelemetry/core": "1.30.1", "@opentelemetry/resources": "1.30.1", From 6623bf5fa81cf8cdafff72d2b78cddf2f98b1f01 Mon Sep 17 00:00:00 2001 From: David Luna Date: Thu, 20 Feb 2025 08:49:24 +0100 Subject: [PATCH 299/396] chore: update alpine base image in Dockerfile (#4465) --- .github/dependabot.yml | 6 ++++++ CHANGELOG.asciidoc | 16 ++++++++++++++++ Dockerfile | 8 ++++---- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 6c9e1961e2..e13d06a591 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -109,3 +109,9 @@ updates: github-actions: patterns: - "*" + + # Docker + - package-ecosystem: "docker" + directory: "/" + schedule: + interval: "weekly" \ No newline at end of file diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 6d415e6393..4a46e63521 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -33,6 +33,22 @@ Notes: See the <> guide. +==== Unreleased + +[float] +===== Breaking changes + +[float] +===== Features + +[float] +===== Bug fixes + +[float] +===== Chores + +* Update base image of alpine in `Dockerfile` to version `3.21.3`. ({pull}4465[#4465]) + [[release-notes-4.11.0]] ==== 4.11.0 - 2025/01/20 diff --git a/Dockerfile b/Dockerfile index 59f93bb7ca..63b6185513 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ -# Pin to Alpine 3.9 -# For a complete list of hashes, see: -# https://github.com/docker-library/repo-info/tree/master/repos/alpine/remote -FROM alpine@sha256:115731bab0862031b44766733890091c17924f9b7781b79997f5f163be262178 +# Pin the latest Alpine 3 +# https://github.com/docker-library/repo-info/blob/master/repos/alpine/remote/3.md + +FROM alpine@sha256:a8560b36e8b8210634f77d9f7f9efd7ffa463e380b75e2e74aff4511df3ef88c ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs From 47e70b4a2f2d91821e8d0d76c5baf8e7e4d67e59 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Feb 2025 12:21:13 +0100 Subject: [PATCH 300/396] chore(deps): bump docker/build-push-action in the github-actions group (#4469) Bumps the github-actions group with 1 update: [docker/build-push-action](https://github.com/docker/build-push-action). Updates `docker/build-push-action` from 6.13.0 to 6.14.0 - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/ca877d9245402d1537745e0e356eab47c3520991...0adf9959216b96bec444f325f1e493d4aa344497) --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index db20097aaf..056c40ef2d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -63,7 +63,7 @@ jobs: - name: Build and Push Docker Image id: docker-push - uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 # v6.13.0 + uses: docker/build-push-action@0adf9959216b96bec444f325f1e493d4aa344497 # v6.14.0 with: context: . platforms: linux/amd64,linux/arm64 @@ -97,7 +97,7 @@ jobs: - name: Build and Push Docker Image (wolfi) id: docker-push-wolfi - uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 # v6.13.0 + uses: docker/build-push-action@0adf9959216b96bec444f325f1e493d4aa344497 # v6.14.0 with: context: . platforms: linux/amd64,linux/arm64 From b7b9b6f3581cf3c0a0542fa33ac2f8f8fec54e77 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 11:18:48 +0100 Subject: [PATCH 301/396] chore(deps-dev): bump the eslint group across 1 directory with 2 updates (#4472) - Updates `eslint` from 9.20.1 to 9.21.0 - Updates `eslint-plugin-license-header` from 0.7.0 to 0.8.0 --- package-lock.json | 182 ++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 88 insertions(+), 96 deletions(-) diff --git a/package-lock.json b/package-lock.json index f6852f5b93..ac28d77465 100644 --- a/package-lock.json +++ b/package-lock.json @@ -79,7 +79,7 @@ "eslint": "^9.0.0", "eslint-config-prettier": "^10.0.1", "eslint-plugin-import": "^2.28.0", - "eslint-plugin-license-header": "^0.7.0", + "eslint-plugin-license-header": "^0.8.0", "eslint-plugin-n": "^17.2.0", "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-promise": "^7.0.0", @@ -4120,12 +4120,13 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz", - "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.4", + "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -4134,10 +4135,11 @@ } }, "node_modules/@eslint/core": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", - "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@types/json-schema": "^7.0.15" }, @@ -4146,10 +4148,11 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", - "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", + "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -4173,6 +4176,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -4189,6 +4193,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -4200,12 +4205,13 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@eslint/js": { - "version": "9.20.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.20.0.tgz", - "integrity": "sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==", + "version": "9.21.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.21.0.tgz", + "integrity": "sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==", "dev": true, "license": "MIT", "engines": { @@ -4213,21 +4219,23 @@ } }, "node_modules/@eslint/object-schema": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", - "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", - "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", + "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.10.0", + "@eslint/core": "^0.12.0", "levn": "^0.4.1" }, "engines": { @@ -4917,10 +4925,11 @@ } }, "node_modules/@humanwhocodes/retry": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", - "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=18.18" }, @@ -6207,7 +6216,8 @@ "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/json5": { "version": "0.0.29", @@ -6392,6 +6402,7 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -8926,22 +8937,22 @@ } }, "node_modules/eslint": { - "version": "9.20.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.1.tgz", - "integrity": "sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==", + "version": "9.21.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.21.0.tgz", + "integrity": "sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.11.0", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.20.0", - "@eslint/plugin-kit": "^0.2.5", + "@eslint/config-array": "^0.19.2", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "9.21.0", + "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.1", + "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", @@ -9144,9 +9155,9 @@ } }, "node_modules/eslint-plugin-license-header": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-license-header/-/eslint-plugin-license-header-0.7.0.tgz", - "integrity": "sha512-7J6uFW0rv/wtGzN3xMuVkH3EOeeuJ+g92HXTSe70mV0Vw0gX6HK0+24IfV6pmR6qz1/UP/zjVEgtyAMGqxjjvw==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-license-header/-/eslint-plugin-license-header-0.8.0.tgz", + "integrity": "sha512-khTCz6G3JdoQfwrtY4XKl98KW4PpnWUKuFx8v+twIRhJADEyYglMDC0td8It75C1MZ88gcvMusWuUlJsos7gYg==", "dev": true, "license": "MIT", "dependencies": { @@ -9284,6 +9295,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -9291,19 +9303,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/@eslint/core": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.11.0.tgz", - "integrity": "sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, "node_modules/eslint/node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -9413,6 +9412,7 @@ "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", @@ -15153,6 +15153,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -19319,29 +19320,29 @@ "dev": true }, "@eslint/config-array": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz", - "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", "dev": true, "requires": { - "@eslint/object-schema": "^2.1.4", + "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "@eslint/core": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", - "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", "dev": true, "requires": { "@types/json-schema": "^7.0.15" } }, "@eslint/eslintrc": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", - "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", + "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -19382,24 +19383,24 @@ } }, "@eslint/js": { - "version": "9.20.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.20.0.tgz", - "integrity": "sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==", + "version": "9.21.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.21.0.tgz", + "integrity": "sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==", "dev": true }, "@eslint/object-schema": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", - "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", "dev": true }, "@eslint/plugin-kit": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", - "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", + "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", "dev": true, "requires": { - "@eslint/core": "^0.10.0", + "@eslint/core": "^0.12.0", "levn": "^0.4.1" } }, @@ -20082,9 +20083,9 @@ "dev": true }, "@humanwhocodes/retry": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", - "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", "dev": true }, "@ioredis/commands": { @@ -23256,21 +23257,21 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.20.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.1.tgz", - "integrity": "sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==", + "version": "9.21.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.21.0.tgz", + "integrity": "sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.11.0", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.20.0", - "@eslint/plugin-kit": "^0.2.5", + "@eslint/config-array": "^0.19.2", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "9.21.0", + "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.1", + "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", @@ -23297,15 +23298,6 @@ "optionator": "^0.9.3" }, "dependencies": { - "@eslint/core": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.11.0.tgz", - "integrity": "sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.15" - } - }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -23494,9 +23486,9 @@ } }, "eslint-plugin-license-header": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-license-header/-/eslint-plugin-license-header-0.7.0.tgz", - "integrity": "sha512-7J6uFW0rv/wtGzN3xMuVkH3EOeeuJ+g92HXTSe70mV0Vw0gX6HK0+24IfV6pmR6qz1/UP/zjVEgtyAMGqxjjvw==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-license-header/-/eslint-plugin-license-header-0.8.0.tgz", + "integrity": "sha512-khTCz6G3JdoQfwrtY4XKl98KW4PpnWUKuFx8v+twIRhJADEyYglMDC0td8It75C1MZ88gcvMusWuUlJsos7gYg==", "dev": true, "requires": { "requireindex": "^1.2.0" diff --git a/package.json b/package.json index 3e371da6ad..69c5706af1 100644 --- a/package.json +++ b/package.json @@ -158,7 +158,7 @@ "eslint": "^9.0.0", "eslint-config-prettier": "^10.0.1", "eslint-plugin-import": "^2.28.0", - "eslint-plugin-license-header": "^0.7.0", + "eslint-plugin-license-header": "^0.8.0", "eslint-plugin-n": "^17.2.0", "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-promise": "^7.0.0", From bb6402f9f2cc6314374df924a17164984de74129 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 11:38:31 +0100 Subject: [PATCH 302/396] chore(deps): bump require-in-the-middle from 7.5.1 to 7.5.2 (#4475) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index ac28d77465..2b540b2864 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14111,9 +14111,9 @@ } }, "node_modules/require-in-the-middle": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.1.tgz", - "integrity": "sha512-fgZEz/t3FDrU9o7EhI+iNNq1pNNpJImOvX72HUd6RoFiw8MaKd8/gR5tLuc8A0G0e55LMbP6ImjnmXY6zrTmjw==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.2.tgz", + "integrity": "sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==", "license": "MIT", "dependencies": { "debug": "^4.3.5", @@ -27164,9 +27164,9 @@ "dev": true }, "require-in-the-middle": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.1.tgz", - "integrity": "sha512-fgZEz/t3FDrU9o7EhI+iNNq1pNNpJImOvX72HUd6RoFiw8MaKd8/gR5tLuc8A0G0e55LMbP6ImjnmXY6zrTmjw==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.2.tgz", + "integrity": "sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==", "requires": { "debug": "^4.3.5", "module-details-from-path": "^1.0.3", From 7fa7f737638b17b9231844097cf4ded54021c09b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 11:39:25 +0100 Subject: [PATCH 303/396] chore(deps-dev): bump mongodb from 6.13.0 to 6.13.1 (#4476) --- package-lock.json | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2b540b2864..0e5e5475b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7490,10 +7490,11 @@ } }, "node_modules/bson": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.1.tgz", - "integrity": "sha512-P92xmHDQjSKPLHqFxefqMxASNq/aWJMEZugpCjf+AF/pgcUpMMQCg7t7+ewko0/u8AapvF3luf/FoehddEK+sA==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.3.tgz", + "integrity": "sha512-MTxGsqgYTwfshYWTRdmZRC+M7FnG1b4y7RO7p2k3X24Wq0yv1m77Wsj0BzlPzd/IowgESfsruQCUToa7vbOpPQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=16.20.1" } @@ -12370,21 +12371,21 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "node_modules/mongodb": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.13.0.tgz", - "integrity": "sha512-KeESYR5TEaFxOuwRqkOm3XOsMqCSkdeDMjaW5u2nuKfX7rqaofp7JQGoi7sVqQcNJTKuveNbzZtWMstb8ABP6Q==", + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.13.1.tgz", + "integrity": "sha512-gdq40tX8StmhP6akMp1pPoEVv+9jTYFSrga/g23JxajPAQhH39ysZrHGzQCSd9PEOnuEQEdjIWqxO7ZSwC0w7Q==", "dev": true, "license": "Apache-2.0", "dependencies": { "@mongodb-js/saslprep": "^1.1.9", - "bson": "^6.10.1", + "bson": "^6.10.3", "mongodb-connection-string-url": "^3.0.0" }, "engines": { "node": ">=16.20.1" }, "peerDependencies": { - "@aws-sdk/credential-providers": "^3.188.0", + "@aws-sdk/credential-providers": "^3.632.0", "@mongodb-js/zstd": "^1.1.0 || ^2.0.0", "gcp-metadata": "^5.2.0", "kerberos": "^2.0.1", @@ -22138,9 +22139,9 @@ } }, "bson": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.1.tgz", - "integrity": "sha512-P92xmHDQjSKPLHqFxefqMxASNq/aWJMEZugpCjf+AF/pgcUpMMQCg7t7+ewko0/u8AapvF3luf/FoehddEK+sA==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.3.tgz", + "integrity": "sha512-MTxGsqgYTwfshYWTRdmZRC+M7FnG1b4y7RO7p2k3X24Wq0yv1m77Wsj0BzlPzd/IowgESfsruQCUToa7vbOpPQ==", "dev": true }, "buffer": { @@ -25834,13 +25835,13 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "mongodb": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.13.0.tgz", - "integrity": "sha512-KeESYR5TEaFxOuwRqkOm3XOsMqCSkdeDMjaW5u2nuKfX7rqaofp7JQGoi7sVqQcNJTKuveNbzZtWMstb8ABP6Q==", + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.13.1.tgz", + "integrity": "sha512-gdq40tX8StmhP6akMp1pPoEVv+9jTYFSrga/g23JxajPAQhH39ysZrHGzQCSd9PEOnuEQEdjIWqxO7ZSwC0w7Q==", "dev": true, "requires": { "@mongodb-js/saslprep": "^1.1.9", - "bson": "^6.10.1", + "bson": "^6.10.3", "mongodb-connection-string-url": "^3.0.0" } }, From 1ae6588afd9d2780f238876f619eac4bdcaa1a7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 11:40:12 +0100 Subject: [PATCH 304/396] chore(deps-dev): bump prettier from 3.5.1 to 3.5.2 (#4474) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0e5e5475b6..b901607259 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13543,9 +13543,9 @@ } }, "node_modules/prettier": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.1.tgz", - "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.2.tgz", + "integrity": "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==", "dev": true, "license": "MIT", "bin": { @@ -26712,9 +26712,9 @@ "dev": true }, "prettier": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.1.tgz", - "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.2.tgz", + "integrity": "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==", "dev": true }, "prettier-linter-helpers": { From 53451ae2c126b96453af7224c9c1059e070ff79c Mon Sep 17 00:00:00 2001 From: "elastic-observability-automation[bot]" <180520183+elastic-observability-automation[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 11:40:58 +0100 Subject: [PATCH 305/396] chore: deps(updatecli): Bump updatecli version to v0.94.1 (#4471) --- .tool-versions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tool-versions b/.tool-versions index 0cf1b341d1..c245dc5318 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -updatecli v0.93.1 \ No newline at end of file +updatecli v0.94.1 \ No newline at end of file From 74b38f03b8f630dbfb17112d8f2e46ac4f8e1837 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 11:41:30 +0100 Subject: [PATCH 306/396] chore(deps): update wolfi (versioned) (#4468) --- .github/workflows/test-fips.yml | 2 +- Dockerfile.wolfi | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-fips.yml b/.github/workflows/test-fips.yml index 81cc846f73..9eea0bdb22 100644 --- a/.github/workflows/test-fips.yml +++ b/.github/workflows/test-fips.yml @@ -21,7 +21,7 @@ jobs: # https://docs.github.com/en/actions/writing-workflows/choosing-where-your-workflow-runs/running-jobs-in-a-container # docker run -it --rm --name fipsy docker.elastic.co/wolfi/chainguard-base-fips:latest container: - image: docker.elastic.co/wolfi/chainguard-base-fips:latest@sha256:0570bec1936a461ab26c2e5b917e2485965d75e4b46bf550b3e34f69fe1f626e + image: docker.elastic.co/wolfi/chainguard-base-fips:latest@sha256:e060fa81b7bdd061cc0ca0d85d17c69cba9a62d2c464a019e1f533c0c1933bb1 credentials: username: ${{ secrets.ELASTIC_DOCKER_USERNAME }} password: ${{ secrets.ELASTIC_DOCKER_PASSWORD }} diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 1dfeea01f5..6270821a3d 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:d74b1fda6b7fee2c90b410df258e005c049e0672fe16d79d00e58f14fb69f90b +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:0801a437e721bebdd2d5be62e3f63f60fc9d1d82efacabe4c5b8792d74ae7006 ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 3e04733c269951999bb325ea49a84a4f7c1bcf6a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Feb 2025 11:04:40 +0100 Subject: [PATCH 307/396] chore(deps-dev): bump cassandra-driver from 4.7.2 to 4.8.0 (#4473) --- .tav.yml | 8 +- package-lock.json | 71 +- test/_is_cassandra_incompat.js | 61 -- .../cassandra-driver/cassandra-driver.test.js | 727 ++++++++++-------- 4 files changed, 433 insertions(+), 434 deletions(-) delete mode 100644 test/_is_cassandra_incompat.js diff --git a/.tav.yml b/.tav.yml index fcca1426fa..f1022a9dc8 100644 --- a/.tav.yml +++ b/.tav.yml @@ -362,8 +362,12 @@ tedious: cassandra-driver: # 3.1.0 is broken - versions: '>=3 <3.1.0 || >3.1.0 <5' - commands: node test/instrumentation/modules/cassandra-driver/cassandra-driver.test.js + - versions: '>=3 <3.1.0 || >3.1.0 <4.8.0' + commands: node test/instrumentation/modules/cassandra-driver/cassandra-driver.test.js + # v4.8.0 advertise a min-supported Node.js version of 18. + - versions: '>=4.8.0 <5' + node: '>=18' + commands: node test/instrumentation/modules/cassandra-driver/cassandra-driver.test.js # Restify # - restify =8", + "@types/node": "^18.11.18", "adm-zip": "~0.5.10", "long": "~5.2.3" }, "engines": { - "node": ">=16" + "node": ">=18" } }, - "node_modules/cassandra-driver/node_modules/@types/long": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/long/-/long-5.0.0.tgz", - "integrity": "sha512-eQs9RsucA/LNjnMoJvWG/nXa7Pot/RbBzilF/QRIU/xRl+0ApxrSUFsV5lmf01SvSlqMzJ7Zwxe440wmz2SJGA==", - "deprecated": "This is a stub types definition. long provides its own type definitions, so you do not need this installed.", + "node_modules/cassandra-driver/node_modules/@types/node": { + "version": "18.19.76", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.76.tgz", + "integrity": "sha512-yvR7Q9LdPz2vGpmpJX5LolrgRdWvB67MJKDPSgIIzpFbaf9a1j/f5DnLp5VDyHGMR0QZHlTr1afsD87QCXFHKw==", "dev": true, + "license": "MIT", "dependencies": { - "long": "*" + "undici-types": "~5.26.4" } }, "node_modules/cassandra-driver/node_modules/long": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", - "dev": true + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.5.tgz", + "integrity": "sha512-e0r9YBBgNCq1D1o5Dp8FMH0N5hsFtXDBiVa0qoJPHpakvZkmDKPRoGffZJII/XsHvj9An9blm+cRJ01yQqU+Dw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/cassandra-driver/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true, + "license": "MIT" }, "node_modules/chalk": { "version": "4.1.2", @@ -22229,30 +22237,35 @@ "dev": true }, "cassandra-driver": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/cassandra-driver/-/cassandra-driver-4.7.2.tgz", - "integrity": "sha512-gwl1DeYvL8Wy3i1GDMzFtpUg5G473fU7EnHFZj7BUtdLB7loAfgZgB3zBhROc9fbaDSUDs6YwOPPojS5E1kbSA==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/cassandra-driver/-/cassandra-driver-4.8.0.tgz", + "integrity": "sha512-HritfMGq9V7SuESeSodHvArs0mLuMk7uh+7hQK2lqdvXrvm50aWxb4RPxkK3mPDdsgHjJ427xNRFITMH2ei+Sw==", "dev": true, "requires": { - "@types/long": "~5.0.0", - "@types/node": ">=8", + "@types/node": "^18.11.18", "adm-zip": "~0.5.10", "long": "~5.2.3" }, "dependencies": { - "@types/long": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/long/-/long-5.0.0.tgz", - "integrity": "sha512-eQs9RsucA/LNjnMoJvWG/nXa7Pot/RbBzilF/QRIU/xRl+0ApxrSUFsV5lmf01SvSlqMzJ7Zwxe440wmz2SJGA==", + "@types/node": { + "version": "18.19.76", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.76.tgz", + "integrity": "sha512-yvR7Q9LdPz2vGpmpJX5LolrgRdWvB67MJKDPSgIIzpFbaf9a1j/f5DnLp5VDyHGMR0QZHlTr1afsD87QCXFHKw==", "dev": true, "requires": { - "long": "*" + "undici-types": "~5.26.4" } }, "long": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.5.tgz", + "integrity": "sha512-e0r9YBBgNCq1D1o5Dp8FMH0N5hsFtXDBiVa0qoJPHpakvZkmDKPRoGffZJII/XsHvj9An9blm+cRJ01yQqU+Dw==", + "dev": true + }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "dev": true } } diff --git a/test/_is_cassandra_incompat.js b/test/_is_cassandra_incompat.js deleted file mode 100644 index 9ed70d08aa..0000000000 --- a/test/_is_cassandra_incompat.js +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and other contributors where applicable. - * Licensed under the BSD 2-Clause License; you may not use this file except in - * compliance with the BSD 2-Clause License. - */ - -'use strict'; - -var semver = require('semver'); -const { safeGetPackageVersion } = require('./_utils'); - -/** - * Return whether the current 'cassandra-driver' version is incompatible with the - * current version of node. If so, this returns a string that can be used - * as a reason for a test skip message. Otherwise it returns false. - * - * Usage: - * const isCassandraIncompat = require('.../_is_cassandra_incompat')() - * if (isCassandraIncompat) { - * console.log(`# SKIP ${isCassandraIncompat}`) - * process.exit() - * } - * - * Dev Note: These version ranges should mirror the cassandra section of ".tav.yml". - * - * @returns {string | boolean} - */ -function isCassandraIncompat() { - const nodeVer = process.version; - const cassandraVer = safeGetPackageVersion('cassandra-driver'); - const msg = `cassandra@${cassandraVer} is incompatible with node@${nodeVer}`; - - // In version 4.7.0 there was a change introduced that is only supported - // by nodejs v16.9.0 and above although the package.json defined - // support range to >=8 - // https://datastax-oss.atlassian.net/browse/NODEJS-665 - if ( - semver.satisfies(cassandraVer, '4.7.0') && - !semver.satisfies(nodeVer, '>=16.9') - ) { - return msg; - } - // Since 4.7.1 the driver requires node >=16 - if ( - semver.satisfies(cassandraVer, '>=4.7.1') && - !semver.satisfies(nodeVer, '>=16') - ) { - return msg; - } - // The default support until 4.7.0 release - if ( - semver.satisfies(cassandraVer, '>=3.0.0 <4.7.0') && - !semver.satisfies(nodeVer, '>=8') - ) { - return msg; - } - - return false; -} - -module.exports = isCassandraIncompat; diff --git a/test/instrumentation/modules/cassandra-driver/cassandra-driver.test.js b/test/instrumentation/modules/cassandra-driver/cassandra-driver.test.js index 245fb86830..f66240ebaf 100644 --- a/test/instrumentation/modules/cassandra-driver/cassandra-driver.test.js +++ b/test/instrumentation/modules/cassandra-driver/cassandra-driver.test.js @@ -31,7 +31,7 @@ const TEST_USE_PROMISES = semver.satisfies(CASSANDRA_VERSION, '>=3.2'); const testFixtures = [ { - name: 'cassandra-driver simple usage', + name: 'cassandra-driver simple usage (<4.8.0)', script: 'fixtures/use-cassandra-driver.js', cwd: __dirname, timeout: 20000, // sanity guard on the test hanging @@ -48,384 +48,427 @@ const testFixtures = [ // Because of these complications and because Node v14 is EOL, we are skipping testing // with earlier node versions. node: '>=16.9', + 'cassandra-driver': '<4.8.0', }, - verbose: true, - checkApmServer: (t, apmServer) => { - t.ok(apmServer.events[0].metadata, 'metadata'); - const events = sortApmEvents(apmServer.events); + // verbose: true, + checkApmServer, + }, + { + name: 'cassandra-driver simple usage (>=4.8.0)', + script: 'fixtures/use-cassandra-driver.js', + cwd: __dirname, + timeout: 20000, // sanity guard on the test hanging + maxBuffer: 10 * 1024 * 1024, // This is big, but I don't ever want this to be a failure reason. + env: { + TEST_KEYSPACE, + TEST_TABLE, + TEST_DATACENTER, + TEST_USE_PROMISES: String(TEST_USE_PROMISES), + }, + versionRanges: { + // - cassandra-driver >=4.8.0 only supports node >=18 + node: '>=18', + 'cassandra-driver': '>=4.8.0', + }, + // verbose: true, + checkApmServer, + }, + { + name: 'cassandra-driver ESM (<4.8.0)', + script: 'fixtures/use-cassandra-driver.mjs', + cwd: __dirname, + timeout: 20000, // sanity guard on the test hanging + maxBuffer: 10 * 1024 * 1024, // This is big, but I don't ever want this to be a failure reason. + env: { + NODE_OPTIONS: + '--experimental-loader=../../../../loader.mjs --require=../../../../start.js', + TEST_DATACENTER, + }, + versionRanges: { + node: '^16.9.0 || ^18.1.0 <20', + 'cassandra-driver': '>=4.7.0 <4.8.0', + }, + // verbose: true, + checkApmServerEsm, + }, + { + name: 'cassandra-driver ESM (>=4.8.0)', + script: 'fixtures/use-cassandra-driver.mjs', + cwd: __dirname, + timeout: 20000, // sanity guard on the test hanging + maxBuffer: 10 * 1024 * 1024, // This is big, but I don't ever want this to be a failure reason. + env: { + NODE_OPTIONS: + '--experimental-loader=../../../../loader.mjs --require=../../../../start.js', + TEST_DATACENTER, + }, + versionRanges: { + node: '^18.1.0 <20', + 'cassandra-driver': '>=4.8.0', + }, + // verbose: true, + checkApmServerEsm, + }, +]; - // First the transaction. - t.ok(events[0].transaction, 'got the transaction'); - const tx = events.shift().transaction; +function checkApmServer(t, apmServer) { + t.ok(apmServer.events[0].metadata, 'metadata'); + const events = sortApmEvents(apmServer.events); - // Get the spans to check - const spans = events - .filter((e) => e.span) - // 1st span is a `connect` and some commands may - // connect again so we filter them out - .filter((e, i) => i === 0 || e.span.action !== 'connect') - .map((e) => e.span); + // First the transaction. + t.ok(events[0].transaction, 'got the transaction'); + const tx = events.shift().transaction; - // Compare some common fields across all spans. - spans.forEach((s) => { - const errs = validateSpan(s); - t.equal(errs, null, 'span is valid (per apm-server intake schema)'); - }); - t.equal( - spans.filter((s) => s.trace_id === tx.trace_id).length, - spans.length, - 'all spans have the same trace_id', - ); - t.equal( - spans.filter((s) => s.transaction_id === tx.id).length, - spans.length, - 'all spans have the same transaction_id', - ); - t.equal( - spans.filter((s) => s.sync === false).length, - spans.length, - 'all spans have sync=false', - ); - t.equal( - spans.filter((s) => s.sample_rate === 1).length, - spans.length, - 'all spans have sample_rate=1', - ); - spans.forEach((s) => { - // Remove variable and common fields to facilitate t.deepEqual below. - delete s.id; - delete s.transaction_id; - delete s.parent_id; - delete s.trace_id; - delete s.timestamp; - delete s.duration; - delete s.sync; - delete s.sample_rate; - }); + // Get the spans to check + const spans = events + .filter((e) => e.span) + // 1st span is a `connect` and some commands may + // connect again so we filter them out + .filter((e, i) => i === 0 || e.span.action !== 'connect') + .map((e) => e.span); - // Work through each of the pipeline functions (connect, execute, ...) in the script: - t.deepEqual( - spans.shift(), - { - name: 'Cassandra: Connect', - type: 'db', - subtype: 'cassandra', - action: 'connect', - context: { - db: { type: 'cassandra' }, - service: { target: { type: 'cassandra' } }, - destination: { - service: { - type: '', - name: '', - resource: 'cassandra', - }, - }, + // Compare some common fields across all spans. + spans.forEach((s) => { + const errs = validateSpan(s); + t.equal(errs, null, 'span is valid (per apm-server intake schema)'); + }); + t.equal( + spans.filter((s) => s.trace_id === tx.trace_id).length, + spans.length, + 'all spans have the same trace_id', + ); + t.equal( + spans.filter((s) => s.transaction_id === tx.id).length, + spans.length, + 'all spans have the same transaction_id', + ); + t.equal( + spans.filter((s) => s.sync === false).length, + spans.length, + 'all spans have sync=false', + ); + t.equal( + spans.filter((s) => s.sample_rate === 1).length, + spans.length, + 'all spans have sample_rate=1', + ); + spans.forEach((s) => { + // Remove variable and common fields to facilitate t.deepEqual below. + delete s.id; + delete s.transaction_id; + delete s.parent_id; + delete s.trace_id; + delete s.timestamp; + delete s.duration; + delete s.sync; + delete s.sample_rate; + }); + + // Work through each of the pipeline functions (connect, execute, ...) in the script: + t.deepEqual( + spans.shift(), + { + name: 'Cassandra: Connect', + type: 'db', + subtype: 'cassandra', + action: 'connect', + context: { + db: { type: 'cassandra' }, + service: { target: { type: 'cassandra' } }, + destination: { + service: { + type: '', + name: '', + resource: 'cassandra', }, - outcome: 'success', }, - 'connect produced expected span', - ); + }, + outcome: 'success', + }, + 'connect produced expected span', + ); - t.deepEqual( - spans.shift(), - { - name: 'CREATE', - type: 'db', - subtype: 'cassandra', - action: 'query', - context: { - service: { - target: { type: 'cassandra' }, - }, - destination: { - service: { - type: '', - name: '', - resource: `cassandra`, - }, - }, - db: { - type: 'cassandra', - statement: `CREATE KEYSPACE IF NOT EXISTS ${TEST_KEYSPACE} WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': 1 };`, - }, + t.deepEqual( + spans.shift(), + { + name: 'CREATE', + type: 'db', + subtype: 'cassandra', + action: 'query', + context: { + service: { + target: { type: 'cassandra' }, + }, + destination: { + service: { + type: '', + name: '', + resource: `cassandra`, }, - outcome: 'success', }, - 'create keyspace produced expected span', - ); + db: { + type: 'cassandra', + statement: `CREATE KEYSPACE IF NOT EXISTS ${TEST_KEYSPACE} WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': 1 };`, + }, + }, + outcome: 'success', + }, + 'create keyspace produced expected span', + ); - t.deepEqual( - spans.shift(), - { - name: `USE ${TEST_KEYSPACE}`, - type: 'db', - subtype: 'cassandra', - action: 'query', - context: { - service: { - target: { - type: 'cassandra', - }, - }, - destination: { - service: { - type: '', - name: '', - resource: 'cassandra', - }, - }, - db: { - type: 'cassandra', - statement: `USE ${TEST_KEYSPACE}`, - }, + t.deepEqual( + spans.shift(), + { + name: `USE ${TEST_KEYSPACE}`, + type: 'db', + subtype: 'cassandra', + action: 'query', + context: { + service: { + target: { + type: 'cassandra', }, - outcome: 'success', }, - 'use keyspace produced expected span', - ); - - t.deepEqual( - spans.shift(), - { - name: 'CREATE TABLE IF', - type: 'db', - subtype: 'cassandra', - action: 'query', - context: { - service: { - target: { - type: 'cassandra', - name: TEST_KEYSPACE, - }, - }, - destination: { - service: { - type: '', - name: '', - resource: `cassandra/${TEST_KEYSPACE}`, - }, - }, - db: { - type: 'cassandra', - statement: `CREATE TABLE IF NOT EXISTS ${TEST_KEYSPACE}.${TEST_TABLE}(id uuid,text varchar,PRIMARY KEY(id));`, - instance: TEST_KEYSPACE, - }, + destination: { + service: { + type: '', + name: '', + resource: 'cassandra', }, - outcome: 'success', }, - 'create table produced expected span', - ); + db: { + type: 'cassandra', + statement: `USE ${TEST_KEYSPACE}`, + }, + }, + outcome: 'success', + }, + 'use keyspace produced expected span', + ); - t.deepEqual( - spans.shift(), - { - name: 'SELECT FROM system.local', - type: 'db', - subtype: 'cassandra', - action: 'query', - context: { - db: { - type: 'cassandra', - statement: 'SELECT key FROM system.local', - instance: TEST_KEYSPACE, - }, - service: { target: { type: 'cassandra', name: TEST_KEYSPACE } }, - destination: { - service: { - type: '', - name: '', - resource: `cassandra/${TEST_KEYSPACE}`, - }, - }, + t.deepEqual( + spans.shift(), + { + name: 'CREATE TABLE IF', + type: 'db', + subtype: 'cassandra', + action: 'query', + context: { + service: { + target: { + type: 'cassandra', + name: TEST_KEYSPACE, }, - outcome: 'success', }, - 'execute with callback produced expected span', - ); - - if (TEST_USE_PROMISES) { - t.deepEqual( - spans.shift(), - { - name: 'SELECT FROM system.local', - type: 'db', - subtype: 'cassandra', - action: 'query', - context: { - db: { - type: 'cassandra', - statement: 'SELECT key FROM system.local', - instance: TEST_KEYSPACE, - }, - service: { target: { type: 'cassandra', name: TEST_KEYSPACE } }, - destination: { - service: { - type: '', - name: '', - resource: `cassandra/${TEST_KEYSPACE}`, - }, - }, - }, - outcome: 'success', + destination: { + service: { + type: '', + name: '', + resource: `cassandra/${TEST_KEYSPACE}`, }, - 'execute with promise produced expected span', - ); - } + }, + db: { + type: 'cassandra', + statement: `CREATE TABLE IF NOT EXISTS ${TEST_KEYSPACE}.${TEST_TABLE}(id uuid,text varchar,PRIMARY KEY(id));`, + instance: TEST_KEYSPACE, + }, + }, + outcome: 'success', + }, + 'create table produced expected span', + ); - t.deepEqual( - spans.shift(), - { - name: 'Cassandra: Batch query', - type: 'db', - subtype: 'cassandra', - action: 'query', - context: { - db: { - type: 'cassandra', - statement: [ - `INSERT INTO ${TEST_TABLE} (id, text) VALUES (uuid(), ?)`, - `INSERT INTO ${TEST_TABLE} (id, text) VALUES (uuid(), ?)`, - ].join(';\n'), - instance: TEST_KEYSPACE, - }, - service: { target: { type: 'cassandra', name: TEST_KEYSPACE } }, - destination: { - service: { - type: '', - name: '', - resource: `cassandra/${TEST_KEYSPACE}`, - }, - }, + t.deepEqual( + spans.shift(), + { + name: 'SELECT FROM system.local', + type: 'db', + subtype: 'cassandra', + action: 'query', + context: { + db: { + type: 'cassandra', + statement: 'SELECT key FROM system.local', + instance: TEST_KEYSPACE, + }, + service: { target: { type: 'cassandra', name: TEST_KEYSPACE } }, + destination: { + service: { + type: '', + name: '', + resource: `cassandra/${TEST_KEYSPACE}`, }, - outcome: 'success', }, - 'batch with callback produced expected span', - ); + }, + outcome: 'success', + }, + 'execute with callback produced expected span', + ); - if (TEST_USE_PROMISES) { - t.deepEqual( - spans.shift(), - { - name: 'Cassandra: Batch query', - type: 'db', - subtype: 'cassandra', - action: 'query', - context: { - db: { - type: 'cassandra', - statement: [ - `INSERT INTO ${TEST_TABLE} (id, text) VALUES (uuid(), ?)`, - `INSERT INTO ${TEST_TABLE} (id, text) VALUES (uuid(), ?)`, - ].join(';\n'), - instance: TEST_KEYSPACE, - }, - service: { target: { type: 'cassandra', name: TEST_KEYSPACE } }, - destination: { - service: { - type: '', - name: '', - resource: `cassandra/${TEST_KEYSPACE}`, - }, - }, + if (TEST_USE_PROMISES) { + t.deepEqual( + spans.shift(), + { + name: 'SELECT FROM system.local', + type: 'db', + subtype: 'cassandra', + action: 'query', + context: { + db: { + type: 'cassandra', + statement: 'SELECT key FROM system.local', + instance: TEST_KEYSPACE, + }, + service: { target: { type: 'cassandra', name: TEST_KEYSPACE } }, + destination: { + service: { + type: '', + name: '', + resource: `cassandra/${TEST_KEYSPACE}`, }, - outcome: 'success', }, - 'batch with promise produced expected span', - ); - } + }, + outcome: 'success', + }, + 'execute with promise produced expected span', + ); + } - t.deepEqual( - spans.shift(), - { - name: 'SELECT FROM system.local', - type: 'db', - subtype: 'cassandra', - action: 'query', - context: { - db: { - type: 'cassandra', - statement: 'SELECT key FROM system.local', - instance: TEST_KEYSPACE, - }, - service: { target: { type: 'cassandra', name: TEST_KEYSPACE } }, - destination: { - service: { - type: '', - name: '', - resource: `cassandra/${TEST_KEYSPACE}`, - }, - }, + t.deepEqual( + spans.shift(), + { + name: 'Cassandra: Batch query', + type: 'db', + subtype: 'cassandra', + action: 'query', + context: { + db: { + type: 'cassandra', + statement: [ + `INSERT INTO ${TEST_TABLE} (id, text) VALUES (uuid(), ?)`, + `INSERT INTO ${TEST_TABLE} (id, text) VALUES (uuid(), ?)`, + ].join(';\n'), + instance: TEST_KEYSPACE, + }, + service: { target: { type: 'cassandra', name: TEST_KEYSPACE } }, + destination: { + service: { + type: '', + name: '', + resource: `cassandra/${TEST_KEYSPACE}`, }, - outcome: 'success', }, - 'eachRow produced expected span', - ); + }, + outcome: 'success', + }, + 'batch with callback produced expected span', + ); - t.deepEqual( - spans.shift(), - { - name: 'SELECT FROM system.local', - type: 'db', - subtype: 'cassandra', - action: 'query', - context: { - db: { - type: 'cassandra', - statement: 'SELECT key FROM system.local', - instance: TEST_KEYSPACE, - }, - service: { target: { type: 'cassandra', name: TEST_KEYSPACE } }, - destination: { - service: { - type: '', - name: '', - resource: `cassandra/${TEST_KEYSPACE}`, - }, + if (TEST_USE_PROMISES) { + t.deepEqual( + spans.shift(), + { + name: 'Cassandra: Batch query', + type: 'db', + subtype: 'cassandra', + action: 'query', + context: { + db: { + type: 'cassandra', + statement: [ + `INSERT INTO ${TEST_TABLE} (id, text) VALUES (uuid(), ?)`, + `INSERT INTO ${TEST_TABLE} (id, text) VALUES (uuid(), ?)`, + ].join(';\n'), + instance: TEST_KEYSPACE, + }, + service: { target: { type: 'cassandra', name: TEST_KEYSPACE } }, + destination: { + service: { + type: '', + name: '', + resource: `cassandra/${TEST_KEYSPACE}`, }, }, - outcome: 'success', }, - 'stream produced expected span', - ); + outcome: 'success', + }, + 'batch with promise produced expected span', + ); + } - t.equal(spans.length, 0, 'all spans accounted for'); - }, - }, - { - name: 'cassandra-driver ESM', - script: 'fixtures/use-cassandra-driver.mjs', - cwd: __dirname, - timeout: 20000, // sanity guard on the test hanging - maxBuffer: 10 * 1024 * 1024, // This is big, but I don't ever want this to be a failure reason. - env: { - NODE_OPTIONS: - '--experimental-loader=../../../../loader.mjs --require=../../../../start.js', - TEST_DATACENTER, + t.deepEqual( + spans.shift(), + { + name: 'SELECT FROM system.local', + type: 'db', + subtype: 'cassandra', + action: 'query', + context: { + db: { + type: 'cassandra', + statement: 'SELECT key FROM system.local', + instance: TEST_KEYSPACE, + }, + service: { target: { type: 'cassandra', name: TEST_KEYSPACE } }, + destination: { + service: { + type: '', + name: '', + resource: `cassandra/${TEST_KEYSPACE}`, + }, + }, + }, + outcome: 'success', }, - versionRanges: { - node: '^16.9.0 || ^18.1.0 <20', - 'cassandra-driver': '>=4.7.0', + 'eachRow produced expected span', + ); + + t.deepEqual( + spans.shift(), + { + name: 'SELECT FROM system.local', + type: 'db', + subtype: 'cassandra', + action: 'query', + context: { + db: { + type: 'cassandra', + statement: 'SELECT key FROM system.local', + instance: TEST_KEYSPACE, + }, + service: { target: { type: 'cassandra', name: TEST_KEYSPACE } }, + destination: { + service: { + type: '', + name: '', + resource: `cassandra/${TEST_KEYSPACE}`, + }, + }, + }, + outcome: 'success', }, - verbose: true, - checkApmServer: (t, apmServer) => { - t.ok(apmServer.events[0].metadata, 'metadata'); - const events = sortApmEvents(apmServer.events); + 'stream produced expected span', + ); - // First the transaction. - t.ok(events[0].transaction, 'got the transaction'); - const tx = events.shift().transaction; - const connSpan = events.shift().span; - const querySpan = events.shift().span; + t.equal(spans.length, 0, 'all spans accounted for'); +} - t.equal(connSpan.parent_id, tx.id, 'span.parent_id'); - t.equal(connSpan.name, 'Cassandra: Connect', 'span.name'); - t.equal(querySpan.parent_id, tx.id, 'span.parent_id'); - t.equal(querySpan.name, 'SELECT FROM system.local', 'span.name'); - t.equal(events.length, 0, 'all events accounted for'); - }, - }, -]; +function checkApmServerEsm(t, apmServer) { + t.ok(apmServer.events[0].metadata, 'metadata'); + const events = sortApmEvents(apmServer.events); + + // First the transaction. + t.ok(events[0].transaction, 'got the transaction'); + const tx = events.shift().transaction; + const connSpan = events.shift().span; + const querySpan = events.shift().span; + + t.equal(connSpan.parent_id, tx.id, 'span.parent_id'); + t.equal(connSpan.name, 'Cassandra: Connect', 'span.name'); + t.equal(querySpan.parent_id, tx.id, 'span.parent_id'); + t.equal(querySpan.name, 'SELECT FROM system.local', 'span.name'); + t.equal(events.length, 0, 'all events accounted for'); +} test('cassandra-driver fixtures', (suite) => { runTestFixtures(suite, testFixtures); From 6c6f4fc99c96493ce9b3543012e44eb647b492b5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Mar 2025 19:49:10 +0100 Subject: [PATCH 308/396] chore(deps-dev): bump koa from 2.15.4 to 2.16.0 (#4488) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 12e68c2f55..9de57efb5c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11752,9 +11752,9 @@ } }, "node_modules/koa": { - "version": "2.15.4", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.15.4.tgz", - "integrity": "sha512-7fNBIdrU2PEgLljXoPWoyY4r1e+ToWCmzS/wwMPbUNs7X+5MMET1ObhJBlUkF5uZG9B6QhM2zS1TsH6adegkiQ==", + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.16.0.tgz", + "integrity": "sha512-Afhqq0Vq3W7C+/rW6IqHVBDLzqObwZ07JaUNUEF8yCQ6afiyFE3RAy+i7V0E46XOWlH7vPWn/x0vsZwNy6PWxw==", "dev": true, "license": "MIT", "dependencies": { @@ -25351,9 +25351,9 @@ } }, "koa": { - "version": "2.15.4", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.15.4.tgz", - "integrity": "sha512-7fNBIdrU2PEgLljXoPWoyY4r1e+ToWCmzS/wwMPbUNs7X+5MMET1ObhJBlUkF5uZG9B6QhM2zS1TsH6adegkiQ==", + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.16.0.tgz", + "integrity": "sha512-Afhqq0Vq3W7C+/rW6IqHVBDLzqObwZ07JaUNUEF8yCQ6afiyFE3RAy+i7V0E46XOWlH7vPWn/x0vsZwNy6PWxw==", "dev": true, "requires": { "accepts": "^1.3.5", From 0a277be9bf8bf56d338c785f64404faf641f1adb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Mar 2025 19:49:47 +0100 Subject: [PATCH 309/396] chore(deps-dev): bump undici from 7.3.0 to 7.4.0 (#4487) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9de57efb5c..e15e784e06 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15735,9 +15735,9 @@ } }, "node_modules/undici": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.3.0.tgz", - "integrity": "sha512-Qy96NND4Dou5jKoSJ2gm8ax8AJM/Ey9o9mz7KN1bb9GP+G0l20Zw8afxTnY2f4b7hmhn/z8aC2kfArVQlAhFBw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.4.0.tgz", + "integrity": "sha512-PUQM3/es3noM24oUn10u3kNNap0AbxESOmnssmW+dOi9yGwlUSi5nTNYl3bNbTkWOF8YZDkx2tCmj9OtQ3iGGw==", "dev": true, "license": "MIT", "engines": { @@ -28456,9 +28456,9 @@ "dev": true }, "undici": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.3.0.tgz", - "integrity": "sha512-Qy96NND4Dou5jKoSJ2gm8ax8AJM/Ey9o9mz7KN1bb9GP+G0l20Zw8afxTnY2f4b7hmhn/z8aC2kfArVQlAhFBw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.4.0.tgz", + "integrity": "sha512-PUQM3/es3noM24oUn10u3kNNap0AbxESOmnssmW+dOi9yGwlUSi5nTNYl3bNbTkWOF8YZDkx2tCmj9OtQ3iGGw==", "dev": true }, "undici-types": { From 93ba76e36e9c82c68f916f04bfc18c2af2392ac8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Mar 2025 22:26:07 +0100 Subject: [PATCH 310/396] chore(deps): bump the github-actions group with 3 updates (#4481) - Updates `actions/attest-build-provenance` from 2.2.0 to 2.2.2 - Updates `docker/metadata-action` from 5.6.1 to 5.7.0 - Updates `docker/build-push-action` from 6.14.0 to 6.15.0 --- .github/workflows/release.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 056c40ef2d..430111de83 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -44,13 +44,13 @@ jobs: - run: make -C .ci dist - name: Attest Lambda layer zip - uses: actions/attest-build-provenance@520d128f165991a6c774bcb264f323e3d70747f4 # v2.2.0 + uses: actions/attest-build-provenance@bd77c077858b8d561b7a36cbe48ef4cc642ca39d # v2.2.2 with: subject-path: "${{ github.workspace }}/build/aws/elastic-apm-node-lambda-layer-*.zip" - name: Extract metadata (tags, labels) id: docker-meta - uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 # v5.6.1 + uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5.7.0 with: images: ${{ env.DOCKER_IMAGE_NAME }} flavor: | @@ -63,7 +63,7 @@ jobs: - name: Build and Push Docker Image id: docker-push - uses: docker/build-push-action@0adf9959216b96bec444f325f1e493d4aa344497 # v6.14.0 + uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0 with: context: . platforms: linux/amd64,linux/arm64 @@ -75,7 +75,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image - uses: actions/attest-build-provenance@520d128f165991a6c774bcb264f323e3d70747f4 # v2.2.0 + uses: actions/attest-build-provenance@bd77c077858b8d561b7a36cbe48ef4cc642ca39d # v2.2.2 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push.outputs.digest }} @@ -83,7 +83,7 @@ jobs: - name: Extract metadata (tags, labels) (wolfi) id: docker-meta-wolfi - uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 # v5.6.1 + uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5.7.0 with: images: ${{ env.DOCKER_IMAGE_NAME }} flavor: | @@ -97,7 +97,7 @@ jobs: - name: Build and Push Docker Image (wolfi) id: docker-push-wolfi - uses: docker/build-push-action@0adf9959216b96bec444f325f1e493d4aa344497 # v6.14.0 + uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0 with: context: . platforms: linux/amd64,linux/arm64 @@ -109,7 +109,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image (wolfi) - uses: actions/attest-build-provenance@520d128f165991a6c774bcb264f323e3d70747f4 # v2.2.0 + uses: actions/attest-build-provenance@bd77c077858b8d561b7a36cbe48ef4cc642ca39d # v2.2.2 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push-wolfi.outputs.digest }} From a6b459e2ebfc32e84d5b8a30d6f0255926da8ffc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Mar 2025 22:27:21 +0100 Subject: [PATCH 311/396] chore(deps): bump import-in-the-middle from 1.13.0 to 1.13.1 (#4483) --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index e15e784e06..7ff2bb41fe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "fast-safe-stringify": "^2.0.7", "fast-stream-to-buffer": "^1.0.0", "http-headers": "^3.0.2", - "import-in-the-middle": "1.13.0", + "import-in-the-middle": "1.13.1", "json-bigint": "^1.0.0", "lru-cache": "10.2.0", "measured-reporting": "^1.51.1", @@ -10831,9 +10831,9 @@ } }, "node_modules/import-in-the-middle": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.13.0.tgz", - "integrity": "sha512-YG86SYDtrL/Yu8JgfWb7kjQ0myLeT1whw6fs/ZHFkXFcbk9zJU9lOCsSJHpvaPumU11nN3US7NW6x1YTk+HrUA==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.13.1.tgz", + "integrity": "sha512-k2V9wNm9B+ysuelDTHjI9d5KPc4l8zAZTGqj+pcynvWkypZd857ryzN8jNC7Pg2YZXNMJcHRPpaDyCBbNyVRpA==", "license": "Apache-2.0", "dependencies": { "acorn": "^8.14.0", @@ -24684,9 +24684,9 @@ } }, "import-in-the-middle": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.13.0.tgz", - "integrity": "sha512-YG86SYDtrL/Yu8JgfWb7kjQ0myLeT1whw6fs/ZHFkXFcbk9zJU9lOCsSJHpvaPumU11nN3US7NW6x1YTk+HrUA==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.13.1.tgz", + "integrity": "sha512-k2V9wNm9B+ysuelDTHjI9d5KPc4l8zAZTGqj+pcynvWkypZd857ryzN8jNC7Pg2YZXNMJcHRPpaDyCBbNyVRpA==", "requires": { "acorn": "^8.14.0", "acorn-import-attributes": "^1.9.5", diff --git a/package.json b/package.json index 69c5706af1..717cf260f1 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "fast-safe-stringify": "^2.0.7", "fast-stream-to-buffer": "^1.0.0", "http-headers": "^3.0.2", - "import-in-the-middle": "1.13.0", + "import-in-the-middle": "1.13.1", "json-bigint": "^1.0.0", "lru-cache": "10.2.0", "measured-reporting": "^1.51.1", From 8a6ecfb2efc082b3b57324af7d64de7c1444dbb0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Mar 2025 22:27:55 +0100 Subject: [PATCH 312/396] chore(deps-dev): bump mongodb from 6.13.1 to 6.14.0 (#4484) --- package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7ff2bb41fe..552680df2c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12379,9 +12379,9 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "node_modules/mongodb": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.13.1.tgz", - "integrity": "sha512-gdq40tX8StmhP6akMp1pPoEVv+9jTYFSrga/g23JxajPAQhH39ysZrHGzQCSd9PEOnuEQEdjIWqxO7ZSwC0w7Q==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.14.0.tgz", + "integrity": "sha512-AlM6alTx98vcnk/jMMmoYuBrm4qpe1/VrbwvL2SXEHjdtJ1ZbVZmrpyjUx9mqS94e9HcemzpLn+CxzhmT7b0uw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -12393,7 +12393,7 @@ "node": ">=16.20.1" }, "peerDependencies": { - "@aws-sdk/credential-providers": "^3.632.0", + "@aws-sdk/credential-providers": "^3.188.0", "@mongodb-js/zstd": "^1.1.0 || ^2.0.0", "gcp-metadata": "^5.2.0", "kerberos": "^2.0.1", @@ -25848,9 +25848,9 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "mongodb": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.13.1.tgz", - "integrity": "sha512-gdq40tX8StmhP6akMp1pPoEVv+9jTYFSrga/g23JxajPAQhH39ysZrHGzQCSd9PEOnuEQEdjIWqxO7ZSwC0w7Q==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.14.0.tgz", + "integrity": "sha512-AlM6alTx98vcnk/jMMmoYuBrm4qpe1/VrbwvL2SXEHjdtJ1ZbVZmrpyjUx9mqS94e9HcemzpLn+CxzhmT7b0uw==", "dev": true, "requires": { "@mongodb-js/saslprep": "^1.1.9", From 5081ddb98781ad3d3f10bb45f407218d9360abed Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Mar 2025 22:29:21 +0100 Subject: [PATCH 313/396] chore(deps-dev): bump typescript from 5.7.3 to 5.8.2 (#4485) --- package-lock.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 552680df2c..0a923ca852 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15677,10 +15677,11 @@ } }, "node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -28420,9 +28421,9 @@ } }, "typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true }, "typical": { From 6d1665f0f5d968b8a79234c315a3aa71abca3a7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Mar 2025 22:29:56 +0100 Subject: [PATCH 314/396] chore(deps-dev): bump @elastic/elasticsearch from 8.17.0 to 8.17.1 (#4486) --- package-lock.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0a923ca852..ae847a3081 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4033,10 +4033,11 @@ } }, "node_modules/@elastic/elasticsearch": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.17.0.tgz", - "integrity": "sha512-FZ+gQUrPsMpQ2RRIXwTmCoUeFCEausMhp4eQOyxT9j1cwGXHJrhelR6jffM1SC95kQUkB7+TcTq7oQ+bG2BQ9g==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.17.1.tgz", + "integrity": "sha512-EaDP4/jfNu0nhnHZjxk9bL9ofKWKX9QUdEJ8QsGa+/KMPBEwD+HMyYXH4FSRlg7YONI0UbdO/mMZobvcEnMFBA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@elastic/transport": "^8.9.1", "apache-arrow": "^18.0.0", @@ -19267,9 +19268,9 @@ } }, "@elastic/elasticsearch": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.17.0.tgz", - "integrity": "sha512-FZ+gQUrPsMpQ2RRIXwTmCoUeFCEausMhp4eQOyxT9j1cwGXHJrhelR6jffM1SC95kQUkB7+TcTq7oQ+bG2BQ9g==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.17.1.tgz", + "integrity": "sha512-EaDP4/jfNu0nhnHZjxk9bL9ofKWKX9QUdEJ8QsGa+/KMPBEwD+HMyYXH4FSRlg7YONI0UbdO/mMZobvcEnMFBA==", "dev": true, "requires": { "@elastic/transport": "^8.9.1", From b8509a04cc3e1c154df346e166c026b85bc16b2e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Mar 2025 09:47:30 +0100 Subject: [PATCH 315/396] chore(deps): bump actions/attest-build-provenance from 2.2.2 to 2.2.3 (#4491) --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 430111de83..e7236ecc5a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -44,7 +44,7 @@ jobs: - run: make -C .ci dist - name: Attest Lambda layer zip - uses: actions/attest-build-provenance@bd77c077858b8d561b7a36cbe48ef4cc642ca39d # v2.2.2 + uses: actions/attest-build-provenance@c074443f1aee8d4aeeae555aebba3282517141b2 # v2.2.3 with: subject-path: "${{ github.workspace }}/build/aws/elastic-apm-node-lambda-layer-*.zip" @@ -75,7 +75,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image - uses: actions/attest-build-provenance@bd77c077858b8d561b7a36cbe48ef4cc642ca39d # v2.2.2 + uses: actions/attest-build-provenance@c074443f1aee8d4aeeae555aebba3282517141b2 # v2.2.3 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push.outputs.digest }} @@ -109,7 +109,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image (wolfi) - uses: actions/attest-build-provenance@bd77c077858b8d561b7a36cbe48ef4cc642ca39d # v2.2.2 + uses: actions/attest-build-provenance@c074443f1aee8d4aeeae555aebba3282517141b2 # v2.2.3 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push-wolfi.outputs.digest }} From a2eecbef8ba8715babc184e685117850c4d2693d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Mar 2025 09:48:39 +0100 Subject: [PATCH 316/396] chore(deps-dev): bump @hapi/hapi from 21.3.12 to 21.4.0 (#4494) --- package-lock.json | 62 ++++++++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/package-lock.json b/package-lock.json index ae847a3081..0d09163e3a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4558,6 +4558,7 @@ "resolved": "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-6.0.1.tgz", "integrity": "sha512-9GM9ECEHfR8lk5ASOKG4+4ZsEzFqLfhiryIJ2ISePVB92OHLp/yne4m+zn7z9dgvM98TLpiFebjDFQ0UHcqxXQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@hapi/boom": "^10.0.1" }, @@ -4572,10 +4573,11 @@ "dev": true }, "node_modules/@hapi/hapi": { - "version": "21.3.12", - "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.3.12.tgz", - "integrity": "sha512-GCUP12dkb3QMjpFl+wEFO73nqKRmsnD5um/QDOn6lj2GjGBrDXPcT194mNARO+PPNXZOR4KmvIpHt/lceUncfg==", + "version": "21.4.0", + "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.4.0.tgz", + "integrity": "sha512-kqiRWbYYLSSt2rYbxyNj8svPsXP715p4W/K3OXpXeiiVLNSdBX4f+zfmC+dY6eyb6rqTqTAbx6x8b5HpJTkviQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@hapi/accept": "^6.0.3", "@hapi/ammo": "^6.0.1", @@ -4590,7 +4592,7 @@ "@hapi/podium": "^5.0.1", "@hapi/shot": "^6.0.1", "@hapi/somever": "^4.1.1", - "@hapi/statehood": "^8.1.1", + "@hapi/statehood": "^8.2.0", "@hapi/subtext": "^8.1.0", "@hapi/teamwork": "^6.0.0", "@hapi/topo": "^6.0.2", @@ -4643,6 +4645,7 @@ "resolved": "https://registry.npmjs.org/@hapi/iron/-/iron-7.0.1.tgz", "integrity": "sha512-tEZnrOujKpS6jLKliyWBl3A9PaE+ppuL/+gkbyPPDb/l2KSKQyH4lhMkVb+sBhwN+qaxxlig01JRqB8dk/mPxQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@hapi/b64": "^6.0.1", "@hapi/boom": "^10.0.1", @@ -4652,10 +4655,11 @@ } }, "node_modules/@hapi/iron/node_modules/@hapi/hoek": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.2.tgz", - "integrity": "sha512-aKmlCO57XFZ26wso4rJsW4oTUnrgTFw2jh3io7CAtO9w4UltBNwRXvXIVzzyfkaaLRo3nluP/19msA8vDUUuKw==", - "dev": true + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.7.tgz", + "integrity": "sha512-HV5undWkKzcB4RZUusqOpcgxOaq6VOAH7zhhIr2g3G8NF/MlFO75SjOr2NfuSx0Mh40+1FqCkagKLJRykUWoFQ==", + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@hapi/mimos": { "version": "7.0.1", @@ -4761,10 +4765,11 @@ "dev": true }, "node_modules/@hapi/statehood": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@hapi/statehood/-/statehood-8.1.1.tgz", - "integrity": "sha512-YbK7PSVUA59NArAW5Np0tKRoIZ5VNYUicOk7uJmWZF6XyH5gGL+k62w77SIJb0AoAJ0QdGQMCQ/WOGL1S3Ydow==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@hapi/statehood/-/statehood-8.2.0.tgz", + "integrity": "sha512-63JlCVIrsmuunWsyc3OeuFO+gH6v56swLCl7OM1w09l/exQKPUxSUDF2Slkuw8k91nIzr0A2/aPvjLOWf9ksrg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@hapi/boom": "^10.0.1", "@hapi/bounce": "^3.0.1", @@ -4776,10 +4781,11 @@ } }, "node_modules/@hapi/statehood/node_modules/@hapi/hoek": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.2.tgz", - "integrity": "sha512-aKmlCO57XFZ26wso4rJsW4oTUnrgTFw2jh3io7CAtO9w4UltBNwRXvXIVzzyfkaaLRo3nluP/19msA8vDUUuKw==", - "dev": true + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.7.tgz", + "integrity": "sha512-HV5undWkKzcB4RZUusqOpcgxOaq6VOAH7zhhIr2g3G8NF/MlFO75SjOr2NfuSx0Mh40+1FqCkagKLJRykUWoFQ==", + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@hapi/subtext": { "version": "8.1.0", @@ -19739,9 +19745,9 @@ "dev": true }, "@hapi/hapi": { - "version": "21.3.12", - "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.3.12.tgz", - "integrity": "sha512-GCUP12dkb3QMjpFl+wEFO73nqKRmsnD5um/QDOn6lj2GjGBrDXPcT194mNARO+PPNXZOR4KmvIpHt/lceUncfg==", + "version": "21.4.0", + "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.4.0.tgz", + "integrity": "sha512-kqiRWbYYLSSt2rYbxyNj8svPsXP715p4W/K3OXpXeiiVLNSdBX4f+zfmC+dY6eyb6rqTqTAbx6x8b5HpJTkviQ==", "dev": true, "requires": { "@hapi/accept": "^6.0.3", @@ -19757,7 +19763,7 @@ "@hapi/podium": "^5.0.1", "@hapi/shot": "^6.0.1", "@hapi/somever": "^4.1.1", - "@hapi/statehood": "^8.1.1", + "@hapi/statehood": "^8.2.0", "@hapi/subtext": "^8.1.0", "@hapi/teamwork": "^6.0.0", "@hapi/topo": "^6.0.2", @@ -19820,9 +19826,9 @@ }, "dependencies": { "@hapi/hoek": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.2.tgz", - "integrity": "sha512-aKmlCO57XFZ26wso4rJsW4oTUnrgTFw2jh3io7CAtO9w4UltBNwRXvXIVzzyfkaaLRo3nluP/19msA8vDUUuKw==", + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.7.tgz", + "integrity": "sha512-HV5undWkKzcB4RZUusqOpcgxOaq6VOAH7zhhIr2g3G8NF/MlFO75SjOr2NfuSx0Mh40+1FqCkagKLJRykUWoFQ==", "dev": true } } @@ -19940,9 +19946,9 @@ } }, "@hapi/statehood": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@hapi/statehood/-/statehood-8.1.1.tgz", - "integrity": "sha512-YbK7PSVUA59NArAW5Np0tKRoIZ5VNYUicOk7uJmWZF6XyH5gGL+k62w77SIJb0AoAJ0QdGQMCQ/WOGL1S3Ydow==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@hapi/statehood/-/statehood-8.2.0.tgz", + "integrity": "sha512-63JlCVIrsmuunWsyc3OeuFO+gH6v56swLCl7OM1w09l/exQKPUxSUDF2Slkuw8k91nIzr0A2/aPvjLOWf9ksrg==", "dev": true, "requires": { "@hapi/boom": "^10.0.1", @@ -19955,9 +19961,9 @@ }, "dependencies": { "@hapi/hoek": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.2.tgz", - "integrity": "sha512-aKmlCO57XFZ26wso4rJsW4oTUnrgTFw2jh3io7CAtO9w4UltBNwRXvXIVzzyfkaaLRo3nluP/19msA8vDUUuKw==", + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.7.tgz", + "integrity": "sha512-HV5undWkKzcB4RZUusqOpcgxOaq6VOAH7zhhIr2g3G8NF/MlFO75SjOr2NfuSx0Mh40+1FqCkagKLJRykUWoFQ==", "dev": true } } From 3987548c19ff24783c42bef36b2b366ea6982b2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Mar 2025 09:50:24 +0100 Subject: [PATCH 317/396] chore(deps-dev): bump ioredis from 5.5.0 to 5.6.0 (#4497) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0d09163e3a..716768293f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10905,9 +10905,9 @@ } }, "node_modules/ioredis": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.5.0.tgz", - "integrity": "sha512-7CutT89g23FfSa8MDoIFs2GYYa0PaNiW/OrT+nRyjRXHDZd17HmIgy+reOQ/yhh72NznNjGuS8kbCAcA4Ro4mw==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.6.0.tgz", + "integrity": "sha512-tBZlIIWbndeWBWCXWZiqtOF/yxf6yZX3tAlTJ7nfo5jhd6dctNxF7QnYlZLZ1a0o0pDoen7CgZqO+zjNaFbJAg==", "dev": true, "license": "MIT", "dependencies": { @@ -24746,9 +24746,9 @@ "dev": true }, "ioredis": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.5.0.tgz", - "integrity": "sha512-7CutT89g23FfSa8MDoIFs2GYYa0PaNiW/OrT+nRyjRXHDZd17HmIgy+reOQ/yhh72NznNjGuS8kbCAcA4Ro4mw==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.6.0.tgz", + "integrity": "sha512-tBZlIIWbndeWBWCXWZiqtOF/yxf6yZX3tAlTJ7nfo5jhd6dctNxF7QnYlZLZ1a0o0pDoen7CgZqO+zjNaFbJAg==", "dev": true, "requires": { "@ioredis/commands": "^1.1.1", From 291f69168e9b8a4f4f7d1c706157cf6fa49454f4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Mar 2025 09:51:12 +0100 Subject: [PATCH 318/396] chore(deps-dev): bump mysql2 from 3.12.0 to 3.13.0 (#4498) --- package-lock.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 716768293f..72ba3a5fa0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12549,10 +12549,11 @@ } }, "node_modules/mysql2": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.12.0.tgz", - "integrity": "sha512-C8fWhVysZoH63tJbX8d10IAoYCyXy4fdRFz2Ihrt9jtPILYynFEKUUzpp1U7qxzDc3tMbotvaBH+sl6bFnGZiw==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.13.0.tgz", + "integrity": "sha512-M6DIQjTqKeqXH5HLbLMxwcK5XfXHw30u5ap6EZmu7QVmcF/gnh2wS/EOiQ4MTbXz/vQeoXrmycPlVRM00WSslg==", "dev": true, + "license": "MIT", "dependencies": { "aws-ssl-profiles": "^1.1.1", "denque": "^2.1.0", @@ -25972,9 +25973,9 @@ } }, "mysql2": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.12.0.tgz", - "integrity": "sha512-C8fWhVysZoH63tJbX8d10IAoYCyXy4fdRFz2Ihrt9jtPILYynFEKUUzpp1U7qxzDc3tMbotvaBH+sl6bFnGZiw==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.13.0.tgz", + "integrity": "sha512-M6DIQjTqKeqXH5HLbLMxwcK5XfXHw30u5ap6EZmu7QVmcF/gnh2wS/EOiQ4MTbXz/vQeoXrmycPlVRM00WSslg==", "dev": true, "requires": { "aws-ssl-profiles": "^1.1.1", From 1ad85830960d4f6c43734632151c8d7e2cf34f01 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Mar 2025 10:57:43 +0100 Subject: [PATCH 319/396] chore(deps-dev): bump mongodb from 6.14.0 to 6.14.2 (#4495) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 72ba3a5fa0..a872c85081 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12386,9 +12386,9 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "node_modules/mongodb": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.14.0.tgz", - "integrity": "sha512-AlM6alTx98vcnk/jMMmoYuBrm4qpe1/VrbwvL2SXEHjdtJ1ZbVZmrpyjUx9mqS94e9HcemzpLn+CxzhmT7b0uw==", + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.14.2.tgz", + "integrity": "sha512-kMEHNo0F3P6QKDq17zcDuPeaywK/YaJVCEQRzPF3TOM/Bl9MFg64YE5Tu7ifj37qZJMhwU1tl2Ioivws5gRG5Q==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -25857,9 +25857,9 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "mongodb": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.14.0.tgz", - "integrity": "sha512-AlM6alTx98vcnk/jMMmoYuBrm4qpe1/VrbwvL2SXEHjdtJ1ZbVZmrpyjUx9mqS94e9HcemzpLn+CxzhmT7b0uw==", + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.14.2.tgz", + "integrity": "sha512-kMEHNo0F3P6QKDq17zcDuPeaywK/YaJVCEQRzPF3TOM/Bl9MFg64YE5Tu7ifj37qZJMhwU1tl2Ioivws5gRG5Q==", "dev": true, "requires": { "@mongodb-js/saslprep": "^1.1.9", From cc65b1e3586cca0888d18f16a47fa1a62b70c089 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Mar 2025 10:58:58 +0100 Subject: [PATCH 320/396] chore(deps-dev): bump axios from 1.7.9 to 1.8.2 (#4500) --- package-lock.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index a872c85081..8394f550dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7103,10 +7103,11 @@ } }, "node_modules/axios": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", - "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.2.tgz", + "integrity": "sha512-ls4GYBm5aig9vWx8AWDSGLpnpDQRtWAfrjU+EuytuODrFBkqesN2RkOQCBzrA1RQNHw1SmRMSDDDSwzNAYQ6Rg==", "dev": true, + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -21868,9 +21869,9 @@ "dev": true }, "axios": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", - "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.2.tgz", + "integrity": "sha512-ls4GYBm5aig9vWx8AWDSGLpnpDQRtWAfrjU+EuytuODrFBkqesN2RkOQCBzrA1RQNHw1SmRMSDDDSwzNAYQ6Rg==", "dev": true, "requires": { "follow-redirects": "^1.15.6", From 4783665bb9aef0ebc9f71fe0145c62278f0f1b82 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Mar 2025 11:12:12 +0100 Subject: [PATCH 321/396] chore(deps-dev): bump prettier from 3.5.2 to 3.5.3 (#4493) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8394f550dd..ada05abeff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13560,9 +13560,9 @@ } }, "node_modules/prettier": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.2.tgz", - "integrity": "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", "dev": true, "license": "MIT", "bin": { @@ -26735,9 +26735,9 @@ "dev": true }, "prettier": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.2.tgz", - "integrity": "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", "dev": true }, "prettier-linter-helpers": { From c2079a77d7e345af0e6149fc38514f13f052b551 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Mon, 10 Mar 2025 08:56:37 -0700 Subject: [PATCH 322/396] chore(examples/esbuild): update esbuild for vuln (#4480) Refs: https://github.com/elastic/apm-agent-nodejs/security/dependabot/116 --- examples/esbuild/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/esbuild/package.json b/examples/esbuild/package.json index eab3527e24..38b46ed009 100644 --- a/examples/esbuild/package.json +++ b/examples/esbuild/package.json @@ -12,6 +12,6 @@ "pug": "^3.0.2" }, "devDependencies": { - "esbuild": "^0.14.49" + "esbuild": ">=0.25.0" } } From 1e631e81dc72e43f6853092098dff16ec35c6f55 Mon Sep 17 00:00:00 2001 From: Colleen McGinnis Date: Mon, 10 Mar 2025 13:14:01 -0500 Subject: [PATCH 323/396] add the new ci checks (#4478) --- .github/workflows/docs-build.yml | 19 +++++++++++++++++++ .github/workflows/docs-cleanup.yml | 14 ++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 .github/workflows/docs-build.yml create mode 100644 .github/workflows/docs-cleanup.yml diff --git a/.github/workflows/docs-build.yml b/.github/workflows/docs-build.yml new file mode 100644 index 0000000000..bb466166d0 --- /dev/null +++ b/.github/workflows/docs-build.yml @@ -0,0 +1,19 @@ +name: docs-build + +on: + push: + branches: + - main + pull_request_target: ~ + merge_group: ~ + +jobs: + docs-preview: + uses: elastic/docs-builder/.github/workflows/preview-build.yml@main + with: + path-pattern: docs/** + permissions: + deployments: write + id-token: write + contents: read + pull-requests: read diff --git a/.github/workflows/docs-cleanup.yml b/.github/workflows/docs-cleanup.yml new file mode 100644 index 0000000000..f83e017b5f --- /dev/null +++ b/.github/workflows/docs-cleanup.yml @@ -0,0 +1,14 @@ +name: docs-cleanup + +on: + pull_request_target: + types: + - closed + +jobs: + docs-preview: + uses: elastic/docs-builder/.github/workflows/preview-cleanup.yml@main + permissions: + contents: none + id-token: write + deployments: write From 9dfeeca508c3373824d72aa1b28100a979c3b411 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Tue, 11 Mar 2025 07:32:31 -0700 Subject: [PATCH 324/396] test(finalhandler): skip testing finalhandler >=2.1.0 on Node.js 14 or earlier (#4502) Obsoletes: https://github.com/elastic/apm-agent-nodejs/pull/4496 --- .tav.yml | 12 +- package-lock.json | 115 ++++++++++++------ package.json | 2 +- .../modules/finalhandler.test.js | 13 ++ 4 files changed, 103 insertions(+), 39 deletions(-) diff --git a/.tav.yml b/.tav.yml index f1022a9dc8..3fe1b3021f 100644 --- a/.tav.yml +++ b/.tav.yml @@ -447,8 +447,16 @@ fastify: - node test/instrumentation/modules/fastify/set-framework.test.js finalhandler: - versions: '*' - commands: node test/instrumentation/modules/finalhandler.test.js + - versions: + mode: max-3 + include: '>=1 <2' + node: '>=0.8' + commands: node test/instrumentation/modules/finalhandler.test.js + - versions: + mode: max-3 + include: '>=2 <3' + node: '>=16' + commands: node test/instrumentation/modules/finalhandler.test.js memcached: versions: '>=2.2.0' diff --git a/package-lock.json b/package-lock.json index ada05abeff..863678cc68 100644 --- a/package-lock.json +++ b/package-lock.json @@ -86,7 +86,7 @@ "express": "^4.17.1", "express-queue": "^0.0.13", "fastify": "^5.0.0", - "finalhandler": "^1.1.2", + "finalhandler": "^2.1.0", "generic-pool": "^3.7.1", "get-port": "^5.1.1", "glob": "^7.2.3", @@ -9642,6 +9642,25 @@ "node": ">= 0.8" } }, + "node_modules/express/node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/express/node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -10017,30 +10036,39 @@ } }, "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", "dev": true, + "license": "MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" }, "engines": { "node": ">= 0.8" } }, "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/finalhandler/node_modules/encodeurl": { @@ -10053,10 +10081,11 @@ } }, "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, "node_modules/finalhandler/node_modules/statuses": { "version": "2.0.1", @@ -23734,6 +23763,21 @@ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true }, + "finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, "http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -24081,27 +24125,26 @@ } }, "finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", "dev": true, "requires": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.3" } }, "encodeurl": { @@ -24111,9 +24154,9 @@ "dev": true }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "statuses": { diff --git a/package.json b/package.json index 717cf260f1..60d8d90516 100644 --- a/package.json +++ b/package.json @@ -165,7 +165,7 @@ "express": "^4.17.1", "express-queue": "^0.0.13", "fastify": "^5.0.0", - "finalhandler": "^1.1.2", + "finalhandler": "^2.1.0", "generic-pool": "^3.7.1", "get-port": "^5.1.1", "glob": "^7.2.3", diff --git a/test/instrumentation/modules/finalhandler.test.js b/test/instrumentation/modules/finalhandler.test.js index d986b83495..05eed1dc64 100644 --- a/test/instrumentation/modules/finalhandler.test.js +++ b/test/instrumentation/modules/finalhandler.test.js @@ -14,6 +14,19 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { process.exit(0); } +// finalhandler@2.1.0 broke <=14 support (https://github.com/pillarjs/finalhandler/issues/87) +var finalhandlerVer = require('finalhandler/package.json').version; +var semver = require('semver'); +if ( + semver.gte(finalhandlerVer, '2.1.0') && + semver.lt(process.version, '16.0.0') +) { + console.log( + `# SKIP finalhandler@${finalhandlerVer} does not support node ${process.version}`, + ); + process.exit(); +} + var agent = require('../../..').start({ serviceName: 'test', secretToken: 'test', From 6129a2013b18c7ffa607c74c0adfcec73698c0e1 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Tue, 11 Mar 2025 07:40:23 -0700 Subject: [PATCH 325/396] chore(slack-lite): switch to pull_request_target so have access to repo secrets (#4501) No need for us to be running code from the PR itself, so this event is fine. Before this change, a workflow run for a PR from a *fork* would have 'Secret source: None' and hence not have access to the SLACK_BOT_TOKEN Also be clearer on the 'slack-lite' brand. --- .github/workflows/{slack.yml => slack-lite.yml} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename .github/workflows/{slack.yml => slack-lite.yml} (98%) diff --git a/.github/workflows/slack.yml b/.github/workflows/slack-lite.yml similarity index 98% rename from .github/workflows/slack.yml rename to .github/workflows/slack-lite.yml index 3de28511cb..53189fde09 100644 --- a/.github/workflows/slack.yml +++ b/.github/workflows/slack-lite.yml @@ -11,7 +11,7 @@ # 3. Optionally tweak the `if:` and `on:` sections below to control which issue # and PR events are skipped. -name: slack +name: slack-lite env: SLACK_CHANNEL: "#apm-agent-node" @@ -19,11 +19,11 @@ env: on: issues: types: [opened, reopened, closed] - pull_request: + pull_request_target: types: [opened, ready_for_review, reopened, closed] jobs: - slack: + slack-lite: # Skip notification if: # - dependabot or renovate PRs, too noisy # - draft PRs From 629708e7864057dca033c959949e90da928690ef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 13 Mar 2025 16:20:06 +0100 Subject: [PATCH 326/396] chore(deps): bump @azure/functions from 4.6.1 to 4.7.0 in test fixtures (#4499) --- .../azure-functions/fixtures/azfunc4/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/instrumentation/azure-functions/fixtures/azfunc4/package-lock.json b/test/instrumentation/azure-functions/fixtures/azfunc4/package-lock.json index 4900c94fb7..217b27a650 100644 --- a/test/instrumentation/azure-functions/fixtures/azfunc4/package-lock.json +++ b/test/instrumentation/azure-functions/fixtures/azfunc4/package-lock.json @@ -12,9 +12,9 @@ } }, "node_modules/@azure/functions": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@azure/functions/-/functions-4.6.1.tgz", - "integrity": "sha512-Py2Az29yk+A21vHES/rL6iU3ptKB+vVz3sGTjm0jSPFjG4kPbhFLi5vFI7YkCPMGeoD4WMIjHqTAeXvnFrBUBA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@azure/functions/-/functions-4.7.0.tgz", + "integrity": "sha512-y1caGX6LYrA7msAckQVb/quFOhWHSPiGzWfIML17t0ee2ydpinJTBF+Sti+URfLAH63dtmXJR4meraZkhhK9tw==", "license": "MIT", "dependencies": { "cookie": "^0.7.0", From b053ddc0a72e01cc4b0a8d1eb1c64f0109660844 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Thu, 13 Mar 2025 16:21:30 +0100 Subject: [PATCH 327/396] chore(deps): update wolfi (versioned) (#4477) docker.elastic.co/wolfi/chainguard-base 0801a43 -> 69a0542 docker.elastic.co/wolfi/chainguard-base-fips e060fa8 -> 3430300 --- .github/workflows/test-fips.yml | 2 +- Dockerfile.wolfi | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-fips.yml b/.github/workflows/test-fips.yml index 9eea0bdb22..641ccc6c74 100644 --- a/.github/workflows/test-fips.yml +++ b/.github/workflows/test-fips.yml @@ -21,7 +21,7 @@ jobs: # https://docs.github.com/en/actions/writing-workflows/choosing-where-your-workflow-runs/running-jobs-in-a-container # docker run -it --rm --name fipsy docker.elastic.co/wolfi/chainguard-base-fips:latest container: - image: docker.elastic.co/wolfi/chainguard-base-fips:latest@sha256:e060fa81b7bdd061cc0ca0d85d17c69cba9a62d2c464a019e1f533c0c1933bb1 + image: docker.elastic.co/wolfi/chainguard-base-fips:latest@sha256:3430300927bf52ea22f3180bd857ec6684212fc46d23df3bc795309761242875 credentials: username: ${{ secrets.ELASTIC_DOCKER_USERNAME }} password: ${{ secrets.ELASTIC_DOCKER_PASSWORD }} diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 6270821a3d..0e757a6b9f 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:0801a437e721bebdd2d5be62e3f63f60fc9d1d82efacabe4c5b8792d74ae7006 +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:69a0542e9182917b4d749b735790575940a282d12b90c1325e7ca5a052ece33a ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From a1de51dfd27f89390d743185b684168e66c4f23f Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Thu, 13 Mar 2025 08:40:39 -0700 Subject: [PATCH 328/396] fix(hapi): limit which event data fields are included in captured APM error object for Hapi 'log' and 'request' error events (#4504) Closes: #4503 --- CHANGELOG.asciidoc | 28 ++++++ lib/instrumentation/modules/@hapi/hapi.js | 94 ++++++++++++++++--- .../instrumentation/modules/hapi/hapi.test.js | 55 +++++------ 3 files changed, 131 insertions(+), 46 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 4a46e63521..082292f17b 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -44,6 +44,34 @@ See the <> guide. [float] ===== Bug fixes +* Change how `@hapi/hapi` instrumentation includes additional data when + capturing an error for Hapi `log` and `request` Server events to avoid + possible capture of large amounts of data, that could lead to latency issues + and high memory usage. Some data that may have been captured before will + *no longer* be captured. ({issues}4503[#4503]) ++ +The `@hapi/hapi` instrumentation will capture an APM error whenever a +Hapi `log` or `request` server event (https://hapi.dev/api/#server.events) with +the "error" tag is emitted, e.g. when a Hapi server responds with an HTTP 500 +error. Before this change, any and all properties on the logged Error or data +would be included in the APM error data sent to APM server (in the +`error.custom` field). This could cause a surprise for applications that attach +(sometimes large) data to the internal server Error for other purposes (e.g. +application error handling). ++ +The expected surprise case is when a deeply-nested object is added as a +property to the event data. To protect against serializing these, the Hapi +instrumentation will only serialize event data properties that are "simple" +types (boolean, string, number, Date), other types (Array, object, Buffer, etc.) +will *not* be captured. This is similar behavior as is used for the +`captureAttributes` option to <> +for the same purpose. ++ +In addition, the updated Hapi instrumentation will no longer capture to +`error.custom` when the emitted data is an `Error` instance, because this was a +duplication of the `Error` properties already being captured to the +`error.exception.attributes` field. + [float] ===== Chores diff --git a/lib/instrumentation/modules/@hapi/hapi.js b/lib/instrumentation/modules/@hapi/hapi.js index e33b996c85..838d395523 100644 --- a/lib/instrumentation/modules/@hapi/hapi.js +++ b/lib/instrumentation/modules/@hapi/hapi.js @@ -12,6 +12,69 @@ var shimmer = require('../../shimmer'); var onPreAuthSym = Symbol('ElasticAPMOnPreAuth'); +// Collect simple data a Hapi `event.data` object, typically from a Hapi +// 'log' or 'request' server event (https://hapi.dev/api/#server.events). This +// limits to including simple property values (bool, string, number, Date) to +// limit the possibility of accidentally capturing huge data in `captureError` +// below. +// +// This implementation is based on lib/errors.js#attributesFromErr. +function simpleDataFromEventData(agent, eventData) { + try { + let simpleRepr = simpleReprFromVal(eventData); + if (simpleRepr !== undefined) { + return simpleRepr; + } + + let n = 0; + const attrs = {}; + const keys = Object.keys(eventData); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + let val = eventData[key]; + simpleRepr = simpleReprFromVal(val); + if (simpleRepr) { + attrs[key] = simpleRepr; + n++; + } + } + return n ? attrs : undefined; + } catch (err) { + agent.logger.trace( + 'hapi: could not gather simple attrs from event data: ' + err.message, + ); + } +} + +// If `val` is a "simple" type (bool, string, number, Date), then return a +// reasonable value to represent it in a JSON serialization. Otherwise, return +// undefined. +function simpleReprFromVal(val) { + switch (typeof val) { + case 'boolean': + case 'string': + case 'number': + break; + case 'object': + // Ignore all objects except Dates. + if ( + val === null || + typeof val.toISOString !== 'function' || + typeof val.getTime !== 'function' + ) { + return; + } else if (Number.isNaN(val.getTime())) { + val = 'Invalid Date'; // calling toISOString() on invalid dates throws + } else { + val = val.toISOString(); + } + break; + default: + return; + } + return val; +} + module.exports = function (hapi, agent, { version, enabled }) { if (!enabled) { return hapi; @@ -64,23 +127,28 @@ module.exports = function (hapi, agent, { version, enabled }) { return; } - // TODO: Find better location to put this than custom - var payload = { + // Hapi 'log' and 'request' events (https://hapi.dev/api/#server.events) + // have `event.error`, `event.data`, or neither. + // `agent.captureError` requires an Error instance or string for its first + // arg: bias to getting that, then any other data add to `opts.custom.data`. + const info = event.error || event.data; + let errOrStr, data; + if (info instanceof Error || typeof info === 'string') { + errOrStr = info; + } else if (info) { + data = simpleDataFromEventData(agent, info); + } + if (!errOrStr) { + errOrStr = 'hapi server emitted a "' + type + '" event tagged "error"'; + } + + agent.captureError(errOrStr, { custom: { tags: event.tags, - internals: event.internals, - // Moved from data to error in hapi 17 - data: event.data || event.error, + data, }, request: req && req.raw && req.raw.req, - }; - - var err = payload.custom.data; - if (!(err instanceof Error) && typeof err !== 'string') { - err = 'hapi server emitted a ' + type + ' event tagged error'; - } - - agent.captureError(err, payload); + }); } function onPreAuth(request, reply) { diff --git a/test/instrumentation/modules/hapi/hapi.test.js b/test/instrumentation/modules/hapi/hapi.test.js index 07b0f44ed8..1ddc842070 100644 --- a/test/instrumentation/modules/hapi/hapi.test.js +++ b/test/instrumentation/modules/hapi/hapi.test.js @@ -151,7 +151,7 @@ test('connectionless server error logging with Error', function (t) { return; } - t.plan(6); + t.plan(5); var customError = new Error('custom error'); @@ -163,8 +163,7 @@ test('connectionless server error logging with Error', function (t) { t.strictEqual(err, customError); t.ok(opts.custom); t.deepEqual(opts.custom.tags, ['error']); - t.false(opts.custom.internals); - t.ok(opts.custom.data instanceof Error); + t.strictEqual(opts.custom.data, undefined); }; var server = makeServer(); @@ -182,7 +181,7 @@ test('connectionless server error logging with String', function (t) { return; } - t.plan(6); + t.plan(5); var customError = 'custom error'; @@ -194,8 +193,7 @@ test('connectionless server error logging with String', function (t) { t.strictEqual(err, customError); t.ok(opts.custom); t.deepEqual(opts.custom.tags, ['error']); - t.false(opts.custom.internals); - t.ok(typeof opts.custom.data === 'string'); + t.strictEqual(opts.custom.data, undefined); }; var server = makeServer(); @@ -213,7 +211,7 @@ test('connectionless server error logging with Object', function (t) { return; } - t.plan(6); + t.plan(5); var customError = { error: 'I forgot to turn this into an actual Error', @@ -224,10 +222,9 @@ test('connectionless server error logging with Object', function (t) { agent.captureError = function (err, opts) { server.stop(noop); - t.strictEqual(err, 'hapi server emitted a log event tagged error'); + t.strictEqual(err, 'hapi server emitted a "log" event tagged "error"'); t.ok(opts.custom); t.deepEqual(opts.custom.tags, ['error']); - t.false(opts.custom.internals); t.deepEqual(opts.custom.data, customError); }; @@ -240,7 +237,7 @@ test('connectionless server error logging with Object', function (t) { }); test('server error logging with Error', function (t) { - t.plan(6); + t.plan(5); var customError = new Error('custom error'); @@ -252,8 +249,7 @@ test('server error logging with Error', function (t) { t.strictEqual(err, customError); t.ok(opts.custom); t.deepEqual(opts.custom.tags, ['error']); - t.false(opts.custom.internals); - t.ok(opts.custom.data instanceof Error); + t.strictEqual(opts.custom.data, undefined); }; var server = startServer(function (err) { @@ -264,7 +260,7 @@ test('server error logging with Error', function (t) { }); test('server error logging with Error does not affect event tags', function (t) { - t.plan(8); + t.plan(7); var customError = new Error('custom error'); @@ -276,8 +272,7 @@ test('server error logging with Error does not affect event tags', function (t) t.strictEqual(err, customError); t.ok(opts.custom); t.deepEqual(opts.custom.tags, ['error']); - t.false(opts.custom.internals); - t.ok(opts.custom.data instanceof Error); + t.strictEqual(opts.custom.data, undefined); }; var server = makeServer(); @@ -299,7 +294,7 @@ test('server error logging with Error does not affect event tags', function (t) }); test('server error logging with String', function (t) { - t.plan(6); + t.plan(5); var customError = 'custom error'; @@ -311,8 +306,7 @@ test('server error logging with String', function (t) { t.strictEqual(err, customError); t.ok(opts.custom); t.deepEqual(opts.custom.tags, ['error']); - t.false(opts.custom.internals); - t.ok(typeof opts.custom.data === 'string'); + t.strictEqual(opts.custom.data, undefined); }; var server = startServer(function (err) { @@ -323,7 +317,7 @@ test('server error logging with String', function (t) { }); test('server error logging with Object', function (t) { - t.plan(6); + t.plan(5); var customError = { error: 'I forgot to turn this into an actual Error', @@ -334,10 +328,9 @@ test('server error logging with Object', function (t) { agent.captureError = function (err, opts) { server.stop(noop); - t.strictEqual(err, 'hapi server emitted a log event tagged error'); + t.strictEqual(err, 'hapi server emitted a "log" event tagged "error"'); t.ok(opts.custom); t.deepEqual(opts.custom.tags, ['error']); - t.false(opts.custom.internals); t.deepEqual(opts.custom.data, customError); }; @@ -349,7 +342,7 @@ test('server error logging with Object', function (t) { }); test('request error logging with Error', function (t) { - t.plan(13); + t.plan(12); var customError = new Error('custom error'); @@ -364,8 +357,7 @@ test('request error logging with Error', function (t) { t.ok(opts.custom); t.ok(opts.request); t.deepEqual(opts.custom.tags, ['error']); - t.false(opts.custom.internals); - t.ok(opts.custom.data instanceof Error); + t.strictEqual(opts.custom.data, undefined); }; var server = makeServer(); @@ -394,7 +386,7 @@ test('request error logging with Error', function (t) { }); test('request error logging with Error does not affect event tags', function (t) { - t.plan(15); + t.plan(14); var customError = new Error('custom error'); @@ -409,8 +401,7 @@ test('request error logging with Error does not affect event tags', function (t) t.ok(opts.custom); t.ok(opts.request); t.deepEqual(opts.custom.tags, ['elastic-apm', 'error']); - t.false(opts.custom.internals); - t.ok(opts.custom.data instanceof Error); + t.strictEqual(opts.custom.data, undefined); }; var server = makeServer(); @@ -450,7 +441,7 @@ test('request error logging with Error does not affect event tags', function (t) }); test('request error logging with String', function (t) { - t.plan(13); + t.plan(12); var customError = 'custom error'; @@ -465,8 +456,7 @@ test('request error logging with String', function (t) { t.ok(opts.custom); t.ok(opts.request); t.deepEqual(opts.custom.tags, ['error']); - t.false(opts.custom.internals); - t.ok(typeof opts.custom.data === 'string'); + t.strictEqual(opts.custom.data, undefined); }; var server = makeServer(); @@ -495,7 +485,7 @@ test('request error logging with String', function (t) { }); test('request error logging with Object', function (t) { - t.plan(13); + t.plan(12); var customError = { error: 'I forgot to turn this into an actual Error', @@ -508,11 +498,10 @@ test('request error logging with Object', function (t) { }); agent.captureError = function (err, opts) { - t.strictEqual(err, 'hapi server emitted a request event tagged error'); + t.strictEqual(err, 'hapi server emitted a "request" event tagged "error"'); t.ok(opts.custom); t.ok(opts.request); t.deepEqual(opts.custom.tags, ['error']); - t.false(opts.custom.internals); t.deepEqual(opts.custom.data, customError); }; From 68d144a30211691770d81f0f824f3a8cfd0b691e Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Thu, 13 Mar 2025 09:59:13 -0700 Subject: [PATCH 329/396] release 4.11.1 (#4506) This also updates the release process step for updating the appropriate branch for our docs build. We are in transition from the current AsciiDoc-based system to a newer 'docs v3' system. --- CHANGELOG.asciidoc | 9 +++---- CONTRIBUTING.md | 10 ++++--- ...branch.sh => update-legacy-docs-branch.sh} | 27 +++++++++++-------- package-lock.json | 4 +-- package.json | 2 +- 5 files changed, 28 insertions(+), 24 deletions(-) rename dev-utils/{update-4x-branch.sh => update-legacy-docs-branch.sh} (66%) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 082292f17b..daed5aa763 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -33,13 +33,9 @@ Notes: See the <> guide. -==== Unreleased -[float] -===== Breaking changes - -[float] -===== Features +[[release-notes-4.11.1]] +==== 4.11.1 - 2025/03/14 [float] ===== Bug fixes @@ -76,6 +72,7 @@ duplication of the `Error` properties already being captured to the ===== Chores * Update base image of alpine in `Dockerfile` to version `3.21.3`. ({pull}4465[#4465]) +* Test FIPS 140 compliance. ({pull}4441[#4441]) [[release-notes-4.11.0]] ==== 4.11.0 - 2025/01/20 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 717d0bd3fa..aa925fd18e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -212,11 +212,13 @@ A release involves the following published artifacts: steps -- including the `npm publish`. See the appropriate run at: https://github.com/elastic/apm-agent-nodejs/actions/workflows/release.yml) -4. If this is for the latest major (currently `4.x`), then the "4.x" branch - needs to be updated to the same state as the release tag on "main". Use - the [update-4x-branch.sh](./dev-utils/update-4x-branch.sh) script for this. +4. Updating published docs: If this is for the latest major (currently `4.x`), + then the "do-not-delete_legacy-docs" branch needs to be updated to the same + state as the release tag on "main". Use the + [update-legacy-docs-branch.sh](./dev-utils/update-legacy-docs-branch.sh) + script for this. - - Run `./dev-utils/update-4x-branch.sh` to create a working dir with the + - Run `./dev-utils/update-legacy-docs-branch.sh` to create a working dir with the needed changes. - Follow its instructions to create a PR from this working dir. - Ensure the "buildkite/docs-build-pr" workflow passes for this branch. diff --git a/dev-utils/update-4x-branch.sh b/dev-utils/update-legacy-docs-branch.sh similarity index 66% rename from dev-utils/update-4x-branch.sh rename to dev-utils/update-legacy-docs-branch.sh index 9564901162..bd397f449f 100755 --- a/dev-utils/update-4x-branch.sh +++ b/dev-utils/update-legacy-docs-branch.sh @@ -1,11 +1,16 @@ #!/bin/bash # -# Create a PR to update the 4.x branch to match the state of "main" for the -# just-tagged release. The 4.x branch needs to be updated for the current docs -# build. +# Create a PR to update the `do-not-delete_legacy-docs` branch to match the +# state of "main" for the just-tagged release. The `do-not-delete_legacy-docs` +# branch needs to be updated for the current docs build. +# +# (Here "legacy docs" means the old Elastic (v1?) docs system based on +# AsciiDoc sources and the elastic/docs.git tooling. Around Mar/Apr 2025 +# this docs system is being phased out in favour of a "docs v3" system based +# on Markdown sources and new tooling.) # # Usage: -# ./dev-utils/update-4x-branch.sh [TARGTAG [LASTTAG]] +# ./dev-utils/update-legacy-docs-branch.sh [TARGTAG [LASTTAG]] if [ "$TRACE" != "" ]; then export PS4='${BASH_SOURCE}:${LINENO}: ${FUNCNAME[0]:+${FUNCNAME[0]}(): }' @@ -20,7 +25,7 @@ function fatal { } TOP=$(cd $(dirname $0)/../ >/dev/null; pwd) -WRKDIR=${TOP}/build/update-4x-branch +WRKDIR=${TOP}/build/update-legacy-docs-branch echo "# Creating working git clone in: ${WRKDIR}/apm-agent-nodejs" rm -rf $WRKDIR @@ -40,8 +45,8 @@ if [[ ! ("$TARGTAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]$) ]]; then fi # echo "TARGTAG=$TARGTAG" -# Allow passing in last tag (second arg), in case the 4.x branch wasn't updated -# for some previous releases. +# Allow passing in last tag (second arg), in case the +# 'do-not-delete_legacy-docs' branch wasn't updated for some previous releases. LASTTAG="$2" if [[ -z "$LASTTAG" ]]; then readonly NUM_COMMITS_SANITY_GUARD=200 @@ -69,9 +74,9 @@ fi # `tac` works on Linux, `tail -r` works on BSD/macOS. # https://stackoverflow.com/a/744093/14444044 echo -echo "# Creating PR to update 4.x branch with commits from $LASTTAG to $TARGTAG." -FEATBRANCH=update-4x-branch-$(date +%Y%m%d) -git checkout 4.x +echo "# Creating PR to update 'do-not-delete_legacy-docs' branch with commits from $LASTTAG to $TARGTAG." +FEATBRANCH=update-legacy-docs-branch-$(date +%Y%m%d) +git checkout do-not-delete_legacy-docs git checkout -b "$FEATBRANCH" git log --pretty=format:"%h" $LASTTAG...$TARGTAG \ | awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] }' \ @@ -84,5 +89,5 @@ RELEASE_PR=$(git log --pretty=format:"%s" -1 $TARGTAG | sed -E 's/^.* \(\#([0-9] echo echo "# You can create a PR now with:" echo " cd $WRKDIR/apm-agent-nodejs" -echo " gh pr create -w -B 4.x -t 'docs: update 4.x branch for $TARGTAG release' --body 'Refs: #$RELEASE_PR (release PR)'" +echo " gh pr create -w -B "do-not-delete_legacy-docs" -t 'docs: update "do-not-delete_legacy-docs" branch for $TARGTAG release' --body 'Refs: #$RELEASE_PR (release PR)'" diff --git a/package-lock.json b/package-lock.json index 863678cc68..1200772c5e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "elastic-apm-node", - "version": "4.11.0", + "version": "4.11.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "elastic-apm-node", - "version": "4.11.0", + "version": "4.11.1", "license": "BSD-2-Clause", "dependencies": { "@elastic/ecs-pino-format": "^1.5.0", diff --git a/package.json b/package.json index 60d8d90516..7ddb3323ab 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "elastic-apm-node", - "version": "4.11.0", + "version": "4.11.1", "description": "The official Elastic APM agent for Node.js", "type": "commonjs", "main": "index.js", From 167c273076c771408facd8e5b5e91eed55142b25 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Fri, 14 Mar 2025 14:13:06 -0700 Subject: [PATCH 330/396] test: avoid an occasional flaky bluebird test failure (#4510) For example: not ok 84 ping should be delayed min 9ms (delayed 8ms) --- operator: ok expected: true actual: false at: assertPingPong (/home/runner/work/apm-agent-nodejs/apm-agent-nodejs/test/instrumentation/modules/bluebird/_coroutine.js:113:5) stack: |- Error: ping should be delayed min 9ms (delayed 8ms) --- test/instrumentation/modules/bluebird/_coroutine.js | 11 ++++++----- .../instrumentation/modules/bluebird/bluebird.test.js | 5 +++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/test/instrumentation/modules/bluebird/_coroutine.js b/test/instrumentation/modules/bluebird/_coroutine.js index 6b83b5a5d8..0d86caef33 100644 --- a/test/instrumentation/modules/bluebird/_coroutine.js +++ b/test/instrumentation/modules/bluebird/_coroutine.js @@ -105,19 +105,20 @@ module.exports = function (test, Promise, ins) { }; function assertPingPong(t, ins, p) { - // Since setTimeout has a weird behavior[1] the function might be called 1ms - // before it's scheduled, which is why we allow for only 9ms to have passed - // instead of 10ms in the two asserts below + // Since setTimeout has a weird behavior[1] the function might be called + // slightly before it's scheduled. For pingDelay=10ms we have observed an + // actual delay of as low as 8ms. // // [1] https://twitter.com/wa7son/status/1009048999972818944 + const tolerance = 3; t.ok( - p.start + 9 <= p.pingDelay, + p.start + (10 - tolerance) <= p.pingDelay, 'ping should be delayed min 9ms (delayed ' + (p.pingDelay - p.start) + 'ms)', ); t.ok( - p.pingDelay + 9 <= p.pongDelay, + p.pingDelay + (10 - tolerance) <= p.pongDelay, 'pong should be delayed min 9ms (delayed ' + (p.pongDelay - p.pingDelay) + 'ms)', diff --git a/test/instrumentation/modules/bluebird/bluebird.test.js b/test/instrumentation/modules/bluebird/bluebird.test.js index d0ace5b189..d93f278d67 100644 --- a/test/instrumentation/modules/bluebird/bluebird.test.js +++ b/test/instrumentation/modules/bluebird/bluebird.test.js @@ -1232,14 +1232,15 @@ test('new Promise -> delay', function (t) { var trans = ins.startTransaction(); var start = Date.now(); + const tolerance = 5; // We've observed scheduling slop up to 2ms. Promise.resolve('foo') .delay(50) .then(function () { - var expected = start + 49; // timings are hard + var expected = start + (50 - tolerance); var now = Date.now(); t.ok( expected <= now, - 'start + 49 should be <= ' + now + ' - was ' + expected, + '(start + 50 - tolerance) should be <= ' + now + ' - was ' + expected, ); t.strictEqual(ins.currTransaction().id, trans.id); }); From 963ccee4b161ad76959a9ea1d0a3e4212bad2678 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Mar 2025 09:15:37 +0100 Subject: [PATCH 331/396] chore(deps-dev): bump wait-on from 8.0.2 to 8.0.3 (#4516) --- package-lock.json | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1200772c5e..1c5f0c8ce2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14430,10 +14430,11 @@ } }, "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } @@ -16013,16 +16014,17 @@ } }, "node_modules/wait-on": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.2.tgz", - "integrity": "sha512-qHlU6AawrgAIHlueGQHQ+ETcPLAauXbnoTKl3RKq20W0T8x0DKVAo5xWIYjHSyvHxQlcYbFdR0jp4T9bDVITFA==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.3.tgz", + "integrity": "sha512-nQFqAFzZDeRxsu7S3C7LbuxslHhk+gnJZHyethuGKAn2IVleIbTB9I3vJSQiSR+DifUqmdzfPMoMPJfLqMF2vw==", "dev": true, + "license": "MIT", "dependencies": { - "axios": "^1.7.9", + "axios": "^1.8.2", "joi": "^17.13.3", "lodash": "^4.17.21", "minimist": "^1.2.8", - "rxjs": "^7.8.1" + "rxjs": "^7.8.2" }, "bin": { "wait-on": "bin/wait-on" @@ -27421,9 +27423,9 @@ } }, "rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dev": true, "requires": { "tslib": "^2.1.0" @@ -28692,16 +28694,16 @@ "dev": true }, "wait-on": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.2.tgz", - "integrity": "sha512-qHlU6AawrgAIHlueGQHQ+ETcPLAauXbnoTKl3RKq20W0T8x0DKVAo5xWIYjHSyvHxQlcYbFdR0jp4T9bDVITFA==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.3.tgz", + "integrity": "sha512-nQFqAFzZDeRxsu7S3C7LbuxslHhk+gnJZHyethuGKAn2IVleIbTB9I3vJSQiSR+DifUqmdzfPMoMPJfLqMF2vw==", "dev": true, "requires": { - "axios": "^1.7.9", + "axios": "^1.8.2", "joi": "^17.13.3", "lodash": "^4.17.21", "minimist": "^1.2.8", - "rxjs": "^7.8.1" + "rxjs": "^7.8.2" } }, "wbuf": { From b44aa49ffa85207e959c1d1150fa40bbd0c6e9cc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Mar 2025 09:17:16 +0100 Subject: [PATCH 332/396] chore(deps-dev): bump pg from 8.13.3 to 8.14.0 (#4515) --- package-lock.json | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1c5f0c8ce2..2fcabd998d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13190,15 +13190,15 @@ } }, "node_modules/pg": { - "version": "8.13.3", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.13.3.tgz", - "integrity": "sha512-P6tPt9jXbL9HVu/SSRERNYaYG++MjnscnegFh9pPHihfoBSujsrka0hyuymMzeJKFWrcG8wvCKy8rCe8e5nDUQ==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.14.0.tgz", + "integrity": "sha512-nXbVpyoaXVmdqlKEzToFf37qzyeeh7mbiXsnoWvstSqohj88yaa/I/Rq/HEVn2QPSZEuLIJa/jSpRDyzjEx4FQ==", "dev": true, "license": "MIT", "dependencies": { "pg-connection-string": "^2.7.0", - "pg-pool": "^3.7.1", - "pg-protocol": "^1.7.1", + "pg-pool": "^3.8.0", + "pg-protocol": "^1.8.0", "pg-types": "^2.1.0", "pgpass": "1.x" }, @@ -13240,9 +13240,9 @@ } }, "node_modules/pg-pool": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.7.1.tgz", - "integrity": "sha512-xIOsFoh7Vdhojas6q3596mXFsR8nwBQBXX5JiV7p9buEVAGqYL4yFzclON5P9vFrpu1u7Zwl2oriyDa89n0wbw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.8.0.tgz", + "integrity": "sha512-VBw3jiVm6ZOdLBTIcXLNdSotb6Iy3uOCwDGFAksZCXmi10nyRvnP2v3jl4d+IsLYRyXf6o9hIm/ZtUzlByNUdw==", "dev": true, "license": "MIT", "peerDependencies": { @@ -13250,9 +13250,9 @@ } }, "node_modules/pg-protocol": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.1.tgz", - "integrity": "sha512-gjTHWGYWsEgy9MsY0Gp6ZJxV24IjDqdpTW7Eh0x+WfJLFsm/TJx1MzL6T0D88mBvkpxotCQ6TwW6N+Kko7lhgQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.8.0.tgz", + "integrity": "sha512-jvuYlEkL03NRvOoyoRktBK7+qU5kOvlAwvmrH8sr3wbLrOdVWsRxQfz8mMy9sZFsqJ1hEWNfdWKI4SAmoL+j7g==", "dev": true, "license": "MIT" }, @@ -26496,15 +26496,15 @@ "dev": true }, "pg": { - "version": "8.13.3", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.13.3.tgz", - "integrity": "sha512-P6tPt9jXbL9HVu/SSRERNYaYG++MjnscnegFh9pPHihfoBSujsrka0hyuymMzeJKFWrcG8wvCKy8rCe8e5nDUQ==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.14.0.tgz", + "integrity": "sha512-nXbVpyoaXVmdqlKEzToFf37qzyeeh7mbiXsnoWvstSqohj88yaa/I/Rq/HEVn2QPSZEuLIJa/jSpRDyzjEx4FQ==", "dev": true, "requires": { "pg-cloudflare": "^1.1.1", "pg-connection-string": "^2.7.0", - "pg-pool": "^3.7.1", - "pg-protocol": "^1.7.1", + "pg-pool": "^3.8.0", + "pg-protocol": "^1.8.0", "pg-types": "^2.1.0", "pgpass": "1.x" }, @@ -26537,15 +26537,15 @@ "dev": true }, "pg-pool": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.7.1.tgz", - "integrity": "sha512-xIOsFoh7Vdhojas6q3596mXFsR8nwBQBXX5JiV7p9buEVAGqYL4yFzclON5P9vFrpu1u7Zwl2oriyDa89n0wbw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.8.0.tgz", + "integrity": "sha512-VBw3jiVm6ZOdLBTIcXLNdSotb6Iy3uOCwDGFAksZCXmi10nyRvnP2v3jl4d+IsLYRyXf6o9hIm/ZtUzlByNUdw==", "dev": true }, "pg-protocol": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.1.tgz", - "integrity": "sha512-gjTHWGYWsEgy9MsY0Gp6ZJxV24IjDqdpTW7Eh0x+WfJLFsm/TJx1MzL6T0D88mBvkpxotCQ6TwW6N+Kko7lhgQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.8.0.tgz", + "integrity": "sha512-jvuYlEkL03NRvOoyoRktBK7+qU5kOvlAwvmrH8sr3wbLrOdVWsRxQfz8mMy9sZFsqJ1hEWNfdWKI4SAmoL+j7g==", "dev": true }, "pg-types": { From b41b49bd3c9e301964cf4a2f3757609a443745e8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Mar 2025 09:18:09 +0100 Subject: [PATCH 333/396] chore(deps): bump docker/login-action from 3.3.0 to 3.4.0 in the github-actions group (#4514) --- .github/workflows/release.yml | 2 +- .github/workflows/updatecli.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e7236ecc5a..bded51d3dc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -33,7 +33,7 @@ jobs: - uses: docker/setup-buildx-action@v3 - name: Log in to the Elastic Container registry - uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 + uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 with: registry: ${{ secrets.ELASTIC_DOCKER_REGISTRY }} username: ${{ secrets.ELASTIC_DOCKER_USERNAME }} diff --git a/.github/workflows/updatecli.yml b/.github/workflows/updatecli.yml index 92d28867d9..7f31aea0fd 100644 --- a/.github/workflows/updatecli.yml +++ b/.github/workflows/updatecli.yml @@ -29,7 +29,7 @@ jobs: "pull_requests": "write" } - - uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3.3.0 + - uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0 with: registry: ghcr.io username: ${{ github.actor }} From 2e146cda3666626e5fbaf79e1c2a4687643f90c0 Mon Sep 17 00:00:00 2001 From: "elastic-observability-automation[bot]" <180520183+elastic-observability-automation[bot]@users.noreply.github.com> Date: Mon, 17 Mar 2025 09:18:56 +0100 Subject: [PATCH 334/396] chore: deps(updatecli): Bump updatecli version to v0.95.1 (#4513) --- .tool-versions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tool-versions b/.tool-versions index c245dc5318..7133ace51c 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -updatecli v0.94.1 \ No newline at end of file +updatecli v0.95.1 \ No newline at end of file From c86f22784b789a677aea50a93ff4a9d50edc78dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Mar 2025 09:37:42 +0100 Subject: [PATCH 335/396] chore(deps-dev): bump undici from 7.4.0 to 7.5.0 (#4517) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2fcabd998d..acff8721d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15775,9 +15775,9 @@ } }, "node_modules/undici": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.4.0.tgz", - "integrity": "sha512-PUQM3/es3noM24oUn10u3kNNap0AbxESOmnssmW+dOi9yGwlUSi5nTNYl3bNbTkWOF8YZDkx2tCmj9OtQ3iGGw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.5.0.tgz", + "integrity": "sha512-NFQG741e8mJ0fLQk90xKxFdaSM7z4+IQpAgsFI36bCDY9Z2+aXXZjVy2uUksMouWfMI9+w5ejOq5zYYTBCQJDQ==", "dev": true, "license": "MIT", "engines": { @@ -28511,9 +28511,9 @@ "dev": true }, "undici": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.4.0.tgz", - "integrity": "sha512-PUQM3/es3noM24oUn10u3kNNap0AbxESOmnssmW+dOi9yGwlUSi5nTNYl3bNbTkWOF8YZDkx2tCmj9OtQ3iGGw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.5.0.tgz", + "integrity": "sha512-NFQG741e8mJ0fLQk90xKxFdaSM7z4+IQpAgsFI36bCDY9Z2+aXXZjVy2uUksMouWfMI9+w5ejOq5zYYTBCQJDQ==", "dev": true }, "undici-types": { From 6210c631d4a61e1d664b0d2f6692226c2fb42a31 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Mon, 17 Mar 2025 09:38:17 +0100 Subject: [PATCH 336/396] chore(deps): update wolfi (versioned) (#4512) --- .github/workflows/test-fips.yml | 2 +- Dockerfile.wolfi | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-fips.yml b/.github/workflows/test-fips.yml index 641ccc6c74..625fa968cd 100644 --- a/.github/workflows/test-fips.yml +++ b/.github/workflows/test-fips.yml @@ -21,7 +21,7 @@ jobs: # https://docs.github.com/en/actions/writing-workflows/choosing-where-your-workflow-runs/running-jobs-in-a-container # docker run -it --rm --name fipsy docker.elastic.co/wolfi/chainguard-base-fips:latest container: - image: docker.elastic.co/wolfi/chainguard-base-fips:latest@sha256:3430300927bf52ea22f3180bd857ec6684212fc46d23df3bc795309761242875 + image: docker.elastic.co/wolfi/chainguard-base-fips:latest@sha256:9abd401cafc9fd0b313ee1f44444ee50f167025b87dbd59d0e15fd3fb4aa1397 credentials: username: ${{ secrets.ELASTIC_DOCKER_USERNAME }} password: ${{ secrets.ELASTIC_DOCKER_PASSWORD }} diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 0e757a6b9f..d8724d8841 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:69a0542e9182917b4d749b735790575940a282d12b90c1325e7ca5a052ece33a +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:66d427a0e8c76a611ba4c5cd91301c73250f265a78be258f1d57d4457332a6fc ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 4ee78628708686a9ef33f65be4c7a947a38281d3 Mon Sep 17 00:00:00 2001 From: Wladimir Guerra Date: Mon, 17 Mar 2025 23:54:50 -0300 Subject: [PATCH 337/396] fix(azure-functions): only use `return` in InvocationContext.options if set (#4509) https://github.com/Azure/azure-functions-nodejs-library/blob/138c0215136da5b19b879554da3468028426911e/types/InvocationContext.d.ts#L320 shows that the `InvocationContext.options.return` is optional. Closes: #4508 Co-authored-by: Trent Mick --- lib/instrumentation/azure-functions.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/instrumentation/azure-functions.js b/lib/instrumentation/azure-functions.js index d158a1b8b6..f6db3474d6 100644 --- a/lib/instrumentation/azure-functions.js +++ b/lib/instrumentation/azure-functions.js @@ -376,7 +376,9 @@ function instrument(agent) { direction: context?.options?.trigger?.direction, }); // Output bindings - bindingDefinitions.push(context?.options?.return); + if (context?.options?.return) { + bindingDefinitions.push(context?.options?.return); + } } let executionContext = context.executionContext; if (!executionContext) { From 1295fcfde2a7b80d7fa26afb88d8cff857d81b11 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Mon, 17 Mar 2025 19:56:48 -0700 Subject: [PATCH 338/396] release 4.11.2 (#4511) --- CHANGELOG.asciidoc | 11 +++++++++++ CONTRIBUTING.md | 1 + package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index daed5aa763..de06647fda 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -34,6 +34,17 @@ Notes: See the <> guide. +[[release-notes-4.11.2]] +==== 4.11.2 - 2025/03/17 + +[float] +===== Bug fixes + +* Fix bug in instrumentation of Azure Functions that could result in crashing + the application. The known case was with a ServiceBus function (using + `app.serviceBusTopic(...)` from `@azure/functions`). ({issues}4508[#4508]) + + [[release-notes-4.11.1]] ==== 4.11.1 - 2025/03/14 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index aa925fd18e..ae9b7a2af0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -222,6 +222,7 @@ A release involves the following published artifacts: needed changes. - Follow its instructions to create a PR from this working dir. - Ensure the "buildkite/docs-build-pr" workflow passes for this branch. + (Re-run via `run docs-build` comment.) - "Squash and merge" the PR. - The periodic docs CI will update the [published docs](https://www.elastic.co/guide/en/apm/agent/nodejs/current/release-notes-4.x.html). diff --git a/package-lock.json b/package-lock.json index acff8721d7..ddabdbcdec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "elastic-apm-node", - "version": "4.11.1", + "version": "4.11.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "elastic-apm-node", - "version": "4.11.1", + "version": "4.11.2", "license": "BSD-2-Clause", "dependencies": { "@elastic/ecs-pino-format": "^1.5.0", diff --git a/package.json b/package.json index 7ddb3323ab..3c4c04c7a3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "elastic-apm-node", - "version": "4.11.1", + "version": "4.11.2", "description": "The official Elastic APM agent for Node.js", "type": "commonjs", "main": "index.js", From 8887eee122f269aa09c0289ad33fb07de58a2fa7 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Tue, 18 Mar 2025 09:26:56 +0100 Subject: [PATCH 339/396] chore(deps): update wolfi (versioned) (#4521) docker.elastic.co/wolfi/chainguard-base digest 66d427a -> 5ba5def docker.elastic.co/wolfi/chainguard-base digest 66d427a -> 5ba5def docker.elastic.co/wolfi/chainguard-base-fips digest 9abd401 -> 6a705e8 --- .github/workflows/test-fips.yml | 2 +- Dockerfile.wolfi | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-fips.yml b/.github/workflows/test-fips.yml index 625fa968cd..920e68c406 100644 --- a/.github/workflows/test-fips.yml +++ b/.github/workflows/test-fips.yml @@ -21,7 +21,7 @@ jobs: # https://docs.github.com/en/actions/writing-workflows/choosing-where-your-workflow-runs/running-jobs-in-a-container # docker run -it --rm --name fipsy docker.elastic.co/wolfi/chainguard-base-fips:latest container: - image: docker.elastic.co/wolfi/chainguard-base-fips:latest@sha256:9abd401cafc9fd0b313ee1f44444ee50f167025b87dbd59d0e15fd3fb4aa1397 + image: docker.elastic.co/wolfi/chainguard-base-fips:latest@sha256:6a705e8b0035ffb0368b15e55668746c577943f71e845ed4bf4f8ad32b78eccf credentials: username: ${{ secrets.ELASTIC_DOCKER_USERNAME }} password: ${{ secrets.ELASTIC_DOCKER_PASSWORD }} diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index d8724d8841..383d1b3fc9 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:66d427a0e8c76a611ba4c5cd91301c73250f265a78be258f1d57d4457332a6fc +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:5ba5defb8c55ea6e2d4a697ca82da534c21c6328dfa903fe460c762720875794 ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 3809336361a32b814dd58893c35131dc74afa8f6 Mon Sep 17 00:00:00 2001 From: Colleen McGinnis Date: Wed, 19 Mar 2025 11:01:17 -0500 Subject: [PATCH 340/396] [docs] Migrate docs from AsciiDoc to Markdown (#4479) * delete asciidoc files * add migrated files * clean up cross-repo links * add docs-content to cross_links * update lambda page * fix external links * some clean up * update release notes * delete asciidoc changelog * update references to CHANGELOG.asciidoc * address feedback from @trentm * remove unused subs * move images * fix more image paths --- .github/pull_request_template.md | 2 +- CHANGELOG.asciidoc | 3004 ----------------- CONTRIBUTING.md | 9 +- docs/agent-api.asciidoc | 959 ------ docs/api-opentelemetry.asciidoc | 259 -- docs/api.asciidoc | 26 - docs/azure-functions.asciidoc | 150 - docs/configuration.asciidoc | 1448 -------- docs/custom-stack.asciidoc | 199 -- docs/distributed-tracing.asciidoc | 94 - docs/docset.yml | 16 + docs/esm.asciidoc | 121 - docs/express.asciidoc | 120 - docs/fastify.asciidoc | 130 - docs/hapi.asciidoc | 128 - docs/index.asciidoc | 57 - docs/intro.asciidoc | 35 - docs/koa.asciidoc | 130 - docs/lambda.asciidoc | 83 - docs/lambda/configure-lambda-widget.asciidoc | 118 - docs/lambda/configure-lambda.asciidoc | 113 - docs/lambda/nodejs-arn-replacement.asciidoc | 9 - docs/logs.asciidoc | 34 - docs/metrics.asciidoc | 180 - docs/nextjs.asciidoc | 209 -- docs/opentracing.asciidoc | 182 - docs/performance-tuning.asciidoc | 169 - docs/redirects.asciidoc | 57 - docs/reference/advanced-setup.md | 20 + docs/reference/agent-api.md | 748 ++++ docs/reference/api.md | 16 + docs/reference/azure-functions.md | 117 + docs/reference/configuration.md | 1137 +++++++ docs/reference/configuring-agent.md | 62 + .../custom-spans.md} | 25 +- docs/reference/custom-stack.md | 217 ++ .../custom-transactions.md} | 30 +- docs/reference/distributed-tracing.md | 78 + docs/reference/esm.md | 109 + docs/reference/express.md | 142 + docs/reference/fastify.md | 154 + docs/reference/hapi.md | 153 + .../images/azure-functions-configuration.png | Bin docs/reference/images/choose-a-layer.png | Bin 0 -> 135763 bytes docs/reference/images/config-layer.png | Bin 0 -> 61275 bytes .../{ => reference}/images/dynamic-config.svg | 0 .../images/nextjs-my-app-screenshot.png | Bin .../images/node_release_schedule.svg | 0 .../images/nodejs-lambda-env-vars.png | Bin 0 -> 151095 bytes docs/reference/index.md | 24 + docs/reference/koa.md | 151 + docs/reference/lambda.md | 281 ++ docs/reference/logs.md | 25 + .../message-queues.md} | 52 +- docs/reference/metrics.md | 151 + docs/reference/nextjs.md | 146 + docs/reference/opentelemetry-bridge.md | 194 ++ docs/reference/opentracing.md | 140 + docs/reference/performance-tuning.md | 97 + docs/reference/restify.md | 145 + docs/reference/set-up.md | 41 + docs/reference/source-maps.md | 37 + docs/reference/span-api.md | 215 ++ docs/reference/starting-agent.md | 260 ++ docs/reference/supported-technologies.md | 140 + docs/reference/toc.yml | 43 + docs/reference/transaction-api.md | 243 ++ docs/reference/typescript.md | 76 + docs/reference/upgrade-to-v1.md | 57 + docs/reference/upgrade-to-v2.md | 75 + docs/reference/upgrade-to-v3.md | 48 + docs/reference/upgrade-to-v4.md | 111 + docs/reference/upgrading.md | 30 + docs/release-notes.asciidoc | 13 - docs/release-notes/breaking-changes.md | 36 + docs/release-notes/index.md | 274 ++ docs/release-notes/known-issues.md | 31 + docs/release-notes/toc.yml | 4 + docs/restify.asciidoc | 120 - docs/set-up.asciidoc | 335 -- docs/setup.asciidoc | 93 - docs/shared-set-up.asciidoc | 148 - docs/source-maps.asciidoc | 51 - docs/span-api.asciidoc | 274 -- docs/supported-technologies.asciidoc | 196 -- docs/transaction-api.asciidoc | 340 -- docs/troubleshooting.asciidoc | 129 - docs/typescript.asciidoc | 85 - docs/upgrade-to-v1.asciidoc | 59 - docs/upgrade-to-v2.asciidoc | 99 - docs/upgrade-to-v3.asciidoc | 56 - docs/upgrade-to-v4.asciidoc | 188 -- docs/upgrading.asciidoc | 44 - 93 files changed, 6097 insertions(+), 10309 deletions(-) delete mode 100644 CHANGELOG.asciidoc delete mode 100644 docs/agent-api.asciidoc delete mode 100644 docs/api-opentelemetry.asciidoc delete mode 100644 docs/api.asciidoc delete mode 100644 docs/azure-functions.asciidoc delete mode 100644 docs/configuration.asciidoc delete mode 100644 docs/custom-stack.asciidoc delete mode 100644 docs/distributed-tracing.asciidoc create mode 100644 docs/docset.yml delete mode 100644 docs/esm.asciidoc delete mode 100644 docs/express.asciidoc delete mode 100644 docs/fastify.asciidoc delete mode 100644 docs/hapi.asciidoc delete mode 100644 docs/index.asciidoc delete mode 100644 docs/intro.asciidoc delete mode 100644 docs/koa.asciidoc delete mode 100644 docs/lambda.asciidoc delete mode 100644 docs/lambda/configure-lambda-widget.asciidoc delete mode 100644 docs/lambda/configure-lambda.asciidoc delete mode 100644 docs/lambda/nodejs-arn-replacement.asciidoc delete mode 100644 docs/logs.asciidoc delete mode 100644 docs/metrics.asciidoc delete mode 100644 docs/nextjs.asciidoc delete mode 100644 docs/opentracing.asciidoc delete mode 100644 docs/performance-tuning.asciidoc delete mode 100644 docs/redirects.asciidoc create mode 100644 docs/reference/advanced-setup.md create mode 100644 docs/reference/agent-api.md create mode 100644 docs/reference/api.md create mode 100644 docs/reference/azure-functions.md create mode 100644 docs/reference/configuration.md create mode 100644 docs/reference/configuring-agent.md rename docs/{custom-spans.asciidoc => reference/custom-spans.md} (73%) create mode 100644 docs/reference/custom-stack.md rename docs/{custom-transactions.asciidoc => reference/custom-transactions.md} (63%) create mode 100644 docs/reference/distributed-tracing.md create mode 100644 docs/reference/esm.md create mode 100644 docs/reference/express.md create mode 100644 docs/reference/fastify.md create mode 100644 docs/reference/hapi.md rename docs/{ => reference}/images/azure-functions-configuration.png (100%) create mode 100644 docs/reference/images/choose-a-layer.png create mode 100644 docs/reference/images/config-layer.png rename docs/{ => reference}/images/dynamic-config.svg (100%) rename docs/{ => reference}/images/nextjs-my-app-screenshot.png (100%) rename docs/{ => reference}/images/node_release_schedule.svg (100%) create mode 100644 docs/reference/images/nodejs-lambda-env-vars.png create mode 100644 docs/reference/index.md create mode 100644 docs/reference/koa.md create mode 100644 docs/reference/lambda.md create mode 100644 docs/reference/logs.md rename docs/{message-queues.asciidoc => reference/message-queues.md} (52%) create mode 100644 docs/reference/metrics.md create mode 100644 docs/reference/nextjs.md create mode 100644 docs/reference/opentelemetry-bridge.md create mode 100644 docs/reference/opentracing.md create mode 100644 docs/reference/performance-tuning.md create mode 100644 docs/reference/restify.md create mode 100644 docs/reference/set-up.md create mode 100644 docs/reference/source-maps.md create mode 100644 docs/reference/span-api.md create mode 100644 docs/reference/starting-agent.md create mode 100644 docs/reference/supported-technologies.md create mode 100644 docs/reference/toc.yml create mode 100644 docs/reference/transaction-api.md create mode 100644 docs/reference/typescript.md create mode 100644 docs/reference/upgrade-to-v1.md create mode 100644 docs/reference/upgrade-to-v2.md create mode 100644 docs/reference/upgrade-to-v3.md create mode 100644 docs/reference/upgrade-to-v4.md create mode 100644 docs/reference/upgrading.md delete mode 100644 docs/release-notes.asciidoc create mode 100644 docs/release-notes/breaking-changes.md create mode 100644 docs/release-notes/index.md create mode 100644 docs/release-notes/known-issues.md create mode 100644 docs/release-notes/toc.yml delete mode 100644 docs/restify.asciidoc delete mode 100644 docs/set-up.asciidoc delete mode 100644 docs/setup.asciidoc delete mode 100644 docs/shared-set-up.asciidoc delete mode 100644 docs/source-maps.asciidoc delete mode 100644 docs/span-api.asciidoc delete mode 100644 docs/supported-technologies.asciidoc delete mode 100644 docs/transaction-api.asciidoc delete mode 100644 docs/troubleshooting.asciidoc delete mode 100644 docs/typescript.asciidoc delete mode 100644 docs/upgrade-to-v1.asciidoc delete mode 100644 docs/upgrade-to-v2.asciidoc delete mode 100644 docs/upgrade-to-v3.asciidoc delete mode 100644 docs/upgrade-to-v4.asciidoc delete mode 100644 docs/upgrading.asciidoc diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 259d75e93e..d5b57ea2c5 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -16,5 +16,5 @@ https://help.github.com/articles/closing-issues-using-keywords/ - [ ] Add tests - [ ] Update TypeScript typings - [ ] Update documentation -- [ ] Add CHANGELOG.asciidoc entry +- [ ] Add release notes to `docs/release-notes/index.md` - [ ] Commit message follows [commit guidelines](https://github.com/elastic/apm-agent-nodejs/blob/main/CONTRIBUTING.md#commit-message-guidelines) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc deleted file mode 100644 index de06647fda..0000000000 --- a/CHANGELOG.asciidoc +++ /dev/null @@ -1,3004 +0,0 @@ -ifdef::env-github[] -NOTE: Release notes are best read in our documentation at -https://www.elastic.co/guide/en/apm/agent/nodejs/current/release-notes.html[elastic.co] -endif::[] - -//// -Notes: -1. When adding a changelog entry, if the "Unreleased" section doesn't yet exist, - please add the following under the "=== Node.js Agent version 4.x" header: - - ==== Unreleased - - [float] - ===== Breaking changes - - [float] - ===== Features - - [float] - ===== Bug fixes - - [float] - ===== Chores - -2. When making a release, change the "==== Unreleased" section header to: - - [[release-notes-x.x.x]] - ==== x.x.x - YYYY/MM/DD -//// - -[[release-notes-4.x]] -=== Node.js Agent version 4.x - -See the <> guide. - - -[[release-notes-4.11.2]] -==== 4.11.2 - 2025/03/17 - -[float] -===== Bug fixes - -* Fix bug in instrumentation of Azure Functions that could result in crashing - the application. The known case was with a ServiceBus function (using - `app.serviceBusTopic(...)` from `@azure/functions`). ({issues}4508[#4508]) - - -[[release-notes-4.11.1]] -==== 4.11.1 - 2025/03/14 - -[float] -===== Bug fixes - -* Change how `@hapi/hapi` instrumentation includes additional data when - capturing an error for Hapi `log` and `request` Server events to avoid - possible capture of large amounts of data, that could lead to latency issues - and high memory usage. Some data that may have been captured before will - *no longer* be captured. ({issues}4503[#4503]) -+ -The `@hapi/hapi` instrumentation will capture an APM error whenever a -Hapi `log` or `request` server event (https://hapi.dev/api/#server.events) with -the "error" tag is emitted, e.g. when a Hapi server responds with an HTTP 500 -error. Before this change, any and all properties on the logged Error or data -would be included in the APM error data sent to APM server (in the -`error.custom` field). This could cause a surprise for applications that attach -(sometimes large) data to the internal server Error for other purposes (e.g. -application error handling). -+ -The expected surprise case is when a deeply-nested object is added as a -property to the event data. To protect against serializing these, the Hapi -instrumentation will only serialize event data properties that are "simple" -types (boolean, string, number, Date), other types (Array, object, Buffer, etc.) -will *not* be captured. This is similar behavior as is used for the -`captureAttributes` option to <> -for the same purpose. -+ -In addition, the updated Hapi instrumentation will no longer capture to -`error.custom` when the emitted data is an `Error` instance, because this was a -duplication of the `Error` properties already being captured to the -`error.exception.attributes` field. - -[float] -===== Chores - -* Update base image of alpine in `Dockerfile` to version `3.21.3`. ({pull}4465[#4465]) -* Test FIPS 140 compliance. ({pull}4441[#4441]) - -[[release-notes-4.11.0]] -==== 4.11.0 - 2025/01/20 - -[float] -===== Features - -* Support instrumentation of Azure Functions using the https://learn.microsoft.com/en-ca/azure/azure-functions/functions-node-upgrade-v4[v4 Node.js programming model]. - ({pull}4426[#4426]) - -[float] -===== Bug fixes - -* Fix instrumentation of `@aws-sdk/client-s3`, `@aws-sdk/client-sqs`, and - `@aws-sdk/client-sns` for versions 3.723.0 and later. Internally the AWS SDK - clients updated to `@smithy/smithy-client@4`. ({pull}4398[#4398]) - - -[[release-notes-4.10.0]] -==== 4.10.0 - 2024/12/24 - -[float] -===== Features - -* Improve trace-level logging to better support debugging central config - and transaction sampling issues. ({issues}4291[#4291]) - - -[[release-notes-4.9.0]] -==== 4.9.0 - 2024/12/09 - -[float] -===== Features - -* Add support for `undici` v7. ({pull}4336[#4336]) - -[float] -===== Bug fixes - -* Fix to support a internal refactor in `mysql2` v3.11.5. ({pull}4334[#4334]) -* Guard against a possible encoding error of tracing data in the APM client, - before it is sent. It is *possible* this could wedge the APM client, - resulting in the APM agent no longer sending tracing data. - ({pull}4359[#4359]) - - - -[[release-notes-4.8.1]] -==== 4.8.1 - 2024/11/04 - -[float] -===== Bug fixes - -* Fix AWS Lambda instrumentation to work with a "handler" string that includes - a period (`.`) in the module path. E.g. the leading `.` in `Handler: ./src/functions/myfunc/handler.main`. ({issues}4293[#4293]). - - -[[release-notes-4.8.0]] -==== 4.8.0 - 2024/10/08 - -[float] -===== Features - -- Minor improvement to container ID parsing from /etc/cgroup v1 files in - AWS ECS Fargate, where the pattern has been observed to sometimes differ - from the documented pattern. (https://github.com/elastic/apm/issues/888[APM spec issue #888]) - -- Add support for `tedious` v19. ({issues}4218[#4218]) - -- Add support for `koa-router` v13. ({pull}4236[#4236]) - - -[float] -===== Bug fixes - -- Update `cookie` to version `v0.7.2` to fix security issue [CVE-2024-47764](https://github.com/advisories/GHSA-pxg6-pf52-xh8x) - -[[release-notes-4.7.3]] -==== 4.7.3 - 2024/08/09 - -[float] -===== Bug fixes - -* Update import-in-the-middle to 1.11.0, which fixes https://github.com/nodejs/import-in-the-middle/issues/144[an issue] - that can crash users using Nuxt and ESM. ({pull}4175[#4175]) - - -[[release-notes-4.7.2]] -==== 4.7.2 - 2024/08/01 - -[float] -===== Features - -* Support hooking built-in Node.js modules loaded via https://nodejs.org/api/all.html#all_process_processgetbuiltinmoduleid[`process.getBuiltinModule`], added in v22.3.0. ({pull}4160[#4160]) - -[float] -===== Bug fixes - -* Fix for instrumentation for `@aws-sdk/sns-client` that will prevent a crash - if the client is used when there is no parent transaction present. ({pull}4168[#4168]) - -* Fix for config resolution process. Before this change falsy config options coming - from the `elastic-apm-node.js` file were ignored. ({pull}4119[#4119]) - -* Fix publishing of AWS Lambda layer to all AWS regions. This was broken in - the 4.7.1 release. ({issues}4171[#4171]) - - -[[release-notes-4.7.1]] -==== 4.7.1 - 2024/07/24 - -[float] -===== Bug fixes - -- Update import-in-the-middle internally-used library to v1.9.1. This can - fix usage with ESM code (see <>) in some cases, e.g. usage with - https://github.com/elastic/apm-agent-nodejs/issues/4143[Nuxt 3]. - - -[[release-notes-4.7.0]] -==== 4.7.0 - 2024/06/13 - -[float] -===== Features - -* Update <> support to `@opentelemetry/api` version 1.9.0. - ({issues}4078[#4078]) -+ -Support for the new `addLink` and `addLinks` methods on Span have been added. -However, support for the new synchronous gauge have not yet been added. - - -[[release-notes-4.6.0]] -==== 4.6.0 - 2024/06/05 - -[float] -===== Features - -* Make published `docker.elastic.co/observability/apm-agent-nodejs` Docker - images multi-platform, with support for `linux/amd64,linux/arm64` for now. - This is necessary for users of the Elastic APM Attacher for Kubernetes, - when deploying to k8s nodes that are ARM64 (e.g. Gravitron on AWS). - ({issues}4038[#4038]) - -[float] -===== Bug fixes - -* Fix instrumentation for recent `@aws-sdk/client-*` releases that use - `@smithy/smithy-client` v3. (For example `@aws-sdk/client-s3@3.575.0` released - 2024-05-13 updated to smithy-client v3.) Before this change the APM agent had - been limiting patching of `@smithy/smithy-client` to `>=1 <3`. - ({pull}4036[#4036]) - -* Mark the published AWS Lambda layers as supporting the "nodejs20.x" Lambda - Runtime (`--compatible-runtimes`). The "nodejs20.x" runtime was released by - AWS on 2023-11-15. ({issues}4033[#4033]) -+ -Note that this Node.js APM agent supports Node.js 20.x, so the new AWS Lambda -runtime was supported when it was released. However, the metadata stating -compatible runtimes (which is advisory) was not updated until now. - - -[[release-notes-4.5.4]] -==== 4.5.4 - 2024/05/13 - -[float] -===== Bug fixes - -* Change how the "cookie" HTTP request header is represented in APM transaction - data to avoid a rare, but possible, intake bug where the transaction could be - rejected due to a mapping conflict. -+ -Before this change a `Cookie: foo=bar; sessionid=42` HTTP request header -would be represented in the transaction document in Elasticsearch with these -document fields (the example assumes <> matches -"sessionid", as it does by default): -+ -[source] ----- -http.request.headers.cookie: "[REDACTED]" -... -http.request.cookies.foo: "bar" -http.request.cookies.sessionid: "[REDACTED]" ----- -+ -After this change it is represented as: -+ -[source] ----- -http.request.headers.cookie: "foo=bar; sessionid=REDACTED" ----- -+ -In other words, `http.request.cookies` are no longer separated out. -({issues}4006[#4006]) - - -[[release-notes-4.5.3]] -==== 4.5.3 - 2024/04/23 - -[float] -===== Bug fixes - -* Fix message handling for tombstone messages in `kafkajs` instrumentation. - ({pull}3985[#3985]) - - -[[release-notes-4.5.2]] -==== 4.5.2 - 2024/04/12 - -[float] -===== Bug fixes - -* Fix path resolution for requests that contain invalid characters in its - host header. ({pull}3923[#3923]) -* Fix span names for `getMore` command of mongodb. ({pull}3919[#3919]) -* Fix undici instrumentation to cope with a bug in undici@6.11.0 where - `request.addHeader()` was accidentally removed. (It was re-added in - undici@6.11.1.) ({pull}3963[#3963]) -* Update undici instrumentation to avoid possibly adding a *second* - 'traceparent' header to outgoing HTTP requests, because this can break - Elasticsearch requests. ({issues}3964[#3964]) - - -[[release-notes-4.5.0]] -==== 4.5.0 - 2024/03/13 - -[float] -===== Features - -* Update <> support to `@opentelemetry/api` version 1.8.0. -* Update `tedious` instrumentation to support versions 17 and 18. ({pull}3901[#3901], {pull}3911[#3911]) -* Add new `kafkajs` instrumentation. ({issues}2905[#2905]) - -[float] -===== Bug fixes - -* Fix instrumentation of mongodb to not break mongodb@6.4.0. Mongodb v6.4.0 - included changes that resulted in the APM agent's instrumentation breaking it. - ({pull}3897[#3897]) -* Fix hostname detection on Windows in some cases (where a powershell profile - could break collection). ({pull}3899[#3899]) -* Fix a path normalization issue that broke (or partially broke) instrumentation - of some modules on Windows: Next.js, redis v4+, mongodb. ({pull}3905[#3905]) - - -[[release-notes-4.4.1]] -==== 4.4.1 - 2024/02/06 - -[float] -===== Bug fixes - -* Add support for <> with - Node.js versions matching `^18.19.0 || >=20.2.0`. Before this version of - the APM agent, ESM instrumentation was only supported for some *earlier* - Node.js versions. Changes in Node.js's ESM loader in v18.19.0 and v20 broke - earlier ESM support. ({issues}3784[#3784], {pull}3844[#3844]) - - -[[release-notes-4.4.0]] -==== 4.4.0 - 2024/01/12 - -*Known issue*: Using the APM agent's <> with Node.js *v18.19.0* is not -supported in this version. Upgrade to APM agent version v4.5.0 or later, or use -Node.js v18.18.1 or earlier. -See https://github.com/elastic/apm-agent-nodejs/issues/3784 for details. - -[float] -===== Features - -* Support `ELASTIC_APM_ACTIVATION_METHOD=K8S_ATTACH` (in addition to the - current `K8S` value) to indicate the agent is being started by - apm-k8s-attacher. Newer releases of apm-k8s-attacher will be using this - value (to have a common value used between APM agents). - -[float] -===== Bug fixes - -* Fix bug where `NODE_ENV` environment value was not used as a default for - the <> config setting. The bug was introduced in v4.2.0. - ({issues}3807[#3807]) - -* Improve Fastify instrumentation to no longer cause the https://fastify.dev/docs/latest/Reference/Warnings/#FSTDEP017[`FSTDEP017`] - and https://fastify.dev/docs/latest/Reference/Warnings/#FSTDEP018[`FSTDEP018`] - deprecation warnings. ({pull}3814[#3814]) - - -[[release-notes-4.3.0]] -==== 4.3.0 - 2023/12/05 - -*Known issue*: Using the APM agent's <> with Node.js *v18.19.0* is not -supported in this version. Upgrade to APM agent version v4.5.0 or later, or use -Node.js v18.18.1 or earlier. -See https://github.com/elastic/apm-agent-nodejs/issues/3784 for details. - -[float] -===== Features - -* Add the <> config option, to allow adding custom headers - to HTTP requests made to APM server by the APM agent. ({issues}3759[#3759]) - -[float] -===== Bug fixes - -* Fix the dependency version range for `@elastic/ecs-pino-format`. - ({issues}3774[#3774]) - -[float] -===== Chores - -* Skip undici tests for `undici` `>=5.28.0` and NodeJS `<14.18.0`. - ({pull}3755[#3755]) - -* Change the log level of `Sending error to Elastic APM: ...` from `info` to - `debug`. There is no need to clutter the log output with this message. - ({issues}3748[#3748]) - -* Explicitly mark this package as being of type="commonjs". The experimental - `node --experimental-default-type=module ...` option - https://nodejs.org/en/blog/release/v20.10.0#--experimental-default-type-flag-to-flip-module-defaults[added in Node.js v20.10.0] - means that a default to "commonjs" isn't guaranteed. - - -[[release-notes-4.2.0]] -==== 4.2.0 - 2023/11/23 - -[float] -===== Breaking changes - -* Drop support for next@11. Next.js instrumentation support is currently in - technical preview, so it is not considered a semver-major change to drop - support for this old version of next. ({pull}3664[#3664]) - -[float] -===== Features - -* Add <>, <>, and - <>. These are intended for use by - {ecs-logging-nodejs-ref}/intro.html[ecs-logging-nodejs formatting packages]. - See . - ({issues}3195[#3195]) - -* Add knex@3 instrumentation. ({pull}3659[#3659]) - -* Update <> support to `@opentelemetry/api` version 1.7.0. - -[float] -===== Bug fixes - -* Fix `mongodb` instrumentation to avoid loosing context when multiple cursors - are running concurrently. ({issues}3161[#3161]) - -* Set `mongodb` span's outcome according to the result of the command being traced. - ({pull}3695[#3695]) - -* Fix `@aws-sdk/client-sqs` instrumentation which was failing for `SendMessageBatch` - command when any of the entities does not contain `MessageAttributes`. - ({issues}3746[#3746]) - - -[[release-notes-4.1.0]] -==== 4.1.0 - 2023/10/09 - -[float] -===== Features - -* Update <> support to `@opentelemetry/api` version 1.6.0. - {pull}3622[#3622] - -* Add support for `@aws-sdk/client-dynamodb`, one of the AWS SDK v3 clients. - ({issues}2958[#2958]) - -* Add support for `@aws-sdk/client-sns`, one of the AWS SDK v3 clients. - ({issues}2956[#2956]) - -* Add support for `@aws-sdk/client-sqs`, one of the AWS SDK v3 clients. - ({issues}2957[#2957]) - -* Fixes for some values of the <> config setting. - "redis" will now properly disable instrumentation for redis@4. - "next" will propertly disable all Next.js instrumentation. - ({pull}3658[#3658]) - -[float] -===== Bug fixes - -* Changes to cloud metadata collection for Google Cloud (GCP). Most notably - the `cloud.project.id` field is now the `project-id` from - https://cloud.google.com/compute/docs/metadata/default-metadata-values#project_metadata - rather than the `numeric-project-id`. This matches the value produced by - Elastic Beats (like filebeat). {issues}3614[#3614] - - -[[release-notes-4.0.0]] -==== 4.0.0 - 2023/09/07 - -See the <> guide. - -[float] -===== Breaking changes - -* Set the new minimum supported Node.js to version 14.17.0. - Users of earlier Node.js versions can use elastic-apm-node v3.x, which - supports back to Node.js v8.6. - -* Ignore a `timer` option passed to `startTransaction()` and `startSpan()` APIs. - This option was never documented. It would be surprising if any user is - impacted by this. - -* Remove long deprecated support for the `ELASTIC_APM_`-prefixed environment - variables for the <>. For - example, one must use `KUBERNETES_POD_NAME` and not - `ELASTIC_APM_KUBERNETES_POD_NAME`. ({issues}2661[#2661]) - -* The config option `filterHttpHeaders` is now _removed_. ({pull}3539[#3539]) - -* Remove the deprecated `span.toString()` and `transaction.toString()` APIs. - See <> for details. ({issues}2348[#2348]) - -* Remove instrumentation support for the old 'hapi' package -- the current - '@hapi/hapi' package is still instrumented. ({issues}2691[#2691]) - -* Change `apm.startTransaction()` api to return a noop transaction instead of - null, if the agent is not yet started. ({issues}2429[#2429]) - -* Drop support for the obsolete "patch" context manager, i.e. the - `contextManager: "patch"` config option. This was a limited async context - management that predated the preferred `AsyncLocalStorage` core Node.js - mechanism for context tracking. It was deprecated in v3.37.0. As well, the - related and deprecated `asyncHooks` config option has been removed. - ({issues}3529[#3529]) - -* Remove the `logUncaughtExceptions` config option. - See <> for details. - ({issues}2412[#2412]) - -* Remove `transaction.subtype` and `transaction.action` properties from API. - This also impacts <> and `transaction.setType(...)`, - both of which now no longer accept `subtype` and `action` parameters. - These two properties were deprecated in v3.25.0. - ({issues}3557[#3557]) - -* Remove support for the erroneous `ELASTIC_SANITIZE_FIELD_NAMES` and - `ELASTIC_IGNORE_MESSAGE_QUEUES` config environment variables. The correct env - vars are `ELASTIC_APM_SANITIZE_FIELD_NAMES` and - `ELASTIC_APM_IGNORE_MESSAGE_QUEUES`, respectively, and were supported starting - in v3.36.0. - -[float] -===== Features - -* The `apm.destroy()` method is now async. Almost no users should need to use - this method. However, if used, to be sure to wait for APM agent shutdown to - be complete, one can now `await apm.destroy()`. ({issues}3222[#3222]) - -* Support instrumenting `mongodb` v6. ({pull}3596[#3596]) - -[float] -===== Bug fixes - -* Fix instrumentation of `mongodb` to avoid multiple command handler - registrations when client is created via `MongoClient.connect` static - method. ({pull}3586[#3586]) - -[float] -===== Chores - -* Add a warning message when a duration or size config option is provided - without units. ({issues}2121[#2121]) - -* Change default value of `useElasticTraceparentHeader` config option to `false`. - This means that for outgoing HTTP requests, the APM agent will no longer add the - `elastic-apm-traceparent` header. This vendor-specific header was used in the past - while the https://w3c.github.io/trace-context/[W3C trace-context] spec was still - in development. Now that it is in wide use, the `elastic-apm-traceparent` header is - only useful for interaction with very old Elastic APM agents. - -* Add default ports into `context.service.target.name` for HTTP spans conforming to the - spec update done in https://github.com/elastic/apm/pull/700 ({pull}3590[#3590]) - - -[[release-notes-3.x]] -=== Node.js Agent version 3.x - -NOTE: "3.x" releases are now maintenance releases. -See https://www.elastic.co/guide/en/apm/agent/nodejs/3.x/release-notes-3.x.html[the 3.x release notes in the "3.x" branch] -for the most recent 3.x releases. The 3.x branch will be maintained until -2024-03-07 (6 months after the 4.0.0 release). - - -[[release-notes-3.49.1]] -==== 3.49.1 - 2023/08/09 - -[float] -===== Bug fixes - -* Upgrade import-in-the-middle dependency to v1.4.2 to fix a vulnerability - (https://github.com/DataDog/import-in-the-middle/security/advisories/GHSA-5r27-rw8r-7967[CVE-2023-38704]). - Note: This dependency is only used by elastic-apm-node when using the - <>. ({pull}3569[#3569]) - -[float] -===== Chores - -* Add debug logging for 4xx responses from APM server when polling for - central config. This is based on https://github.com/elastic/apm-nodejs-http-client/pull/182 - by @linjunpop. - - -[[release-notes-3.49.0]] -==== 3.49.0 - 2023/08/03 - -[float] -===== Bug fixes - -* Fix ESM support: the "loader.mjs" file was accidentally not included in - the published package in v3.48.0. ({pull}3534[#3534]) - -* Fix instrumentation of `@aws-sdk/client-s3` from v3.378.0 and up. The new - version requires `@smithy/smithy-client` v2.0.1 and the agent was - instrumenting it within the semver range '>=1 <2'. ({issues}3523[#3523]) - -* Fix wrapping of `http.request()` for node v18.17.0. Before this change, a - call with a non-Function callback -- `http.request(urlString, {}, 'this-is-not-a-cb-function')` - -- would accidentally *not* fail because of the agent's instrumentation. - ({pull}3511[#3511]) - -* Fix tedious instrumentation to recognize "connection.prepare()" usage in - tedious@16.2.0 and later. ({pull}3470[#3470]) - -[float] -===== Chores - -* Add min node verison in `tav.json` to generate lighter matrix for TAV commands. - ({pull}3531[#3531]) - -* Inline the `elastic-apm-http-client` package code into this repo. - ({issues}3506[#3506]) - - -[[release-notes-3.48.0]] -==== 3.48.0 - 2023/07/07 - -*Known issue*: You must upgrade to 3.49.0 or later for the ESM support -described below to work, because the "loader.mjs" file was accidentally not -published. - -[float] -===== Features - -* Initial and experimental ECMAScript Module (ESM) support. - With the following invocation the APM agent will now be able to instrument - modules loaded via `import`. (See the https://nodejs.org/api/esm.html#introduction[Node.js introduction to ESM].) -+ -[source,bash] ----- -node -r elastic-apm-node/start.js \ - --experimental-loader=elastic-apm-node/loader.mjs \ - server.mjs - -# or - -NODE_OPTIONS='-r elastic-apm-node/start.js --experimental-loader=elastic-apm-node/loader.mjs' -node server.mjs ----- -+ -The new usage requirement is the `--experimental-loader=elastic-apm-node/loader.mjs` option. -This initial release only includes support for instrumenting a subset of the -modules listed at <>. This set will grow in subsequent -versions. Notably, ESM support does not currently work in node v20 -- only in -recent versions of node v12-v18. ESM support will remain experimental while the -https://nodejs.org/api/esm.html#loaders[Node.js Loaders API] is experimental. -See <> for full details. - -* Send `configured_hostname` and `detected_hostname` metadata separately, - rather than the old deprecated single `hostname` metadatum. As well, the - detected hostname now attempts to collect a FQDN to be used in the - `host.name` field in the Elasticsearch document. ({issues}3310[#3310]) - -[float] -===== Bug fixes - -* Ensure `apm.setGlobalLabel(...)` does not throw an error when apm is inactive. - ({issues}3442[#3442]) - -* Set the trace-context for an incoming HTTP/2 request. Contributed by @paulish. - ({issues}1830[#1830]) - -* Fix aws-sdk v3 instrumentation (currently just `@aws-sdk/client-s3`) for - versions 3.363.0 and later. ({pull}3455[#3455]) - -* Fix a possible crash when using `getSignedUrl()` from `@aws-sdk/s3-request-presigner` - due to a bug in `@aws-sdk/client-s3` instrumentation. ({issues}3464[#3464]) - - -[[release-notes-3.47.0]] -==== 3.47.0 - 2023/06/14 - -[float] -===== Features - -* Add support for `knex` version v1 and v2. ({pull}3355[#3355]) - -* Add `tedious@16.x` support. ({pull}3366[#3366]) - -* Add `apm.setGlobalLabel()` to dynamically extend the `globalLabels` set in - the initial config. Refer to <> for details. ({pull}3337[#3337]) - -[float] -===== Bug fixes - -* Change the "start.js" export to *not* start the APM agent inside a - https://nodejs.org/api/worker_threads.html[Node.js Worker thread]. -+ -One way to start the APM agent is via `node -r elastic-apm-node/start.js ...` or -`NODE_OPTIONS='-r elastic-apm-node/start.js`. When a Node.js Worker thread is -started, it inherits the `process.execArgv` and environment, which results in -"start.js" being run in the context of the new thread. Starting an additional -APM agent in each new Worker is arguably surprising. For now, "start.js" will -avoid starting in a thread. The exact behavior may change in future versions. -+ -One undesirable effect of this change is that explicit use of "start.js" in -code (`import 'elastic-apm-node/start.js'` or `require('elastic-apm-node/start.js')`) -in a Worker will *not* start the APM agent. Instead, one must use: -`require('elastic-apm-node').start()` or equivalent. - -* Avoid redaction of response headers while extracting `transaction.context.response` - data from the HTTP response. Contributed by @lytc. ({pull}3427[#3427]) - -[float] -===== Chores - -* Refactor transport handling to new internal `apm-client` module. - ({pull}3372[#3372]) - - -[[release-notes-3.46.0]] -==== 3.46.0 - 2023/05/15 - -[float] -===== Features - -* Add support for `@aws-sdk/client-s3`, one of the AWS SDK v3 clients. - ({pull}3287[#3287]) - -* Add support for `@apollo/server@4` -- the new Apollo Server package which - replaces `apollo-server`, `apollo-server-express`, etc. Contributed by - @jmesimak. ({pull}3203[#3203]) - -* Add <> support for Fastify instrumentation. - Contributed by @xxzefgh. ({pull}2681[#2681]) - -* Add support for mysql2@3. Contributed by @firecow. ({pull}3301[#3301]) - -* Improve error handling with AWS Lambda. When used together with the - https://github.com/elastic/apm-aws-lambda[Elastic AWS Lambda extension] - v1.4.0 or greater, the APM agent will pre-register a partial transaction - before the user's handler function is run. If the handler function fails - with a Lambda timeout, `uncaughtException`, `unhandledRejection`, or crash - then the Lambda extension will report the failed transaction so it can be - seen in the Kibana APM app. ({pull}3285[#3285]) - -* Add OpenTelemetry Metrics API and Metrics SDK support. This is currently - experimental and may change. With this change, you may use the OpenTelemetry - Metrics API to create custom metrics and the APM agent will ship those - metrics to APM server. As well, you may use the OpenTelemetry Metrics SDK - and the APM agent will automatically add a MetricReader to ship metrics to - APM server. See the <> for details. ({pull}3152[#3152]) - - -[float] -===== Chores - -* The config option `filterHttpHeaders` is now *deprecated*. It will be - removed in a future major version. ({pull}3333[#3333]) - -* Add cookie map in transactions' request context and redact cookie header ({pull}3322[#3322]) - -* Stop testing `express-graphql` instrumentation -- the module is deprecated. - ({pull}3304[#3304]) - - -[[release-notes-3.45.0]] -==== 3.45.0 2023/04/28 - -[float] -===== Features - -* Add `aws.s3.bucket` and `aws.s3.key` attributes for OpenTelemetry in S3 instrumentation. - Spec https://github.com/open-telemetry/opentelemetry-specification/blob/v1.20.0/semantic_conventions/trace/instrumentation/aws-sdk.yml#L435 - ({issues}3150[#3150]). - -[float] -===== Bug fixes - -* Fix a possible crash in AWS Lambda Function instrumentation when an ELB- - or API Gateway-triggered invocation received an `event` object with no - `headers` field. ({issues}3286[#3286]) - -* Fix an edge case in instrumentation of `http.request()` and `https.request()` - with node v19.9.0 and recently nightly builds of node v20. - ({issues}3261[#3261]) - -[float] -===== Chores - -* Update "engines" to support node v20. ({pull}3278[#3278]) - -* Restrict Next.js instrumentation to `<13.3.0` for now, because of a known - issue with instrumentating the `next@13.3.0` dev server. ({issues}3263[#3263]) - - -[[release-notes-3.44.1]] -==== 3.44.1 2023/04/06 - -[float] -===== Bug fixes - -* Fix an issue where the APM agent receiving central config (from APM server) - containing a value for `sanitized_field_names` would crash. - ({issues}3247[#3247]) - - -[[release-notes-3.44.0]] -==== 3.44.0 2023/04/03 - -[float] -===== Features - -* Update the <> supported version of `@opentelemetry/api` - to version 1.4.x. ({pull}3239[#3239]) - -[float] -===== Bug fixes - -* Ensure `metadata.service.agent.activation_method` is only sent for APM - server version 8.7.1 or later. APM server 8.7.0 included a bug where - receiving `activation_method` is harmful. ({issues}3230[#3230]) - - -[[release-notes-3.43.0]] -==== 3.43.0 2023/03/02 - -[float] -===== Features - -* Support mongodb v5. ({issues}3138[#3138]) - -* Propagate trace-context in message attributes for SQS (SendMessage and - SendMessageBatch) and SNS (Publish), provided the maximum 10 message - attributes limit is not passed. SQS message reception (ReceiveMessage) and - SQS- and SNS-triggered Lambda functions already produce _span links_ for - incoming messages with trace-context. This allows linking between - producer and consumer in the Kibana APM app. ({pull}3044[#3044]) - -* Extend Lambda instrumentation to capture details for Lambda function URL - and ELB-triggered Lambdas. ({issues}2901[#2901]) - -* Make `Agent.flush()` return a `Promise` if no callback is passed as param. - This means that flush is now `await`able: `await apm.flush()`. - ({issues}2857[#2857]) - -[float] -===== Bug fixes - -* Fix the transaction name for *API* routes in Next.js >=13.2.x. Before this - change internal changes in next@13.2.0 resulted in transactions for Next.js - API routes being `{method} unknown route`. - -* Fix `metadata.service.agent.activation_method=k8s-attach` handling to - (a) use an explicit marker from the k8s apm attacher - (`ELASTIC_APM_ACTIVATION_METHOD`) and (b) use the specified "k8s-attach" - value, rather than the incorrect "k8s-attacher". - ({issue}3119[#3119]) - -* Add missing <> ({pull}3121[#3121]) and - <> Agent configuration options to the TypeScript types. - - -[[release-notes-3.42.0]] -==== 3.42.0 2023/01/18 - -[float] -===== Features - -* Support for tracing/monitoring https://learn.microsoft.com/en-us/azure/azure-functions/[Azure Functions]. - See the <> document. - ({pull}3071[#3071], https://github.com/elastic/apm/blob/main/specs/agents/tracing-instrumentation-azure-functions.md[spec]) - -* Support `restify@11`. - -[float] -===== Bug fixes - -* Fix instrumentation of `http.request()` and `http.get()` (and the same - for `https.`) so that Basic auth fields are not lost. Before this change - if the first arg was a URL or string with `username` and/or `password` - values, e.g. `https://user:pass@...`, then the auth fields were not - included in the actual HTTP request. ({issues}2044[#2044]) - -* Fix `span.context.destination.service.resource` for S3 spans to have an - "s3/" prefix. -+ -*Note*: While this is considered a bugfix, but it can potentially be a breaking -change in the Kibana APM app: It can break the history of the S3-Spans / metrics -for users relying on `context.destination.service.resource`. If users happen to -run agents both with and without this fix (for same or different languages), the -same S3-buckets can appear twice in the service map (with and without -s3-prefix). - -* Ensure collected dropped spans stats follow the intake API type requirements. - Before this change `transaction.dropped_spans_stats[*].duration.sum.us` could - have been a floating-point value, but the intake API requires an int. The - result was dropped transactions and errors in the agent log. - ({issues}3104[#3104]) - -[float] -===== Chores - -* Add `service.agent.activation_method` metadatum. - Spec: https://github.com/elastic/apm/blob/main/specs/agents/metadata.md#activation-method - ({issues}3039[#3039]) - - -[[release-notes-3.41.1]] -==== 3.41.1 2022/12/21 - -[float] -===== Bug fixes - -* Fix a bug in span compression with sending spans that were buffered for - possible compression. Before this fix, in some cases a compressible span could - be sent *twice* or not sent at all. ({pull}3076[#3076]) - - -[[release-notes-3.41.0]] -==== 3.41.0 2022/12/12 - -[float] -===== Features - -* Capture HTTP context (status code, headers, etc.) on transactions (and - captured errors) for Lambda functions triggered by API Gateway. - ({issues}2419[#2419]) - -* Support instrumentation for restify@10. - -[float] -===== Bug fixes - -* Change default `serverUrl` from `http://localhost:8200` to `http://127.0.0.1:8200` - to avoid ambiguity between possible IPv4 and IPv6 DNS-resolved values for "localhost". - APM server only listens on IPv4 by default, so this avoids a possible surprising - mismatch. ({issues}3045[#3045]) - -* Add `tracestate` to the `TransactionOptions` TypeScript type for - `apm.startTransaction(..., options)`. ({issues}3061[#3061]) - -[float] -===== Chores - -* Mark the published Lambda layer as supporting the recently released - "nodejs18.x" Lambda Runtime (`--compatible-runtimes`). - - -[[release-notes-3.40.1]] -==== 3.40.1 2022/11/15 - -[float] -===== Bug fixes - -* Prevent a possible tight loop in central config fetching. ({issues}3029[#3029]) - - -[[release-notes-3.40.0]] -==== 3.40.0 2022/10/31 - -**Note**: This was a bad release. Users should upgrade to v3.40.1 or later. -This version of the agent could enter a tight loop re-fetching central config, -which increases network traffic, CPU usage, and load on the APM server. -See {issues}3029[issue #3029] for details. - -[float] -===== Features - -* Enable support for redis v4 ({pull}2945[#2945]) - -* preview:[] Next.js server-side instrumentation. See the <> document. -+ -This adds instrumentation of the Next.js dev server (`next dev`) and prod -server (`next start`). The APM transactions for incoming HTTP requests to the -server will be named appropriately based on Next.js's routing -- both for -user page routes (e.g. `GET /a-dynamic-page/[id]`) and for internal Next.js -routes (e.g. `Next.js _next/data route my-page`, -`Next.js Rewrite route /foo -> /bar`). As well, exceptions in server-side code -(e.g. `getServerSideProps`, server-side run page handlers, API handlers) will -be reported. ({pull}2959[#2959]) -+ -This is a technical preview to get feedback from Next.js users. The details on -how exactly the instrumentation works may change in future versions. - -* Improve container-info gathering to support AWS ECS/Fargate environments. - ({issues}2914[#2914]) - -[float] -===== Bug fixes - -* Source lines of context in stacktraces is *no longer reported* for "*.min.js" - files that do not have source-map information. These files are assumed to - be minimized files, for which source line context won't be useful. This - change is to guard against excessively large stacktrace data. - -[float] -===== Chores - -* Add guards to ensure that a crazy `Cache-Control: max-age=...` response - header cannot accidentally result in inappropriate intervals for fetching - central config. The re-fetch delay is clamped to `[5 seconds, 1 day]`. - ({issues}2941[#2941]) - - -[[release-notes-3.39.0]] -==== 3.39.0 2022/10/17 - -[float] -===== Features - -* Improve the granularity of data captured about downstream services, e.g. - databases, for spans that represent an external call (known as "exit spans"). - This data is used for - https://www.elastic.co/guide/en/kibana/current/service-maps.html[Service Maps] - and - https://www.elastic.co/guide/en/kibana/current/dependencies.html[Dependencies] - in the Kibana APM app. -+ -This is handled via the new span `service.target.*` fields that replace the -deprecated `destination.service.resource` field (https://github.com/elastic/apm/blob/main/specs/agents/tracing-spans-service-target.md[spec]). All instrumentations have -been updated to set appropriate service target values. If necessary, e.g. for manual -instrumentation, a new public <> API has been added to specify these values. -({pull}2882[#2882]) -+ -The never-public-but-available `span.setDestinationContext()` has been marked -for removal (using it will `process.emitWarning()`). Users of this internal -method should switch to the public <>. -+ -As part of this change, improvements have been made to some module instrumentations: -+ - ** `redis` and `ioredis`: `span.type` has changed from "cache" to "db" per https://github.com/elastic/apm/blob/main/specs/agents/tracing-instrumentation-db.md#redis[spec] - ** `mongodb`: `span.action` used to be "query", now it will be the mongodb command name, e.g. "find", "insert". - ** `mongodb` and `mongodb-core`: `span.db.instance` is now set to the database name ({issues}1494[#1494]) - ** `mysql` and `mysql2`: `span.db.{instance,user}` are now populated. - ** `@elastic/elasticsearch`: The cluster name is heuristically determined for Elastic Cloud deployments and used for the service target name. - ** `sqs`: `span.destination.{address,port}` are now populated. - ** `pg`: `span.db.{instance,user}` are now populated. - ** `cassandra-driver`: the Cassandra keyspace is captured for service target data, if available. - ** OpenTelemetry Bridge: OTel spans with kind PRODUCER and CLIENT are now handled as exit spans (e.g. span compression could apply). - -* Support instrumentation of `@koa/router` (and `koa-router`) versions 11 and 12. - Contributed by @sibelius. ({issues}2811[#2811]) - -* Support instrumentation of tedious@15. ({pull}2897[#2897]) - -* Improve the captured information for Elasticsearch client instrumentation. - For all outgoing Elasticsearch client requests, the full HTTP url is - now captured (stored in the "url.original" field). For Elasticsearch requests - that do a search, the outgoing request body is captured (to the - "span.db.statement" field) as before, but the format has changed to only - hold the request body. Before this change the "span.db.statement" would - also hold any HTTP query parameters. These are now more naturally captured - in "url.original". ({issues}2019[#2019]) -+ -This change also introduces the <> -configuration option to enable controlling which Elasticsearch REST API -paths are considered for request body capture. ({pull}2873[#2873]) - -* Support instrumenting core modules when require'd with the optional - https://nodejs.org/api/modules.html#core-modules['node:'-prefix]. - For example `require('node:http')` will now be instrumented. - ({issues}2816[#2816]) - -* Agent will delay loading of the `error-callsites` module until agent start time, - and will not load the module if the agent is disabled/inactive. This prevents the - setting of an `Error.prepareStackTrace` handler until necessary for stacktrace - collection. ({issues}2833[#2833] {pull}2906[#2906]) - -* Add `*principal*` pattern to default value for `sanitizeFieldNames` config - var, so that it is more likely to redact authentication-related HTTP headers, - e.g. on Azure. ({issues}2938[#2938]) - -[float] -===== Bug fixes - -* Avoid a possible `RangeError: Maximum call stack size exceeded` in - Span timer handler for exceedingly deep Span trees. ({pull}2939[#2939]) - -* Fix instrumentation of (very old) 'graphql' module versions <=0.9.6. - Instrumentation of these older graphql versions was broken in v3.36.0. - ({pull}2927[#2927]) - -[float] -===== Chores - -* Disable knex instrumentation when not collecting span stack traces - (because there is no point). This is a performance improvement for - Knex usage in the default configuration. ({pull}2879[#2879]) - -* Document and add types for `parent` option to - <>. ({issues}2977[#2977]) - - -[[release-notes-3.38.0]] -==== 3.38.0 2022/08/11 - -[float] -===== Features - -- Add instrumentation for the https://undici.nodejs.org[undici] HTTP client - library. This also adds instrumentation of Node.js v18's - https://nodejs.org/api/all.html#all_globals_fetch[`fetch()`], which uses - undici under the hood. For the instrumentation to work one must be using - node v14.17.0 or later, or have installed the - https://www.npmjs.com/package/diagnostics_channel['diagnostics_channel' polyfill]. - ({issues}2383[#2383]) - -- Added `exitSpanMinDuration` configuration field, allowing end users to - set a time threshold for dropping exit spans. ({pull}2843[#2843]) - -[float] -===== Bug fixes - -- Capturing an error would fail if the Error instance had an attribute that - was an invalid date. ({issues}2030[#2030]) - -- Fix the span for an instrumented S3 ListBuckets API call to not be invalid - for APM server intake. ({pull}2866[#2866]) - -- Fix an issue where the transaction `name` for a trace of a Lambda function - implementing a GraphQL server (e.g. via https://www.apollographql.com/docs/apollo-server/deployment/lambda/[apollo-server-lambda]) - would not get the GraphQL-specific naming. ({issues}2832[#2832]) - - -[[release-notes-3.37.0]] -==== 3.37.0 2022/07/18 - -[float] -===== Features - -- The agent will now use https://nodejs.org/api/async_context.html#class-asynclocalstorage[`AsyncLocalStorage`] - for run-context tracking in new enough versions of Node.js (versions >=14.5 - and >=12.19). This can reduce overhead from using the APM agent, especially in - Promise-heavy applications. ({pull}2786[#2786]) -+ -This also adds a new <> configuration option -to control which mechanism the agent uses for run-context tracking. It replaces -the, now deprecated, `asyncHooks` configuration option. If -you experience problems with the new AsyncLocalStorage-based tracking, you can -restore the older behavior with `contextManager: "asynchooks"`. - -[float] -===== Chores - -- The old "patch" mechanism that the APM agent uses for run-context tracking - (enabled via <>, or previously - enabled via `asyncHooks: false`) is now *deprecated*. It will be removed in a - future major version (after an 18 month deprecation period). - - -[[release-notes-3.36.0]] -==== 3.36.0 2022/06/15 - -[float] -===== Features - -- Adds https://github.com/elastic/apm/blob/main/specs/agents/handling-huge-traces/tracing-spans-dropped-stats.md[dropped span statistics] - to transaction payloads allowing APM Server to calculate more accurate - throughput metrics. ({issues}2302[#2302]) - -- Improve the grouping of captured API errors from `@elastic/elasticsearch` - instrumentation. When an Elasticsearch client API error is captured, if - the response body includes a `error.type`, e.g. `illegal_argument_exception`, - the captured `error.exception.type` will be `ResponseError (illegal_argument_exception)` - rather than `ResponseError`. This means that API errors will be grouped - separately in the Kibana APM app based on their client API error type. - ({issues}2770[#2770]) - -- Graphql v16 support ({issues}2508[#2508]) - - -[float] -===== Bug fixes - -- Fix the automatic wrapping of Lambda handlers to support handler modules - created by `esbuild` bundling -- as is done in some Serverless Framework - functions that use TypeScript. ({issues}2753[#2753]) - -- Fix Express route tracking (used for `transaction.name`) when an argument - is passed to the `next(arg)` callback of a request handler. Before this - change passing `next()` would be - considered an error by Express, but not by the APM agent's route - tracking. ({pull}2750[#2750]) - -- Updated `sanitizeFieldNames` and `ignoreMessageQueues` environment variables - to use `ELASTIC_APM_` prefix. (previous variable names are still recgonized, - but not documented) ({issues}2636[#2636]) - - -[[release-notes-3.35.0]] -==== 3.35.0 2022/06/01 - -[float] -===== Features - -- Add support for 'knex' version v0.21 to v1 ({issues}2699[#2699]). - Note that instrumentation of knex >=0.95.0 is not support when using the - deprecated <> configuration option. - -- Change the instrumentation of SQS- and SNS-triggered AWS Lambda invocations: - The special-casing of triggers with a *single* message/record has been - removed. That means that instead of a possible continued distributed trace - (if a single received message has a 'traceparent'), a *span link* will be - added to the APM transaction for each message with a 'traceparent'. - `transaction.context.message.` fields are no longer collected. - ({pull}2708[#2708]) - -- Enable support for ioredis v5 ({pull}2714[#2714]) - -- A Docker image with the APM agent will be published for each release to - `docker.elastic.co/observability/apm-agent-nodejs:VERSION`, for example: - `docker.elastic.co/observability/apm-agent-nodejs:3.35.0`. ({pull}2742[#2742]) - -[float] -===== Bug fixes - -- Fixes automatic Lambda handler wrapping to work with handlers that point to - subfolders (ex. `_HANDLER=path/to/folder.methodName`) ({issues}2709[#2709]) - - -[[release-notes-3.34.0]] -==== 3.34.0 2022/05/26 - -[float] -===== Features - -- Add support for 'tedious' version v10 to v14 ({issues}2517[#2517]) - -- When automatically determining <> and <> by - looking for a "package.json", the agent will now prefer to start looking - from the directory of the script being executed, rather than the current - working directory. ({issues}2420[#2420]) - -- Add an experimental <>. Briefly, the OpenTelemetry - Bridge allows one to use the vendor-neutral - https://opentelemetry.io/docs/instrumentation/js/api/[OpenTelemetry Tracing - API] (https://www.npmjs.com/package/@opentelemetry/api[`@opentelemetry/api`]) - to manually instrument your code, and have the Elastic Node.js APM agent - handle those API calls. ({pull}2641[#2641]) - -- Add https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/overview.md#links-between-spans)[Span Links] support. ({issues}2673[#2673]) -+ -The <> and -<> public APIs now accept -a `links` option for specify links. The OpenTelemetry Bridge also supports -specifying links during span creation (with the limitation that span link -*attributes* are not supported). - -- Add a <> configuration option to allow some - control over how the APM Agent uses incoming trace-context headers for context - propagation. ({issues}2592[#2592]) - -- Add span links to AWS SQS messaging spans on 'ReceiveMessage', one for each - message (up to 1000) which has a 'traceparent' message attribute. - ({issues}2593[#2593]) - -- Add "nodejs16.x" as one of the compatible runtimes for the Node.js APM agent - Lambda layers now that - https://aws.amazon.com/blogs/compute/node-js-16-x-runtime-now-available-in-aws-lambda/[this runtime is available on AWS]. - -[float] -===== Bug fixes - -- Fixes a bug where the the agent would not serialize the database context of - a span. ({issues}2715[#2715]) - -- Fix a possible crash in span compression handling on a span that was manually - created without a parent span (e.g. if created with a custom `childOf` - option). ({pull}2701[#2701]) - -[float] -===== Chores - -- Add a package-lock.json file to ensure repeatable builds of the AWS Lambda - layer and to assist with security issue auditing. ({issues}2626[#2626]) - -- Deprecate instrumentation for the legacy "hapi" package. While the APM agent - still supports it, that instrumentation is no longer tested and support - will be dropped in the next major version of the agent. Note that the - "@hapi/hapi" package is still fully supported. ({pull}2698[#2698]) - -- Deprecate instrumentation for the obsolete "jade" package. "jade" was renamed - to "pug" in 2015. While the APM agent still supports "jade", that - instrumentation is no longer tested. ({pull}2711[#2711]) - - -[[release-notes-3.33.0]] -==== 3.33.0 2022/05/05 - -[float] -===== Features - -- Add a `parent` option to `agent.captureError(err[, options][, cb])` to allow - passing in a Transaction or Span to use as the parent for the error. Before - this change the *current* span or transaction, if any, was always used. -+ -This option is not documented in the user docs, nor added to the TypeScript -types, because it is only expected to be useful for coming OTel Bridge work. - -[float] -===== Bug fixes - -- Fix a possible crash in the instrumentation of an incoming HTTP/2 request: if - the underlying Http2Session was destroyed before the APM transaction was - ended (on Http2Stream end). This resulted in the instrumentation using the - [`stream.session.socket`](https://nodejs.org/api/http2.html#http2sessionsocket) - proxy, which can throw `ERR_HTTP2_SOCKET_UNBOUND` after the session is - destroyed. ({issues}2670[#2670]) - -[float] -===== Chores - -- The release process is slightly changed. CI (Jenkins) now handles `npm - publish ...` when a tag is pushed. ({pull}2667[#2667]) - -- Pulled the `traceparent` NPM module into a local module and replaced the - `random-poly-fill` module with the built in `require('crypto').randomFillSync` - function call ({pull}2669[#2669]) - - -[[release-notes-3.32.0]] -==== 3.32.0 2022/04/27 - -[float] -===== Features - -* Add support for node v18. ({pull}2652[#2652]) - -* Add support for https://github.com/elastic/apm/blob/main/specs/agents/handling-huge-traces/tracing-spans-compress.md[span compression]. - ({issues}2100[#2100], {issues}2604[#2604]) -+ -By default, consecutive (sibling) exit spans of the same name, type, subtype, -and destination with a duration of less than 50ms will be compressed into -a single composite span. A possible case is the -https://duckduckgo.com/?q=N%252B1+query+problem[N+1 query problem]. -Traces with many consecutive matching spans will be represented -- both in data -and the APM UI -- more efficiently. -+ -Span compression can be disabled or matching behavior configured with the -<>. - -* Marks spans as "exit spans" across all instrumentations, preventing additional - child spans from being added to the exit spans. See issue for a full list of - spans types that will be treated as exit spans. ({issues}2601[#2601]) - -* Allow a new span to be created/started even if its transaction has ended. - This is expected to be a very rare use case. ({pull}2653[#2653]) - -* The Trace Context headers are now propagated for http2 requests. ({pull}2656[#2656]) - - -[[release-notes-3.31.0]] -==== 3.31.0 2022/03/23 - -[float] -===== Features - -* Add `captureBody` support for Hapi. ({issues}1905[#1905]) - -* If a SNS or SQS single event trigger to an instrumented Lambda function - includes message attributes with the name "traceparent" (and "tracestate"), - case-insensitive, then those are used to continue the trace. This was already - being done for API Gateway event headers. - -[float] -===== Bug fixes - -* Fix a bug with Lambda instrumentation where the APM agent would result in - an otherwise working Lambda function to respond with `null` if the Lambda - was missing the https://github.com/elastic/apm-aws-lambda[Elastic APM Lambda Extension]. - ({issues}2598[#2598]) - -* Fix a bug in Lambda instrumentation in the capturing of SNS and SQS event - message attributes. ({issues}2605[#2605]) - - -[[release-notes-3.30.0]] -==== 3.30.0 2022/03/10 - -[float] -===== Breaking changes - -* Added a new config option <> - that replaces both <> - and <>. The latter two are - now deprecated, but still supported. If `spanStackTraceMinDuration` is - specified, then any value for the deprecated two options will be ignored. -+ -There is a significant change in _default_ behavior of the APM agent. If none -of these configuration options is specified, then the default -(`spanStackTraceMinDuration: -1`) is that stack traces are *not* collected -and reported for any spans. This change in default behavior was made because -the CPU performance impact of collecting span stack traces was found to be -too high in practice for busy and/or complex applications. This is mentioned -in the "Breaking changes" section to highlight the change, but it is not -considered breaking in general. The impact is that the "Stack Trace" tab in -the "Span details" view in the Kibana APM app will be empty. This was already -the case for some spans based on span duration. ({pull}2565[#2565]) - -* Implement the explicit signaling of Lambda invocation completion to the - Elastic AWS Lambda Extension. This improves data flushing in a Lambda - environment to ensure tracing data is only sent when the Lambda is active. - This avoids possible tracing data loss while a Lambda VM is frozen. - ({issues}2485[#2485]) -+ -However, because this change triggers a bug in the extension, this version of -the APM Node.js Agent must only be used with versions of the -<> -after v0.0.3. - -[float] -===== Features - -* Add `faas.name` and `faas.version` fields to Lambda transactions. ({issues}2587[#2587]) -* Added automatic wrapping of AWS Lambda handlers ({pull}2577[#2577]) -* Improvements to AWS Lambda instrumentation: Better `transaction.name` for - API Gateway-triggered lambdas. Respect explicitly set `serviceName`, - `serviceVersion`, and `usePathAsTransactionName` config settings. Default - `cloudProvider: none` and `centralConfig: false` to reduce required - environment variables for setting up APM instrumentation of Lambdas. - ({issues}2531[#2531]) - - -[[release-notes-3.29.0]] -==== 3.29.0 2022/02/10 - -* Fix a bug in instrumentation of `@elastic/elasticsearch` that caused a - memory leak. ({issues}2569[#2569]) - - -[[release-notes-3.28.0]] -==== 3.28.0 2022/02/08 - -Known issue: This release includes a memory leak in instrumentation of the -`@elastic/elasticsearch` package. If you use that package, you should not -use v3.28.0 of this APM agent. ({issues}2569[#2569]) - -[float] -===== Breaking changes - -The following changes are not considered *breaking*. However, they result in -a change in behavior and trace output that might impact some users, so they -are highlighted here. - -* Change the `redis` and `mysql` instrumentations to not patch at all if - they are listed in <>. - This means that an application that uses one of these packages *and* lists - that package in `disableInstrumentations` could see changes in the async - run-context of callbacks. See {issues}2498[#2498] and the - <> which has a similar change. - -* Elasticsearch spans (from `elasticsearch`, `@elastic/elasticsearch`, and - `@elastic/elasticsearch-canary` instrumentation) will no longer have an HTTP - child span(s) for the underlying HTTP request. This is listed in this section - to provide awareness in case some users have custom analysis of APM trace - data that expects those HTTP spans. -+ -Per https://github.com/elastic/apm/blob/main/specs/agents/tracing-spans.md#exit-spans[the APM Agent spec for exit spans], -Elasticsearch spans are now marked as exit spans and as a result, HTTP child -spans are suppressed. ({issues}2000[#2000]) -+ -As part of this change, some HTTP context has been added to Elasticsearch -spans, when available: the HTTP response `status_code`, and the size of the -response body (`encoded_body_size`). ({issues}2484[#2484]) - -[float] -===== Features - -* Drop unsampled transactions when sending to APM Server v8.0+. ({issues}2455[#2455]) - -* The default <> string (when it is not configured - and cannot be inferred from a "package.json" file) has been changed from - "nodejs_service" to "unknown-nodejs-service". This is a standardized pattern - used across Elastic APM agents to allow the Kibana APM app to recognize when - to provide help to the user on configuring the service name. - ({issues}2491[#2491]) - -* Add `transaction.name` to captured APM errors. This will allow the Kibana APM - app to correlate error groups and transaction groups. ({issues}2456[#2456]) - -* Mark S3 spans (from 'aws-sdk' instrumentation) as exit spans (per - https://github.com/elastic/apm/blob/main/specs/agents/tracing-spans.md#exit-spans). - The result is that HTTP child spans of S3 spans are no longer captured. - ({issues}2125[#2125]) - -[float] -===== Bug fixes - -* Fixes for run context handling for '@elastic/elasticsearch' instrumentation. - ({issues}2430[#2430]) - -* Fixes for run context handling for 'cassandra-driver' instrumentation. - ({issues}2430[#2430]) - -* Fixes for run context handling for 'mongodb-core' instrumentation. - ({issues}2430[#2430]) - -* Fixes for run context handling for 'elasticsearch' instrumentation. - ({issues}2430[#2430]) - - -[[release-notes-3.27.0]] -==== 3.27.0 2022/01/17 - -[float] -===== Features - -* Add support for express-graphql 0.10.0 - 0.12.0 inclusive. ({pull}2511[#2511]) - -[float] -===== Bug fixes - -* Fix an issue where the agent's async task tracking could cause the user's - application to use too much memory. In cases where an application is under - sustained load and is running in a memory constrained container, this looked - like a memory leak. -+ -This high memory usage could happen when application code starts async tasks -(e.g. Promises, setTimeouts, async I/O) that outlive the APM Transaction -(typically an HTTP request handler). The agent's async task tracking keeps a -reference to the APM Transaction (and any APM Spans) until the async task -ends, thus extending the lifetime of those APM objects and the references -they hold -- in particular, HTTP request and response objects. This could lead -to higher memory usage. -+ -With this change, those references are removed when APM Transactions and Spans -are ended, and agent memory usage is now the same as what it was before -v3.24.0 when this issue was introduced. ({pull}2528[#2528], {issues}2489[#2489]) - -* Fixes for run context handling for 'graphql' instrumentation. - ({issues}2430[#2430]) - -* Fixes for run context handling for DynamoDB instrumentation ('aws-sdk' - package) so that a span created after an AWS client command (in the same - tick, in the command callback, or promise) is not a child of the automatic - AWS span. This change also ensures captured errors from failing client - commands are a child of the AWS span. ({issues}2430[#2430]) - -* Fixes for run context handling for 'pg' instrumentation. ({issues}2430[#2430]) - -* Fixes for run context handling for 'mongodb' instrumentation. ({issues}2512[#2512]) - - -[[release-notes-3.26.0]] -==== 3.26.0 2021/12/07 - -[float] -===== Breaking changes - -* In earlier versions, the agent would propagate run context in some packages - *even if instrumentation for that package was disabled via - <>*. Recent versions - change the semantics of `disableInstrumentations` to mean the agent should - not touch the listed packages at all. This means that an application that - uses one of these packages *and* lists that package in - `disableInstrumentations` could see changes in the async run-context of - callbacks. This affects: `pg` (v3.24.0), `redis` (v3.25.0), `mysql` - (v3.25.0), `ioredis` (v3.26.0), `mysql2` (v3.26.0). See {issues}2498[#2498] - for details. - -[float] -===== Features - -* Add `*auth*` pattern to default value for `sanitizeFieldNames` config var, so - that it is more likely to redact authentication/authorization-related HTTP - headers and form fields. This pattern replaces the `authorization` pattern - in the set of defaults. ({issues}2427[#2427]) - -[float] -===== Bug fixes - -* Fix run-context handling for 'tedious' instrumentation so that automatically - created 'mssql' spans are never the `currentSpan` in user code. - ({issues}2430[#2430]) - -* Fix 'http2' instrumentation for outgoing requests to not have the created - HTTP span context be active in user code. ({issues}2430[#2430]) - -* Fix run-context handling in 'ws' instrumentation so that the span created - for a `ws.send(...)` isn't the "current span" in subsequent code in the - same tick. ({pull}2481[#2481]) - -* Fix run-context handling for 'memcached' instrumentation so that the - automatically created Memcached span is never the `currentSpan` in user - code. ({issues}2430[#2430]) - -* Fix a possible crash when serializing a Transaction if the incoming - `req.socket` is null (possible if the socket has been destroyed). - ({issues}2479[#2479]) - -* Fixes for run context handling for 'aws-sdk' instrumentation (S3, SQS, SNS) - so that a span created after an AWS client command (in the same tick, in - the command callback, or promise) is not a child of the automatic AWS - span. This change also ensures captured errors from failing client commands - are a child of the AWS span. ({issues}2430[#2430]) - -* Fix 'http' and 'https' instrumentation for outgoing requests to not have the - 'http' span context be active in user code. ({pull}2470[#2470]) - -* Fixes for 'ioredis' instrumentation ({pull}2460[#2460]): -+ -** Fix run-context so that a span created in the same tick as an ioredis - client command will no longer be a child of the redis span. -** Capture an APM error and correctly set span.outcome to "failure" when - a redis client command calls back with an error. -** Avoid a rare possible double-instrumentation of redis commands - internally-queued before the RedisClient is "ready". ({issues}2459[#2459]) -** Add destination context so Redis shows up on the Service Map. - -* Fix run-context handling for 'mysql2' instrumentation to avoid accidental - creation of *child* spans of the automatic mysql spans. - ({issues}2430[#2430]}) - - -[[release-notes-3.25.0]] -==== 3.25.0 2021/11/24 - -[float] -===== Bug fixes - -* Fixes for 'redis' instrumentation: -+ -** Fix run-context so that a span created in the same tick as a redis client - command will no longer be a child of the redis span. ({issues}2430[#2430]) -** Capture an APM error and correctly set span.outcome to "failure" when - a redis client command calls back with an error. -** Avoid a rare possible double-instrumentation of redis commands - internally-queued before the RedisClient is "ready". ({pull}2446[#2446]) - -* Avoid setting the `tracestate` header for outgoing HTTP requests to the empty - string. This can happen for non-trace-root transactions. While the HTTP spec - allows empty header values, some servers do not. ({issues}2405[#2405]) - -* Deprecate `transaction.subtype` and `transaction.action`. These fields - were never used by APM server. This also deprecates the - `apm.startTransaction(...)` call signatures that take `subtype` and `action` - arguments. In the next major version these two fields will be removed. - ({issues}2356[#2356]) - -* Fix run-context handling for 'mysql' instrumentation to avoid accidental - creation of *child* spans of the automatic 'mysql' spans. - ({issues}2430[#2430]}) - - -[[release-notes-3.24.0]] -==== 3.24.0 2021/11/09 - -[float] -===== Breaking changes - -* Change <> to no longer skip internal processing - work. It now *only* disables communication with APM Server. Use - <> if your use case is - to limit the APM agent's processing to the minimum to support context - propagation and log correlation. -+ -This is listed under "Breaking changes" as a heads-up. The only possible -negative result of this `disableSend` change is some extra CPU processing time -by the agent. There is no outward functionality change. - -[float] -===== Features - -* Gather https://github.com/elastic/apm/blob/main/specs/agents/tracing-instrumentation-aws-lambda.md#overwriting-metadata[AWS Lambda-specific metadata] - on first function invocation and ensure no intake requests to APM Server are - started before that metadata is available. ({issues}2404[#2404]) - -* Add <> configuration - option. This supports the use case of using the APM agent to propagate HTTP - trace-context and to support log-correlation (adding `trace.id` et al fields - to log records) **without** an APM server, and to otherwise reduce the - processing time of the agent. ({issues}2393[#2393]) -+ -This is similar to <>, but differs in that -`contextPropagationOnly: true` tells the agent to skip unnecessary work. - -* The User-Agent header used for communication with APM Server now includes - the `serviceName` and `serviceVersion`. For some users this can be - https://github.com/elastic/apm/issues/509[helpful for APM Server log analysis]. - ({issues}2364[#2364]) - -* In a Lambda enviornment we now collect a number of additional data fields - on the Transaction object. See the spec for more information on fields collected. - https://github.com/elastic/apm/blob/main/specs/agents/tracing-instrumentation-aws-lambda.md - ({issues}2156[#2156]) - -* Zero configuration support. The only required agent configuration option - is <>. Normally the agent will attempt to - infer `serviceName` for the "name" field in a package.json file. However, - that could fail. With this version, the agent will cope with: a scoped - package name (`@scope/name` is normalized to `scope-name`), a "name" that - isn't a valid `serviceName`, not being able to find a "package.json" file, - etc. Ultimately it will fallback to "nodejs_service". ({issues}1944[#1944]) -+ -One consequence of this change is that `apm.getServiceName()` will return -`undefined` until the agent is started (check with `apm.isStarted()`). - -[float] -===== Bug fixes - -* Stop collecting transaction breakdown metrics (`transaction.breakdown.count`, - `transaction.duration.sum.us`, `transaction.duration.count`), as they are not - being used in APM UI. ({issues}2370[#2370]) - -* Wrap `fs.realpath.native` when configured with `asyncHooks=false`. This - fixes using that function (which was undefined before this fix) and a - crash when importing fs-extra@10. ({issues}2401[#2401]) - -* A significant change was made to internal run context tracking (a.k.a. async - context tracking). There are no configuration changes or API changes for - custom instrumentation. ({pull}2181[#2181]) -+ -One behavior change is that multiple spans created synchronously (in the same -async task) will form parent/child relationships; before this change they would -all be siblings. This fixes HTTP child spans of Elasticsearch and aws-sdk -automatic spans to properly be children. ({issues}1889[#1889]) -+ -Another behavior change is that a span B started after having ended span A in -the same async task will *no longer* be a child of span A. ({pull}1964[#1964]) -+ -This fixes an issue with context binding of EventEmitters, where -`removeListener` would fail to actually remove if the same handler function was -added to multiple events. - -* Fix pino's deprecation warning when using a custom logger with pino@6 ({issues}2332[#2332]) - - -[[release-notes-3.23.0]] -==== 3.23.0 2021/10/25 - -[float] -===== Breaking changes - -* Remove support for instrumenting versions of fastify earlier than 1.0.0. - This instrumentation might still work, but is no longer supported. - Fastify v1.0.0 was released in 2018. All current users should be using - fastify v2 or v3 at least. See https://www.fastify.io/docs/latest/LTS/ - ({pull}2387[#2387]) - -[float] -===== Features - -* Add initial support for version 8 of `@elastic/elasticsearch`, which is - still in pre-release. ({pull}2385[#2385]) - - -[[release-notes-3.22.0]] -==== 3.22.0 2021/10/21 - -[float] -===== Features - -* Add support for node v17. - -* When an error is captured, the APM agent will only immediately flush it to - APM server if it is an "unhandled" error. Unhandled errors are typically those - captured via the `uncaughtException` process event. Before this change, a - captured error (e.g. for a 4xx or 5xx response from an HTTP server) was - always immediately flushed. This could negatively impact performance for - a service that was generating *frequent* errors. ({issues}686[#686]) - -[float] -===== Bug fixes - -* Improve <> to wait for inflight spans and errors - before flushing data to APM server. Before this change, a recently ended span - or recently <> might not yet have completed - processing (for example, stacktrace collection is asynchronous) and might - not be included in the flush call. ({issues}2294[#2294]) - -* AWS Lambda changes: Disable metrics collection during the experimental phase - of (re)implementing Lambda support ({pull}2363[#2363]). Some fixes for better - flushing of data at the end of a Lambda invocation. - -* `span.toString()` and `transaction.toString()` have been *deprecated*. The - exact string output may change in v4 of the agent. - -* Add `Span.ids` and `Transaction.ids` to TypeScript types. ({pull}2347[#2347]) - -* Improve `span.sync` determination (fixes {issues}1996[#1996]) and stop - reporting `transaction.sync` which was never used ({issues}2292[#2292]). - A minor semantic change is that `span.sync` is not set to a final value - until `span.end()` is called. Before `span.end()` the value will always - by `true`. - -* Guard against a negative value of `metricsInterval`, which can lead to - high CPU usage as metrics are collected as fast as possible. Also ensure - no metrics collection can happen if `metricsInterval="0s"` as intended. - Before this change it was possible for some metric collection to still - happen, even though none would be reported. ({pull}2330[#2330]) -+ -This change also guards against negative and invalid values in the following -configuration options: `abortedErrorThreshold`, `apiRequestTime`, and -`serverTimeout`. If an invalid value is given, then will fallback to their -default value. - - -[[release-notes-3.21.1]] -==== 3.21.1 2021/09/16 - -[float] -===== Bug fixes - -* Update types to avoid imports of `@types/...` modules (other than - `@types/node`), so that TypeScript users of elastic-apm-node need not - manually `npm install @types/connect @types/pino @types/aws-lambda` to - compile. ({issues}2331[#2331]) - - -[[release-notes-3.21.0]] -==== 3.21.0 2021/09/15 - -[float] -===== Features - -* Add the `longFieldMaxLength` integer configuration option (default `10000`). - Specific transaction/span/error fields (see the list below) will be truncated - at this number of unicode characters. ({pull}2193[#2193], {issues}1921[#1921]) -+ -The `errorMessageMaxLength` configuration option is now *deprecated*, but -still supported. Users should switch to using `longFieldMaxLength`. If -`errorMessageMaxLength` is not specified, truncation of error messages will -now use the `longFieldMaxLength` value. -+ -Note that ultimately the maximum length of any tracing field is limited by the -{apm-guide-ref}/configuration-process.html#max_event_size[`max_event_size`] -configured for the receiving APM server. -+ -The fields affected by `longFieldMaxLength` are: -+ -** `transaction.context.request.body`, `error.context.request.body` - Before - this change these fields were not truncated. -** `transaction.context.message.body`, `span.context.message.body`, - `error.context.message.body` - Before this change these fields were not - truncated. -** `span.context.db.statement` - Before this change this field was truncated - at 10000 *bytes*. Truncation is now a number of unicode characters. -** `error.exception.message`, `error.log.message` - Before this change, the - default 2kB `errorMessageMaxLength` would apply. - -* Improve the TypeScript types by exporting more of interfaces: - `AgentConfigOptions`, `Transaction`, `Span`, `TransactionOptions`, - `SpanOptions`. ({issues}2118[#2118]) - -[float] -===== Bug fixes - -* Fix a bug in `apm.removePatch(module, aHandler)` that would remove the - last registered handler if `aHandler` did not match any currently - registered handlers. ({pull}2315[#2315]) - -* Fix a crash in instrumentation of the old Elasticsearch client - (`elasticsearch`) for some rarer cases of client options -- for example - passing multiple hosts. ({pull}2312[#2312]) - -* Ensure the internal HTTP(S) client requests made by the APM agent to APM - server are not themselves traced. ({issues}1168[#1168], {issues}1136[#1136]) - -* Fix crashing error with `agent.registerMetric` and `active:false` configuration. ({issues}1799[#1799], {pull}2290[#2290]) - - -[[release-notes-3.20.0]] -==== 3.20.0 2021/08/12 - -[float] -===== Bug fixes - -* Fix failing tests and a possible runtime crash in - `@elastic/elasticsearch@7.14.0` instrumentation. ({issues}2187[#2187]) - - -[[release-notes-3.19.0]] -==== 3.19.0 2021/08/05 - -[float] -===== Features - -* The agent now supports the 3.x branch of apollo-server-express. ({pull}2155[#2155]) - -* Add instrumentation support for mongodb@4.x. ({pull}2171[#2171]) - -[float] -===== Bug fixes - -* The agent will no longer report counting metrics with a value of zero, and will - remove these metrics from the registry. ({pull}2163[#2163]) - - -[[release-notes-3.18.0]] -==== 3.18.0 2021/07/20 - -[float] -===== Features - -* Trace an incoming HTTP/1.1 request to an HTTP/2 server using the - https://nodejs.org/api/http2.html#http2_http2_createsecureserver_options_onrequesthandler[allowHTTP1] - option. Before this change only incoming requests supporting HTTP/2 would - be traced. ({pull}2143[#2143]) - -* Add instrumentation of the AWS SNS publish method when using the - https://www.npmjs.com/package/aws-sdk[JavaScript AWS SDK v2] (`aws-sdk`). ({pull}2157[#2157]) - -[float] -===== Bug fixes - -* Fixed naming for outgoing HTTP spans to comply with the spec. - https://github.com/elastic/apm/blob/main/specs/agents/tracing-instrumentation-http.md#http-client-spans - Span names no longer include the path portion of the URL. ({pull}2161[#2161]) - -* Fix a header object re-use bug that prevented propagation of trace-context - headers (`traceparent` et al) in AWS requests using AWS v4 signature auth. - ({issues}2134[#2134]) - -* Fix a possible infinite loop in `captureError` when handling uncaught - exceptions and the process is at or near its file descriptor limit - (receiving EMFILE errors). ({issues}2148[#2148]) - - -[[release-notes-3.17.0]] -==== 3.17.0 2021/07/05 - -[float] -===== Features - -* Add instrumentation of all AWS S3 methods when using the - https://www.npmjs.com/package/aws-sdk[JavaScript AWS SDK v2] (`aws-sdk`). - -* Add <> configuration option. This supports some - use cases using the APM agent **without** an APM server. ({issues}2101[#2101]) - -* Add instrumentation of all DynamoDB methods when using the - https://www.npmjs.com/package/aws-sdk[JavaScript AWS SDK v2] (`aws-sdk`). - -[float] -===== Bug fixes - -* Fix inconsistencies in HTTP spans from other APM agents. - <> will now be "http" for HTTP, HTTPS, and - HTTP/2 outgoing spans -- previously it was "http", "https", "http2", - respectively. As well, <> will now be the HTTP - method (e.g. "GET", "PUT", "POST"), rather than "http". ({pull}2075[#2075]) - -* Fixed error where SQS messages sent without an active transactions could - crash the agent. ({issues}2113[#2113]) - -* Fixed support for proxies in destination context ({issues}1770[#1770]) - -[[release-notes-3.16.0]] -==== 3.16.0 - 2021/06/14 - -[float] -===== Features - -* Added <> - configuration field, allowing users to set a time threshold value that spans - must reach before the agent will add a stack trace to the span. As a result, - many short spans that previously included stack traces by default no longer - will. - -* Prefer W3C "traceparent" header over "elastic-apm-traceparent" for incoming - requests. {pull}2079[#2079] - -[float] -===== Bug fixes - -* Fix a crash (`TypeError: lastPrepareStackTrace`) in the agent when used with - React v17 and later ({issues}1980[#1980]). - -* Performance improvements have been made in error and stacktrace capture ({pull}2094[#2094]). - This also included in two bug fixes: -+ -** Before this change, some captured errors (for example a `next(new Error('boom')` from - an Express handler) would mark the error as "unhandled" incorrectly. "Unhandled" - exceptions are those caught by an `uncaughtException` handler. -** Before this change, source context lines for a stacktrace would not properly - use the "sourcesContext" field of a file's source map. - - -[[release-notes-3.15.0]] -==== 3.15.0 - 2021/05/19 - -[float] -===== Features - -* Add support for Node.js v16. (This also drops testing of Node.js v13 - releases.) {pull}2055[#2055] - -[float] -===== Bug fixes - -* Update TypeScript typings for `Agent.setLabel` and `Agent.addLabels` to - include the `stringify` argument that was added in v3.11.0. - - -[[release-notes-3.14.0]] -==== 3.14.0 - 2021/04/19 - -[float] -===== Features - -* Add `apm.addMetadataFilter(fn)` for filtering the - https://www.elastic.co/guide/en/apm/server/current/metadata-api.html[metadata object] - sent to APM server. - -* The handling of sending events (transactions, spans, errors) to APM server - has improved in a few ways. During temporary spikes in load and/or an APM - server that is unresponsive, the agent will buffer a number of events and - *drop* them above a certain limit (configurable via <>). - This helps ensure the agent does not overly consume memory and CPU. As well, - the agent will now https://github.com/elastic/apm/blob/main/specs/agents/transport.md#transport-errors[backoff] - when the APM server errors. Finally, improved error handling means it will - terminate failing requests to the APM server more quickly. -+ -Note: v1 of this agent (EOL'd 2 years ago), included a `maxQueueSize` config -variable with a different meaning. If you have a lingering usage of that -setting (also possibly as the `ELASTIC_APM_MAX_QUEUE_SIZE` environment -variable), then it should be removed. - -* Adds support for Amazon SQS queues via `aws-sdk` instrumentation that - partially implements the https://github.com/elastic/apm/blob/main/specs/agents/tracing-instrumentation-messaging.md[APM messaging spec], - and adds `queue.latency.min.ms`, `queue.latency.max.ms`, and `queue.latency.avg.ms` - metrics for SQS queues. - -[float] -===== Bug fixes - -* Fixed bug where the URL property for outgoing HTTP request spans was set - with the server's IP address rather than its hostname. The Agent now sets - this property with the actual URL requested by Node.js. {issues}2035[#2035] - -* Fixed bug where external services were not listed under Dependencies on the - APM Service Overview page due to the trace-context propagated `sample_rate` - value not being set on either transactions or spans. - -[[release-notes-3.13.0]] -==== 3.13.0 - 2021/04/06 - -[float] -===== Features - -* The APM agent's own internal logging now uses structured JSON logging using - the https://getpino.io/#/docs/api?id=logger[pino API], and formatted in - {ecs-logging-ref}/intro.html[ecs-logging] format. The log records on stdout - are now single-line JSON objects. For example: -+ -[source,bash] ----- -# Before -APM Server transport error (ECONNREFUSED): connect ECONNREFUSED 127.0.0.1:8200 - -# After -{"log.level":"error","@timestamp":"2021-03-19T00:21:17.571Z","log":{"logger":"elastic-apm-node"}, -"ecs":{"version":"1.6.0"},"message":"APM Server transport error (ECONNREFUSED): connect ECONNREFUSED 127.0.0.1:8200"} ----- -+ -Pretty formatting (and filtering) on the console may be done via the -https://github.com/trentm/go-ecslog[`ecslog`] tool. -+ -A custom <> is still supported as before. However, a non-pino custom -logger will only receive the "message" field, and not structured log fields -as they are added over time. - -* Add support for setting the `ELASTIC_APM_LOGGER=false` environment variable - to disable/ignore a given custom <>. This is to support easier - <> for troubleshooting. - -[float] -===== Bug fixes - -* Lock package dependency "elastic-apm-http-client@9.6.0" to avoid using - v9.7.0 for now, because it is breaking tests. A coming release will get back - on the latest of this dependency. {issues}2032[#2032] - -* Remove the "ancestors" field from a log.trace message on startup. Its info - is a duplicate of info in the "startTrace" field in the same log record. - {pull}2005[#2005] - -* Remove the accidental `nodejs.eventloop.delay.ns` metric that was always - reporting a zero value. The existing `nodejs.eventloop.delay.avg.ms` is - the intended metric. {pull}1993[#1993] - - -[[release-notes-3.12.1]] -==== 3.12.1 - 2021/02/25 - -[float] -===== Bug fixes - -* fix: Update https://github.com/elastic/apm-nodejs-http-client/blob/main/CHANGELOG.md#v951[apm-server client] - to fix a {issues}1749[possible crash] when polling for central config. - - -[[release-notes-3.12.0]] -==== 3.12.0 - 2021/02/21 - -[float] -===== Features - -* feat: Set span outcome to success or failure depending on whether an error - was captured during when the span was active. {issues}1814[#1814] - -* feat: Adds public `setOutcome` method to span and transaction APIs, and - adds a top level `setTransactionOutcome` and `setSpanOutcome` to set - outcome values for the current active transaction or active span. -* Limit the `transactionSampleRate` value to 4 decimal places of precision - according to the shared https://github.com/elastic/apm/blob/main/specs/agents/tracing-sampling.md#transaction_sample_rate-configuration[APM spec]. This ensures that propagated sampling rate - in the `tracestate` header is short and consistent. {pull}1979[#1979] - -[float] -===== Bug fixes - -* fix: It was possible for fetching central config to result in the - `cloudProvider` config value being reset to its default. {issues}1976[#1976] - -* fix: fixes bug where tedious could crash the agent on bulk inserts {pull}1935[#1935] + - Reported https://discuss.elastic.co/t/apm-agent-crashes-nodejs-after-reporting-exception-in-tedious-instrumentation-code/259851[via the forum]. - The error symptom was: `Cannot read property 'statement' of undefined` - -[[release-notes-3.11.0]] -==== 3.11.0 - 2021/02/08 - -[float] -===== Features - -* feat: add `apm.getServiceName()` {pull}1949[#1949] + - This will be used by https://github.com/elastic/ecs-logging-nodejs[ecs-logging packages] - to integrate with APM. - -* feat: support numeric and boolean labels {pull}1909[#1909] + - Add an optional `stringify` option to `apm.setLabel(name, version, stringify = true)` - and `apm.addLabels(labels, stringify = true)`, which can be set `false` to - allow numeric and boolean labels. Stringify defaults to true for backwards - compatibility -- stringification will be removed in a future major version. - -* feat: added support for cloud metadata fetching {pull}1937[#1937] + - Agent now collects information about its cloud environment and includes this - data in the APM Server's metadata payload. See - https://github.com/elastic/apm/blob/3acd10afa0a9d3510e819229dfce0764133083d3/specs/agents/metadata.md#cloud-provider-metadata[the spec] - for more information. - -[[release-notes-3.10.0]] -==== 3.10.0 - 2021/01/11 - -[float] -===== Features - -* feat: Improve handling of raw body parsing - The agent will now report raw/`Buffer` encoded post bodies as ''. - -* feat: Add support for api keys {pull}1818[#1818] + - This allows the usage of API keys for authentication to the APM server - -* feat: Add automatic instrumentation of the https://github.com/elastic/elasticsearch-js[@elastic/elasticsearch] package {pull}1877[#1870] -+ -The instrumentation of the legacy "elasticsearch" package has also changed -slightly to commonalize: -+ -** "span.context.destination" is set on all Elasticsearch spans, not just a - subset of query-like API endpoints. -** For query-like API endpoints (e.g. `/_search`), the capturing of query details - on "span.context.db.statement" has changed (a) to include *both* the - query params and the request body if both exist (separated by `\n\n`) and - (b) to *URL encode* the query params, rather than JSON encoding. - -* feat: Add `captureAttributes` boolean option to `apm.captureError()` to - allow *disabling* the automatic capture of Error object properties. This - is useful for cases where those properties should not be sent to the APM - Server, e.g. for performance (large string fields) or security (PII data). - {pull}1912[#1912] - -* feat: Add `log_level` central config support. {pull}1908[#1908] + - Spec: https://github.com/elastic/apm/blob/main/specs/agents/logging.md - -* feat: Add `sanitize_field_names` configuration option. + - Allows users to configure a list of wildcard patterns to _remove_ items - from the agent's HTTP header and `application/x-www-form-urlencoded` payloads. - {pull}1898[#1898] - ** https://github.com/elastic/apm/blob/main/specs/agents/sanitization.md[spec] - ** https://github.com/elastic/apm-agent-nodejs/blob/main/docs/configuration.asciidoc#sanitize-field-names[docs] - -[float] -===== Bug fixes - -* fix: Fix parsing of comma-separated strings for relevant config vars to allow - whitespace around the commas. E.g.: -+ ----- -export ELASTIC_APM_TRANSACTION_IGNORE_URLS='/ping, /metrics*' ----- -+ -Config vars affected are: `disableInstrumentations`, `transactionIgnoreUrls` -`addPatch`, and `globalLabels`. -* fix: Correct the environment variable for setting `transactionIgnoreUrl` - (added in v3.9.0) from `ELASTIC_TRANSACTION_IGNORE_URLS` to - `ELASTIC_APM_TRANSACTION_IGNORE_URLS`. - - -[[release-notes-3.9.0]] -==== 3.9.0 - 2020/11/30 - -[float] -===== Features - -* feat: support fastify 3 {pull}1891[#1891] + - Adds .default and .fastify module.exports to instrumented fastify function - for 3.x line, and prefers req.routerMethod and req.routerPath for - transaction name -* feat: Set "destination" context on spans for "mongodb". {pull}1893[#1893] + - This allows Kibana APM Service Maps to show a "mongodb" node for services using - the https://www.npmjs.com/package/mongodb[mongodb] package (which includes - mongoose and mongojs). -* feat: transactionIgnoreUrl wildcard matching {pull}1870[#1870] + - Allows users to ignore URLs using simple wildcard matching patterns that behave - the same across language agents. See https://github.com/elastic/apm/issues/144 - -[float] -===== Bug fixes - -* fix: treat set-cookie in response headers as sensitive data {pull}1886[#1886] -* fix: Synchronous spans would never have `span.sync == true`. {pull}1879[#1879] - - -[[release-notes-3.8.0]] -==== 3.8.0 - 2020/11/09 - -[float] -===== Features - -* feat: expand k8s pod ID discovery regex {pull}1863[#1863] -* feat: implements tracestate {pull}1828[#1828] + - Expands support for the W3C Trace Context specification by adding a tracestate - header implementation, and uses this new header to track the Elastic - transaction sample rate across a trace's service boundaries. -* feat: add span and transaction outcome {pull}1824[#1824] + - This adds an "outcome" field to HTTP(S) - https://github.com/elastic/apm/blob/main/specs/agents/tracing-transactions.md#transaction-outcome[transactions] - and https://github.com/elastic/apm/blob/main/specs/agents/tracing-spans.md#span-outcome[spans]. - -[float] -===== Bug fixes - -* fix(pg): prevent unhandled promise rejection {pull}1846[#1846] -* fix: redis@2.x instrumentation was broken {pull}1852[#1852] -* A number of fixes to the test suite. - -[[release-notes-3.7.0]] -==== 3.7.0 - 2020/8/10 - -* feat(knex): add support for 0.21.x {pull}1801[#1801] -* feat(redis): add support for v3.x {pull}1641[#1641] -* feat(graphql): add support for 15.x {pull}1795[#1795] -* feat(koa-router): add support for 9.x {pull}1772[#1772] -* fix(elasticsearch): ensure requests can be aborted {pull}1566[#1566] -* fix: end span if outgoing http request ends prematurely {pull}1583[#1583] -* fix: don't throw on invalid URL {pull}1771[#1771] -* fix: patch apollo-server-core > 2.14 correctly {pull}1796[#1796] -* fix: add currentTraceIds to typings {pull}1733[#1733] - -[[release-notes-3.6.1]] -==== 3.6.1 - 2020/5/20 - -* fix(package): bump elastic-apm-http-client to ^9.4.0 {pull}1756[#1756] - -[[release-notes-3.6.0]] -==== 3.6.0 - 2020/5/18 - -* feat: add destination metadata for db spans {pull}1687[#1687] -* feat: add support for Node.js 14 {pull}1742[#1742] -* feat(pg): add support for pg v8.x {pull}1743[#1743] -* feat: add metrics for external memory {pull}1724[#1724] -* feat: enrich spans with destination info {pull}1685[#1685] -* fix(instrumentation): add .js to module path {pull}1711[#1711] - -[[release-notes-3.5.0]] -==== 3.5.0 - 2020/3/9 - -* feat(error): get stack trace from Error-like objects {pull}1613[#1613] -* fix: add logUncaughtExceptions conf option to TypeScript typings {pull}1668[#1668] - -[[release-notes-3.4.0]] -==== 3.4.0 - 2020/2/21 - -* feat: support W3C TraceContext traceparent header {pull}1587[#1587] -* feat: add custom metrics API (experimental) {pull}1571[#1571] -* feat(koa-router): add support for v8.x {pull}1642[#1642] -* fix(cassandra): improve support for cassandra-driver v4.4.0+ {pull}1636[#1636] -* fix: support promisifying setTimeout and friends {pull}1636[#1636] - -[[release-notes-3.3.0]] -==== 3.3.0 - 2019/12/13 - -* feat(config): add serverCaCertFile config {pull}1560[#1560] -* feat(config): add central config support for transactionMaxSpans and captureBody {pull}1555[#1555] - -[[release-notes-3.2.0]] -==== 3.2.0 - 2019/11/19 - -* fix(metrics): only register collectors if enabled {pull}1520[#1520] -* fix(ioredis): prevent unhandled promise rejection {pull}1523[#1523] -* chore: add Node 13 to supported engines {pull}1524[#1524] - -[[release-notes-3.1.0]] -==== 3.1.0 - 2019/10/16 - -[float] -===== Features -* feat(mongodb): instrumentation {pull}1423[#1423] -* fix(package): update elastic-apm-http-client to version 9.0.0 {pull}1419[#1419] -* perf: cache 'ids' value of transactions and spans {pull}1434[#1434] - -[float] -===== Bug fixes -* fix: always end transaction when socket is closed prematurely {pull}1439[#1439] -* fix: change logUncaughtExceptions default to false {pull}1432[#1432] -* fix: write stack trace of uncaught exceptions to STDERR {pull}1429[#1429] - -[[release-notes-3.0.0]] -==== 3.0.0 - 2019/9/30 - -[float] -===== Breaking changes -* feat: allow manual instrumentation with `instrument: false` {pull}1114[#1114] -* feat: allow setting span/transaction `type`, `subtype`, and `action` separately (the behavior of the old `type` has changed) {pull}1292[#1292] -* feat: use `external` as span type instead of `ext` {pull}1291[#1291] -* refactor(graphql): use custom transaction type `graphql` for graphql requests instead of `request` {pull}1245[#1245] -* feat(http): add `instrumentIncomingHTTPRequests` config (`disableInstrumentations` now behaves differently) {pull}1298[#1298] -* chore: remove deprecated APIs {pull}1413[#1413] -* chore: drop support for older Node.js versions {pull}1383[#1383] - -[[release-notes-2.x]] -=== Node.js Agent version 2.x - -[[release-notes-2.17.3]] -==== 2.17.3 - 2020/2/27 - -[float] -===== Bug fixes -* fix: support promisifying setTimeout and friends {pull}1649[#1649] -* fix(cassandra): improve support for cassandra-driver v4.4.0+ {pull}1649[#1649] -* fix(knex): make stack traces work in 0.18+ {pull}1500[#1500] -* fix(tedious): ensure shimmed module exposes same API {pull}1496[#1496] -* fix(metrics): do not send transaction breakdowns when disabled {pull}1489[#1489] -* fix(tedious): support 6.5+ {pull}1488[#1488] -* fix: always end transaction when socket is closed prematurely {pull}1445[#1445] -* perf: cache 'ids' value of transactions and spans {pull}1438[#1438] - -[[release-notes-2.17.2]] -==== 2.17.2 - 2019/10/2 - -[float] -===== Bug fixes -* chore(http): workaround(s) to suppress DEP0066 warnings {pull}1424[#1424] - -[[release-notes-2.17.1]] -==== 2.17.1 - 2019/9/26 - -[float] -===== Bug fixes -* fix: support all falsy return values from error filters {pull}1394[#1394] -* fix: capture all non-string http bodies {pull}1381[#1381] - -[[release-notes-2.17.0]] -==== 2.17.0 - 2019/9/19 - -[float] -===== Features -* feat: add support for @koa/router {pull}1346[#1346] -* feat: add methods for logging trace information {pull}1335[#1335] - -[float] -===== Bug fixes -* fix: improve debug output when detecting incoming http request {pull}1357[#1357] -* fix(http): response context propagation on Node.js 12.0 - 12.2 {pull}1339[#1339] - -[[release-notes-2.16.2]] -==== 2.16.2 - 2019/9/3 - -[float] -===== Bug fixes -* fix(lambda): handle traceparent case-insensitively {pull}1319[#1319] - -[[release-notes-2.16.1]] -==== 2.16.1 - 2019/8/28 - -[float] -===== Bug fixes -* fix: avoid throwing when agent is in active: false mode {pull}1278[#1278] - -[[release-notes-2.16.0]] -==== 2.16.0 - 2019/8/26 - -[float] -===== Features -* feat(memcached): instrument memcached v2.2.0 and above {pull}1144[#1144] -* feat(config): add configFile config option {pull}1303[#1303] - -[float] -===== Bug fixes -* fix: bug where spans sometimes wouldn't have stack traces {pull}1299[#1299] -* fix(async_hooks): properly update sync flag {pull}1306[#1306] -* fix: change agent active status log message to debug level {pull}1300[#1300] - -[[release-notes-2.15.0]] -==== 2.15.0 - 2019/8/15 - -[float] -===== Features -* feat(express-graphql): add support for v0.9 {pull}1255[#1255] -* feat(metrics): add metricsLimit option {pull}1273[#1273] - -[[release-notes-2.14.0]] -==== 2.14.0 - 2019/8/12 - -[float] -===== Features -* feat(hapi): support new @hapi/hapi module {pull}1246[#1246] -* feat: allow agent.clearPatches to be called with array of names {pull}1262[#1262] - -[float] -===== Bug fixes -* fix: be less chatty if span stack traces cannot be parsed {pull}1274[#1274] -* perf: use for-of instead of forEach {pull}1275[#1275] - -[[release-notes-2.13.0]] -==== 2.13.0 - 2019/7/30 - -[float] -===== Bug fixes -* fix: standardize user-agent header {pull}1238[#1238] - -[float] -===== Features -* feat: add support for APM Agent Configuration via Kibana {pull}1197[#1197] -* feat(metrics): breakdown graphs {pull}1219[#1219] -* feat(config): default serviceVersion to package version {pull}1237[#1237] - -[[release-notes-2.12.1]] -==== 2.12.1 - 2019/7/7 - -[float] -===== Bug fixes -* fix(knex): abort early on unsupported version of knex {pull}1189[#1189] - -[[release-notes-2.12.0]] -==== 2.12.0 - 2019/7/2 - -[float] -===== Features -* feat(metrics): add runtime metrics {pull}1021[#1021] -* feat(config): add environment option {pull}1106[#1106] - -[[release-notes-2.11.6]] -==== 2.11.6 - 2019/6/11 - -[float] -===== Bug fixes -* fix(express): don't swallow error handling middleware {pull}1111[#1111] - -[[release-notes-2.11.5]] -==== 2.11.5 - 2019/5/27 - -[float] -===== Bug fixes -* fix(metrics): report correct CPU usage on Linux {pull}1092[#1092] -* fix(express): improve names for routes added via app.use() {pull}1013[#1013] - -[[release-notes-2.11.4]] -==== 2.11.4 - 2019/5/27 - -[float] -===== Bug fixes -* fix: don't add traceparent header to signed AWS requests {pull}1089[#1089] - -[[release-notes-2.11.3]] -==== 2.11.3 - 2019/5/22 - -[float] -===== Bug fixes -* fix(span): use correct logger location {pull}1081[#1081] - -[[release-notes-2.11.2]] -==== 2.11.2 - 2019/5/21 - -[float] -===== Bug fixes -* fix: url.parse expects req.url not req {pull}1074[#1074] -* fix(express-slash): expose express handle properties {pull}1070[#1070] - -[[release-notes-2.11.1]] -==== 2.11.1 - 2019/5/10 - -[float] -===== Bug fixes -* fix(instrumentation): explicitly use `require` {pull}1059[#1059] -* chore: add Node.js 12 to package.json engines field {pull}1057[#1057] - -[[release-notes-2.11.0]] -==== 2.11.0 - 2019/5/3 - -[float] -===== Bug fixes -* chore: rename tags to labels {pull}1019[#1019] - -[float] -===== Features -* feat(config): support global labels {pull}1020[#1020] - -[float] -===== Bug fixes -* fix(config): do not use ELASTIC_APM_ prefix for k8s {pull}1041[#1041] -* fix(instrumentation): prevent handler leak in bindEmitter {pull}1044[#1044] - -[[release-notes-2.10.0]] -==== 2.10.0 - 2019/4/15 - -[float] -===== Features -* feat(express-graphql): add support for version ^0.8.0 {pull}1010[#1010] - -[float] -===== Bug fixes -* fix(package): bump elastic-apm-http-client to ^7.2.2 so Kubernetes metadata gets corrected recorded {pull}1011[#1011] -* fix(ts): add TypeScript typings for new traceparent API {pull}1001[#1001] - -[[release-notes-2.9.0]] -==== 2.9.0 - 2019/4/10 - -[float] -===== Features -* feat: add traceparent getter to agent, span and transaction {pull}969[#969] -* feat(template): add support for jade and pug {pull}914[#914] -* feat(elasticsearch): capture more types of queries {pull}967[#967] -* feat: sync flag on spans and transactions {pull}980[#980] - -[float] -===== Bug fixes -* fix(agent): init config/logger before usage {pull}956[#956] -* fix: don't add response listener to outgoing requests {pull}974[#974] -* fix(agent): fix basedir in debug mode when starting agent with -r {pull}981[#981] -* fix: ensure Kubernetes/Docker container info is captured {pull}995[#995] - -[[release-notes-2.8.0]] -==== 2.8.0 - 2019/4/2 - -[float] -===== Features -* feat: add agent.setFramework() method {pull}966[#966] -* feat(config): add usePathAsTransactionName config option {pull}907[#907] -* feat(debug): output configuration if logLevel is trace {pull}972[#972] - -[float] -===== Bug fixes -* fix(express): transaction default name is incorrect {pull}938[#938] - -[[release-notes-2.7.1]] -==== 2.7.1 - 2019/3/28 - -[float] -===== Bug fixes -* fix: instrument http/https.get requests {pull}954[#954] -* fix: don't add traceparent header to S3 requests {pull}952[#952] - -[[release-notes-2.7.0]] -==== 2.7.0 - 2019/3/26 - -[float] -===== Features -* feat: add patch registry {pull}803[#803] -* feat: allow sub-modules to be patched {pull}920[#920] -* feat: add TypeScript typings {pull}926[#926] - -[float] -===== Bug fixes -* fix: update measured-reporting to fix Windows installation issue {pull}933[#933] -* fix(lambda): do not wrap context {pull}931[#931] -* fix(lambda): fix cloning issues of context {pull}947[#947] -* fix(metrics): use noop logger in metrics reporter {pull}912[#912] -* fix(transaction): don't set transaction result if it's null {pull}936[#936] -* fix(agent): allow flush callback to be undefined {pull}934[#934] -* fix: handle promise rejection in case Elasticsearch client throws {pull}870[#870] -* chore: change 'npm run' command namespaces {pull}944[#944] - -[[release-notes-2.6.0]] -==== 2.6.0 - 2019/3/5 - -[float] -===== Features -* feat: add support for Fastify framework {pull}594[#594] -* feat(lambda): accept parent span in lambda wrapper {pull}881[#881] -* feat(lambda): support promise form {pull}871[#871] - -[float] -===== Bug fixes -* fix: ensure http headers are always recorded as strings {pull}895[#895] -* fix(metrics): prevent 0ms timers from being created {pull}872[#872] -* fix(config): apiRequestSize should be 768kb {pull}848[#848] -* fix(express): ensure correct transaction names {pull}842[#842] - -[[release-notes-2.5.1]] -==== 2.5.1 - 2019/2/4 - -[float] -===== Bug fixes -* fix(metrics): ensure NaN becomes 0, not null {pull}837[#837] - -[[release-notes-2.5.0]] -==== 2.5.0 - 2019/1/29 - -[float] -===== Features -* feat(metrics): added basic metrics gathering {pull}731[#731] - -[[release-notes-2.4.0]] -==== 2.4.0 - 2019/1/24 - -[float] -===== Features -* feat: add ability to set custom log message for errors {pull}824[#824] -* feat: add ability to set custom timestamp for errors {pull}823[#823] -* feat: add support for custom start/end times {pull}818[#818] - -[[release-notes-2.3.0]] -==== 2.3.0 - 2019/1/22 - -[float] -===== Bug fixes -* fix(parsers): move port fix into parser {pull}820[#820] -* fix(mongo): support 3.1.10+ {pull}793[#793] - -[float] -===== Features -* feat(config): add captureHeaders config {pull}788[#788] -* feat(config): add container info options {pull}766[#766] - -[[release-notes-2.2.1]] -==== 2.2.1 - 2019/1/21 - -[float] -===== Bug fixes -* fix: ensure request.url.port is a string on transactions {pull}814[#814] - -[[release-notes-2.2.0]] -==== 2.2.0 - 2019/1/21 - -[float] -===== Features -* feat(koa): record framework name and version {pull}810[#810] -* feat(cassandra): support 4.x {pull}784[#784] -* feat(config): validate serverUrl port {pull}795[#795] -* feat: add transaction.type to errors {pull}805[#805] - -[float] -===== Bug fixes -* fix: filter outgoing http headers with any case {pull}799[#799] -* fix: we don't support mongodb-core v3.1.10+ {pull}792[#792] - -[[release-notes-2.1.0]] -==== 2.1.0 - 2019/1/15 - -[float] -===== Features -* feat(error): include sampled flag on errors {pull}767[#767] -* feat(span): add tags to spans {pull}757[#757] - -[float] -===== Bug fixes -* fix(tedious): don't fail on newest tedious v4.1.3 {pull}775[#775] -* fix(graphql): fix span name for unknown queries {pull}756[#756] - -[[release-notes-2.0.6]] -==== 2.0.6 - 2018/12/18 - -[float] -===== Bug fixes -* fix(graphql): don't throw on invalid query {pull}747[#747] -* fix(koa-router): support more complex routes {pull}749[#749] - -[[release-notes-2.0.5]] -==== 2.0.5 - 2018/12/12 - -[float] -===== Bug fixes -* fix: don't create spans for APM Server requests {pull}735[#735] - -[[release-notes-2.0.4]] -==== 2.0.4 - 2018/12/7 -* chore: update engines field in package.json {pull}727[#727] -* chore(package): bump random-poly-fill to ^1.0.1 {pull}726[#726] - -[[release-notes-2.0.3]] -==== 2.0.3 - 2018/12/7 - -[float] -===== Bug fixes -* fix(restify): support an array of handlers {pull}709[#709] -* fix: don't throw on older versions of Node.js 6 {pull}711[#711] - -[[release-notes-2.0.2]] -==== 2.0.2 - 2018/12/4 - -[float] -===== Bug fixes -* fix: use randomFillSync polyfill on Node.js <6.13.0 {pull}702[#702] -* fix(hapi): ignore internal events channel {pull}700[#700] - -[[release-notes-2.0.1]] -==== 2.0.1 - 2018/11/26 - -[float] -===== Bug fixes -* fix: log APM Server API errors correctly {pull}692[#692] - -[[release-notes-2.0.0]] -==== 2.0.0 - 2018/11/14 - -[float] -===== Breaking changes -* chore: remove support for Node.js 4 and 9 -* chore: remove deprecated buildSpan function {pull}642[#642] -* feat: support APM Server intake API version 2 {pull}465[#465] -* feat: improved filtering function API {pull}579[#579] -* feat: replace double-quotes with underscores in tag names {pull}666[#666] -* feat(config): change config order {pull}604[#604] -* feat(config): support time suffixes {pull}602[#602] -* feat(config): stricter boolean parsing {pull}613[#613] - -[float] -===== Features - * feat: add support for Distributed Tracing {pull}538[#538] - * feat(transaction): add transaction.ensureParentId function {pull}661[#661] - * feat(config): support byte suffixes {pull}601[#601] - * feat(transaction): restructure span_count and include total {pull}553[#553] - * perf: improve Async Hooks implementation {pull}679[#679] - -[[release-notes-1.x]] -=== Node.js Agent version 1.x - -[[release-notes-1.14.3]] -==== 1.14.3 - 2018/11/13 - * fix(async_hooks): more reliable cleanup {pull}674[#674] - -[[release-notes-1.14.2]] -==== 1.14.2 - 2018/11/10 - * fix: prevent memory leak due to potential reference cycle {pull}667[#667] - -[[release-notes-1.14.1]] -==== 1.14.1 - 2018/11/8 - * fix: promise.then() resolve point {pull}663[#663] - -[[release-notes-1.14.0]] -==== 1.14.0 - 2018/11/6 - * feat(agent): return uuid in captureError callback {pull}636[#636] - * feat(apollo-server-express): set custom GraphQL transaction names {pull}648[#648] - * feat(finalhandler): improve capturing of errors in Express {pull}629[#629] - * fix(http): bind writeHead to transaction {pull}637[#637] - * fix(shimmer): safely handle property descriptors {pull}634[#634] - -[[release-notes-1.13.0]] -==== 1.13.0 - 2018/10/19 - * feat(ioredis): add support for ioredis version 4.x {pull}516[#516] - * fix(ws): allow disabling WebSocket instrumentation {pull}599[#599] - * fix: allow flushInterval to be set from env {pull}568[#568] - * fix: default transactionMaxSpans to 500 {pull}567[#567] - -[[release-notes-1.12.0]] -==== 1.12.0 - 2018/8/31 - * feat(restify): add Restify instrumentation {pull}517[#517] - * feat(config): default serviceName to package name {pull}508[#508] - * fix: always call agent.flush() callback {pull}537[#537] - -[[release-notes-1.11.0]] -==== 1.11.0 - 2018/8/15 - * feat(filters): filter set-cookie headers {pull}485[#485] - * fix(express): cannot create property symbol {pull}510[#510] - -[[release-notes-1.10.2]] -==== 1.10.2 - 2018/8/8 - * fix: ensure logger config can update {pull}503[#503] - * perf: improve request body parsing speed {pull}492[#492] - -[[release-notes-1.10.1]] -==== 1.10.1 - 2018/7/31 - * fix(graphql): handle execute args object {pull}484[#484] - -[[release-notes-1.10.0]] -==== 1.10.0 - 2018/7/30 - * feat(cassandra): instrument Cassandra queries {pull}437[#437] - * feat(mssql): instrument SQL Server queries {pull}444[#444] - -[[release-notes-1.9.0]] -==== 1.9.0 - 2018/7/25 - * fix(parsers): use basic-auth rather than req.auth {pull}475[#475] - * feat(agent): add currentTransaction getter {pull}462[#462] - * feat: add support for ws 6.x {pull}464[#464] - -[[release-notes-1.8.3]] -==== 1.8.3 - 2018/7/11 - * perf: don't patch newer versions of mimic-response {pull}442[#442] - -[[release-notes-1.8.2]] -==== 1.8.2 - 2018/7/4 - * fix: ensure correct streaming when using mimic-response {pull}429[#429] - -[[release-notes-1.8.1]] -==== 1.8.1 - 2018/6/27 - * fix: improve ability to run in an environment with muliple APM vendors {pull}417[#417] - -[[release-notes-1.8.0]] -==== 1.8.0 - 2018/6/23 - * feat: truncate very long error messages {pull}413[#413] - * fix: be unicode aware when truncating body {pull}412[#412] - -[[release-notes-1.7.1]] -==== 1.7.1 - 2018/6/20 - * fix(express-queue): retain continuity through express-queue {pull}396[#396] - -[[release-notes-1.7.0]] -==== 1.7.0 - 2018/6/18 - * feat(mysql): support mysql2 module {pull}298[#298] - * feat(graphql): add support for the upcoming GraphQL v14.x {pull}399[#399] - * feat(config): add option to disable certain instrumentations {pull}353[#353] - * feat(http2): instrument client requests {pull}326[#326] - * fix: get remoteAddress before HTTP request close event {pull}384[#384] - * fix: improve capture of spans when EventEmitter is in use {pull}371[#371] - -[[release-notes-1.6.0]] -==== 1.6.0 - 2018/5/28 - * feat(http2): instrument incoming http2 requests {pull}205[#205] - * fix(agent): allow agent.endTransaction() to set result {pull}350[#350] - -[[release-notes-1.5.4]] -==== 1.5.4 - 2018/5/15 - * chore: allow Node.js 10 in package.json engines field {pull}345[#345] - -[[release-notes-1.5.3]] -==== 1.5.3 - 2018/5/14 - * fix: guard against non string err.message - -[[release-notes-1.5.2]] -==== 1.5.2 - 2018/5/11 - * fix(express): string errors should not be reported - -[[release-notes-1.5.1]] -==== 1.5.1 - 2018/5/10 - * fix: don't throw if span callsites can't be collected - -[[release-notes-1.5.0]] -==== 1.5.0 - 2018/5/9 - * feat: add agent.addTags() method {pull}313[#313] - * feat: add agent.isStarted() method {pull}311[#311] - * feat: allow calling transaction.end() with transaction result {pull}328[#328] - * fix: encode spans even if their stack trace can't be captured {pull}321[#321] - * fix(config): restore custom logger feature {pull}299[#299] - * fix(doc): lambda getting started had old argument {pull}296[#296] - -[[release-notes-1.4.0]] -==== 1.4.0 - 2018/4/9 - * feat(lambda): implement manual lambda instrumentation {pull}234[#234] - -[[release-notes-1.3.0]] -==== 1.3.0 - 2018/3/22 - * feat(request): include ppid {pull}286[#286] - -[[release-notes-1.2.1]] -==== 1.2.1 - 2018/3/15 - * fix(span): Do not pass stack frames into promises (memory leak fix) {pull}269[#269] - -[[release-notes-1.2.0]] -==== 1.2.0 - 2018/3/13 - * feat(config): add serverTimeout {pull}238[#238] - * fix(config): set default maxQueueSize to 100 {pull}270[#270] - * feat(ws): add support for ws v5 {pull}267[#267] - -[[release-notes-1.1.1]] -==== 1.1.1 - 2018/3/4 - * fix(mongodb): don't throw if span cannot be built {pull}265[#265] - -[[release-notes-1.1.0]] -==== 1.1.0 - 2018/2/28 - * feat: add agent.startSpan() function {pull}262[#262] - * feat(debug): output more debug info on start {pull}254[#254] - -[[release-notes-1.0.3]] -==== 1.0.3 - 2018/2/14 - * fix: ensure context.url.full property is truncated if too long {pull}242[#242] - -[[release-notes-1.0.2]] -==== 1.0.2 - 2018/2/13 - * fix(express): prevent invalid errors from crashing {pull}240[#240] - -[[release-notes-1.0.1]] -==== 1.0.1 - 2018/2/9 - * fix: don't add req/res to unsampled transactions {pull}236[#236] - -[[release-notes-1.0.0]] -==== 1.0.0 - 2018/2/6 - * feat(instrumentation): support sampling {pull}154[#154] - * feat(transaction): add `transactionMaxSpans` config option {pull}170[#170] - * feat(errors): add captureError call location stack trace {pull}181[#181] - * feat: allow setting of framework name and version {pull}228[#228] - * feat(protcol): add `url.full` to intake API payload {pull}166[#166] - * refactor(config): replace `logBody` with `captureBody` {pull}214[#214] - * refactor(config): unify config options with python {pull}213[#213] - * fix: don't collect source code for in-app span frames by default {pull}229[#229] - * fix(protocol): report dropped span counts in intake API payload {pull}172[#172] - * refactor(protocol): always include handled flag in intake API payload {pull}191[#191] - * refactor(protocol): move process fields to own namespace in intake API payload {pull}155[#155] - * refactor(protocol): rename `uncaught` to `handled` in intake API payload {pull}140[#140] - * refactor(protocol): rename `in_app` to `library_frame` in intake API payload {pull}96[#96] - * refactor: rename app to service {pull}93[#93] - * refactor: rename trace to span {pull}92[#92] - -[[release-notes-0.x]] -=== Node.js Agent version 0.x - -[[release-notes-0.12.0]] -==== 0.12.0 - 2018/1/24 - * feat(*): control amount of source context lines collected using new config options {pull}196[#196] - * feat(agent): add public flush function to force flush of transaction queue: agent.flush([callback]) {pull}187[#187] - * feat(mongodb): add support for mongodb-core 3.x {pull}190[#190] - * refactor(config): update default flushInterval to 10 seconds (lower memory usage) {pull}186[#186] - * chore(*): drop support for Node.js 5 and 7 {pull}169[#169] - * refactor(instrumentation): encode transactions as they are added to the queue (lower memory usage) {pull}184[#184] - -[[release-notes-0.11.0]] -==== 0.11.0 - 2018/1/11 - * feat(*): Set default stack trace limit to 50 frames {pull}171[#171] - * feat(ws): add support for ws@4.x {pull}164[#164] - * feat(errors): associate errors with active transaction - -[[release-notes-0.10.0]] -==== 0.10.0 - 2018/1/3 - * feat(express): auto-track errors (BREAKING CHANGE: removed express middleware) {pull}127[#127] - * feat(hapi): add hapi 17 support {pull}146[#146] - * fix(*): fix Node.js 8 support using async_hooks {pull}77[#77] - * fix(graphql): support sync execute {pull}139[#139] - * refactor(agent): make all config properties private (BREAKING CHANGE) {pull}107[#107] - -[[release-notes-0.9.0]] -==== 0.9.0 - 2017/12/15 - * feat(conf): allow serverUrl to contain a sub-path {pull}116[#116] - * refactor(*): better format of error messages from the APM Server {pull}108[#108] - -[[release-notes-0.8.1]] -==== 0.8.1 - 2017/12/13 - * docs(*): we're now in beta! {pull}103[#103] - -[[release-notes-0.8.0]] -==== 0.8.0 - 2017/12/13 - * feat(handlebars): instrument handlebars {pull}98[#98] - -[[release-notes-0.7.0]] -==== 0.7.0 - 2017/12/6 - * feat(parser): add sourceContext config option to control if code snippets are sent to the APM Server {pull}87[#87] - * fix(*): move https-pem to list of devDependencies - -[[release-notes-0.6.0]] -==== 0.6.0 - 2017/11/17 - * feat(queue): add maxQueueSize config option {pull}56[#56] - -[[release-notes-0.5.0]] -==== 0.5.0 - 2017/11/17 - * refactor(*): drop support for Node.js <4 {pull}65[#65] - * refactor(*): rename module to elastic-apm-node {pull}71[#71] - * feat(queue): add fuzziness to flushInterval {pull}63[#63] - -[[release-notes-0.4.0]] -==== 0.4.0 - 2017/11/15 - * fix(https): instrument https.request in Node.js v9 - * refactor(http): log HTTP results in groups of 100 {pull}68[#68] - * fix(api): add language to APM Server requests {pull}64[#64] - * refactor(trans): set default transaction.result to success {pull}67[#67] - * refactor(config): rename timeout config options {pull}59[#59] - -[[release-notes-0.3.1]] -==== 0.3.1 - 2017/10/3 - * fix(parsers): don't log context.request.url.search as null {pull}48[#48] - * fix(parsers): separate hostname and port when parsing Host header {pull}47[#47] - -[[release-notes-0.3.0]] -==== 0.3.0 - 2017/9/20 - * fix(instrumentation): don't sample transactions {pull}40[#40] - * feat(graphql): include GraphQL operation name in trace and transaction names {pull}27[#27] - * feat(tls): add validateServerCert config option {pull}32[#32] - * feat(parser): support http requests with full URI's {pull}26[#26] - * refactor(*): remove appGitRef config option - * fix(instrumentation): fix setting of custom flushInterval - * feat(elasticsearch): add simple Elasticsearch instrumentation - * fix(*): don't start agent if appName is invalid - -[[release-notes-0.2.0]] -==== 0.2.0 - 2017/8/28 - * refactor(*): support new default port 8200 in APM Server - * refactor(*): support new context.response status code format - -[[release-notes-0.1.1]] -==== 0.1.1 - 2017/8/17 - * fix(instrumentation): don't fail when sending transactions to APM Server - -[[release-notes-0.1.0]] -==== 0.1.0 - 2017/8/17 - * Initial release diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ae9b7a2af0..d714f140e1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -43,7 +43,7 @@ Once your changes are ready to submit for review: * See the [Commit message guidelines](#commit-message-guidelines) below. * If your changes will be visible to users of this package, then add an item - to the "Unreleased" section of [the changelog](./CHANGELOG.asciidoc). + to the "Next" section of [release notes](docs/release-notes/index.md). * If you are changing usage of this package, are there updates under "docs/" that should be made? @@ -194,11 +194,10 @@ A release involves the following published artifacts: - the version in `package.json`, - the version in `package-lock.json` (by running `npm install`), - all cases of "REPLACEME" in docs and comments, - - "CHANGELOG.asciidoc": Add missing changelog entries, if any. Then change - the "Unreleased" section title to: + - "docs/release-notes/index.md": Add missing release notes, if any. Then change + the "Next" section title to: ``` - [[release-notes-x.y.z]] - ==== x.y.z - YYYY/MM/DD + ## x.y.z [x-y-z] ``` If there are particular highlights for the release, then it can be helpful to point those out in the PR description. diff --git a/docs/agent-api.asciidoc b/docs/agent-api.asciidoc deleted file mode 100644 index d0a7da0026..0000000000 --- a/docs/agent-api.asciidoc +++ /dev/null @@ -1,959 +0,0 @@ -[[agent-api]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/agent-api.html[elastic.co] -endif::[] - -=== `Agent` API - -The Elastic APM Node.js agent is a singleton. You get the agent instance by requiring either `elastic-apm-node` or `elastic-apm-node/start`. The agent is also returned by the <> method, which allows you to require and start the agent on the same line: - -[source,js] ----- -const apm = require('elastic-apm-node').start(...) ----- - -If you need to access the `Agent` in any part of your codebase, -you can simply require `elastic-apm-node` to access the already started singleton. -You therefore don't need to manage or pass around the started `Agent` yourself. - - -[[apm-start]] -==== `apm.start([options])` - -Starts the Elastic APM agent for Node.js and returns itself. - -[IMPORTANT] -==== -For the APM agent to automatically instrument Node.js modules, it must be started before those modules are loaded. See <> for details and possible surprises with compilers/transpilers/bundlers. -==== - -See the <> for available options. - -[[apm-is-started]] -==== `apm.isStarted()` - -[small]#Added in: v1.5.0# - -Use `isStarted()` to check if the agent has already started. -Returns `true` if the agent has started, -otherwise returns `false`. - - -[[apm-get-service-name]] -==== `apm.getServiceName()` - -[small]#Added in: v3.11.0# - -Get the configured <>. If a service name was not -explicitly configured, this value may have been automatically determined. -The service name is not determined until `agent.start()`, so will be `undefined` -until then. A misconfigured agent can have a `null` service name. - - -[[apm-get-service-version]] -==== `apm.getServiceVersion()` - -[small]#Added in: v4.2.0# - -Get the configured <>. If a service version was not explicitly -configured, this value may have been automatically determined. The service -version is not determined until `agent.start()`, so will be `undefined` until -then. - - -[[apm-get-service-environment]] -==== `apm.getServiceEnvironment()` - -[small]#Added in: v4.2.0# - -Get the configured <>. - - -[[apm-get-service-node-name]] -==== `apm.getServiceNodeName()` - -[small]#Added in: v4.2.0# - -Get the configured <>. If the APM agent is not configured -with an explicit value, this will return `undefined`. - - -[[apm-set-framework]] -==== `apm.setFramework(options)` - -[small]#Added in: v2.8.0# - -* `options` +{type-object}+ The following options are supported: -** `name` +{type-string}+ Framework name. -** `version` +{type-string}+ Framework version. -** `overwrite` +{type-boolean}+ If set to `false`, - the <> and <> provided as <> will not be overwritten. - *Default:* `true`. - -Set or change the <> or <> after the agent has started. -These config options can also be provided as part of the <>. - -[[apm-add-filter]] -==== `apm.addFilter(fn)` - -[small]#Added in: v0.1.0# - -Use `addFilter()` to supply a filter function. - -Each filter function will be called just before data is being sent to the APM Server. -This will allow you to manipulate the data being sent, -for instance to remove sensitive information like passwords etc. -(Note: Filters added via `addFilter` are *not* applied to the "metadata" -object sent to the APM Server -- use `addMetadataFilter` instead.) - -Each filter function will be called in the order they were added, -and will receive a `payload` object as the only argument, -containing the data about to be sent to the APM Server. - -The format of the payload depends on the event type being sent. -For details about the different formats, -see the {apm-guide-ref}/api-events.html[events intake API docs]. - -The filter function is synchronous and should return the manipulated payload object. -If a filter function doesn't return any value or returns a falsy value, -the remaining filter functions will not be called and the payload *will not* be sent to the APM Server. - -Example usage: - -[source,js] ----- -apm.addFilter(function redactSecretHeader(payload) { - if (payload.context && - payload.context.request && - payload.context.request.headers && - payload.context.request.headers['x-secret']) { - // redact sensitive data - payload.context.request.headers['x-secret'] = '[REDACTED]' - } - - // remember to return the modified payload - return payload -}) ----- - -Though you can also use filter functions to add new contextual information to the `user` and `custom` properties, -it's recommended that you use <> and <> for that purpose. - -[[apm-add-error-filter]] -==== `apm.addErrorFilter(fn)` - -[small]#Added in: v2.0.0# - -Similar to <>, -but the `fn` will only be called with error payloads. - -[[apm-add-transaction-filter]] -==== `apm.addTransactionFilter(fn)` - -[small]#Added in: v2.0.0# - -Similar to <>, -but the `fn` will only be called with transaction payloads. - -[[apm-add-span-filter]] -==== `apm.addSpanFilter(fn)` - -[small]#Added in: v2.0.0# - -Similar to <>, -but the `fn` will only be called with span payloads. - -[[apm-add-metadata-filter]] -==== `apm.addMetadataFilter(fn)` - -[small]#Added in: v3.14.0# - -Use `addMetadataFilter(fn)` to supply a filter function for the -{apm-guide-ref}/api-metadata.html#api-metadata-schema[metadata object] -sent to the APM Server. This will allow you to manipulate the data being -sent, for instance to remove possibly sensitive information. - -Each filter function will be called in the order they were added, and will -receive a `metadata` object as the only argument. The filter function is -synchronous and must return the manipulated object. Example usage: - -[source,js] ----- -apm.addMetadataFilter(function dropArgv(metadata) { - if (metadata.process && metadata.process.argv) { - delete metadata.process.argv - } - return metadata -}) ----- - -Warning: It is the responsibility of the author to ensure the returned object -conforms to the -{apm-guide-ref}/api-metadata.html#api-metadata-schema[metadata schema] -otherwise all APM data injest will fail. A metadata filter that breaks the -metadata will result in error logging from the agent, something like: - -[source,text] ----- -ERROR (elastic-apm-node): APM Server transport error (400): Unexpected APM Server response -APM Server accepted 0 events in the last request -Error: validation error: 'metadata' required - Document: {"metadata":null} ----- - - -[[apm-set-user-context]] -==== `apm.setUserContext(context)` - -[small]#Added in: v0.1.0# - -* `context` +{type-object}+ Accepts the following optional properties: -** `id` +{type-string}+ | +{type-number}+ The user's ID. -** `username` +{type-string}+ The user's username. -** `email` +{type-string}+ The user's e-mail. - -Call this to enrich collected performance data and errors with information about the user/client. -This function can be called at any point during the request/response life cycle (i.e. while a transaction is active). - -The given `context` will be added to the active transaction. -If no active transaction can be found, -`false` is returned. -Otherwise `true`. - -It's possible to call this function multiple times within the scope of the same active transaction. -For each call, the properties of the `context` argument are shallow merged with the context previously given. - -If an error is captured, -the context from the active transaction is used as context for the captured error, -and any custom context given as the 2nd argument to <> takes precedence and is shallow merged on top. - -The provided user context is stored under `context.user` in Elasticsearch on both errors and transactions. - -[[apm-set-custom-context]] -==== `apm.setCustomContext(context)` - -[small]#Added in: v0.1.0# - -* `context` +{type-object}+ Can contain any property that can be JSON encoded. - -Call this to enrich collected errors and transactions with any information that you think will help you debug performance issues or errors. -This function can be called at any point while a transaction is active (e.g. during the request/response life cycle of an incoming HTTP request). - -The provided custom context is stored under `context.custom` in APM Server pre-7.0, -or `transaction.custom` and `error.custom` in APM Server 7.0+. - -The given `context` will be added to the active transaction. -If no active transaction can be found, -`false` is returned. -Otherwise `true`. - -It's possible to call this function multiple times within the scope of the same active transaction. -For each call, the properties of the `context` argument are shallow merged with the context previously given. - -If an error is captured, -the context from the active transaction is used as context for the captured error, -and any custom context given as the 2nd argument to <> takes precedence and is shallow merged on top. - -TIP: Before using custom context, ensure you understand the different types of -{apm-guide-ref}/data-model-metadata.html[metadata] that are available. - -[[apm-set-label]] -==== `apm.setLabel(name, value[, stringify = true])` - -[small]#Added in: v0.1.0# + -[small]#Renamed from `apm.setTag()` to `apm.setLabel()`: v2.10.0# + -[small]#Added `stringify` argument in: v3.11.0# - -* `name` +{type-string}+ -Any periods (`.`), asterisks (`*`), or double quotation marks (`"`) will be replaced by underscores (`_`), -as those characters have special meaning in Elasticsearch -* `value` +{type-string}+ | +{type-number}+ | +{type-boolean}+ -If the `stringify` argument is not given, or set to `true` then the given value -will be converted to a string. -* `stringify` +{type-boolean}+ -This defaults to `true` for backwards compatibility, but new usage will -typically want `false`. When true, if a non-string `value` is given, it is -converted to a string before being sent to the APM Server. - -[source,js] ----- -apm.setLabel('productId', 42, false); ----- - -Set a label on the current transaction. -You can set multiple labels on the same transaction. -If an error happens during the current transaction, -it will also get tagged with the same label. - -TIP: Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable -(as opposed to data set via <>). -Before using custom labels, ensure you understand the different types of -{apm-guide-ref}/data-model-metadata.html[metadata] that are available. - -WARNING: Avoid defining too many user-specified labels. -Defining too many unique fields in an index is a condition that can lead to a -{ref}/mapping.html#mapping-limit-settings[mapping explosion]. - -[[apm-add-labels]] -==== `apm.addLabels({ [name]: value }[, stringify = true])` - -[small]#Added in: v1.5.0# + -[small]#Renamed from `apm.addTags()` to `apm.addLabels()`: v2.10.0# + -[small]#Added `stringify` argument in: v3.11.0# - -* `labels` +{type-object}+ Contains key/value pairs: -** `name` +{type-string}+ -Any periods (`.`), asterisks (`*`), or double quotation marks (`"`) will be replaced by underscores (`_`), -as those characters have special meaning in Elasticsearch -** `value` +{type-string}+ | +{type-number}+ | +{type-boolean}+ -If the `stringify` argument is not given, or set to `true` then the given value -will be converted to a string. -* `stringify` +{type-boolean}+ -This defaults to `true` for backwards compatibility, but new usage will -typically want `false`. When true, if a non-string `value` is given, it is -converted to a string before being sent to the APM Server. - -[source,js] ----- -apm.addLabels({productId: 42, productName: 'butter'}, false); ----- - -Add several labels on the current transaction. -You can add labels multiple times. -If an error happens during the current transaction, -it will also get tagged with the same labels. - -TIP: Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable -(as opposed to data set via <>). -Before using custom labels, ensure you understand the different types of -{apm-guide-ref}/data-model-metadata.html[metadata] that are available. - -WARNING: Avoid defining too many user-specified labels. -Defining too many unique fields in an index is a condition that can lead to a -{ref}/mapping.html#mapping-limit-settings[mapping explosion]. - -[[apm-set-global-label]] -==== `apm.setGlobalLabel(name, value)` - -[small]#Added in: v3.47.0# - -* `name` +{type-string}+ -* `value` +{type-string}+ | +{type-number}+ | +{type-boolean}+ - -Extends the <> configuration. It allows setting labels that are applied to all transactions. A potential use case is to specify a label with the state of your application: `'initializing' | 'available' | 'unhealthy'`. - -TIP: Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable -(as opposed to data set via <>). -Before using custom labels, ensure you understand the different types of -{apm-guide-ref}/data-model-metadata.html[metadata] that are available. - -WARNING: Avoid defining too many user-specified labels. -Defining too many unique fields in an index is a condition that can lead to a -{ref}/mapping.html#mapping-limit-settings[mapping explosion]. - -[[apm-capture-error]] -==== `apm.captureError(error[, options][, callback])` - -[small]#Added in: v0.1.0# - -* `error` - Can be either an +{type-error}+ object, -a <>, -or a <> - -* `options` +{type-object}+ The following options are supported: - -** `timestamp` +{type-number}+ The time when the error happened. -Must be a Unix Time Stamp representing the number of milliseconds since January 1, 1970, 00:00:00 UTC. -Sub-millisecond precision can be achieved using decimals. -If not provided, -the current time will be used - -** `message` - If the `error` argument is an +{type-error}+ object, -it's possible to use this option to supply an additional message string that will be stored along with the error message under `log.message` - -** `user` - See <> for details about this option - -** `custom` - See <> for details about this option - -** `request` +{type-incomingmessage}+ You can associate an error with information about the incoming request to gain additional context such as the request url, headers, and cookies. -However, in most cases, the agent will detect if an error was in response to an http request and automatically add the request details for you. -See <> for more details. - -** `response` +{type-serverresponse}+ You can associate an error with information about the http response to get additional details such as status code and headers. -However, in most cases, the agent will detect if an error occured during an http request and automatically add response details for you. -See <> for more details. - -** `handled` +{type-boolean}+ Adds additional context to the exception to show -whether the error is handled or uncaught. Unhandled errors are immediately -flushed to APM server, in case the application is about the crash. -*Default:* `true`. - -** `labels` +{type-object}+ Add additional context with labels, these labels will be added to the error along with the labels from the current transaction. -See the <> method for details about the format. - -** `captureAttributes` +{type-boolean}+ Whether to include properties on the given +{type-error}+ object in the data sent to the APM Server (as `error.exception.attributes`). *Default:* `true`. - -** `skipOutcome` +{type-boolean}+ Whether to skip setting the outcome value for the current span to `failure`. See <> for more information. *Default:* `false`. - -** `parent` <> | <> | `null` - A Transaction or Span instance to make the parent of this error. If not given (or `undefined`), then the current span or transaction will be used. If `null` is given, then no span or transaction will be used. [small]#(Added in v3.33.0.)# - -* `callback` - Will be called after the error has been sent to the APM Server. -It will receive an `Error` instance if the agent failed to send the error, -and the id of the captured error. - -Send an error to the APM Server: - -[source,js] ----- -apm.captureError(new Error('boom!')) ----- - -[[message-strings]] -===== Message strings - -Instead of an `Error` object, -you can log a plain text message: - -[source,js] ----- -apm.captureError('Something happened!') ----- - -This will also be sent as an error to the APM Server, -but will not be associated with an exception. - -[[parameterized-message-object]] -===== Parameterized message object - -Instead of an `Error` object or a string, -you can supply a special parameterized message object: - -[source,js] ----- -apm.captureError({ - message: 'Could not find user %s with id %d in the database', - params: ['Peter', 42] -}) ----- - -This makes it possible to better group error messages that contain variable data like ID's or names. - -[[metadata]] -===== Metadata - -To ease debugging it's possible to send some extra data with each error you send to the APM Server. -The APM Server intake API supports a lot of different metadata fields, -most of which are automatically managed by the Elastic APM Node.js Agent. -But if you wish you can supply some extra details using `user` or `custom`. -For more details on the properties accepted by the events intake API see the {apm-guide-ref}/api-events.html[events intake API docs]. - -To supply any of these extra fields, -use the optional options argument when calling `apm.captureError()`. - -Here are some examples: - -[source,js] ----- -// Sending some extra details about the user -apm.captureError(error, { - user: { - id: 'unique_id', - username: 'foo', - email: 'foo@example.com' - } -}) - -// Sending some arbitrary details using the `custom` field -apm.captureError(error, { - custom: { - some_important_metric: 'foobar' - } -}) ----- - -To supply per-request metadata to all errors captured in one central location, -use <> and <>. - -[[http-requests]] -===== HTTP requests - -Besides the options described in the <>, -you can use the `options` argument to associate the error with an HTTP request: - -[source,js] ----- -apm.captureError(err, { - request: req // an instance of http.IncomingMessage -}) ----- - -This will log the URL that was requested, -the HTTP headers, -cookies and other useful details to help you debug the error. - -In most cases, this isn't needed, -as the agent is pretty smart at figuring out if your Node.js app is an HTTP server and if an error occurred during an incoming request. -In which case it will automate this processes for you. - -[[http-responses]] -===== HTTP responses - -Besides the options described in the <>, -you can use the `options` argument to associate the error with an HTTP response: - -[source,js] ----- -apm.captureError(err, { - response: res // an instance of http.ServerResponse -}) ----- - -This will log the response status code, -headers and other useful details to help you debug the error. - -In most cases, this isn't needed, -as the agent is pretty smart at figuring out if your Node.js app is an HTTP server and if an error occurred during an incoming request. -In which case it will automate this processes for you. - -[[apm-middleware-connect]] -==== `apm.middleware.connect()` - -[small]#Added in: v0.1.0# - -Returns a middleware function used to collect and send errors to the APM Server. - -[source,js] ----- -const apm = require('elastic-apm-node').start() -const connect = require('connect') - -const app = connect() - -// your regular middleware: -app.use(...) -app.use(...) - -// your main HTTP router -app.use(function (req, res, next) { - throw new Error('Broke!') -}) - -// add Elastic APM in the bottom of the middleware stack -app.use(apm.middleware.connect()) - -app.listen(3000) ----- - -NOTE: `apm.middleware.connect` _must_ be added to the middleware stack _before_ any other error handling middleware functions or there's a chance that the error will never get to the agent. - -[[apm-start-transaction]] -==== `apm.startTransaction([name][, type][, options])` - -[small]#Added in: v0.1.0# + -[small]#Transaction `subtype` and `action` deprecated in: v3.25.0# + -[small]#Transaction `subtype` and `action` removed in: v4.0.0# - -* `name` +{type-string}+ The name of the transaction. -You can always set this later via <> or <>. -*Default:* `unnamed` - -* `type` +{type-string}+ The type of the transaction. -You can always set this later via <>. - -* `options` +{type-object}+ The following options are supported: - -** `startTime` +{type-number}+ The time when the transaction started. -Must be a Unix Time Stamp representing the number of milliseconds since January 1, 1970, 00:00:00 UTC. -Sub-millisecond precision can be achieved using decimals. -If not provided, -the current time will be used - -** `childOf` +{type-string}+ A W3C trace-context "traceparent" string, typically received from a remote service call. - -** `tracestate` +{type-string}+ A W3C trace-context "tracestate" string. - -** `links` +{type-array}+ Span links. -A transaction can refer to zero or more other transactions or spans (separate -from its parent). Span links will be shown in the Kibana APM app trace view. -The `links` argument is an array of objects with a single "context" field -that is a `Transaction`, `Span`, or W3C trace-context 'traceparent' string. -For example: `apm.startTransaction('aName', { links: [{ context: anotherSpan }] })`. - -Start a new custom/manual transaction. -See the <> docs for details on how to use custom transactions. - -Note that the APM agent will automatically start a transaction for incoming -HTTP requests. You only need to use this function to create custom transactions, -for example for a periodic background routine. There's a special `type` called -`request` which is used by the agent for the transactions automatically created -when an incoming HTTP request is detected. - -If the APM agent has not yet been started, then a do-nothing "no-op" transaction -object will be returned. - - -[[apm-end-transaction]] -==== `apm.endTransaction([result][, endTime])` - -[small]#Added in: v0.1.0# - -* `result` +{type-string}+ Describes the result of the transaction. -This is typically the HTTP status code, -or e.g. "success" or "failure" for a background task - -* `endTime` +{type-number}+ The time when the transaction ended. -Must be a Unix Time Stamp representing the number of milliseconds since January 1, 1970, 00:00:00 UTC. -Sub-millisecond precision can be achieved using decimals. -If not provided, -the current time will be used - -Ends the active transaction. -If no transaction is currently active, -nothing happens. - -Note that the agent will do this for you automatically for all regular HTTP transactions. -You only need to use this function to end custom transactions created by <> or if you wish the end a regular transaction prematurely. - -Alternatively you can call <> directly on an active transaction object. - -[[apm-current-transaction]] -==== `apm.currentTransaction` - -[small]#Added in: v1.9.0# - -Get the currently active transaction, -if used within the context of a transaction. - -NOTE: If there's no active transaction available, -`null` will be returned. - -[[apm-current-span]] -==== `apm.currentSpan` - -[small]#Added in: v2.0.0# - -Get the currently active span, -if used within the context of a span. - -NOTE: If there's no active span available, -`null` will be returned. - -[[apm-current-traceparent]] -==== `apm.currentTraceparent` - -[small]#Added in: v2.9.0# - -Get the serialized traceparent string of the current transaction or span. - -NOTE: If there's no active transaction or span available, -`null` will be returned. - -[[apm-set-transaction-name]] -==== `apm.setTransactionName(name)` - -[small]#Added in: v0.1.0# - -* `name` +{type-string}+ Set or overwrite the name of the current transaction. - -If you use a supported router/framework the agent will automatically set the transaction name for you. - -If you do not use Express, hapi, koa-router, Restify, or Fastify or if the agent for some reason cannot detect the name of the HTTP route, -the transaction name will default to `METHOD unknown route` (e.g. `POST unknown route`). - -Read more about naming routes manually in the <> article. - -[[apm-start-span]] -==== `apm.startSpan([name][, type][, subtype][, action][, options])` - -[small]#Added in: v1.1.0# - -* `name` +{type-string}+ The name of the span. -You can alternatively set this via <>. -*Default:* `unnamed` - -* `type` +{type-string}+ The type of the span. -You can alternatively set this via <>. - -* `subtype` +{type-string}+ The subtype of the span. -You can alternatively set this via <>. - -* `action` +{type-string}+ The action of the span. -You can alternatively set this via <>. - -* `options` +{type-object}+ The following options are supported: - -** `startTime` +{type-number}+ The time when the span started. -Must be a Unix Time Stamp representing the number of milliseconds since January 1, 1970, 00:00:00 UTC. -Sub-millisecond precision can be achieved using decimals. -If not provided, -the current time will be used - -** `exitSpan` +{type-boolean}+ Make an "exit span". -Exit spans represent outgoing communication. They are used to create a node -in the {kibana-ref}/service-maps.html[Service Map] and a downstream service -in the {kibana-ref}/dependencies.html[Dependencies Table]. The provided subtype -will be used as the downstream service name. - -** `links` +{type-array}+ Span links. -A span can refer to zero or more other transactions or spans (separate from -its parent). Span links will be shown in the Kibana APM app trace view. The -`links` argument is an array of objects with a single "context" field that is a -`Transaction`, `Span`, or W3C trace-context 'traceparent' string. For example: -`apm.startSpan('aName', { links: [{ context: anotherSpan }] })`. - -Start and return a new custom span associated with the current active transaction. -This is the same as getting the current transaction with `apm.currentTransaction` and, -if a transaction was found, -calling `transaction.startSpan(name, type, options)` on it. - -When a span is started it will measure the time until <> is called. - -See <> docs for details on how to use custom spans. - -NOTE: If there's no active transaction available, -`null` will be returned. - -[[apm-handle-uncaught-exceptions]] -==== `apm.handleUncaughtExceptions([callback])` - -[small]#Added in: v0.1.0# - -By default, the agent will terminate the Node.js process when an uncaught exception is detected. -Use this function if you need to run any custom code before the process is terminated. - -[source,js] ----- -apm.handleUncaughtExceptions(function (err) { - // Do your own stuff... and then exit: - process.exit(1) -}) ----- - -The callback is called *after* the event has been sent to the APM Server with the following arguments: - -* `err` +{type-error}+ the captured exception - -This function will also enable the uncaught exception handler if it was disabled using the <> configuration option. - -If you don't specify a callback, -the node process is terminated automatically when an uncaught exception has been captured and sent to the APM Server. - -https://nodejs.org/api/process.html#process_event_uncaughtexception[It is recommended] that you don't leave the process running after receiving an uncaught exception, -so if you are using the optional callback, -remember to terminate the node process. - -[[apm-flush]] -==== `apm.flush([callback])` - -[small]#Added in: v0.12.0# - -[source,js] ----- -// with node-style callback -apm.flush(function (err) { - // Flush complete -}) - -// with promises -apm.flush().then(function () { - // Flush complete -}).catch(function (err) { - // Flush returned an error -}) - -// inside of an async function -try { - await apm.flush() - // Flush complete -} catch (err) { - // Flush returned an error -} ----- - -Manually end the active outgoing HTTP request to the APM Server. -The HTTP request is otherwise ended automatically at regular intervals, -controlled by the <> and <> config options. - -If an optional `callback` is provided as the first argument to this method, it will call `callback(flushErr)` when complete. -If no `callback` is provided, then a `Promise` will be returned, which will either resolve with `void` or reject with `flushErr`. - -The callback is called (or the `Promise` resolves if no `callback` argument is provided) *after* the active HTTP request has ended. -The callback is called even if no HTTP request is currently active. - -[[apm-lambda]] -==== `apm.lambda([type, ]handler)` - -[small]#Added in: v1.4.0# - -[source,js] ----- -exports.hello = apm.lambda(function (event, context, callback) { - callback(null, `Hello, ${payload.name}!`) -}) ----- - -Manually instrument an AWS Lambda function to form a transaction around each execution. -Optionally, a type may also be provided to group lambdas together. By default, -"lambda" will be used as the type name. - -Read more lambda support in the <> article. - -[[apm-add-patch]] -==== `apm.addPatch(modules, handler)` - -[small]#Added in: v2.7.0# - -* `modules` +{type-string}+ | +{type-string-array}+ -Name of module(s) to apply the patch to, when required. -* `handler` +{type-function}+ | +{type-string}+ -Must be a patch function or a path to a module exporting a patch function -** `exports` +{type-object}+ The original export object of the module -** `agent` - The agent instance to use in the patch function -** `options` +{type-object}+ The following options are supported: -*** `version` +{type-string}+ | +{type-undefined}+ The module version, if applicable. -*** `enabled` +{type-boolean}+ A flag indicating if the instrumentation is enabled. -Any module patch can be disabled, by module name, with <>. - -Register a module patch to apply on intercepted `require` calls. - -A module can have any number of patches and will be applied in the order they are added. - -[source,js] ----- -apm.addPatch('timers', (exports, agent, { version, enabled }) => { - const setTimeout = exports.setTimeout - exports.setTimeout = (fn, ms) => { - const span = agent.startSpan('set-timeout') - return setTimeout(() => { - span.end() - fn() - }, ms) - } - - return exports -}) - -// or ... - -apm.addPatch('timers', './timer-patch') ----- - -This and the other "Patch"-related API methods should be called *before* -starting the APM agent. Changes after the agent has started and relevant -modules have been `require`d can have surprising caching behavior. - -[[apm-remove-patch]] -==== `apm.removePatch(modules, handler)` - -[small]#Added in: v2.7.0# - -Removes a module patch. -This will generally only be needed when replacing an existing patch. -To _disable_ instrumentation while keeping context propagation support, see <>. - -[source,js] ----- -apm.removePatch('timers', './timers-patch') - -// or ... - -apm.removePatch(['timers'], './timers-patch') - -// or ... - -apm.removePatch('timers', timerPatchFunction) ----- - -[[apm-clear-patches]] -==== `apm.clearPatches(modules)` - -[small]#Added in: v2.7.0# - -Clear all patches for the given module. -This will generally only be needed when replacing an existing patch. -To _disable_ instrumentation while keeping context propagation support, see <>. - -[source,js] ----- -apm.clearPatches('timers') - -// or ... - -apm.clearPatches(['timers']) ----- - -[[apm-current-trace-ids]] -==== `apm.currentTraceIds` - -[small]#Added in: v2.17.0# - -`apm.currentTraceIds` produces an object containing `trace.id` and either `transaction.id` or `span.id` when a current transaction or span is available. -When no transaction or span is available it will return an empty object. -This enables <> to APM traces with structured loggers. - -[source,js] ----- -{ - "trace.id": "abc123", - "transaction.id": "abc123" -} -// or ... -{ - "trace.id": "abc123", - "span.id": "abc123" -} ----- - -[[apm-register-custom-metrics]] -==== `apm.registerMetric(name[, labels], callback)` - -experimental::[] - -* `name` +{type-string}+ -Name of the metrics. -* `labels` +{type-object}+ Contains key/value pairs. -Optional labels. Omittable. -* `callback` +{type-function}+ -Must be a function that returns the current metric value. - -Register a metric callback. - -Take care not to use the names of <>. - -[source,js] ----- -apm.registerMetric( 'ws.connections' , () => { - return wss.clients.size; -}) - -// or, to additionally label the metric with "module: 'ws'": - -apm.registerMetric( 'ws.connections' , {module : 'ws'}, () => { - return wss.clients.size; -}) - ----- - -[[apm-transaction-outcome]] -==== `apm.setTransactionOutcome(outcome)` - -[small]#Added in: v3.12.0# - -* `outcome` +{type-string}+ - -Will set the outcome property on the _current_ transaction. - -See the <> for more information. - -[[apm-span-outcome]] -==== `apm.setSpanOutcome(outcome)` - -[small]#Added in: v3.12.0# - -* `outcome` +{type-string}+ - -Will set the outcome property on the _current_ span. - -See the <> for more information. diff --git a/docs/api-opentelemetry.asciidoc b/docs/api-opentelemetry.asciidoc deleted file mode 100644 index 1ac32f4863..0000000000 --- a/docs/api-opentelemetry.asciidoc +++ /dev/null @@ -1,259 +0,0 @@ -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/opentelemetry-bridge.html[elastic.co] -endif::[] - -[[opentelemetry-bridge]] -== OpenTelemetry bridge - -NOTE: Integration with the OpenTelemetry Tracing API was added as experimental in v3.34.0. -Integration with the OpenTelemetry Metrics API was added as experimental in v3.45.0. - -The Elastic APM OpenTelemetry bridge allows one to use the vendor-neutral -https://opentelemetry.io/docs/instrumentation/js/[OpenTelemetry API] -(https://www.npmjs.com/package/@opentelemetry/api[`@opentelemetry/api`]) in -your code, and have the Elastic Node.js APM agent handle those API calls. -This allows one to use the Elastic APM agent for tracing and metrics without any -vendor lock-in to the APM agent's own <> when adding manual -tracing or custom metrics. - - -[float] -[[otel-tracing-api]] -=== Using the OpenTelemetry Tracing API - -① First, you will need to add the Elastic APM agent and OpenTelemetry API -dependencies to your project. The minimum required OpenTelemetry API version is -1.0.0; see <> -for the current maximum supported API version. For example: - -[source,bash] ----- -npm install --save elastic-apm-node @opentelemetry/api ----- - -② Second, you will need to configure and start the APM agent. This can be done -completely with environment variables (so that there is no need to touch -your application code): - -[source,bash] ----- -export ELASTIC_APM_SERVER_URL='' -export ELASTIC_APM_SECRET_TOKEN='' # or ELASTIC_APM_API_KEY=... -export ELASTIC_APM_OPENTELEMETRY_BRIDGE_ENABLED=true <1> -export NODE_OPTIONS='-r elastic-apm-node/start.js' # Tell node to preload and start the APM agent -node my-app.js ----- -<1> Future versions may drop this config var and enable usage of the tracing API by default. - -Or, alternatively, you can configure and start the APM agent at the top of your -application code: - -[source,js] ----- -require('elastic-apm-node').start({ - serverUrl: '', - secretToken: '', // or, apiKey: '' - opentelemetryBridgeEnabled: true -}); - -// Application code ... ----- - -See <> for other configuration options. - -③ Finally, you can use the https://open-telemetry.github.io/opentelemetry-js/modules/_opentelemetry_api.html[OpenTelemetry API] -for any manual tracing in your code. For example, the following script uses -https://open-telemetry.github.io/opentelemetry-js/interfaces/_opentelemetry_api.Tracer.html#startActiveSpan[Tracer#startActiveSpan()] -to trace an outgoing HTTPS request: - -[source,js] ----- -const https = require('https') -const otel = require('@opentelemetry/api') -const tracer = otel.trace.getTracer('trace-https-request') - -tracer.startActiveSpan('makeRequest', span => { - https.get('https://httpstat.us/200', (response) => { - console.log('STATUS:', response.statusCode) - const body = [] - response.on('data', (chunk) => body.push(chunk)) - response.on('end', () => { - console.log('BODY:', body.toString()) - span.end() - }) - }) -}) ----- - -The APM agent source code repository includes -https://github.com/elastic/apm-agent-nodejs/tree/main/examples/opentelemetry-bridge[some examples using the OpenTelemetry tracing bridge]. - - -[float] -[[otel-metrics-api]] -=== Using the OpenTelemetry Metrics API - -① As above, install the needed dependencies. The minimum required OpenTelemetry -API version is 1.3.0 (the version when metrics were added); see <> -for the current maximum supported API version. For example: - -[source,bash] ----- -npm install --save elastic-apm-node @opentelemetry/api ----- - -② Configure and start the APM agent. This can be done completely with -environment variables -- as shown below -- or in code. (See <> -and <> for other -configuration options.) - -[source,bash] ----- -export ELASTIC_APM_SERVER_URL='' -export ELASTIC_APM_SECRET_TOKEN='' # or ELASTIC_APM_API_KEY=... -export NODE_OPTIONS='-r elastic-apm-node/start.js' # Tell node to preload and start the APM agent -node my-app.js ----- - -③ Finally, you can use the OpenTelemetry Metrics API, to -https://open-telemetry.github.io/opentelemetry-js/interfaces/_opentelemetry_api.Meter.html[create metrics] -and the APM agent will periodically ship those metrics to your Elastic APM -deployment where you can visualize them in Kibana. - -[source,js] ----- -// otel-metrics-hello-world.js <1> -const { createServer } = require('http') -const otel = require('@opentelemetry/api') - -const meter = otel.metrics.getMeter('my-meter') -const numReqs = meter.createCounter('num_requests', { description: 'number of HTTP requests' }) - -const server = createServer((req, res) => { - numReqs.add(1) - req.resume() - req.on('end', () => { - res.end('pong\n') - }) -}) -server.listen(3000, () => { - console.log('listening at http://127.0.0.1:3000/') -}) ----- -<1> The full example is https://github.com/elastic/apm-agent-nodejs/blob/main/examples/opentelemetry-metrics/otel-metrics-hello-world.js[here]. - - -[float] -[[otel-metrics-sdk]] -==== Using the OpenTelemetry Metrics SDK - -The Elastic APM agent also supports exporting metrics to APM server when the -OpenTelemetry Metrics *SDK* is being used directly. You might want to use -the OpenTelemetry Metrics SDK to use a https://opentelemetry.io/docs/reference/specification/metrics/sdk/#view[`View`] -to configure histogram bucket sizes, to setup a Prometheus exporter, or for -other reasons. For example: - -[source,js] ----- -// use-otel-metrics-sdk.js <1> -const otel = require('@opentelemetry/api') -const { MeterProvider } = require('@opentelemetry/sdk-metrics') -const { PrometheusExporter } = require('@opentelemetry/exporter-prometheus') - -const exporter = new PrometheusExporter({ host: '127.0.0.1', port: 3001 }) -const meterProvider = new MeterProvider() -meterProvider.addMetricReader(exporter) -otel.metrics.setGlobalMeterProvider(meterProvider) - -const meter = otel.metrics.getMeter('my-meter') -const latency = meter.createHistogram('latency', { description: 'Response latency (s)' }) -// ... ----- -<1> The full example is https://github.com/elastic/apm-agent-nodejs/blob/main/examples/opentelemetry-metrics/use-otel-metrics-sdk.js[here]. - - -[float] -[[otel-metrics-conf]] -==== OpenTelemetry Metrics configuration - -A few configuration options can be used to control OpenTelemetry Metrics support. - -- Specific metrics names can be filtered out via the <> configuration option. -- Integration with the OpenTelemetry Metrics API can be disabled via the <> configuration option. -- Integration with the OpenTelemetry Metrics SDK can be disabled via the <> configuration option. -- All metrics support in the APM agent can be disabled via the <> configuration option. -- The default histogram bucket boundaries are different from the OpenTelemetry default, to provide better resolution. The boundaries used by the APM agent can be configured with the <> configuration option. - - -[float] -[[otel-architecture]] -=== Bridge architecture - -The OpenTelemetry Tracing bridge works similarly to the -https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node/[OpenTelemetry Node.js Trace SDK]. -It registers Tracer and ContextManager providers with the OpenTelemetry API. -Subsequent `@opentelemetry/api` calls in user code will use those providers. -The APM agent translates from OpenTelemetry to Elastic APM semantics and sends -tracing data to your APM server for full support in -https://www.elastic.co/apm[Elastic Observability's APM app]. - -Some examples of semantic translations: The first entry span of a -service (e.g. an incoming HTTP request) will be converted to an -{apm-guide-ref}/data-model-transactions.html[Elasic APM `Transaction`], -subsequent spans are mapped to -{apm-guide-ref}/data-model-spans.html[Elastic APM `Span`s]. OpenTelemetry Span -attributes are translated into the appropriate fields in Elastic APM's data -model. - -The only difference, from the user's point of view, is in the setup of tracing. -Instead of setting up the OpenTelemetry JS SDK, one sets up the APM agent -as <>. - ---- - -The OpenTelemetry Metrics support, is slightly different. If your code uses -just the Metrics *API*, then the APM agent provides a full MeterProvider so -that metrics are accumulated and sent to APM server. If your code uses the -Metrics *SDK*, then the APM agents adds a MetricReader to your MeterProvider -to send metrics on to APM server. This allows you to use the APM agent as -either an easy setup for using metrics or in conjunction with your existing -OpenTelemetry Metrics configuration. - -[float] -[[otel-caveats]] -=== Caveats - -Not all features of the OpenTelemetry API are supported. This section describes -any limitations and differences. - -[float] -[[otel-caveats-tracing]] -===== Tracing - -- Span Link Attributes. Adding links when https://open-telemetry.github.io/opentelemetry-js/interfaces/\_opentelemetry_api.Tracer.html[starting a span] is supported, but any added span link *attributes* are silently dropped. -- Span events (https://open-telemetry.github.io/opentelemetry-js/interfaces/_opentelemetry_api.Span.html#addEvent[`Span#addEvent()`]) are not currently supported. Events will be silently dropped. -- https://open-telemetry.github.io/opentelemetry-js/classes/_opentelemetry_api.PropagationAPI.html[Propagating baggage] within or outside the process is not supported. Baggage items are silently dropped. - -[float] -[[otel-caveats-metrics]] -===== Metrics - -- Metrics https://opentelemetry.io/docs/reference/specification/metrics/data-model/#exemplars[exemplars] are not supported. -- https://opentelemetry.io/docs/reference/specification/metrics/data-model/#summary-legacy[Summary metrics] are not supported. -- https://opentelemetry.io/docs/reference/specification/metrics/data-model/#exponentialhistogram[Exponential Histograms] are not yet supported. -- The `sum`, `count`, `min` and `max` within the OpenTelemetry histogram data are discarded. -- The default histogram bucket boundaries are different from the OpenTelemetry default. They provide better resolution. They can be configured with the <> configuration option. -- Metrics label names are dedotted (`s/\./_/g`) in APM server to avoid possible mapping collisions in Elasticsearch. -- The default https://github.com/elastic/apm/blob/main/specs/agents/metrics-otel.md#aggregation-temporality[Aggregation Temporality] used differs from the OpenTelemetry default -- preferring *delta*-temporality (nicer for visualizing in Kibana) to cumulative-temporality. - -Metrics support requires an APM server >=7.11 -- for earlier APM server -versions, metrics with label names including `.`, `*`, or `"` will get dropped. - - -[float] -[[otel-caveats-logs]] -===== Logs - -The OpenTelemetry Logs API is currently not support -- only the Tracing and -Metrics APIs. diff --git a/docs/api.asciidoc b/docs/api.asciidoc deleted file mode 100644 index d3de4faa32..0000000000 --- a/docs/api.asciidoc +++ /dev/null @@ -1,26 +0,0 @@ -[[api]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/api.html[elastic.co] -endif::[] - -== API Reference - -The API reference documentation is divided into three parts: - -* <> - All functions and properties on the `Agent` object. -An instance of the `Agent` object is acquired by requiring/importing the Node.js APM Agent module. -The `Agent` is a singleton and the instance is usually referred to by the variable `apm` in this documentation - -* <> - All functions and properties on the `Transaction` object. -An instance of the `Transaction` object is acquired by calling `apm.startTransaction()` - -* <> - All functions and properties on the `Span` object. -An instance of the `Span` object is acquired by calling `apm.startSpan()` - -include::./agent-api.asciidoc[Agent API documentation] - -include::./transaction-api.asciidoc[Transaction API documentation] - -include::./span-api.asciidoc[Span API documentation] diff --git a/docs/azure-functions.asciidoc b/docs/azure-functions.asciidoc deleted file mode 100644 index cb91dfd669..0000000000 --- a/docs/azure-functions.asciidoc +++ /dev/null @@ -1,150 +0,0 @@ -:framework: Azure Functions - -[[azure-functions]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/azure-functions.html[elastic.co] -endif::[] - -=== Monitoring Node.js Azure Functions - -The Node.js APM Agent can trace function invocations in an https://learn.microsoft.com/en-us/azure/azure-functions/[Azure Functions] app, using either v3 or https://learn.microsoft.com/en-us/azure/azure-functions/functions-node-upgrade-v4[v4 of the Node.js programming model]. - - -[float] -[[azure-functions-prerequisites]] -==== Prerequisites - -You need an APM Server to send APM data to. Follow the -{apm-guide-ref}/apm-quick-start.html[APM Quick start] if you have not set one up -yet. You will need your *APM server URL* and an APM server *secret token* (or -*API key*) for configuring the APM agent below. - -You will also need an Azure Function app to monitor. If you do not have an -existing one, you can follow https://learn.microsoft.com/en-us/azure/azure-functions/create-first-function-cli-node#create-supporting-azure-resources-for-your-function[this Azure guide] -to create one. - -[IMPORTANT] -==== -If you use `func init --javascript ...` as suggested in this Azure guide, -then it is recommended that you *uninstall* the `azure-functions-core-tools` -dependency by running `npm uninstall azure-functions-core-tools` and -https://github.com/Azure/azure-functions-core-tools#installing[install it separately]. -Having `azure-functions-core-tools` as a "devDependency" in your package.json -will result in unreasonably large deployments that will be very slow to publish -and will run your Azure Function app VM out of disk space. -==== - -You can also take a look at and use this https://github.com/elastic/apm-agent-nodejs/tree/main/examples/azure-function-app/[Azure Functions example app with Elastic APM already integrated]. - -[float] -[[azure-functions-setup]] -==== Step 1: Add the APM agent dependency - -Add the `elastic-apm-node` module as a dependency of your application: - -[source,bash] ----- -npm install elastic-apm-node --save # or 'yarn add elastic-apm-node' ----- - - -[float] -==== Step 2: Start the APM agent - -For the APM agent to instrument Azure Functions, it needs to be started when the -Azure host starts its Node.js worker processes. The best way to do so is by -using an app-level entry point (support for this was added for Node.js Azure -Functions https://github.com/Azure/azure-functions-nodejs-worker/issues/537[here]). - -1. Create a module to start the APM agent. For example, a file at the root of your repository named "initapm.js": -+ -[source,javascript] ----- -// initapm.js -require('elastic-apm-node').start({ - <1> -}) ----- -<1> Optional <> can be added here. - -2. Change the "main" entry in your "package.json" to point to the initapm.js file. -+ -[source,json] ----- -... - "main": "{initapm.js,src/functions/*.js}", -... ----- - - -[float] -==== Step 3: Configure the APM agent - -The APM agent can be <> with options to the -`.start()` method or with environment variables. Using environment variables -allows one to use https://learn.microsoft.com/en-us/azure/azure-functions/functions-how-to-use-azure-function-app-settings?tabs=portal#settings[application settings in the Azure Portal] which allows hiding values and updating settings -without needing to re-deploy code. - -Open _Configuration > Application settings_ for your Function App in the Azure Portal -and set: - -[source,yaml] ----- -ELASTIC_APM_SERVER_URL: -ELASTIC_APM_SECRET_TOKEN: ----- - -For example: - -image::./images/azure-functions-configuration.png[Configuring the APM Agent in the Azure Portal] - -For local testing via `func start`, you can set these environment variables in -your terminal, or in the "local.settings.json" file. See the -<> for full details on supported -configuration variables. - - -[float] -==== Step 4: (Re-)deploy your Azure Function app - -[source,bash] ----- -func azure functionapp publish ----- - -Now, when you invoke your Azure Functions, you should see your application -show up as a Service in the APM app in Kibana and see APM transactions for -function invocations. Tracing data is forwarded to APM server after a period -of time, so allow a minute or so for data to appear. - - -[float] -[[azure-functions-limitations]] -==== Limitations - -Distributed tracing for incoming HTTP requests to Azure Functions (using v4 of the programming model) does *not* work, because of a issue with Azure's handling of trace-context. See https://github.com/elastic/apm-agent-nodejs/pull/4426#issuecomment-2596922653[this] for details. - -Azure Functions instrumentation currently does _not_ collect system metrics in the background because of a concern with unintentionally increasing Azure Functions costs (for Consumption plans). - -Elastic APM's <> is not supported for Azure Functions. - - -[float] -[[azure-functions-filter-sensitive-information]] -==== Filter sensitive information - -include::./shared-set-up.asciidoc[tag=filter-sensitive-info] - -[float] -[[azure-functions-compatibility]] -==== Compatibility - -include::./shared-set-up.asciidoc[tag=compatibility-link] - -[float] -[[azure-functions-troubleshooting]] -==== Troubleshooting - -include::./shared-set-up.asciidoc[tag=troubleshooting-link] diff --git a/docs/configuration.asciidoc b/docs/configuration.asciidoc deleted file mode 100644 index af34355491..0000000000 --- a/docs/configuration.asciidoc +++ /dev/null @@ -1,1448 +0,0 @@ -[[configuration]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/configuration.html[elastic.co] -endif::[] - -=== Configuration options - -The available configuration options and equivalent environment variable names are listed below. - -For more information on setting configuration options, including configuration precedence, -see <>. - -TIP: The only required parameter is <>. -However, -the agent will use the `name` from `package.json` by default if available. - -[[service-name]] -==== `serviceName` - -* *Type:* String -* *Default:* `name` field of `package.json`, or "unknown-nodejs-service" -* *Env:* `ELASTIC_APM_SERVICE_NAME` - -The name to identify this service in Elastic APM. Multiple instances of the -same service should use the same name. -Allowed characters: `a-z`, `A-Z`, `0-9`, `-`, `_`, and space. - -If `serviceName` is not provided, the agent will attempt to use the "name" field -from "package.json" -- looking up from the current working directory. The name -will be normalized to the allowed characters. If the name cannot be inferred -from package.json, then a fallback value of "unknown-nodejs-service" is used. - - -[[service-node-name]] -==== `serviceNodeName` - -* *Type:* String -* *Env:* `ELASTIC_APM_SERVICE_NODE_NAME` - -A unique name for the service node. -This is optional, and if omitted, -the APM Server will fall back on `system.container.id` if available, -and finally `host.name` if necessary. - -This option allows you to set the node name manually to ensure uniqueness and meaningfulness. - -[[secret-token]] -==== `secretToken` - -* *Type:* String -* *Env:* `ELASTIC_APM_SECRET_TOKEN` - -The secret token optionally expected by the APM Server. - -[[api-key]] -==== `apiKey` - -* *Type:* String -* *Env:* `ELASTIC_APM_API_KEY` - -The API key optionally expected by the APM Server. This is an alternative to `secretToken`. - -This base64-encoded string is used to ensure that only your agents can send data to your APM server. You must have created the API key using the APM server command line tool. Please see the {apm-guide-ref}/api-key.html[APM server documentation] for details on how to do that. - -NOTE: This feature is fully supported in the APM Server versions >= 7.6. - -WARNING: The API key is sent as plain-text in every request to the server, so you should secure your communications using HTTPS. Unless you do so, your API key could be observed by an attacker. - -[[server-url]] -==== `serverUrl` - -* *Type:* String -* *Default:* `http://127.0.0.1:8200` -* *Env:* `ELASTIC_APM_SERVER_URL` - -The URL to where the APM Server is deployed. - -[[validate-server-cert]] -==== `verifyServerCert` - -* *Type:* Boolean -* *Default:* `true` -* *Env:* `ELASTIC_APM_VERIFY_SERVER_CERT` - -By default the agent will validate the TLS/SSL certificate of the APM Server if using HTTPS. -You can switch this behavior off by setting this option to `false`. - -[[server-ca-cert-file]] -==== `serverCaCertFile` - -* *Type:* String -* *Env:* `ELASTIC_APM_SERVER_CA_CERT_FILE` - -By default the agent will validate the TLS/SSL certificate of the APM Server using the -well-known CAs curated by Mozilla, as described in the Node.js docs for -https://nodejs.org/api/tls.html#tls_tls_createsecurecontext_options[`tls.createSecureContext()`]. -You can set this option to the path of a file containing a CA certificate that will be -used instead. - -Specifying this option is required when using self-signed certificates, unless server -certificate validation is disabled. - -[[service-version]] -==== `serviceVersion` - -* *Type:* String -* *Default:* `version` field of `package.json` -* *Env:* `ELASTIC_APM_SERVICE_VERSION` - -The version of the app currently running. -This could be the version from your `package.json` file, -a git commit reference, -or any other string that might help you pinpoint a specific version or deployment. - -[[active]] -==== `active` - -* *Type:* Boolean -* *Default:* `true` -* *Env:* `ELASTIC_APM_ACTIVE` - -A boolean specifying if the agent should be active or not. -If active, -the agent will instrument incoming HTTP requests and track errors. -Normally you would not want to run the agent in your development or testing environments. -If you are using the `NODE_ENV` environment variable, -you can use this to determine the state: - -[source,js] ----- -var options = { - active: process.env.NODE_ENV === 'production' -} ----- - -[[environment]] -==== `environment` - -* *Type:* String -* *Default:* `process.env.NODE_ENV || 'development'` -* *Env:* `ELASTIC_APM_ENVIRONMENT` - -The environment name is automatically logged along with all errors and transactions. -If you want to overwrite this, -use this option. - -Environments allow you to easily filter data on a global level in the APM app. -It's important to be consistent when naming environments across agents. -See {kibana-ref}/filters.html#environment-selector[environment selector] in the APM app for more information. - -NOTE: This feature is fully supported in the APM app in Kibana versions >= 7.2. -You must use the query bar to filter for a specific environment in versions prior to 7.2. - - -[[context-propagation-only]] -==== `contextPropagationOnly` - -* *Type:* Boolean -* *Default:* `false` -* *Env:* `ELASTIC_APM_CONTEXT_PROPAGATION_ONLY` - -If set to `true`, the agent will reduce its work to the minimum required to -support automatic https://w3c.github.io/trace-context/[HTTP trace-context] -propagation (for distributed tracing) and log correlation. The agent will not -communicate with APM server (no tracing data is forwarded, no central -configuration is retrieved) and will not collect metrics. This setting allows -using the APM agent with a service that cannot use APM server. Usage is expected -to be rare. - - -[[disable-send]] -==== `disableSend` - -* *Type:* Boolean -* *Default:* `false` -* *Env:* `ELASTIC_APM_DISABLE_SEND` - -If set to `true`, the agent will work as usual, except that it will not attempt -to communicate with APM server. Tracing and metrics data will be dropped and the -agent won't be able to receive central configuration, which means that any other -configuration cannot be changed in this state without restarting the service. - -This setting is similar to <> in functionality. However, `disableSend` does not -attempt to reduce time spent collecting tracing data. A use case for this -setting is in CI environments, to test agent functionality without requiring a -configured APM server. - - -[[instrument]] -==== `instrument` - -* *Type:* Boolean -* *Default:* `true` -* *Env:* `ELASTIC_APM_INSTRUMENT` - -A boolean specifying if the agent should automatically apply instrumentation to supported modules when they are loaded. - -Note that both `active` and `instrument` needs to be `true` for instrumentation to be running. - -[[instrument-incoming-http-requests]] -==== `instrumentIncomingHTTPRequests` - -* *Type:* Boolean -* *Default:* `true` -* *Env:* `ELASTIC_APM_INSTRUMENT_INCOMING_HTTP_REQUESTS` - -A boolean specifying if the agent should instrument incoming HTTP requests. - -To configure if outgoing http requests should be instrumented, -see <>. - -[[central-config]] -==== `centralConfig` - -* *Type:* Boolean -* *Default:* `true` -* *Env:* `ELASTIC_APM_CENTRAL_CONFIG` - -Activate APM Agent Configuration via Kibana. -If set to `true`, the client will poll the APM Server regularly for new agent configuration. - -NOTE: This feature requires APM Server v7.3 or later. -More information is available in {kibana-ref}/agent-configuration.html[APM Agent configuration]. - -[[context-manager]] -==== `contextManager` - -[small]#Added in: v3.37.0# + -[small]#The "patch" context manager was removed in: v4.0.0# - -* *Type:* String -* *Env:* `ELASTIC_APM_CONTEXT_MANAGER` - -This configuration option provides a way to override the APM agent's default -technique for tracking Node.js asynchronous tasks; sometimes referred to as "run -context", "async context", or just "context". Most users should not need to -change this setting. This setting replaces the older `asyncHooks` configuration -option. - -To effectively trace an application, the APM agent needs to track the logical -thread of control through asynchronous tasks. The preferred mechanism for this -is https://nodejs.org/api/async_context.html#class-asynclocalstorage[`AsyncLocalStorage`], -usable in Node.js versions >=14.5 and >=12.19. In older versions of Node, the APM -agent will fallback to using -https://nodejs.org/api/async_hooks.html[`async_hooks`], which can have a higher -performance overhead, especially in Promise-heavy applications. - -Supported values for `contextManager` are: - -- `"asynclocalstorage"` - Use the `AsyncLocalStorage` mechanism, if able. Otherwise it will fallback to using `async_hooks`. -- `"asynchooks"` - Use the `async_hooks` mechanism. (Using this value will restore the agent behavior from before v3.37.0.) - - -[[transaction-ignore-urls]] -==== `transactionIgnoreUrls` - -* *Type:* Array -* *Default:* `[]` -* *Env:* `ELASTIC_APM_TRANSACTION_IGNORE_URLS` -* <> *Central config name:* `transaction_ignore_urls` - -Array or comma-separated string used to restrict requests for certain URLs from being instrumented. - -When an incoming HTTP request is detected, its URL pathname will be tested against each string -in this list. The `transactionIgnoreUrls` property supports exact string matches, -simple wildcard (`*`) matches, and may not include commas. Wildcard matches are -case-insensitive by default. You may make wildcard searches case-sensitive by -using the `(?-i)` prefix. - -Note that all errors that are captured during a request to an ignored URL are still sent -to the APM Server regardless of this setting. - -If you need full regular expression pattern matching, see <>. - -Example usage: - -[source,js] ----- -require('elastic-apm-node').start({ - transactionIgnoreUrls: [ - '/ping', - '/fetch/*', - '(?-i)/caseSensitiveSearch' - ] -}) ----- - - -[[ignore-urls]] -==== `ignoreUrls` - -* *Type:* Array -* *Default:* `undefined` - -Used to restrict requests to certain URLs from being instrumented. - -This property should be set to an array containing one or more strings or `RegExp` objects. -When an incoming HTTP request is detected, -its URL will be tested against each element in this list. -If an element in the array is a `String`, -an exact match will be performed. -If an element in the array is a `RegExp` object, -its test function will be called with the URL being tested. - -Note that all errors that are captured during a request to an ignored URL are still sent to the APM Server regardless of this setting. - -If you'd prefer simple wildcard pattern matching, see <>. - -Example usage: - -[source,js] ----- -require('elastic-apm-node').start({ - ignoreUrls: [ - '/ping', - /^\/admin\//i - ] -}) ----- - -[[ignore-user-agents]] -==== `ignoreUserAgents` - -* *Type:* Array -* *Default:* `undefined` - -Used to restrict requests from certain User-Agents from being instrumented. - -This property should be set to an array containing one or more strings or `RegExp` objects. -When an incoming HTTP request is detected, -the User-Agent from the request headers will be tested against each element in this list. -If an element in the array is a `String`, -it's matched against the beginning of the User-Agent. -If an element in the array is a `RegExp` object, -its test function will be called with the User-Agent string being tested. - -Note that all errors that are captured during a request by an ignored user agent are still sent to the APM Server regardless of this setting. - -Example usage: - -[source,js] ----- -require('elastic-apm-node').start({ - ignoreUserAgents: [ - 'curl/', - /pingdom/i - ] -}) ----- - -[[capture-body]] -==== `captureBody` - -* *Type:* String -* *Default:* `off` -* *Env:* `ELASTIC_APM_CAPTURE_BODY` -* <> *Central config name:* `capture_body` - -The HTTP body of incoming HTTP requests is not recorded and sent to the APM Server by default. - -Possible options are: `off`, `all`, `errors`, and `transactions`. - -* `off` - request bodies will never be reported -* `errors` - request bodies will only be reported with errors -* `transactions` - request bodies will only be reported with request transactions -* `all` - request bodies will be reported with both errors and request transactions - -The recorded body will be truncated if larger than 2 KiB. - -If the body parsing middleware captures the body as raw `Buffer` data, the request body will be represented as the string `""`. - -For the agent to be able to access the body, -the body needs to be available as a property on the incoming HTTP https://nodejs.org/api/http.html#http_class_http_incomingmessage[`request`] object. -The agent will look for the body on the following properties: -`req.json || req.body || req.payload` - -[[capture-headers]] -==== `captureHeaders` - -* *Type:* Boolean -* *Default:* true -* *Env:* `ELASTIC_APM_CAPTURE_HEADERS` - -The HTTP headers of incoming HTTP requests, -and its resulting response headers, -are recorded and sent to the APM Server by default. -This can be disabled by setting this option to `false`. - -[[error-on-aborted-requests]] -==== `errorOnAbortedRequests` - -* *Type:* Boolean -* *Default:* `false` -* *Env:* `ELASTIC_APM_ERROR_ON_ABORTED_REQUESTS` - -A boolean specifying if the agent should monitor for aborted TCP connections with un-ended HTTP requests. -An error will be generated and sent to the APM Server if this happens. - -[[aborted-error-threshold]] -==== `abortedErrorThreshold` - -* *Type:* Number -* *Default:* `25s` -* *Env:* `ELASTIC_APM_ABORTED_ERROR_THRESHOLD` - -Specify the threshold for when an aborted TCP connection with an un-ended HTTP request is considered an error. -The value is expected to be in seconds, -or should include a time suffix. - -If the `errorOnAbortedRequests` property is `false`, this property is ignored. - -[[transaction-sample-rate]] -==== `transactionSampleRate` - -* *Type:* Number -* *Default:* `1.0` -* *Env:* `ELASTIC_APM_TRANSACTION_SAMPLE_RATE` -* <> *Central config name:* `transaction_sample_rate` - -Specify the sampling rate to use when deciding whether to trace a request. - -This must be a value between `0.0` and `1.0`, where `1.0` means 100% of requests -are traced. The value is rounded to four decimal places of precision (e.g. -0.0001, 0.3333) to ensure consistency and reasonable size when propagating the -sampling rate in the `tracestate` header for -<>. - -[[hostname]] -==== `hostname` - -* *Type:* String -* *Default:* OS hostname -* *Env:* `ELASTIC_APM_HOSTNAME` - -The OS hostname is automatically logged along with all errors and transactions. -If you want to overwrite this, -use this option. - -[[framework-name]] -==== `frameworkName` - -* *Type:* String -* *Env:* `ELASTIC_APM_FRAMEWORK_NAME` - -Set the name of the web framework used by the instrumented service/application. -The name will be available as metadata for all errors and transactions sent to the APM Server. -This can be useful for debugging and filtering. - -By default, -the agent will set the value of this config option if the framework can be detected automatically. - -[[framework-version]] -==== `frameworkVersion` - -* *Type:* String -* *Env:* `ELASTIC_APM_FRAMEWORK_VERSION` - -Set the version of the web framework used by the instrumented service/application. -The version will be available as metadata for all errors and transactions sent to the APM Server. -This can be useful for debugging and filtering. - -By default, -the agent will set the value of this config option if the framework can be detected automatically. - -Example of setting <> and `frameworkVersion` for a framework named `my-custom-framework`: - -[source,js] ----- -// read the version from the package.json file -var frameworkVersion = require('my-custom-framework/package').version - -require('elastic-apm-node').start({ - frameworkName: 'my-custom-framework', - frameworkVersion: frameworkVersion -}) ----- - -[[log-level]] -==== `logLevel` - -* *Type:* String -* *Default:* `'info'` -* *Env:* `ELASTIC_APM_LOG_LEVEL` -* <> *Central config name:* `log_level` - -Set the verbosity level for the agent's logging. Note that this does not have -any influence on the types of errors that are sent to the APM Server. This only -controls how chatty the agent is in your logs. Possible levels are: `trace` -(the most verbose logging, avoid in production), `debug`, `info`, `warning`, -`error`, `critical`, and `off` (disable all logging). - -This config only applies when using the built-in logger. Log levels will not -be automatically applied to a custom <>. - -[[logger]] -==== `logger` - -* *Type:* object -* *Env:* `ELASTIC_APM_LOGGER=false` to _ignore_ a custom logger - -By default, the APM agent logs to stdout in -{ecs-logging-ref}/intro.html[ecs-logging] format. Use the `logger` config to -pass in a custom logger object. The custom logger must provide `trace`, -`debug`, `info`, `warn`, `error`, and `fatal` methods that take a string -message argument. - -A custom logger may result in _structured log data being lost_. As of version -3.13, the agent uses structured logging using the -https://getpino.io/#/docs/api?id=logger[pino API]. To avoid issues with -incompatible logger APIs, a given custom logger is wrapped in such a way that -only the log message is passed through. As a special case, if the provided -logger is a _pino logger instance_, then it will be used directly without -loss of structured fields. Setting the environment variable -`ELASTIC_APM_LOGGER=false` will *ignore* a custom logger. This is provided to -assist with <> troubleshooting. - -An example using a custom pino logger: - -[source,js] ----- -const pino = require('pino') -require('elastic-apm-node').start({ - logger: pino({ level: 'info' }) -}) ----- - -or using a https://github.com/trentm/node-bunyan[Bunyan] logger: - -[source,js] ----- -const bunyan = require('bunyan') -require('elastic-apm-node').start({ - logger: bunyan.createLogger({ level: 'info' }) -}) ----- - -To get the https://github.com/watson/console-log-level[unstructured logging output] -similar to agent versions before 3.13, use the following: - -[source,js] ----- -require('elastic-apm-node').start({ - logger: require('console-log-level')() -}) ----- - -[[capture-exceptions]] -==== `captureExceptions` - -[small]#As of v4.0.0 a captured exception will always be printed to stderr.# - -* *Type:* Boolean -* *Default:* `true` -* *Env:* `ELASTIC_APM_CAPTURE_EXCEPTIONS` - -Whether or not the APM agent should monitor for uncaught exceptions -(https://nodejs.org/api/process.html#event-uncaughtexception[`uncaughtException`]) -and send them to the APM Server automatically. This also includes unhandled -rejections (https://nodejs.org/api/process.html#event-unhandledrejection[`unhandledRejection`]), -when the node process is started with `--unhandled-rejections=throw`, which is -the default Node.js behavior since v15 (https://nodejs.org/api/cli.html#--unhandled-rejectionsmode[reference]). - -When `captureExceptions` is true and an `uncaughtException` event is emitted, -the APM agent will: capture error details, send that error (and buffered -APM data) to APM server, and `process.exit(1)` (https://nodejs.org/api/process.html#warning-using-uncaughtexception-correctly[as `uncaughtException` handlers should]). -Some things to be aware of: - -- Because the APM agent's handler will `process.exit(1)`, to use your own - `uncaughtException` handler, you must pass your handler to - <>. The APM agent will capture and send the - error, and then call your handler. It is then up to your handler to - `process.exit(1)`. -- The APM agent's handler is async, so there is a short period while it is - sending error details while the Node.js event loop will still be executing. -- When the exception and stack trace are printed to stderr, the exact format - differs from https://github.com/nodejs/node/blob/v20.5.0/src/node_errors.cc#L246-L266[the Node.js core formatter]. -- Using Node.js's https://nodejs.org/api/process.html#processsetuncaughtexceptioncapturecallbackfn[`process.setUncaughtExceptionCaptureCallback(fn)`] - results in `uncaughtException` not being called, so the APM agent's capturing - will not work. - -Set `captureExceptions: false` to disable this, and get the default Node.js -behavior for uncaught exceptions. - - -[[capture-error-log-stack-traces]] -==== `captureErrorLogStackTraces` - -* *Type:* String -* *Default:* `messages` -* *Env:* `ELASTIC_APM_CAPTURE_ERROR_LOG_STACK_TRACES` - -Normally only `Error` objects have a stack trace associated with them. -This stack trace is stored along with the error message when the error is sent to the APM Server. -The stack trace points to the place where the `Error` object was instantiated. - -But sometimes it's valuable to know, -not where the `Error` was instantiated, -but where it was detected. -For instance, -when an error happens deep within a database driver, -the location where the error bubbles up to, -is sometimes more useful for debugging, -than where the error occurred. - -Set this config option to `always` to -- -besides the error stack trace -- -also capture a stack trace at the location where <> was called. - -By default, -this config option has the value `messages`, -which means that a stack trace of the capture location will be recorded only when `captureError` is called with either a <> or the <>, -in which case a normal stack trace isn't available. - -Set this config option to `never` to never record a capture location stack trace. - -A capture location stack trace is never generated for uncaught exceptions. - -[[span-stack-trace-min-duration]] -==== `spanStackTraceMinDuration` - -[small]#Added in: v3.30.0, replaces <> and <># - -* *Type:* Duration -* *Default:* `'-1s'` (never capture span stack traces) -* *Env:* `ELASTIC_APM_SPAN_STACK_TRACE_MIN_DURATION` -* <> *Central config name:* `span_stack_trace_min_duration` - -Use this option to control if stack traces are never captured for spans (the -default), always captured for spans, or only captured for spans that are longer -than a given duration. If you choose to enable span stack traces, even if only -for slower spans, please read the -<>. - -* a negative value, e.g. `'-1ms'` or `-1`, means _never_ capture stack traces for spans; -* a zero value, e.g. `'0ms'` or `0`, means _always_ capture stack traces for spans, regardless of the span's duration; and -* any positive value, e.g. `'50ms'`, means to capture stack traces for spans longer than that duration. - -The duration value should be a string of the form `''`. The -allowed units are `ms` for milliseconds, `s` for seconds, and `m` for minutes -and are case-sensitive. The '' is optional and defaults to _milliseconds_. A -Number value of milliseconds may also be provided. For example, `'10ms'` and -`10` are 10 milliseconds, `'2s'` is 2 seconds. - -(Note: If you are migrating from the deprecated `spanFramesMinDuration` option, -the meaning for negative and zero values has changed _and_ the default unit -has changed to milliseconds.) - - -[[capture-span-stack-traces]] -==== `captureSpanStackTraces` - -[small]#Deprecated in: v3.30.0, use <># - -* *Type:* Boolean -* *Env:* `ELASTIC_APM_CAPTURE_SPAN_STACK_TRACES` - -This option is *deprecated* -- use <> instead. -In versions before v3.30.0 this option was `true` by default. As of version -v3.30.0 this default has _effectively_ changed to false, because the default is -`spanStackTraceMinDuration: '-1s'`. - -If `spanStackTraceMinDuration` is specified, then any provided value for this -option is ignored. Otherwise, - -* setting `captureSpanStackTraces: false` is equivalent to setting - `spanStackTraceMinDuration: '-1s'` (stack traces will never be captured for - spans), and -* setting `captureSpanStackTraces: true` will enable capture of stack traces for - spans that are longer than <>, - or 10ms if `spanFramesMinDuration` is not specified. - - -[[span-frames-min-duration]] -==== `spanFramesMinDuration` - -[small]#Deprecated in: v3.30.0, use <># - -* *Type:* Duration -* *Env:* `ELASTIC_APM_SPAN_FRAMES_MIN_DURATION` - -This option is *deprecated* -- use <> instead. -Note that the sense of a _negative_ value and a _zero_ value has switched in the -new option. Also note that the default unit has changed from `s` to `ms` in the -new option. - -If `spanStackTraceMinDuration` is specified, then any provided value for this -option is ignored. Otherwise, - -* a zero value, e.g. `0ms`, is equivalent to `spanStackTraceMinDuration: '-1s'` (never capture span stack traces); -* a negative value, e.g. `-1ms`, is equivalent to `spanStackTraceMinDuration: 0` (always capture span stack traces); and -* any positive value, e.g. `'50ms'`, is equivalent to setting `spanStackTraceMinDuration` to the same value. - -The duration value should be a string of the form `''`. The -allowed units are `ms` for milliseconds, `s` for seconds, and `m` for minutes -and are case-sensitive. The '' is optional and defaults to seconds. A -Number value of seconds may also be provided. For example, `'10ms'` is 10 -milliseconds, `'5'` and `5` (number) are 5 seconds. - -[[use-path-as-transaction-name]] -==== `usePathAsTransactionName` - -* *Type:* Boolean -* *Default:* `false` -* *Env:* `ELASTIC_APM_USE_PATH_AS_TRANSACTION_NAME` - -Set this option to `true` to use the URL path as the transaction name if no other route could be determined. If the agent do not support your router, you can set this option to `true` to use specific URL path as the transaction name instead of `GET unknown route`. - -[[source-context-error]] -==== `sourceLinesErrorAppFrames` + `sourceLinesErrorLibraryFrames` - -When an error is captured by the agent, -its stack trace is stored in Elasticsearch. - -By default, the agent will also collect a few lines of source code around the lines for each frame in the stack trace. -This can make it easier to determine the cause of an error as the source code related to the error is visible directly in Kibana. - -The agent differentiates between so-called in-app frames and library frames. -Library frames are frames belonging to Node core and code inside the application's `node_modules` folder. -In-app frames are everything else. - -Use the following two config options to change how many lines of source code to include for the different types of stack frames: - -[[source-context-error-app-frames]] -*`sourceLinesErrorAppFrames`* - -* *Type:* Number -* *Default:* `5` -* *Env:* `ELASTIC_APM_SOURCE_LINES_ERROR_APP_FRAMES` - -The default value `5` means that 5 lines of source code will be collected for in-app error frames. -2 lines above the stack frame line + 2 below + the stack frame line itself. - -Setting this config option to `0` means that no source code will be collected for in-app error frames. - -[[source-context-error-library-frames]] -*`sourceLinesErrorLibraryFrames`* - -* *Type:* Number -* *Default:* `5` -* *Env:* `ELASTIC_APM_SOURCE_LINES_ERROR_LIBRARY_FRAMES` - -The default value `5` means that 5 lines of source code will be collected for error library frames. -2 lines above the stack frame line + 2 below + the stack frame line itself. - -Setting this config option to `0` means that no source code will be collected for error library frames. - -[[source-context-span]] -==== `sourceLinesSpanAppFrames` + `sourceLinesSpanLibraryFrames` - -When a span is recorded by the agent, -a stack trace is recorded together with the span, -pointing to the location where the span was initiated. -This stack trace is stored in Elasticsearch along with the other span data. - -By default, the agent will also collect a few lines of source code around the lines for each frame in the stack trace. -This can make it easier to determine why and how the span was initiated as the source code related to the span is visible directly in Kibana. - -The agent differentiates between so-called in-app frames and library frames. -Library frames are frames belonging to Node core and code inside the applications `node_modules` folder. -In-app frames are everything else. - -Use the following two config options to change how many lines of source code to include for the different types of stack frames: - -[[source-context-span-app-frames]] -*`sourceLinesSpanAppFrames`* - -* *Type:* Number -* *Default:* `0` -* *Env:* `ELASTIC_APM_SOURCE_LINES_SPAN_APP_FRAMES` - -The default value `0` means that no source code will be collected for in-app span frames. - -[[source-context-span-library-frames]] -*`sourceLinesSpanLibraryFrames`* - -* *Type:* Number -* *Default:* `0` -* *Env:* `ELASTIC_APM_SOURCE_LINES_SPAN_LIBRARY_FRAMES` - -The default value `0` means that no source code will be collected for span library frames. - -[[error-message-max-length]] -==== `errorMessageMaxLength` - -[small]#Deprecated in: v3.21.0, use <># - -* *Type:* String -* *Default:* `longFieldMaxLength`'s value -* *Env:* `ELASTIC_APM_ERROR_MESSAGE_MAX_LENGTH` - -This option is **deprecated** -- use <> instead. - -The maximum length allowed for error messages. -It is expressed in bytes or includes a size suffix such as `2kb`. -Size suffixes are case-insensitive and include `b`, -`kb`, -`mb`, -and `gb`. -Messages above this length will be truncated before being sent to the APM Server. -Note that while the configuration option accepts a number of *bytes*, truncation -is based on a number of unicode characters, not bytes. - -Set to `-1` do disable truncation. - -This applies to the following properties: - -- `error.exception.message` -- `error.log.message` - - -[[long-field-max-length]] -==== `longFieldMaxLength` - -* *Type:* Integer -* *Default:* 10000 -* *Env:* `ELASTIC_APM_LONG_FIELD_MAX_LENGTH` - -The following transaction, span, and error fields will be truncated at this -number of unicode characters before being sent to APM server: - -- `transaction.context.request.body`, `error.context.request.body` -- `transaction.context.message.body`, `span.context.message.body`, - `error.context.message.body` -- `span.context.db.statement` -- `error.exception.message`, `error.log.message` - If - <> is specified, then that - value takes precedence for these error message fields. - -Note that tracing data is limited at the upstream APM server to -{apm-guide-ref}/configuration-process.html#max_event_size[`max_event_size`], -which defaults to 300kB. If you configure `longFieldMaxLength` too large, it -could result in transactions, spans, or errors that are rejected by APM server. - - -[[stack-trace-limit]] -==== `stackTraceLimit` - -* *Type:* Number -* *Default:* `50` -* *Env:* `ELASTIC_APM_STACK_TRACE_LIMIT` - -Setting it to `0` will disable stack trace collection. -Any finite integer value will be used as the maximum number of frames to collect. -Setting it to `Infinity` means that all frames will be collected. - -[[transaction-max-spans]] -==== `transactionMaxSpans` - -* *Type:* Number -* *Default:* `500` -* *Env:* `ELASTIC_APM_TRANSACTION_MAX_SPANS` -* <> *Central config name:* `transaction_max_spans` - -Specify the maximum number of spans to capture within a request transaction -before dropping further spans. -Setting to `-1` means that spans will never be dropped. - -[[max-queue-size]] -==== `maxQueueSize` - -* *Type:* Number -* *Default:* `1024` -* *Env:* `ELASTIC_APM_MAX_QUEUE_SIZE` - -The maximum size of buffered events. - -Events like transactions, spans, and errors are buffered when the agent can't -keep up with sending them to the APM Server or if the APM server is down. -If the queue is full, events are rejected which means you will lose -transactions and spans. This guards the application from consuming too much -memory and possibly crashing in case the APM server is unavailable for a longer -period of time. - -A lower value will decrease the heap overhead of the agent, while a higher -value makes it less likely to lose events in case of a temporary spike in -throughput. - -[[api-request-time]] -==== `apiRequestTime` - -* *Type:* String -* *Default:* `10s` -* *Env:* `ELASTIC_APM_API_REQUEST_TIME` - -The agent maintains an open HTTP request to the APM Server that is used to transmit the collected transactions, -spans, -and errors to the server. - -To avoid issues with intermittent proxies and load balancers, -the HTTP request is ended and a new one created at regular intervals controlled by this config option. -The value is expected to be in seconds, -or should include a time suffix. - -[NOTE] -==== -The HTTP request is ended before the time threshold is reached if enough bytes are sent over it. -Use the <> config option to control the byte threshold. -==== - -[[api-request-size]] -==== `apiRequestSize` - -* *Type:* String -* *Default:* `768kb` -* *Env:* `ELASTIC_APM_API_REQUEST_SIZE` - -The agent maintains an open HTTP request to the APM Server that is used to transmit the collected transactions, -spans, -and errors to the server. - -To avoid issues with intermittent proxies and load balancers, -the HTTP request is ended and a new one created if its body becomes too large. -That limit is controlled by this config option. -The value is expected to be in bytes, -or include a size suffix such as `1mb`. -Size suffixes are case-insensitive and include `b`, -`kb`, -`mb`, -and `gb`. - -[NOTE] -==== -The HTTP request is otherwise ended at regular intervals controlled by the <> config option. -==== - -[[server-timeout]] -==== `serverTimeout` - -* *Type:* String -* *Default:* `30s` -* *Env:* `ELASTIC_APM_SERVER_TIMEOUT` - -Specify a timeout on the socket used for communication between the APM agent -and APM Server. If no data is sent or received on the socket for this amount of -time, the request will be aborted. It's not recommended to set a -`serverTimeout` lower than the <> config -option. That will likely result in healthy requests being aborted prematurely. - -The value should include a time suffix ('m' for minutes, 's' for seconds, or -'ms' for milliseconds), but defaults to seconds if no suffix is given. - -[[apm-client-headers]] -==== `apmClientHeaders` - -[small]#Added in: v4.3.0# - -* *Type:* Object -* *Env:* `ELASTIC_APM_APM_CLIENT_HEADERS` - -Specify custom headers to be included in HTTP requests by the APM agent to -APM Server. Generally this should not be required for normal usage. - -Examples: - -[source,bash] ----- -ELASTIC_APM_APM_CLIENT_HEADERS="foo=bar,spam=eggs" ----- - -[source,js] ----- -require('elastic-apm-node').start({ - apmClientHeaders: { foo: 'bar', spam: 'eggs' }, - // ... -}) ----- - - -[[sanitize-field-names]] -==== `sanitizeFieldNames` -* *Type:* Array -* *Default:* `['password', 'passwd', 'pwd', 'secret', '*key', '*token*', '*session*', '*credit*', '*card*', '*auth*', 'set-cookie', '*principal*', 'pw', 'pass', 'connect.sid']` -* *Env:* `ELASTIC_APM_SANITIZE_FIELD_NAMES` -* <> *Central config name:* `sanitize_field_names` - -Remove sensitive data sent to Elastic APM. - -The `sanitizeFieldNames` configuration value allows you to configure a list of wildcard patterns of field names which should be redacted from agent payloads. Wildcard matches are -case-insensitive by default. You may make wildcard searches case-sensitive by -using the `(?-i)` prefix. These patterns apply to the request and response HTTP headers, HTTP request cookies, and also any form field captured during an `application/x-www-form-urlencoded` data request. - -The `sanitizeFieldNames` will redact any matched _field names_. If you wish to filter or _redact_ other data the <> may be a better choice. - -[[disable-instrumentations]] -==== `disableInstrumentations` - -* *Type:* Array of strings -* *Env:* `ELASTIC_APM_DISABLE_INSTRUMENTATIONS` - -Array or comma-separated string of module names for which to disable instrumentation. -When instrumentation is disabled for a module, -no spans will be collected for that module. - -Example using options object: - -[source,js] ----- -require('elastic-apm-node').start({ - disableInstrumentations: ['graphql', 'redis'] -}) ----- - -Example using environment variable: - -[source,bash] ----- -ELASTIC_APM_DISABLE_INSTRUMENTATIONS=graphql,redis ----- - -For an always up-to-date list of modules for which instrumentation can be disabled, -see the https://github.com/elastic/apm-agent-nodejs/tree/main/lib/instrumentation/modules[lib/instrumentation/modules] folder in the agent repository. -Note that not all modules represented in this directory will generate spans, -and adding those to this array has no effect. - -To configure if incoming http requests should be instrumented, -see <>. - -[[container-id]] -==== `containerId` - -* *Type:* String -* *Env:* `ELASTIC_APM_CONTAINER_ID` - -Specify the docker container id to associate with all reported events. -If absent, -it will be parsed out of the `/proc/self/cgroup` file. - -[[kubernetes-node-name]] -==== `kubernetesNodeName` - -* *Type:* String -* *Env:* `KUBERNETES_NODE_NAME` - -Specify the kubernetes node name to associate with all reported events. - -[[kubernetes-namespace]] -==== `kubernetesNamespace` - -* *Type:* String -* *Env:* `KUBERNETES_NAMESPACE` - -Specify the kubernetes namespace to associate with all reported events. - -[[kubernetes-pod-name]] -==== `kubernetesPodName` - -* *Type:* String -* *Env:* `KUBERNETES_POD_NAME` - -Specify the kubernetes pod name to associate with all reported events. -If absent, -and if `kubernetesPodUID` is parsed out of the `/proc/self/cgroup` file, -this will default to the local hostname. - -[[kubernetes-pod-uid]] -==== `kubernetesPodUID` - -* *Type:* String -* *Env:* `KUBERNETES_POD_UID` - -Specify the kubernetes pod uid to associate with all reported events. -If absent, -it will be parsed out of the `/proc/self/cgroup` file. - -[[metrics-interval]] -==== `metricsInterval` - -* *Type:* String -* *Default:* `"30s"` -* *Env:* `ELASTIC_APM_METRICS_INTERVAL` - -Specify the interval for reporting metrics to APM Server. -The interval should be in seconds, -or should include a time suffix. - -To disable all metrics reporting, including breakdown metrics, set the interval -to `"0s"`. - -[[metrics-limit]] -==== `metricsLimit` - -* *Type:* Number -* *Default:* `1000` -* *Env:* `ELASTIC_APM_METRICS_LIMIT` - -Specify the maximum number of metrics to track at any given time. -When a new metric is inserted which would exceed the limit, -the oldest metric will be dropped to give it space. - -[[global-labels]] -==== `globalLabels` - -* *Type:* Object -* *Env:* `ELASTIC_APM_GLOBAL_LABELS` - -Supply a key/value pair object of labels to apply to any data recorded by the agent. - -Example: -[source,bash] ----- -ELASTIC_APM_GLOBAL_LABELS="subspace=sap-hana,rack=number6" ----- - -[[config-file]] -==== `configFile` - -* *Type:* String -* *Default:* `elastic-apm-node.js` -* *Env:* `ELASTIC_APM_CONFIG_FILE` - -The Node.js agent will look for a file named `elastic-apm-node.js` in the current working directory. -You can specify a custom path using this config option (this path must include the filename), e.g: - -[source,bash] ----- -ELASTIC_APM_CONFIG_FILE=/path/to/my-elastic-apm-node.js ----- - -NOTE: The inline version of this config option, -that is passed to the <> function, -will be ignored if a config file was already loaded when this module was required (based on either the default value or because of the `ELASTIC_APM_CONFIG_FILE` environment variable). - -The configuration file is expected to export an object, -following the same conventions as the `options` object, -given as the first argument to the <> function, e.g.: - -[source,js] ----- -module.exports = { - // Override service name from package.json - // Allowed characters: a-z, A-Z, 0-9, -, _, and space - serviceName: '', - - // Use if APM Server requires a token - secretToken: '', - - // Set custom APM Server URL (default: http://127.0.0.1:8200) - serverUrl: '' -} ----- - -[[breakdown-metrics]] -==== `breakdownMetrics` - -* *Type:* Boolean -* *Default:* `true` -* *Env:* `ELASTIC_APM_BREAKDOWN_METRICS` - -Set `breakdownMetrics: false` to disable reporting of breakdown metrics. Note -that if `metricsInterval: 0`, then breakdown metrics will not be reported. - -Breakdown metrics (<>) record -the self-time spent in each unique type of span. This data drives the -{kibana-ref}/service-overview.html#service-span-duration[Time spent by span type] -chart in the APM app. - - -[[disable-metrics]] -==== `disableMetrics` - -[small]#Added in: v3.45.0# - -* *Type:* Array -* *Env:* `ELASTIC_APM_DISABLE_METRICS` - -The `disableMetrics` configuration variable is a list of wildcard patterns of metric names to *not* send to APM server. The filter is applied to <>, custom metrics defined by <>, and metrics defined <>. - -For example, setting the `ELASTIC_APM_DISABLE_METRICS="nodejs.*,my_counter"` environment variable (or the equivalent `disableMetrics: ['nodejs.*', 'my_counter']` option to <>) will result in reported metrics excluding any metric named `my_counter` and any starting with `nodejs.`. Wildcard matches are case-insensitive by default. You may make wildcard searches case-sensitive by using the `(?-i)` prefix. - -Use `metricsInterval: '0s'` to completely disable metrics collection. See <>. - - -[[custom-metrics-histogram-boundaries]] -==== `customMetricsHistogramBoundaries` - -[small]#Added in: v3.45.0 as experimental# - -* *Type:* number[] -* *Default:* (See below.) -* *Env:* `ELASTIC_APM_CUSTOM_METRICS_HISTOGRAM_BOUNDARIES` - -Defines the default bucket boundaries to use for OpenTelemetry Metrics -histograms. By default the value is: - -[source,js] ----- -[ - 0.00390625, 0.00552427, 0.0078125, 0.0110485, - 0.015625, 0.0220971, 0.03125, 0.0441942, - 0.0625, 0.0883883, 0.125, 0.176777, - 0.25, 0.353553, 0.5, 0.707107, - 1, 1.41421, 2, 2.82843, - 4, 5.65685, 8, 11.3137, - 16, 22.6274, 32, 45.2548, - 64, 90.5097, 128, 181.019, - 256, 362.039, 512, 724.077, - 1024, 1448.15, 2048, 2896.31, - 4096, 5792.62, 8192, 11585.2, - 16384, 23170.5, 32768, 46341, - 65536, 92681.9, 131072 -] ----- - -This differs from the https://opentelemetry.io/docs/reference/specification/metrics/sdk/#explicit-bucket-histogram-aggregation[OpenTelemetry default histogram boundaries]. To use the OpenTelemetry default boundaries, configure the APM agent with: - -[source,js] ----- -apm.start({ - customMetricsHistogramBoundaries: [ 0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000 ], - // ... -}) ----- - -or - -[source,bash] ----- -export ELASTIC_APM_CUSTOM_METRICS_HISTOGRAM_BOUNDARIES=0,5,10,25,50,75,100,250,500,750,1000,2500,5000,7500,10000 ----- - -To customize the boundaries for specific histogram metrics, use an OpenTelemetry Metrics SDK https://opentelemetry.io/docs/reference/specification/metrics/sdk/#view[`View`]. See https://github.com/elastic/apm-agent-nodejs/blob/main/examples/opentelemetry-metrics/use-otel-metrics-sdk.js[this script] for an example. - -See <> for a general guide on using OpenTelemetry with this APM agent. - - -[[cloud-provider]] -==== `cloudProvider` -* *Type:* String -* *Default:* `auto` -* *Env:* `ELASTIC_APM_CLOUD_PROVIDER` - -During startup the Node.js agent queries the local environment to determine whether the application is running in a cloud environment, and provides the agent with details about that environment. These details are called metadata, and will be sent to APM Server with other instrumented data. The `cloudProvider` configuration value allows you to control this behavior. - -- `auto`: Automatically determine which cloud provider the agent is running on. -- `gcp`: Only query for Google Cloud Platform information. -- `aws`: Only query for Amazon Web Service information. -- `azure`: Only query for Azure information. -- `none`: Do not query for any cloud provider information. - -If the value is not one of the five listed above, the agent will use the value of `auto`. - -[[ignore-message-queues]] -==== `ignoreMessageQueues` -* *Type:* Array -* *Default:* `[]` -* *Env:* `ELASTIC_APM_IGNORE_MESSAGE_QUEUES` -* <> *Central config name:* `ignore_message_queues` - -Array or comma-separated string of wildcard patterns that tell the agent to -ignore certain queues/topics when instrumenting messaging systems. - -When an instrumented messaging system sends or receives a message, the agent -will test the queue/topic name against each wildcard in this list. If -the name matches, the agent will skip instrumenting the operation. - -The `ignoreMessageQueues` property supports simple wildcard (`*`) patterns, and -may not include commas. Wildcard matches are case-insensitive by default. You -may make wildcard searches case-sensitive by using the `(?-i)` prefix. - -Example usage: - -[source,js] ----- -require('elastic-apm-node').start({ - ignoreMessageQueues: [ - 'overnight_jobs', - 'events_*', - '(?-i)caseSensitiveSearch' - ] -}) ----- - - -[[trace-continuation-strategy]] -==== `traceContinuationStrategy` - -[small]#Added in: v3.34.0# - -* *Type:* String -* *Default:* `'continue'` -* *Env:* `ELASTIC_APM_TRACE_CONTINUATION_STRATEGY` -* <> *Central config name:* `trace_continuation_strategy` - -This option allows some control on how the APM agent handles W3C trace-context -headers on incoming requests. By default, the `traceparent` and `tracestate` -headers are used per W3C spec for distributed tracing. However, in certain cases -it can be helpful to *not* use the incoming `traceparent` header. Some example -use cases: - -- An Elastic-monitored service is receiving requests with `traceparent` headers - from *unmonitored* services. -- An Elastic-monitored service is publicly exposed, and does not want tracing - data (trace-ids, sampling decisions) to possibly be spoofed by user requests. - -Valid values are: - -- `'continue'` - The default behavior. An incoming `traceparent` value is used - to continue the trace and determine the sampling decision. -- `'restart'` - Always ignores the `traceparent` header of incoming - requests. A new trace-id will be generated and the sampling decision will be - made based on <>. A *span - link* will be made to the incoming traceparent. -- `'restart_external'` - If an incoming request includes the `es` vendor flag - in `tracestate`, then any 'traceparent' will be considered internal and - will be handled as described for 'continue' above. Otherwise, any 'traceparent' - is considered external and will be handled as described for 'restart' above. - -Starting with Elastic Observability 8.2, span links will be visible in trace -views. - - -[[span-compression-enabled]] -==== `spanCompressionEnabled` -* *Type:* Boolean -* *Default:* `true` -* *Env:* `ELASTIC_APM_SPAN_COMPRESSION_ENABLED` - -Setting this option to false will disable the https://www.elastic.co/guide/en/apm/guide/current/span-compression.html[Span compression] feature. Span compression reduces the collection, processing, and storage overhead, and removes clutter from the UI. The tradeoff is that some information, such as DB statements of all the compressed spans, will not be collected. - -Example usage: - -[source,js] ----- -require('elastic-apm-node').start({ - spanCompressionEnabled: true -}) ----- - -[[span-compression-exact-match-max-duration]] -==== `spanCompressionExactMatchMaxDuration` -* *Type:* String -* *Default:* `50ms` -* *Env:* `ELASTIC_APM_SPAN_COMPRESSION_EXACT_MATCH_MAX_DURATION` - -Consecutive spans that are exact match and that are under this threshold will be compressed into a single composite span. This option does not apply to composite spans. This reduces the collection, processing, and storage overhead, and removes clutter from the UI. The tradeoff is that the DB statements of all the compressed spans will not be collected. - -Supports the duration suffixes ms (milliseconds), s (seconds) and m (minutes). - -Example usage: - -[source,js] ----- -require('elastic-apm-node').start({ - spanCompressionExactMatchMaxDuration:'100ms' -}) ----- - -[[span-compression-same-kind-max-duration]] -==== `spanCompressionSameKindMaxDuration` -* *Type:* String -* *Default:* `0ms` -* *Env:* `ELASTIC_APM_SPAN_COMPRESSION_SAME_KIND_MAX_DURATION` - -Consecutive spans to the same destination that are under this threshold will be compressed into a single composite span. This option does not apply to composite spans. This reduces the collection, processing, and storage overhead, and removes clutter from the UI. The tradeoff is that the DB statements of all the compressed spans will not be collected. - -Example usage: - -[source,js] ----- -require('elastic-apm-node').start({ - spanCompressionSameKindMaxDuration:'0ms' -}) ----- - - -[[opentelemetry-bridge-enabled]] -==== `opentelemetryBridgeEnabled` - -[small]#Added in: v3.34.0 as experimental# - -* *Type:* Boolean -* *Default:* `false` -* *Env:* `ELASTIC_APM_OPENTELEMETRY_BRIDGE_ENABLED` - -Setting this option to true will enable the <>. Briefly, the OpenTelemetry Bridge allows one to use the vendor-neutral -https://opentelemetry.io/docs/instrumentation/js/api/[OpenTelemetry Tracing API] -(https://www.npmjs.com/package/@opentelemetry/api[`@opentelemetry/api`]) to -manually instrument your code, and have the Elastic Node.js APM agent handle -those API calls. - -Example usage: - -[source,js] ----- -require('elastic-apm-node').start({ - opentelemetryBridgeEnabled: true -}) ----- - -[[exit-span-min-duration]] -==== `exitSpanMinDuration` -* *Type:* String -* *Default:* `0ms` -* *Env:* `ELASTIC_APM_EXIT_SPAN_MIN_DURATION` -* <> *Central config name:* `exit_span_min_duration` - -Sets the minimum duration of exit spans. If an exit span's duration is less than -this threshold the agent will attempt to drop the span and not send it. - -In some cases exit spans will not be discarded. Spans that propagate the trace -context to downstream services, such as outgoing HTTP requests, will not be -discarded. However, external calls that don't propagate context, such as calls -to a database, can be discarded using this threshold. - -Additionally, spans that lead to an error will not be discarded. - -Example usage: - -[source,js] ----- -require('elastic-apm-node').start({ - exitSpanMinDuration: '10ms' -}) ----- - -[[elasticsearch-capture-body-urls]] -==== `elasticsearchCaptureBodyUrls` - -* *Type:* Array of wildcard patterns -* *Default:* `['*/_search', '*/_search/template', '*/_msearch', '*/_msearch/template', '*/_async_search', '*/_count', '*/_sql', '*/_eql/search' ]` -* *Env:* `ELASTIC_APM_ELASTICSEARCH_CAPTURE_BODY_URLS` -// Spec name: elasticsearch_capture_body_urls - -The URL path patterns for which the APM agent will capture the request body of outgoing requests to Elasticsearch made with the `@elastic/elasticsearch` module (or the legacy `elasticsearch` module). The default setting captures the body for https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html[Elasticsearch REST APIs] making a search. - -The captured request body (if any) is stored on the `span.db.statement` field. Captured request bodies are truncated to a maximum length defined by <>. - - -[[use-elastic-traceparent-header]] -==== `useElasticTraceparentHeader` - -[small]#Change default in v4.0.0, in v3.x the default was `true`# - -* *Type:* Boolean -* *Default:* `false` -* *Env:* `ELASTIC_APM_USE_ELASTIC_TRACEPARENT_HEADER` - -To enable {apm-guide-ref}/apm-distributed-tracing.html[distributed tracing], the agent -adds trace context headers to outgoing requests (like HTTP requests, etc.). -These headers (`traceparent` and `tracestate`) are defined in the -https://www.w3.org/TR/trace-context-1/[W3C Trace Context] specification. - -When this setting is `true`, the agent will also add the header `elastic-apm-traceparent` -for backwards compatibility with older versions of Elastic APM agents. (In the -next major version of this APM agent, this setting will default to false.) diff --git a/docs/custom-stack.asciidoc b/docs/custom-stack.asciidoc deleted file mode 100644 index 52f97fd6a3..0000000000 --- a/docs/custom-stack.asciidoc +++ /dev/null @@ -1,199 +0,0 @@ -:framework: custom Node.js - -[[custom-stack]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/custom-stack.html[elastic.co] -endif::[] - -=== Get started with a custom Node.js stack - -include::./shared-set-up.asciidoc[tag=introduction] - -If you are using Express, hapi, Koa, Restify, Fastify, or AWS Lambda, -we recommend that you read these articles instead: - -include::set-up.asciidoc[tag=web-frameworks-list] - -[float] -[[custom-stack-installation]] -==== Installation - -Add the `elastic-apm-node` module as a dependency to your application: - -[source,bash] ----- -npm install elastic-apm-node --save ----- - -[float] -[[custom-stack-initialization]] -==== Initialization - -It's important that the agent is started before you require *any* other modules in your Node.js application - i.e. before `http` and before your router etc. - -This means that you should probably require and start the agent in your application's main file (usually `index.js`, `server.js` or `app.js`). - -Here's a simple example of how Elastic APM is normally required and started: - -[source,js] ----- -// Add this to the VERY top of the first file loaded in your app -var apm = require('elastic-apm-node').start({ - // Override service name from package.json - // Allowed characters: a-z, A-Z, 0-9, -, _, and space - serviceName: '', - - // Use if APM Server requires a token - secretToken: '', - - // Use if APM Server uses API keys for authentication - apiKey: '', - - // Set custom APM Server URL (default: http://127.0.0.1:8200) - serverUrl: '', -}) ----- - -The agent will now monitor the performance of your application and record any uncaught exceptions. - -[float] -[[custom-stack-advanced-configuration]] -===== Advanced configuration - -include::./shared-set-up.asciidoc[tag=advanced-configuration] - -[float] -[[custom-stack-full-documentation]] -===== Full documentation - -* <> -* <> - -[float] -[[custom-stack-performance-monitoring]] -==== Performance monitoring - -include::./shared-set-up.asciidoc[tag=performance-monitoring] - -[float] -[[custom-stack-route-naming]] -===== Route naming - -The Node.js agent tracks incoming HTTP requests to your application in what are called "transactions". -All transactions with the same name are grouped together automatically. - -In a normal web application, you want to name transactions based on the route that matches the incoming HTTP request. -So say you have a route to display posts on a blog identified by `GET /posts/{id}`. -You want requests `GET /posts/12`, `GET /posts/42` etc to be grouped together under a transaction named `GET /posts/{id}`. - -If you are using Express, hapi, koa-router, Restify, or Fastify this naming happens automatically based on the names of your routes. -If you use another framework or a custom router you will see that the transactions are simply grouped together in a few big chunks named "unknown route". -In that case, -you will need to help us out a little by supplying a name for each transaction. -You can do that by calling <> at any time during the request with the name of the transaction as the first argument. - -Excerpt of an application using the https://github.com/watson/patterns[patterns] module for route handling: - -[source,js] ----- -var apm = require('elastic-apm-node').start() -var http = require('http') -var patterns = require('patterns')() - -// Setup routes and their respective route handlers -patterns.add('GET /', require('./routes/index')) -patterns.add('GET /posts', require('./routes/posts').index) -patterns.add('GET /posts/{id}', require('./routes/posts').show) - -http.createServer(function (req, res) { - // Check if we have a route matching the incoming request - var match = patterns.match(req.method + ' ' + req.url); - - // If no match is found, respond with a 404. Elastic APM will in - // this case use the default transaction name "unknown route" - if (!match) { - res.writeHead(404) - res.end() - return - } - - // The patterns module exposes the pattern used to match the - // request on the `pattern` property, e.g. `GET /posts/{id}` - apm.setTransactionName(match.pattern) - - // Populate the params and call the matching route handler - var fn = match.value - req.params = match.params - fn(req, res) -}).listen(3000) ----- - -[float] -[[custom-stack-unknown-routes]] -===== Unknown routes - -include::./shared-set-up.asciidoc[tag=unknown-roots] - -[float] -[[custom-stack-error-logging]] -==== Error logging - -include::./shared-set-up.asciidoc[tag=error-logging] - -[float] -[[custom-stack-middleware-error-handler]] -===== Middleware error handler - -If you use the https://www.npmjs.com/package/connect[connect] module and an error is either thrown synchronously inside one of the middleware functions or is passed as the first argument to the middleware `next()` function, -it will be passed to the https://www.npmjs.com/package/connect#error-middleware[Connect error handler]. - -It's recommended that you register the agent as a Connect error handler. -In the case where you have multiple Connect error handlers, -the agent error handler should be the first in the chain to ensure that it will receive the error correctly. - -[source,js] ----- -var apm = require('elastic-apm-node').start() -var connect = require('connect') - -var app = connect() - -// Your regular middleware and router... -app.use(...) -app.use(...) -app.use(...) - -// Add the Elastic APM middleware after your regular middleware -app.use(apm.middleware.connect()) - -// ...but before any other error handler -app.use(function (err, req, res, next) { - // Custom error handling goes here -}) ----- - -[float] -[[custom-stack-filter-sensitive-information]] -==== Filter sensitive information - -include::./shared-set-up.asciidoc[tag=filter-sensitive-info] - -[float] -[[custom-stack-add-your-own-data]] -==== Add your own data - -include::./shared-set-up.asciidoc[tag=add-your-own-data] - -[float] -[[custom-stack-compatibility]] -==== Compatibility - -include::./shared-set-up.asciidoc[tag=compatibility-link] - -[float] -[[custom-stack-troubleshooting]] -==== Troubleshooting - -include::./shared-set-up.asciidoc[tag=troubleshooting-link] diff --git a/docs/distributed-tracing.asciidoc b/docs/distributed-tracing.asciidoc deleted file mode 100644 index a50ecc475b..0000000000 --- a/docs/distributed-tracing.asciidoc +++ /dev/null @@ -1,94 +0,0 @@ -[[distributed-tracing]] -== Distributed tracing - -// Content from APM Overview documentation -// https://www.elastic.co/guide/en/apm/get-started/current/distributed-tracing.html -Distributed tracing enables you to analyze performance throughout your microservices architecture all in one view. -This is accomplished by tracing all of the requests -- -from the initial web request to your front-end service -- to queries made to your back-end services. -This makes finding possible bottlenecks throughout your application much easier and faster. - -Elastic APM automatically supports distributed tracing, -but there are some cases, outlined below, where additional setup is necessary. - -[float] -[[tracing-rum-correlation]] -=== Real User Monitoring (RUM) correlation - -// Content from RUM documentation -// https://www.elastic.co/guide/en/apm/agent/rum-js/master/distributed-tracing-guide.html -If your backend service generates an HTML page dynamically, -the trace ID and parent span ID must be injected into the page when the RUM Agent is initialized. -This ensures that the web browser’s page load appears as the root of the trace, -and allows you to analyze the time spent in the browser vs in backend services. - -// Content from transaction-api.asciidoc -include::./transaction-api.asciidoc[tag=ensure-parent-id-snippet] - -For more information, see <>. - -[float] -[[tracing-custom-protocol]] -=== Custom protocols - -Distributed tracing is automatically supported with HTTP/HTTPS. -If you're using another protocol, like TCP, UDP, WebSocket, or Protocol Buffers, -there are a few manual setup steps you must follow. - -In a distributed trace, multiple transactions are linked together with a `traceparent`. -To create your own distributed trace, you must pass the current `traceparent` from an outgoing service, -to a receiving service, and create a new transaction as a child of that `traceparent`: - -1. In one service, start a transaction with <>, -or a span with <>. - -2. Get the serialized `traceparent` string of the started transaction/span with <>. - -3. Encode the `traceparent` and send it to the receiving service inside your regular request. - -4. Decode and store the `traceparent` in the receiving service. - -5. Manually start a new transaction as a child of the received `traceparent`, -with <>. -Pass in the `traceparent` as the `childOf` option. - -[float] -[[tracing-custom-example]] -==== Example - -Consider a scenario where you're using raw UDP to communicate between two services, A and B: - -**Service A** - -Service A starts a transaction, and gets the current `traceparent`. - -[source,js] ----- -agent.startTransaction('my-service-a-transaction') -const traceparent = agent.currentTraceparent ----- - -Service A then sends the `traceparent` as a "header" to service B. - -[source,js] ----- -// Pseudocode for sending data -sendMetadata(`traceparent: ${traceparent}\n`) ----- - -**Service B** - -Service B reads the `traceparent` from the incoming request. - -[source,js] ----- -// Pseudocode for reading incoming request -const traceparent = readTraceparentFromUDPPacket() ----- - -Service B uses the `traceparent` to initialize a new transaction that is a child of the original `traceparent`. - -[source,js] ----- -agent.startTransaction('my-service-b-transaction', { childOf: traceparent }) ----- diff --git a/docs/docset.yml b/docs/docset.yml new file mode 100644 index 0000000000..1d75ef4a24 --- /dev/null +++ b/docs/docset.yml @@ -0,0 +1,16 @@ +project: 'APM Node.js agent docs' +cross_links: + - apm-agent-rum-js + - apm-aws-lambda + - apm-k8s-attacher + - docs-content + - ecs + - ecs-logging + - ecs-logging-nodejs + - elasticsearch +toc: + - toc: reference + - toc: release-notes +subs: + ecloud: "Elastic Cloud" + apm-lambda-ext: "Elastic APM AWS Lambda extension" diff --git a/docs/esm.asciidoc b/docs/esm.asciidoc deleted file mode 100644 index 32ca0c8f36..0000000000 --- a/docs/esm.asciidoc +++ /dev/null @@ -1,121 +0,0 @@ -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/esm.html[elastic.co] -endif::[] - -[[esm]] -== ECMAScript module support - -NOTE: ECMAScript module support is currently incomplete and experimental. It was added in version v3.48.0. - -The Elastic APM Node.js agent includes _limited and experimental_ support for auto-instrumentation of https://nodejs.org/api/esm.html#modules-ecmascript-modules[ECMAScript modules] (ESM) -- i.e. modules loaded via the `import ...` statement or the `import(...)` expression. Support is based on the experimental https://nodejs.org/api/esm.html#loaders[Node.js Loaders API], which requires passing the `--experimental-loader` option to node. - -As a first example, the APM agent can provide HTTP tracing for the following Express server: - -[source,js] ----- -// server.mjs -import bodyParser from 'body-parser' -import express from 'express' - -const app = express() -app.use(bodyParser.json()) -app.get('/hello/:name', function (request, reply) { - reply.send({ hello: request.params.name }) -}) - -app.listen({ port: 3000}, () => { - console.log('Server is listening. Try:\n curl -i http://localhost:3000/hello/grace') -}) ----- - -when invoked as follows: - -[source,bash] ----- -export ELASTIC_APM_SERVER_URL='https://...apm...cloud.es.io:443' -export ELASTIC_APM_SECRET_TOKEN='...' -node -r elastic-apm-node/start.js \ - --experimental-loader=elastic-apm-node/loader.mjs \ - node server.mjs ----- - -The current ESM support is limited -- only a subset of the modules listed at <> are implemented. More will be added in subsequent releases. See below for full details. - -The ESM limitations only affects the agent's automatic instrumentation. Other functionality -- such as metrics collection, manual instrumentation and error capture -- still work when using ES modules. - - -[float] -[[esm-enabling]] -=== Enabling ESM auto-instrumentation - -Enabling ESM auto-instrumentation requires starting Node.js with the `--experimental-loader=elastic-apm-node/loader.mjs` option. This can be done by passing the argument on the command line or by setting the https://nodejs.org/api/all.html#all_cli_node_optionsoptions[`NODE_OPTIONS`] environment variable. - -[source,bash] ----- -node --experimental-loader=elastic-apm-node/loader.mjs server.mjs - -# or - -NODE_OPTIONS='--experimental-loader=elastic-apm-node/loader.mjs' -node server.mjs ----- - -As well, the APM agent must also be separately *started* -- for example via `--require=elastic-apm-node/start.js`. See <> for the various ways of starting the APM agent. - - -[float] -[[esm-compat-node]] -=== Supported Node.js versions - -Automatic instrumentation of ES modules is based on the experimental Node.js Loaders API. ESM support in the Elastic APM Node.js agent will remain *experimental* while the Loaders API is experimental. - -ESM auto-instrumentation is only supported for Node.js versions that match *`^12.20.0 || ^14.13.1 || ^16.0.0 || ^18.1.0 || >=20.2.0`*. -The behavior when using `node --experimental-loader=elastic-apm-node/loader.mjs` with earlier Node.js versions is undefined and unsupported. - - -[float] -[[esm-compat-modules]] -=== Supported modules - -Automatic instrumentation of ES modules is currently limited as described here. Note that the supported module version ranges often differ from those for CommonJS (i.e. `require()`) auto-instrumentation. - -[options="header"] -|======================================================================= -| Module | Version | Note | -| `@aws-sdk/client-dynamodb` | >=3.15.0 <4 | | -| `@aws-sdk/client-s3` | >=3.15.0 <4 | | -| `@aws-sdk/client-sns` | >=3.15.0 <4 | | -| `@aws-sdk/client-sqs` | >=3.15.0 <4 | | -| `cassandra-driver` | >=3.0.0 <5 | | -| `express` | ^4.0.0 | | -| `fastify` | >=3.5.0 | | -| `http` | | See <> above. | -| `https` | | See <> above. | -| `ioredis` | >=2 <6 | | -| `knex` | >=0.20.0 <4 | Also, only with pg@8. | -| `pg` | ^8 | | -|======================================================================= - - -[float] -[[esm-troubleshooting]] -=== Troubleshooting ESM support - -If you see an error like the following, then you are attempting to use ESM auto-instrumentation support with too early of a version of Node.js. See <> above. - -[source] ----- -file:///.../node_modules/import-in-the-middle/hook.mjs:6 -import { createHook } from './hook.js' - ^^^^^^^^^^ -SyntaxError: The requested module './hook.js' is expected to be of type CommonJS, which does not support named exports. CommonJS modules can be imported by importing the default export. -For example: -import pkg from './hook.js'; -const { createHook } = pkg; - at ModuleJob._instantiate (internal/modules/esm/module_job.js:98:21) - at async ModuleJob.run (internal/modules/esm/module_job.js:137:5) - at async Loader.import (internal/modules/esm/loader.js:165:24) - at async internal/process/esm_loader.js:57:9 - at async Object.loadESM (internal/process/esm_loader.js:67:5) ----- diff --git a/docs/express.asciidoc b/docs/express.asciidoc deleted file mode 100644 index a4693529c8..0000000000 --- a/docs/express.asciidoc +++ /dev/null @@ -1,120 +0,0 @@ -:framework: Express - -[[express]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/express.html[elastic.co] -endif::[] - -=== Get started with Express - -Getting Elastic APM set up for your Express app is easy, -and there are various ways you can tweak it to fit your needs. -Follow the guide below to get started, and for more advanced topics, -check out the <>. - -[float] -[[express-installation]] -==== Installation - -Add the `elastic-apm-node` module as a dependency to your application: - -[source,bash] ----- -npm install elastic-apm-node --save ----- - -[float] -[[express-initialization]] -==== Initialization - -It's important that the agent is started before you require *any* other modules in your Node.js application - i.e. before `express`, `http`, etc. - -This means that you should probably require and start the agent in your application's main file (usually `index.js`, `server.js` or `app.js`). - -Here's a simple Express example with the Elastic APM agent installed: - -[source,js] ----- -// Add this to the VERY top of the first file loaded in your app -const apm = require('elastic-apm-node').start({ - // Override service name from package.json - // Allowed characters: a-z, A-Z, 0-9, -, _, and space - serviceName: '', - - // Use if APM Server requires a token - secretToken: '', - - // Use if APM Server uses API keys for authentication - apiKey: '', - - // Set custom APM Server URL (default: http://127.0.0.1:8200) - serverUrl: '', -}) - -const app = require('express')() - -app.get('/', function (req, res) { - res.send('Hello World!') -}) - -app.listen(3000) ----- - -The agent will now monitor the performance of your Express application and record any uncaught exceptions. - -[float] -[[express-advanced-configuration]] -===== Advanced configuration - -include::./shared-set-up.asciidoc[tag=advanced-configuration] - -[float] -[[express-full-documentation]] -===== Full documentation - -* <> -* <> - -[float] -[[express-performance-monitoring]] -==== Performance monitoring - -include::./shared-set-up.asciidoc[tag=performance-monitoring] - -[float] -[[express-unknown-routes]] -===== Unknown routes - -include::./shared-set-up.asciidoc[tag=unknown-roots] - -[float] -[[express-error-logging]] -==== Error logging - -include::./shared-set-up.asciidoc[tag=error-logging] - -[float] -[[express-filter-sensitive-information]] -==== Filter sensitive information - -include::./shared-set-up.asciidoc[tag=filter-sensitive-info] - -[float] -[[express-add-your-own-data]] -==== Add your own data - -include::./shared-set-up.asciidoc[tag=add-your-own-data] - -[float] -[[express-compatibility]] -==== Compatibility - -include::./shared-set-up.asciidoc[tag=compatibility-link] - -[float] -[[express-troubleshooting]] -==== Troubleshooting - -include::./shared-set-up.asciidoc[tag=troubleshooting-link] diff --git a/docs/fastify.asciidoc b/docs/fastify.asciidoc deleted file mode 100644 index fd322a49e5..0000000000 --- a/docs/fastify.asciidoc +++ /dev/null @@ -1,130 +0,0 @@ -:framework: Fastify - -[[fastify]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/fastify.html[elastic.co] -endif::[] - -=== Get started with Fastify - -Getting Elastic APM set up for your Fastify app is easy, -and there are various ways you can tweak it to fit your needs. - -Follow the guide below to get started, and for more advanced topics, -check out the <>. - -[float] -[[fastify-installation]] -==== Installation - -Add the `elastic-apm-node` module as a dependency to your application: - -[source,bash] ----- -npm install elastic-apm-node --save ----- - -[float] -[[fastify-initialization]] -==== Initialization - -It's important that the agent is started before you require *any* other modules in your Node.js application - i.e. before `fastify`, `http`, etc. - -This means that you should probably require and start the agent in your application's main file (usually `index.js`, `server.js` or `app.js`). - -Here's a simple Fastify example with the Elastic APM agent installed: - -[source,js] ----- -// Add this to the VERY top of the first file loaded in your app -var apm = require('elastic-apm-node').start({ - // Override service name from package.json - // Allowed characters: a-z, A-Z, 0-9, -, _, and space - serviceName: '', - - // Use if APM Server requires a token - secretToken: '', - - // Use if APM Server uses API keys for authentication - apiKey: '', - - // Set custom APM Server URL (default: http://127.0.0.1:8200) - serverUrl: '', -}) - -// Require the framework and instantiate it -var fastify = require('fastify')({ - logger: true -}) - -// Declare a route -fastify.get('/', function (request, reply) { - reply.send({ hello: 'world' }) -}) - -// Run the server! -fastify.listen(3000, function (err, address) { - if (err) throw err - fastify.log.info(`server listening on ${address}`) -}) ----- - -The agent will now monitor the performance of your Fastify application and record any uncaught exceptions. - -[float] -[[fastify-advanced-configuration]] -===== Advanced configuration - -include::./shared-set-up.asciidoc[tag=advanced-configuration] - -[float] -[[fastify-full-documentation]] -===== Full documentation - -* <> -* <> - -[float] -[[fastify-performance-monitoring]] -==== Performance monitoring - -include::./shared-set-up.asciidoc[tag=performance-monitoring] - -[float] -[[fastify-unknown-routes]] -===== Unknown routes - -include::./shared-set-up.asciidoc[tag=unknown-roots] - -[float] -[[fastify-error-logging]] -==== Error logging - -include::./shared-set-up.asciidoc[tag=error-logging] - -[float] -[[fastify-filter-sensitive-information]] -==== Filter sensitive information - -include::./shared-set-up.asciidoc[tag=filter-sensitive-info] - -[float] -[[fastify-add-your-own-data]] -==== Add your own data - -include::./shared-set-up.asciidoc[tag=add-your-own-data] - -[float] -[[fastify-compatibility]] -==== Compatibility - -include::./shared-set-up.asciidoc[tag=compatibility-link] -See also: https://www.fastify.io/docs/latest/LTS/[Fastify's own LTS documentation.] - -[float] -[[fastify-troubleshooting]] -==== Troubleshooting - -include::./shared-set-up.asciidoc[tag=troubleshooting-link] diff --git a/docs/hapi.asciidoc b/docs/hapi.asciidoc deleted file mode 100644 index 54153c1881..0000000000 --- a/docs/hapi.asciidoc +++ /dev/null @@ -1,128 +0,0 @@ -:framework: hapi - -[[hapi]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/hapi.html[elastic.co] -endif::[] - -=== Get started with hapi - -include::./shared-set-up.asciidoc[tag=introduction] - -[float] -[[hapi-installation]] -==== Installation - -Add the `elastic-apm-node` module as a dependency to your application: - -[source,bash] ----- -npm install elastic-apm-node --save ----- - -[float] -[[hapi-initialization]] -==== Initialization - -It's important that the agent is started before you require *any* other modules in your Node.js application - i.e. before `@hapi/hapi`, `http`, etc. - -This means that you should probably require and start the agent in your application's main file (usually `index.js`, `server.js` or `app.js`). - -Here's a simple hapi example with the Elastic APM agent installed: - -[source,js] ----- -// Add this to the VERY top of the first file loaded in your app -const apm = require('elastic-apm-node').start({ - // Override service name from package.json - // Allowed characters: a-z, A-Z, 0-9, -, _, and space - serviceName: '', - - // Use if APM Server requires a token - secretToken: '', - - // Use if APM Server uses API keys for authentication - apiKey: '', - - // Set custom APM Server URL (default: http://127.0.0.1:8200) - serverUrl: '', -}) - -const Hapi = require('@hapi/hapi') - -const init = async () => { - const server = Hapi.server({ port: 3000, host: 'localhost' }) - - server.route({ - method: 'GET', - path: '/', - handler: (request, h) => { - return 'hello world' - } - }) - - await server.start() - console.log('Server running on %s', server.info.uri) -} - -init() ----- - -The agent will now monitor the performance of your hapi application and record any uncaught exceptions. - -[float] -[[hapi-advanced-configuration]] -===== Advanced configuration - -include::./shared-set-up.asciidoc[tag=advanced-configuration] - -[float] -[[hapi-full-documentation]] -===== Full documentation - -* <> -* <> - -[float] -[[hapi-performance-monitoring]] -==== Performance monitoring - -include::./shared-set-up.asciidoc[tag=performance-monitoring] - -[float] -[[hapi-unknown-routes]] -===== Unknown routes - -include::./shared-set-up.asciidoc[tag=unknown-roots] - -[float] -[[hapi-error-logging]] -==== Error logging - -include::./shared-set-up.asciidoc[tag=error-logging] - -[float] -[[hapi-filter-sensitive-information]] -==== Filter sensitive information - -include::./shared-set-up.asciidoc[tag=filter-sensitive-info] - -[float] -[[hapi-add-your-own-data]] -==== Add your own data - -include::./shared-set-up.asciidoc[tag=add-your-own-data] - -[float] -[[hapi-compatibility]] -==== Compatibility - -include::./shared-set-up.asciidoc[tag=compatibility-link] - -[float] -[[hapi-troubleshooting]] -==== Troubleshooting - -include::./shared-set-up.asciidoc[tag=troubleshooting-link] diff --git a/docs/index.asciidoc b/docs/index.asciidoc deleted file mode 100644 index 9f495418e8..0000000000 --- a/docs/index.asciidoc +++ /dev/null @@ -1,57 +0,0 @@ -include::{asciidoc-dir}/../../shared/versions/stack/current.asciidoc[] -include::{asciidoc-dir}/../../shared/attributes.asciidoc[] - -:type-string: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type[] -:type-string-array: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type[] -:type-array: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array[] -:type-boolean: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type[] -:type-object: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object[] -:type-number: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type[] -:type-function: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function[] -:type-error: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error[] -:type-undefined: https://developer.mozilla.org/en-US/docs/Glossary/Undefined[] -:type-incomingmessage: https://nodejs.org/api/http.html#http_class_http_incomingmessage[] -:type-serverresponse: https://nodejs.org/api/http.html#http_class_http_serverresponse[] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs[elastic.co] -endif::[] - -= APM Node.js Agent Reference - -include::./intro.asciidoc[] - -include::./set-up.asciidoc[] - -include::./supported-technologies.asciidoc[] - -include::./setup.asciidoc[] - -include::./api.asciidoc[] - -include::./metrics.asciidoc[] - -include::./logs.asciidoc[] - -include::./api-opentelemetry.asciidoc[] - -include::./opentracing.asciidoc[] - -include::./source-maps.asciidoc[] - -include::./esm.asciidoc[] - -include::./distributed-tracing.asciidoc[] - -include::./message-queues.asciidoc[] - -include::./performance-tuning.asciidoc[] - -include::./troubleshooting.asciidoc[] - -include::./upgrading.asciidoc[] - -include::./release-notes.asciidoc[] - -include::./redirects.asciidoc[] diff --git a/docs/intro.asciidoc b/docs/intro.asciidoc deleted file mode 100644 index be2e0c4b98..0000000000 --- a/docs/intro.asciidoc +++ /dev/null @@ -1,35 +0,0 @@ -[[intro]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/intro.html[elastic.co] -endif::[] - -== Introduction - -The Elastic APM Node.js Agent sends performance metrics and errors to the APM Server. -It has built-in support for the most popular frameworks and routers, -as well as a simple API which allows you to instrument any application. - -[float] -[[how-it-works]] -=== How does the Agent work? - -The agent auto-instruments <> and records interesting events, -like HTTP requests and database queries. To do this, it patches modules as they are loaded to capture when module functions and callbacks are called. Additionally, there are some cases where a module will be patched to allow tracing context to be propagated through the asynchronous continuation. -This means that for the supported technologies, there are no code changes required. - -The Agent automatically links module function calls to callback calls to measure their duration and metadata (like the DB statement), -as well as HTTP related information (like the URL, parameters, and headers). - -These events, called Transactions and Spans, are sent to the APM Server. -The APM Server converts them to a format suitable for Elasticsearch, and sends them to an Elasticsearch cluster. -You can then use the APM app in Kibana to gain insight into latency issues and error culprits within your application. - -[float] -[[additional-components]] -=== Additional Components - -APM Agents work in conjunction with the {apm-guide-ref}/index.html[APM Server], {ref}/index.html[Elasticsearch], and {kibana-ref}/index.html[Kibana]. -The {apm-guide-ref}/index.html[APM Guide] provides details on how these components work together, -and provides a matrix outlining {apm-guide-ref}/agent-server-compatibility.html[Agent and Server compatibility]. diff --git a/docs/koa.asciidoc b/docs/koa.asciidoc deleted file mode 100644 index 6153c4b484..0000000000 --- a/docs/koa.asciidoc +++ /dev/null @@ -1,130 +0,0 @@ -:framework: Koa - -[[koa]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/koa.html[elastic.co] -endif::[] - -=== Get started with Koa - -include::./shared-set-up.asciidoc[tag=introduction] - -Koa doesn't have a built-in router, -so we can't support Koa directly since we rely on router information for full support. -We currently support the most popular Koa router called https://github.com/koajs/koa-router[koa-router]. - -If you use another router with your Koa application, -please https://github.com/elastic/apm-agent-nodejs/issues[open an issue] so we can make sure to support your stack. -In the meantime, you can <>. - -[float] -[[koa-installation]] -==== Installation - -Add the `elastic-apm-node` module as a dependency to your application: - -[source,bash] ----- -npm install elastic-apm-node --save ----- - -[float] -[[koa-initialization]] -==== Initialization - -It's important that the agent is started before you require *any* other modules in your Node.js application - i.e. before `koa`, `http`, etc. - -This means that you should probably require and start the agent in your application's main file (usually `index.js`, `server.js` or `app.js`). - -Here's a simple Koa example with the Elastic APM agent installed: - -[source,js] ----- -// Add this to the VERY top of the first file loaded in your app -const apm = require('elastic-apm-node').start({ - // Override service name from package.json - // Allowed characters: a-z, A-Z, 0-9, -, _, and space - serviceName: '', - - // Use if APM Server requires a token - secretToken: '', - - // Use if APM Server uses API keys for authentication - apiKey: '', - - // Set custom APM Server URL (default: http://127.0.0.1:8200) - serverUrl: '', -}) - -const app = require('koa')() -const router = require('koa-router')() - -router.get('/', function *(next) { - this.body = 'Hello World' -}) - -app - .use(router.routes()) - .use(router.allowedMethods()) - -app.listen(3000) ----- - -The agent will now monitor the performance of your Koa application and record any uncaught exceptions. - -[float] -[[koa-advanced-configuration]] -===== Advanced configuration - -include::./shared-set-up.asciidoc[tag=advanced-configuration] - -[float] -[[koa-full-documentation]] -===== Full documentation - -* <> -* <> - -[float] -[[koa-performance-monitoring]] -==== Performance monitoring - -include::./shared-set-up.asciidoc[tag=performance-monitoring] - -[float] -[[koa-unknown-routes]] -===== Unknown routes - -include::./shared-set-up.asciidoc[tag=unknown-roots] - -[float] -[[koa-error-logging]] -==== Error logging - -include::./shared-set-up.asciidoc[tag=error-logging] - -[float] -[[koa-filter-sensitive-information]] -==== Filter sensitive information - -include::./shared-set-up.asciidoc[tag=filter-sensitive-info] - -[float] -[[koa-add-your-own-data]] -==== Add your own data - -include::./shared-set-up.asciidoc[tag=add-your-own-data] - -[float] -[[koa-compatibility]] -==== Compatibility - -include::./shared-set-up.asciidoc[tag=compatibility-link] - -[float] -[[koa-troubleshooting]] -==== Troubleshooting - -include::./shared-set-up.asciidoc[tag=troubleshooting-link] diff --git a/docs/lambda.asciidoc b/docs/lambda.asciidoc deleted file mode 100644 index 2797865c4d..0000000000 --- a/docs/lambda.asciidoc +++ /dev/null @@ -1,83 +0,0 @@ -[[lambda]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/lambda.html[elastic.co] -endif::[] - -=== Monitoring AWS Lambda Node.js Functions -:layer-section-type: with-agent - -The Node.js APM Agent can be used with AWS Lambda to monitor the execution of your AWS Lambda functions. - -[float] -[[aws-lambda-nodejs-quick-start]] -=== Quick Start - -To get started with APM for your Node.js AWS Lambda functions follow the steps below. - -[float] -[[aws-lambda-nodejs-prerequisites]] -==== Prerequisites - -You need an APM Server to send APM data to. Follow the {apm-guide-ref}/apm-quick-start.html[APM Quick start] if you have not set one up yet. For the best-possible performance, we recommend setting up APM on {ecloud} in the same AWS region as your AWS Lambda functions. - -[float] -==== Step 1: Select the AWS Region and Architecture - -include::{apm-aws-lambda-root}/docs/lambda-selector/lambda-attributes-selector.asciidoc[] - -[float] -==== Step 2: Add the APM Layers to your Lambda function - -include::{apm-aws-lambda-root}/docs/lambda-selector/extension-arn-replacement.asciidoc[] -include::./lambda/nodejs-arn-replacement.asciidoc[] - -Both the {apm-lambda-ref}/aws-lambda-arch.html[{apm-lambda-ext}] and the Node.js APM Agent are added to your Lambda function as https://docs.aws.amazon.com/lambda/latest/dg/invocation-layers.html[AWS Lambda Layers]. Therefore, you need to add the corresponding Layer ARNs (identifiers) to your Lambda function. - -include::{apm-aws-lambda-root}/docs/add-extension/add-extension-layer-widget.asciidoc[] - -[float] -==== Step 3: Configure APM on AWS Lambda - -The {apm-lambda-ext} and the APM Node.js agent are configured through environment variables on the AWS Lambda function. - -For the minimal configuration, you will need the _APM Server URL_ to set the destination for APM data and an _{apm-guide-ref}/secret-token.html[APM Secret Token]_. -If you prefer to use an {apm-guide-ref}/api-key.html[APM API key] instead of the APM secret token, use the `ELASTIC_APM_API_KEY` environment variable instead of `ELASTIC_APM_SECRET_TOKEN` in the following configuration. - -For production environments, we recommend {apm-lambda-ref}/aws-lambda-secrets-manager.html[using the AWS Secrets Manager to store your APM authentication key] instead of providing the secret value as plaintext in the environment variables. - -include::./lambda/configure-lambda-widget.asciidoc[] -<1> The {apm-lambda-ref}/aws-lambda-config-options.html#_elastic_apm_send_strategy[`ELASTIC_APM_SEND_STRATEGY`] defines when APM data is sent to your Elastic APM backend. To reduce the execution time of your lambda functions, we recommend to use the `background` strategy in production environments with steady load scenarios. - -You can optionally <> or the {apm-lambda-ref}/aws-lambda-config-options.html[configuration of the {apm-lambda-ext}]. - -That's it. After following the steps above, you're ready to go! -Your Lambda function invocations should be traced from now on. - - -[float] -[[aws-lambda-features]] -=== Features - -The AWS Lambda instrumentation will report a transaction for all function invocations -and trace any <>. In addition, the -created transactions will capture additional data for a number of Lambda -trigger types -- API Gateway, SNS, SQS, S3 (when the trigger is a single event), -and ELB. - -A transaction will be reported for Lambda invocations that fail due to a -timeout, crash, `uncaughtException`, or `unhandledRejection`. (This requires -APM agent v3.45.0 or later and -https://www.elastic.co/guide/en/apm/lambda/current/aws-lambda-arch.html[Elastic's APM Lambda extension] -version 1.4.0 or later.) - - -[float] -[[aws-lambda-caveats]] -=== Caveats and Troubleshooting - -* System and custom metrics are not collected for Lambda functions. This is both because most of those are irrelevant -and because the interval-based event sending model is not suitable for FaaS environments. -* The APM agent does not yet support a Lambda handler module that uses ECMAScript modules (ESM). That means your handler file name should end with ".js" (and not have `"type": "module"` in package.json if you have one) or end with ".cjs". A handler file that uses the ".mjs" suffix will not be instrumented by the APM agent. - diff --git a/docs/lambda/configure-lambda-widget.asciidoc b/docs/lambda/configure-lambda-widget.asciidoc deleted file mode 100644 index 1b85b4ac68..0000000000 --- a/docs/lambda/configure-lambda-widget.asciidoc +++ /dev/null @@ -1,118 +0,0 @@ -++++ -
-
- - - - - - -
-
-++++ - -include::configure-lambda.asciidoc[tag=console-{layer-section-type}] - -++++ -
- - - - - -
-++++ diff --git a/docs/lambda/configure-lambda.asciidoc b/docs/lambda/configure-lambda.asciidoc deleted file mode 100644 index af4755248a..0000000000 --- a/docs/lambda/configure-lambda.asciidoc +++ /dev/null @@ -1,113 +0,0 @@ -// tag::console-with-agent[] - -To configure APM through the AWS Management Console: - -1. Navigate to your function in the AWS Management Console -2. Click on the _Configuration_ tab -3. Click on _Environment variables_ -4. Add the following required variables: - -[source,bash] ----- -NODE_OPTIONS = -r elastic-apm-node/start # use this exact fixed value -ELASTIC_APM_LAMBDA_APM_SERVER = # this is your APM Server URL -ELASTIC_APM_SECRET_TOKEN = # this is your APM secret token -ELASTIC_APM_SEND_STRATEGY = background <1> ----- - --- -include::{apm-aws-lambda-root}/docs/images/images.asciidoc[tag=nodejs-env-vars] --- - -// end::console-with-agent[] - -// tag::cli-with-agent[] - -To configure APM through the AWS command line interface execute the following command: - -[source,bash] ----- -aws lambda update-function-configuration --function-name yourLambdaFunctionName \ - --environment "Variables={NODE_OPTIONS=-r elastic-apm-node/start,ELASTIC_APM_LAMBDA_APM_SERVER=,ELASTIC_APM_SECRET_TOKEN=,ELASTIC_APM_SEND_STRATEGY=background}" <1> ----- - -// end::cli-with-agent[] - -// tag::sam-with-agent[] - -In your SAM `template.yml` file configure the following environment variables: - -[source,yml] ----- -... -Resources: - yourLambdaFunction: - Type: AWS::Serverless::Function - Properties: - ... - Environment: - Variables: - NODE_OPTIONS: -r elastic-apm-node/start - ELASTIC_APM_LAMBDA_APM_SERVER: - ELASTIC_APM_SECRET_TOKEN: - ELASTIC_APM_SEND_STRATEGY: background <1> -... ----- - -// end::sam-with-agent[] - -// tag::serverless-with-agent[] - -In your `serverless.yml` file configure the following environment variables: - -[source,yml] ----- -... -functions: - yourLambdaFunction: - ... - environment: - NODE_OPTIONS: -r elastic-apm-node/start - ELASTIC_APM_LAMBDA_APM_SERVER: - ELASTIC_APM_SECRET_TOKEN: - ELASTIC_APM_SEND_STRATEGY: background <1> -... ----- - -// end::serverless-with-agent[] - -// tag::terraform-with-agent[] -In your Terraform file configure the following environment variables: - -[source,terraform] ----- -... -resource "aws_lambda_function" "your_lambda_function" { - ... - environment { - variables = { - NODE_OPTIONS = "-r elastic-apm-node/start" - ELASTIC_APM_LAMBDA_APM_SERVER = "" - ELASTIC_APM_SECRET_TOKEN = "" - ELASTIC_APM_SEND_STRATEGY = "background" <1> - } - } -} -... ----- - -// end::terraform-with-agent[] - -// tag::container-with-agent[] -Environment variables configured for an AWS Lambda function are passed to the container running the lambda function. -You can use one of the other options (through AWS Web Console, AWS CLI, etc.) to configure the following environment variables: - -[source,bash] ----- -NODE_OPTIONS = -r elastic-apm-node/start # use this exact fixed value -ELASTIC_APM_LAMBDA_APM_SERVER = # this is your APM Server URL -ELASTIC_APM_SECRET_TOKEN = # this is your APM secret token -ELASTIC_APM_SEND_STRATEGY = background <1> ----- - -// end::container-with-agent[] diff --git a/docs/lambda/nodejs-arn-replacement.asciidoc b/docs/lambda/nodejs-arn-replacement.asciidoc deleted file mode 100644 index 469ea9feb1..0000000000 --- a/docs/lambda/nodejs-arn-replacement.asciidoc +++ /dev/null @@ -1,9 +0,0 @@ -++++ - -++++ diff --git a/docs/logs.asciidoc b/docs/logs.asciidoc deleted file mode 100644 index 94d3ec1c39..0000000000 --- a/docs/logs.asciidoc +++ /dev/null @@ -1,34 +0,0 @@ -[[logs]] -## Logs - -The Elastic APM Node.js Agent provides support for <>. When -used together with the {ecs-logging-nodejs-ref}/intro.html[`ecs-logging-nodejs` -packages], correlation IDs will be automatically injected into log records to -allow navigation between logs, traces, and services. - -This feature is part of {observability-guide}/application-logs.html[Application log ingestion strategies]. - -[float] -[[log-correlation-ids]] -== Log correlation - -{apm-guide-ref}/log-correlation.html[Log correlation] allows you to navigate to all logs belonging to a particular trace -and vice-versa: for a specific log, see in which context it has been logged and which parameters the user provided. - -In order to correlate logs from your application with traces captured by the -Elastic APM Node.js Agent, your logs must contain the following identifiers: - -* {ecs-ref}/ecs-tracing.html[`trace.id`] -* {ecs-ref}/ecs-tracing.html[`transaction.id`] or {ecs-ref}/ecs-tracing.html[`span.id`] - -The APM Node.js Agent provides the <> API for this. -If your application is also using one of the {ecs-logging-nodejs-ref}/intro.html[ECS formatting plugin packages] -(available for Pino, Winston, and Morgan), then this APM Agent API will -automatically be used to inject the appropriate tracing fields into your log -records. Otherwise, configure your logger to add these fields when emitting a -log record. - -When your logs contain the appropriate identifiers, the final step is to ingest them into the same -Elasticsearch instance that contains your APM data. See -{apm-guide-ref}/log-correlation.html#ingest-logs-in-es[Ingest your logs into Elasticsearch] -for more information. diff --git a/docs/metrics.asciidoc b/docs/metrics.asciidoc deleted file mode 100644 index 1b1849f57e..0000000000 --- a/docs/metrics.asciidoc +++ /dev/null @@ -1,180 +0,0 @@ -[[metrics]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/metrics.html[elastic.co] -endif::[] - -== Metrics - -The Node.js agent tracks various system and application metrics. -These metrics will be sent regularly to the APM Server and from there to Elasticsearch. -You can adjust the interval by setting <>. - -The metrics will be stored in the `apm-*` index and have the `processor.event` property set to `metric`. - -[float] -[[metric-system.cpu.total.norm.pct]] -=== `system.cpu.total.norm.pct` - -* *Type:* Float -* *Format:* Percent - -The percentage of CPU time in states other than Idle and IOWait, -normalized by the number of cores. - -[float] -[[metric-system.memory.total]] -=== `system.memory.total` - -* *Type:* Long -* *Format:* Bytes - -The total memory of the system in bytes. - -[float] -[[metric-system.memory.actual.free]] -=== `system.memory.actual.free` - -* *Type:* Long -* *Format:* Bytes - -Free memory of the system in bytes. - -[float] -[[metric-system.process.cpu.total.norm.pct]] -=== `system.process.cpu.total.norm.pct` - -* *Type:* Float -* *Format:* Percent - -The percentage of CPU time spent by the process since the last event. -This value is normalized by the number of CPU cores and it ranges from 0 to 100%. - -[float] -[[metric-system.process.memory.rss.bytes]] -=== `system.process.memory.rss.bytes` - -* *Type:* Long -* *Format:* Bytes - -The Resident Set Size, -the amount of memory the process occupies in main memory (RAM). - -[float] -[[metric-nodejs.handles.active]] -=== `nodejs.handles.active` - -* *Type:* Long -* *Format:* Counter - -The number of active libuv handles, -likely held open by currently running I/O operations. - -[float] -[[metric-nodejs.requests.active]] -=== `nodejs.requests.active` - -* *Type:* Long -* *Format:* Counter - -The number of active libuv requests, -likely waiting for a response to an I/O operation. - -[float] -[[metric-system.process.cpu.user.norm.pct]] -=== `system.process.cpu.user.norm.pct` - -* *Type:* Long -* *Format:* Counter - -The number of CPU cycles spent executing application code. - -[float] -[[metric-system.process.cpu.system.norm.pct]] -=== `system.process.cpu.system.norm.pct` - -* *Type:* Long -* *Format:* Counter - -The number of CPU cycles spent executing kernel code as a result of application activity. - -[float] -[[metric-nodejs.eventloop.delay.avg.ms]] -=== `nodejs.eventloop.delay.avg.ms` - -* *Type:* Float -* *Format:* Milliseconds - -The number of milliseconds of event loop delay. -Event loop delay is sampled every 10 milliseconds. -Delays shorter than 10ms may not be observed, -for example if a blocking operation starts and ends within the same sampling period. - -[float] -[[metric-nodejs.memory.heap.allocated.bytes]] -=== `nodejs.memory.heap.allocated.bytes` - -* *Type:* Long -* *Format:* Bytes - -The current allocated heap size in bytes. - -[float] -[[metric-nodejs.memory.heap.used.bytes]] -=== `nodejs.memory.heap.used.bytes` - -* *Type:* Long -* *Format:* Bytes - -The currently used heap size in bytes. - -[float] -[[metric-nodejs.memory.external.bytes]] -=== `nodejs.memory.external.bytes` - -* *Type:* Long -* *Format:* Bytes - -Memory usage of C++ objects bound to JavaScript objects managed by V8. - -[float] -[[metric-nodejs.memory.arrayBuffers.bytes]] -=== `nodejs.memory.arrayBuffers.bytes` - -* *Type:* Long -* *Format:* Bytes - -Memory allocated for ArrayBuffers and SharedArrayBuffers, including all Node.js Buffers. -This is also included in the `nodejs.memory.external.bytes` value. - -[float] -[[metrics-span.self_time.sum]] -=== `span.self_time.sum` - -* *Type:* Long -* *Format:* Milliseconds - -The sum of all span self-times in milliseconds since the last report (the delta). -The `span.self_time.*` metrics are referred to as "breakdown metrics". - -You can filter and group by these dimensions: - -* `transaction.name`: The name of the transaction -* `transaction.type`: The type of the transaction, for example `request` -* `span.type`: The type of the span, for example `app`, `template` or `db` -* `span.subtype`: The sub-type of the span, for example `mysql` (optional) - -[float] -[[metrics-span.self_time.count]] -=== `span.self_time.count` - -* *Type:* Long -* *Format:* Counter - -You can filter and group by these dimensions: - -* `transaction.name`: The name of the transaction -* `transaction.type`: The type of the transaction, for example `request` -* `span.type`: The type of the span, for example `app`, `template` or `db` -* `span.subtype`: The sub-type of the span, for example `mysql` (optional) diff --git a/docs/nextjs.asciidoc b/docs/nextjs.asciidoc deleted file mode 100644 index d05a7ce670..0000000000 --- a/docs/nextjs.asciidoc +++ /dev/null @@ -1,209 +0,0 @@ -:framework: Next.js - -[[nextjs]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/nextjs.html[elastic.co] -endif::[] - -=== Get started with Next.js - -The Elastic APM Node.js agent can be used to trace the Next.js server (`next -start` or `next dev`) that runs your application without the need for code -changes to your app. The APM transactions for incoming HTTP requests to the -server will be named for the https://nextjs.org/docs/routing/introduction[pages] -and https://nextjs.org/docs/api-routes/introduction[API endpoints] in your -application, as well as for internal routes used by Next.js. Errors in code run -on the server will be reported for viewing in the Kibana APM app. - -Note that the Node.js APM agent can only instrument _server-side_ code. To -monitor the client-side parts of a Next.js application, see the -{apm-rum-ref}/intro.html[Elastic RUM agent]. - -NOTE: preview:[] This Next.js instrumentation is a _technical preview_ while we -solicit feedback from Next.js users. Currently `next` versions `>=12.0.0 -<13.3.0` are supported. If you are a Next.js user, please help us provide a -better Next.js observability experience with your feedback on our -https://discuss.elastic.co/tags/c/apm/nodejs[Discuss forum]. - - -[float] -[[nextjs-prerequisites]] -==== Prerequisites - -You need an APM Server to send APM data to. Follow the -{apm-guide-ref}/apm-quick-start.html[APM Quick start] if you have not set one up -yet. You will need your *APM server URL* and an APM server *secret token* (or -*API key*) for configuring the APM agent below. - -You will also need a Next.js application to monitor. If you do not have an -existing one to use, you can use the following to create a starter app (see -https://nextjs.org/docs/getting-started[Next.js Getting Started docs] for more): - -[source,bash] ----- -npx create-next-app@latest # use the defaults -cd my-app ----- - -You can also take a look at and use this https://github.com/elastic/apm-agent-nodejs/tree/main/examples/nextjs/[Next.js + Elastic APM example app]. - -[float] -[[nextjs-setup]] -==== Step 1: Add the APM agent dependency - -Add the `elastic-apm-node` module as a dependency to your application: - -[source,bash] ----- -npm install elastic-apm-node --save # or 'yarn add elastic-apm-node' ----- - - -[float] -==== Step 2: Start the APM agent - -For the APM agent to instrument the Next.js server, it needs to be started -before the Next.js server code is loaded. The best way to do so is by using -Node's https://nodejs.org/api/cli.html#-r---require-module[`--require`] option -to load the "elastic-apm-node/start-next.js" module -- this will start the agent -(plus a little more for Next.js integration). - -Edit the "dev" and "start" scripts in your "package.json" as follows: - -[source,json] ----- -{ - // ... - "scripts": { - "dev": "NODE_OPTIONS=--require=elastic-apm-node/start-next.js next dev", - "build": "next build", - "start": "NODE_OPTIONS=--require=elastic-apm-node/start-next.js next start", - "lint": "next lint" - }, - // ... -} ----- - - -[float] -==== Step 3: Configure the APM agent - -The APM agent can be -<> -with environment variables or with an "elastic-apm-node.js" module in the -current working directory. Note that because the APM agent is being loaded -before the Next.js server, the -https://nextjs.org/docs/basic-features/environment-variables[Next.js-supported -".env" files] *cannot* be used to configure the APM agent. We will use an -"elastic-apm-node.js" file here. - -Create an "elastic-apm-node.js" file in the application root with the APM server -URL and secret token values from the <> section above: - -[source,javascript] ----- -// elastic-apm-node.js -module.exports = { - serverUrl: 'https://...', // E.g. https://my-deployment-name.apm.us-west2.gcp.elastic-cloud.com - secretToken: '...' -} ----- - -The equivalent using environment variables is: - -[source,bash] ----- -export ELASTIC_APM_SERVER_URL='https://...' -export ELASTIC_APM_SECRET_TOKEN='...' ----- - -See the <> for full details on supported configuration variables. - - -[float] -==== Step 4: Start your Next.js app - -[source,bash] ----- -npm run dev # or 'npm run build && npm start' for the production server ----- - -Open in your browser to load your Next.js app. If you -used the `create-next-app` tool above, it defines an -http://localhost:3000/api/hello[/api/hello] API endpoint. You can provide some -artificial load by running the following in a separate terminal: - -[source,bash] ----- -while true; do sleep 1; curl -i http://localhost:3000/api/hello; done ----- - -Visit your Kibana APM app and, after a few seconds, you should see a service -entry for your Next.js app. The service name will be pulled from the "name" -field in "package.json". It can be overriden with -<>. Here is an example: - -image::./images/nextjs-my-app-screenshot.png[Kibana APM app showing Next.js my-app] - - -[float] -[[nextjs-limitations]] -==== Limitations and future work - -This Next.js instrumentation has some limitations to be aware of. - -Next.js build tooling bundles dependencies (using Webpack) for both client _and_ -server-side code execution. The Node.js APM agent does not work when bundled. -See <> for details. The implication for Next.js instrumentation -is that you cannot directly import and use the APM agent in your code. That -means that using the <> for manual instrumentation is not currently -possible. - -This instrumentation supports naming APM transactions for many internal Next.js -routes. For example, for -https://nextjs.org/docs/basic-features/data-fetching/get-server-side-props[server-side -rendering (SSR)] Next.js client code will make requests of the form `GET -/next/_data/$buildId/$page.json`, for which the APM agent names the transaction -`Next.js _next/data route $page`. However, there is a limitation with the -Next.js "public folder catchall" route. HTTP requests that resolve to files in -your "public/" directory, for example `GET /favicon.ico`, will result in a -transaction named `GET unknown route`. See <> below. - -If you notice other limitations or have any suggestions, please give us feedback -on our https://discuss.elastic.co/tags/c/apm/nodejs[Discuss forum]. - - -[float] -[[nextjs-performance-monitoring]] -==== Performance monitoring - -Elastic APM automatically measures the performance of your Next.js application. -It records spans for database queries, external HTTP requests, and other slow -operations that happen during requests to your Next.js app. Spans are grouped in -transactions -- by default one for each incoming HTTP request. - -[float] -[[nextjs-unknown-routes]] -==== Unknown routes - -include::./shared-set-up.asciidoc[tag=unknown-roots] - -[float] -[[nextjs-filter-sensitive-information]] -==== Filter sensitive information - -include::./shared-set-up.asciidoc[tag=filter-sensitive-info] - -[float] -[[nextjs-compatibility]] -==== Compatibility - -include::./shared-set-up.asciidoc[tag=compatibility-link] - -[float] -[[nextjs-troubleshooting]] -==== Troubleshooting - -include::./shared-set-up.asciidoc[tag=troubleshooting-link] diff --git a/docs/opentracing.asciidoc b/docs/opentracing.asciidoc deleted file mode 100644 index 2121f93572..0000000000 --- a/docs/opentracing.asciidoc +++ /dev/null @@ -1,182 +0,0 @@ -[[opentracing]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/opentracing.html[elastic.co] -endif::[] - -== OpenTracing bridge - -NOTE: https://opentracing.io/[OpenTracing] is discontinued in favor of OpenTelemetry. This Elastic APM OpenTracing bridge is **deprecated**. Consider using the <> instead. - - -The Elastic APM OpenTracing bridge allows creating Elastic APM transactions and spans, -using the https://opentracing-javascript.surge.sh/[OpenTracing API]. -In other words, -it translates the calls to the OpenTracing API to Elastic APM and thus allows for reusing existing instrumentation. - -For more information about OpenTracing, see the https://opentracing.io/[OpenTracing website]. - -[float] -[[ot-prerequisites]] -=== Prerequisites - -OpenTracing support for the Elastic APM Node.js Agent is provided via a separate module called https://www.npmjs.com/package/elastic-apm-node-opentracing[`elastic-apm-node-opentracing`]. - -This module requires that the Elastic APM Node.js Agent is installed separately. -To ensure that both dependencies are added to the application, -install them like so: - -[source,bash] ----- -npm install elastic-apm-node elastic-apm-node-opentracing --save ----- - -[float] -[[ot-terminologies]] -=== OpenTracing vs Elastic APM terminologies - -Elastic APM differentiates between {apm-guide-ref}/data-model-transactions.html[transactions] and {apm-guide-ref}/data-model-spans.html[spans]. -In the context of OpenTracing, a transaction can be thought of as a special kind of span. - -Because OpenTracing natively only has the concept of spans, -the Elastic APM OpenTracing bridge will automatically create either Elastic transactions or Elastic spans behind the scenes. -There are a set of rules that determine which is created: - -1. If `agent.currentTransaction` is `null`, - a new Elastic transaction will be created when calling `tracer.startSpan()`. -2. If `agent.currentTransaction` holds an existing transaction, - but that transaction is ended, - a new Elastic transaction will be created when calling `tracer.startSpan()`. -3. In all other cases, - a new Elastic span will be created when calling `tracer.startSpan()`. - -[float] -[[ot-initialization]] -=== Initialization - -It's important that the agent is started before you require *any* other modules in your Node.js application - i.e. before `express`, `http`, etc. - -This means that you should probably require and start the agent in your application's main file (usually `index.js`, `server.js` or `app.js`). - -Here's a simple example where we first start the agent and then initialize the OpenTracing bridge: - -[source,js] ----- -// Add this to the VERY top of the first file loaded in your app -const agent = require('elastic-apm-node').start({ - // Override service name from package.json - // Allowed characters: a-z, A-Z, 0-9, -, _, and space - serviceName: '', - - // Use if APM Server requires a token - secretToken: '', - - // Use if APM Server uses API keys for authentication - apiKey: '', - - // Set custom APM Server URL (default: http://127.0.0.1:8200) - serverUrl: '', -}) - -const Tracer = require('elastic-apm-node-opentracing') - -// Pass the Elastic APM agent as an argument to the OpenTracing tracer -const tracer = new Tracer(agent) - -const span = tracer.startSpan('my-first-span') -// ... do some work ... -span.finish() ----- - -[float] -[[ot-api]] -=== API - -[source,js] ----- -tracer = new Tracer(agent) ----- - -The `elastic-apm-node-opentracing` module exposes a Tracer class which is OpenTracing compatible. - -When instantiating the Tracer object, -an instance of the Elastic APM Node.js Agent must be provided as its only argument. - -For details about the `tracer` API, -see the https://opentracing-javascript.surge.sh/[`opentracing-javascript` API docs]. - -[float] -[[ot-elastic-apm-tags]] -=== Elastic APM specific tags - -Elastic APM defines some tags which have special meaning and which will not be stored as regular tags. -Instead, they will be used to set certain metadata on the transaction or span. - -The following tags have special meaning for both transactions and spans: - -- `type` - sets the type of the transaction or span, - for example `request` for transactions or `db.mysql.query` for spans - -The following tags only have special meaning on the span if the underlying Elastic APM object is a transaction: - -- `result` - sets the result of the transaction (defaults to `success`) -- `error` - sets the result of the transaction to `error` if the tag value is `true` (defaults to `success`) -- `http.status_code` - sets the result of the transaction. - E.g. If the tag value is `200`, - the transaction result will be set to `HTTP 2xx` (defaults to `success`) -- `user.id` - sets the user id, - appears in the "User" tab in the transaction details in the Elastic APM app -- `user.email` - sets the user email, - appears in the "User" tab in the transaction details in the Elastic APM app -- `user.username` - sets the user name, - appears in the "User" tab in the transaction details in the Elastic APM app - -[float] -[[ot-caveats]] -=== Caveats - -Not all features of the OpenTracing API are supported. - -[float] -[[ot-propagation]] -==== Context propagation - -This bridge only supports the formats `opentracing.FORMAT_TEXT_MAP` and `opentracing.FORMAT_HTTP_HEADERS`. -`opentracing.FORMAT_BINARY` is currently not supported. - -[float] -[[ot-references]] -==== Span References - -Currently, this bridge only supports `opentracing.REFERENCE_CHILD_OF` references. -Other references, -like `opentracing.REFERENCE_FOLLOWS_FROM`, are not supported yet. - -[float] -[[ot-baggage]] -==== Baggage - -The `span.setBaggageItem()` method is not supported. -Baggage items are silently dropped. - -[float] -[[ot-logs]] -==== Logs - -Only error logging is supported. -Logging an Error object on the OpenTracing span will create an Elastic APM -{apm-guide-ref}/data-model-errors.html[error]. -Example: - -[source,js] ----- -const err = new Error('boom!') - -span.log({ - event: 'error', - 'error.object': err -}) ----- - -Other logs are silently dropped. diff --git a/docs/performance-tuning.asciidoc b/docs/performance-tuning.asciidoc deleted file mode 100644 index 7a588db4c3..0000000000 --- a/docs/performance-tuning.asciidoc +++ /dev/null @@ -1,169 +0,0 @@ -[[performance-tuning]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/performance-tuning.html[elastic.co] -endif::[] - -== Performance Tuning - -The Node.js APM agent offers a variety of <>, -some of which can have a significant impact on performance. Areas where APM -agent overhead might be seen are: CPU, memory, network, latency, and storage. -This document discusses the options most significant for performance tuning the -APM agent. - -[float] -[[performance-sampling]] -=== Sample rate - -The _sample rate_ is the percentage of incoming requests that are recorded and -sent to the APM Server. This is controlled by the -<> configuration option. By -default _all_ requests are traced (`transactionSampleRate: 1.0`). - -The amount of work the APM agent needs to do, generally scales linearly with -the number of traced requests. Therefore, the sample rate impacts CPU, memory, -network, and storage overhead. - -Applications with a high request rate and/or many spans per incoming request -may want to lower the the sampling rate. For example, see the example below -to trace 20% of incoming requests. Note that incoming HTTP requests that are -part of a <> already have the sampling -decision made -- the `traceparent` header includes a -https://w3c.github.io/trace-context/#sampled-flag[sampled flag]. In these cases -the `transactionSampleRate` setting will not apply. - -[source,js] ----- -require('elastic-apm-node').start({ - transactionSampleRate: 0.2 // sample 20% of incoming requests -}) ----- - - -[float] -[[performance-stack-traces]] -=== Stack Traces - -When the APM agent captures an error, it records its stack trace for later -analysis and viewing. Optionally, the APM agent can also record a stack trace -for captured *spans*. Stack traces can have a significant impact on CPU and -memory usage of the agent. There are several settings to adjust how they are -used. - -[float] -[[performance-span-stack-traces]] -==== Span Stack Traces - -The <> configuration -option controls if stack traces are never captured for spans (the -default), always captured for spans, or only captured for spans that are longer -than a given duration. In a complex application, a traced request may capture -many spans. Capturing and sending a stack trace for every span can result in -significant CPU and memory usage. - -It is because of the possibility of this CPU overhead that the APM Agent -disables stack trace collection for _spans_ by default. Unfortunately, even -the capturing of raw stack trace data at span creation and then throwing that -away for fast spans can have significant CPU overhead for heavily loaded -applications. Therefore, care must be taken before using `spanStackTraceMinDuration`. - - -[float] -[[performance-source-lines]] -==== Stack Trace Source Lines - -If you want to keep span stack traces enabled for context, -the next thing to try is adjusting how many source lines are reported for each stack trace. -When a stack trace is captured, -the agent will also capture several lines of source code around each stack frame location in the stack trace. - -The are four different settings to control this behaviour: - -- <> -- <> -- <> -- <> - -Source line settings are divided into app frames representing your app code and library frames representing the code of your dependencies. -App and library categories are both split into error and span groups. -Spans, -by default, -do not capture source lines. -Errors, -by default, -will capture five lines of code around each stack frame. - -Source lines are cached in-process. -In memory-constrained environments, -the source line cache may use more memory than desired. -Turning the limits down will help prevent excessive memory use. - - -[float] -[[performance-stack-frame-limit]] -==== Stack Frame Limit - -The <> configuration option controls how -many stack frames are captured when producing an `Error` instance of any kind. -A large value may impact CPU and memory overhead of the agent. - - -[float] -[[performance-error-log-stack-traces]] -==== Error Log Stack Traces - -Most stack traces recorded by the agent will point to where the error was instantiated, -not where it was identified and reported to the agent with <>. -For this reason, -the agent also has the <> setting to enable capturing an additional stack trace pointing to the place an error was reported to the agent. -By default, -it will only capture the stack trace to the reporting point when <> is called with a string message. - -Setting this to `always` will increase memory and bandwidth usage, -so it helps to consider how frequently the app may capture errors. - - -[float] -[[performance-transaction-max-spans]] -=== Spans - -The <> setting limits the number of spans which may be recorded within a single transaction before remaining spans are dropped. - -Spans may include many things such as a stack trace and context data. -Limiting the number of spans that may be recorded will reduce memory usage. - -Reducing max spans could result in loss of useful data about what occurred within a request, -if it is set too low. - -An alternative to limiting the maximum number of spans can be to drop spans with a very short duration, as those might not be that relevant. - -This, however, both reduces the amount of storage needed to store the spans in Elasticsearch, and the bandwidth needed to transport the data to the APM Server from the instrumented application. - -This can be implemented by providing a span-filter: - -[source,js] ----- -agent.addSpanFilter(payload => { - return payload.duration < 10 ? null : payload -}) ----- - -NOTE: Using a span filter does not reduce the load of recording the spans in your application, but merely filters them out before sending them to the APM Server. - - -[float] -[[performance-max-queue-size]] -=== Max queue size - -The APM agent uses a persistent outgoing HTTP request (periodically refreshed) -to stream data to the APM Server. If either the APM agent cannot keep up with -events (transactions, spans, errors, and metricsets) from the application or -if the APM Server is slow or not responding, then the agent will buffer events. -If the buffer exceeds <>, then events are dropped to limit -memory usage of the agent. - -A lower value for `maxQueueSize` will decrease the heap overhead (and possibly -the CPU usage) of the agent, while a higher value makes it less likely to lose -events in case of a temporary spike in throughput. diff --git a/docs/redirects.asciidoc b/docs/redirects.asciidoc deleted file mode 100644 index b7c85825eb..0000000000 --- a/docs/redirects.asciidoc +++ /dev/null @@ -1,57 +0,0 @@ -["appendix",role="exclude",id="redirects"] -== Deleted pages - -The following pages have moved or been deleted. - -[role="exclude",id="compatibility"] -=== Compatibility - -This page has moved. Please see <>. - -[role="exclude",id="apm-set-tag"] -=== `apm.setTag(name, value)` - -This endpoint has moved. Please see <>. - -[role="exclude",id="apm-add-tags"] -=== `apm.addTags({ [name]: value })` - -This endpoint has moved. Please see <>. - -[role="exclude",id="span-set-tag"] -=== `span.setTag(name, value)` - -This endpoint has moved. Please see <>. - -[role="exclude",id="span-add-tags"] -=== `span.addTags({ [name]: value })` - -This endpoint has moved. Please see <>. - -[role="exclude",id="transaction-set-tag"] -=== `transaction.setTag(name, value)` - -This endpoint has moved. Please see <>. - -[role="exclude",id="transaction-add-tags"] -=== `transaction.addTags({ [name]: value })` - -This endpoint has moved. Please see <>. - -[role="exclude",id="get-started"] -=== Get started - -This page has moved. Please see <>. - -[role="exclude",id="es-modules"] -=== ES Modules support - -This page has moved. - -- For details on ES Modules (ESM) support, see <>. -- For information on using the APM agent with TypeScript, see <>. - -[role="exclude",id="log-correlation"] -=== Log correlation - -This section has moved. See <>. diff --git a/docs/reference/advanced-setup.md b/docs/reference/advanced-setup.md new file mode 100644 index 0000000000..586862c076 --- /dev/null +++ b/docs/reference/advanced-setup.md @@ -0,0 +1,20 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/advanced-setup.html +--- + +# Configuration [advanced-setup] + +Use the following pages to configure the APM Agent. + +* [Configuring the agent](/reference/configuring-agent.md) + + * [Agent configuration object](/reference/configuring-agent.md#agent-configuration-object) + * [Agent configuration file](/reference/configuring-agent.md#agent-configuration-file) + +* [Configuration options](/reference/configuration.md) + + + + + diff --git a/docs/reference/agent-api.md b/docs/reference/agent-api.md new file mode 100644 index 0000000000..992f7e7523 --- /dev/null +++ b/docs/reference/agent-api.md @@ -0,0 +1,748 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/agent-api.html +--- + +# Agent API [agent-api] + +The Elastic APM Node.js agent is a singleton. You get the agent instance by requiring either `elastic-apm-node` or `elastic-apm-node/start`. The agent is also returned by the [`.start()`](#apm-start) method, which allows you to require and start the agent on the same line: + +```js +const apm = require('elastic-apm-node').start(...) +``` + +If you need to access the `Agent` in any part of your codebase, you can simply require `elastic-apm-node` to access the already started singleton. You therefore don’t need to manage or pass around the started `Agent` yourself. + +## `apm.start([options])` [apm-start] + +Starts the Elastic APM agent for Node.js and returns itself. + +::::{important} +For the APM agent to automatically instrument Node.js modules, it must be started before those modules are loaded. See [Starting the agent](/reference/starting-agent.md) for details and possible surprises with compilers/transpilers/bundlers. + +:::: + + +See the [Configuration documentation](/reference/configuration.md) for available options. + + +## `apm.isStarted()` [apm-is-started] + +Added in: v1.5.0 + +Use `isStarted()` to check if the agent has already started. Returns `true` if the agent has started, otherwise returns `false`. + + +## `apm.getServiceName()` [apm-get-service-name] + +Added in: v3.11.0 + +Get the configured [`serviceName`](/reference/configuration.md#service-name). If a service name was not explicitly configured, this value may have been automatically determined. The service name is not determined until `agent.start()`, so will be `undefined` until then. A misconfigured agent can have a `null` service name. + + +## `apm.getServiceVersion()` [apm-get-service-version] + +Added in: v4.2.0 + +Get the configured [`serviceVersion`](/reference/configuration.md#service-version). If a service version was not explicitly configured, this value may have been automatically determined. The service version is not determined until `agent.start()`, so will be `undefined` until then. + + +## `apm.getServiceEnvironment()` [apm-get-service-environment] + +Added in: v4.2.0 + +Get the configured [`environment`](/reference/configuration.md#environment). + + +## `apm.getServiceNodeName()` [apm-get-service-node-name] + +Added in: v4.2.0 + +Get the configured [`serviceNodeName`](/reference/configuration.md#service-node-name). If the APM agent is not configured with an explicit value, this will return `undefined`. + + +## `apm.setFramework(options)` [apm-set-framework] + +Added in: v2.8.0 + +* `options` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) The following options are supported: + + * `name` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) Framework name. + * `version` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) Framework version. + * `overwrite` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) If set to `false`, the [`frameworkName`](/reference/configuration.md#framework-name) and [`frameworkVersion`](/reference/configuration.md#framework-version) provided as [config options](/reference/configuration.md) will not be overwritten. **Default:** `true`. + + +Set or change the [`frameworkName`](/reference/configuration.md#framework-name) or [`frameworkVersion`](/reference/configuration.md#framework-version) after the agent has started. These config options can also be provided as part of the [regular agent configuration](/reference/configuration.md). + + +## `apm.addFilter(fn)` [apm-add-filter] + +Added in: v0.1.0 + +Use `addFilter()` to supply a filter function. + +Each filter function will be called just before data is being sent to the APM Server. This will allow you to manipulate the data being sent, for instance to remove sensitive information like passwords etc. (Note: Filters added via `addFilter` are **not** applied to the "metadata" object sent to the APM Server — use `addMetadataFilter` instead.) + +Each filter function will be called in the order they were added, and will receive a `payload` object as the only argument, containing the data about to be sent to the APM Server. + +The format of the payload depends on the event type being sent. For details about the different formats, see the [events intake API docs](docs-content://solutions/observability/apps/elastic-apm-events-intake-api.md). + +The filter function is synchronous and should return the manipulated payload object. If a filter function doesn’t return any value or returns a falsy value, the remaining filter functions will not be called and the payload **will not** be sent to the APM Server. + +Example usage: + +```js +apm.addFilter(function redactSecretHeader(payload) { + if (payload.context && + payload.context.request && + payload.context.request.headers && + payload.context.request.headers['x-secret']) { + // redact sensitive data + payload.context.request.headers['x-secret'] = '[REDACTED]' + } + + // remember to return the modified payload + return payload +}) +``` + +Though you can also use filter functions to add new contextual information to the `user` and `custom` properties, it’s recommended that you use [`apm.setUserContext()`](#apm-set-user-context) and [`apm.setCustomContext()`](#apm-set-custom-context) for that purpose. + + +## `apm.addErrorFilter(fn)` [apm-add-error-filter] + +Added in: v2.0.0 + +Similar to [`apm.addFilter()`](#apm-add-filter), but the `fn` will only be called with error payloads. + + +## `apm.addTransactionFilter(fn)` [apm-add-transaction-filter] + +Added in: v2.0.0 + +Similar to [`apm.addFilter()`](#apm-add-filter), but the `fn` will only be called with transaction payloads. + + +## `apm.addSpanFilter(fn)` [apm-add-span-filter] + +Added in: v2.0.0 + +Similar to [`apm.addFilter()`](#apm-add-filter), but the `fn` will only be called with span payloads. + + +## `apm.addMetadataFilter(fn)` [apm-add-metadata-filter] + +Added in: v3.14.0 + +Use `addMetadataFilter(fn)` to supply a filter function for the [metadata object](docs-content://solutions/observability/apps/elastic-apm-events-intake-api.md#apm-api-events-schema-definition) sent to the APM Server. This will allow you to manipulate the data being sent, for instance to remove possibly sensitive information. + +Each filter function will be called in the order they were added, and will receive a `metadata` object as the only argument. The filter function is synchronous and must return the manipulated object. Example usage: + +```js +apm.addMetadataFilter(function dropArgv(metadata) { + if (metadata.process && metadata.process.argv) { + delete metadata.process.argv + } + return metadata +}) +``` + +Warning: It is the responsibility of the author to ensure the returned object conforms to the [metadata schema](docs-content://solutions/observability/apps/elastic-apm-events-intake-api.md#apm-api-events-schema-definition) otherwise all APM data injest will fail. A metadata filter that breaks the metadata will result in error logging from the agent, something like: + +```text +ERROR (elastic-apm-node): APM Server transport error (400): Unexpected APM Server response +APM Server accepted 0 events in the last request +Error: validation error: 'metadata' required + Document: {"metadata":null} +``` + + +## `apm.setUserContext(context)` [apm-set-user-context] + +Added in: v0.1.0 + +* `context` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) Accepts the following optional properties: + + * `id` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) The user’s ID. + * `username` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) The user’s username. + * `email` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) The user’s e-mail. + + +Call this to enrich collected performance data and errors with information about the user/client. This function can be called at any point during the request/response life cycle (i.e. while a transaction is active). + +The given `context` will be added to the active transaction. If no active transaction can be found, `false` is returned. Otherwise `true`. + +It’s possible to call this function multiple times within the scope of the same active transaction. For each call, the properties of the `context` argument are shallow merged with the context previously given. + +If an error is captured, the context from the active transaction is used as context for the captured error, and any custom context given as the 2nd argument to [`apm.captureError`](#apm-capture-error) takes precedence and is shallow merged on top. + +The provided user context is stored under `context.user` in Elasticsearch on both errors and transactions. + + +## `apm.setCustomContext(context)` [apm-set-custom-context] + +Added in: v0.1.0 + +* `context` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) Can contain any property that can be JSON encoded. + +Call this to enrich collected errors and transactions with any information that you think will help you debug performance issues or errors. This function can be called at any point while a transaction is active (e.g. during the request/response life cycle of an incoming HTTP request). + +The provided custom context is stored under `context.custom` in APM Server pre-7.0, or `transaction.custom` and `error.custom` in APM Server 7.0+. + +The given `context` will be added to the active transaction. If no active transaction can be found, `false` is returned. Otherwise `true`. + +It’s possible to call this function multiple times within the scope of the same active transaction. For each call, the properties of the `context` argument are shallow merged with the context previously given. + +If an error is captured, the context from the active transaction is used as context for the captured error, and any custom context given as the 2nd argument to [`apm.captureError`](#apm-capture-error) takes precedence and is shallow merged on top. + +::::{tip} +Before using custom context, ensure you understand the different types of [metadata](docs-content://solutions/observability/apps/metadata.md) that are available. +:::: + + + +## `apm.setLabel(name, value[, stringify = true])` [apm-set-label] + +Added in: v0.1.0
Renamed from `apm.setTag()` to `apm.setLabel()`: v2.10.0
Added `stringify` argument in: v3.11.0 + +* `name` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) Any periods (`.`), asterisks (`*`), or double quotation marks (`"`) will be replaced by underscores (`_`), as those characters have special meaning in Elasticsearch +* `value` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) | [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) If the `stringify` argument is not given, or set to `true` then the given value will be converted to a string. +* `stringify` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) This defaults to `true` for backwards compatibility, but new usage will typically want `false`. When true, if a non-string `value` is given, it is converted to a string before being sent to the APM Server. + +```js +apm.setLabel('productId', 42, false); +``` + +Set a label on the current transaction. You can set multiple labels on the same transaction. If an error happens during the current transaction, it will also get tagged with the same label. + +::::{tip} +Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable (as opposed to data set via [`apm.setCustomContext()`](#apm-set-custom-context)). Before using custom labels, ensure you understand the different types of [metadata](docs-content://solutions/observability/apps/metadata.md) that are available. +:::: + + +::::{warning} +Avoid defining too many user-specified labels. Defining too many unique fields in an index is a condition that can lead to a [mapping explosion](docs-content://manage-data/data-store/mapping.md#mapping-limit-settings). +:::: + + + +## `apm.addLabels({ [name]: value }[, stringify = true])` [apm-add-labels] + +Added in: v1.5.0
Renamed from `apm.addTags()` to `apm.addLabels()`: v2.10.0
Added `stringify` argument in: v3.11.0 + +* `labels` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) Contains key/value pairs: + + * `name` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) Any periods (`.`), asterisks (`*`), or double quotation marks (`"`) will be replaced by underscores (`_`), as those characters have special meaning in Elasticsearch + * `value` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) | [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) If the `stringify` argument is not given, or set to `true` then the given value will be converted to a string. + +* `stringify` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) This defaults to `true` for backwards compatibility, but new usage will typically want `false`. When true, if a non-string `value` is given, it is converted to a string before being sent to the APM Server. + +```js +apm.addLabels({productId: 42, productName: 'butter'}, false); +``` + +Add several labels on the current transaction. You can add labels multiple times. If an error happens during the current transaction, it will also get tagged with the same labels. + +::::{tip} +Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable (as opposed to data set via [`apm.setCustomContext()`](#apm-set-custom-context)). Before using custom labels, ensure you understand the different types of [metadata](docs-content://solutions/observability/apps/metadata.md) that are available. +:::: + + +::::{warning} +Avoid defining too many user-specified labels. Defining too many unique fields in an index is a condition that can lead to a [mapping explosion](docs-content://manage-data/data-store/mapping.md#mapping-limit-settings). +:::: + + + +## `apm.setGlobalLabel(name, value)` [apm-set-global-label] + +Added in: v3.47.0 + +* `name` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) +* `value` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) | [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) + +Extends the [`globalLabels`](/reference/configuration.md#global-labels) configuration. It allows setting labels that are applied to all transactions. A potential use case is to specify a label with the state of your application: `'initializing' | 'available' | 'unhealthy'`. + +::::{tip} +Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable (as opposed to data set via [`apm.setCustomContext()`](#apm-set-custom-context)). Before using custom labels, ensure you understand the different types of [metadata](docs-content://solutions/observability/apps/metadata.md) that are available. +:::: + + +::::{warning} +Avoid defining too many user-specified labels. Defining too many unique fields in an index is a condition that can lead to a [mapping explosion](docs-content://manage-data/data-store/mapping.md#mapping-limit-settings). +:::: + + + +## `apm.captureError(error[, options][, callback])` [apm-capture-error] + +Added in: v0.1.0 + +* `error` - Can be either an [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) object, a [message string](#message-strings), or a [special parameterized message object](#parameterized-message-object) +* `options` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) The following options are supported: + + * `timestamp` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) The time when the error happened. Must be a Unix Time Stamp representing the number of milliseconds since January 1, 1970, 00:00:00 UTC. Sub-millisecond precision can be achieved using decimals. If not provided, the current time will be used + * `message` - If the `error` argument is an [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) object, it’s possible to use this option to supply an additional message string that will be stored along with the error message under `log.message` + * `user` - See [metadata section](#metadata) for details about this option + * `custom` - See [metadata section](#metadata) for details about this option + * `request` [``](https://nodejs.org/api/http.html#http_class_http_incomingmessage) You can associate an error with information about the incoming request to gain additional context such as the request url, headers, and cookies. However, in most cases, the agent will detect if an error was in response to an http request and automatically add the request details for you. See [http requests section](#http-requests) for more details. + * `response` [``](https://nodejs.org/api/http.html#http_class_http_serverresponse) You can associate an error with information about the http response to get additional details such as status code and headers. However, in most cases, the agent will detect if an error occured during an http request and automatically add response details for you. See [http responses section](#http-responses) for more details. + * `handled` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) Adds additional context to the exception to show whether the error is handled or uncaught. Unhandled errors are immediately flushed to APM server, in case the application is about the crash. **Default:** `true`. + * `labels` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) Add additional context with labels, these labels will be added to the error along with the labels from the current transaction. See the [`apm.addLabels()`](#apm-add-labels) method for details about the format. + * `captureAttributes` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) Whether to include properties on the given [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) object in the data sent to the APM Server (as `error.exception.attributes`). **Default:** `true`. + * `skipOutcome` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) Whether to skip setting the outcome value for the current span to `failure`. See [Span outcome](/reference/span-api.md#span-outcome) for more information. **Default:** `false`. + * `parent` [Transaction](/reference/transaction-api.md) | [Span](/reference/span-api.md) | `null` - A Transaction or Span instance to make the parent of this error. If not given (or `undefined`), then the current span or transaction will be used. If `null` is given, then no span or transaction will be used. (Added in v3.33.0.) + +* `callback` - Will be called after the error has been sent to the APM Server. It will receive an `Error` instance if the agent failed to send the error, and the id of the captured error. + +Send an error to the APM Server: + +```js +apm.captureError(new Error('boom!')) +``` + +### Message strings [message-strings] + +Instead of an `Error` object, you can log a plain text message: + +```js +apm.captureError('Something happened!') +``` + +This will also be sent as an error to the APM Server, but will not be associated with an exception. + + +### Parameterized message object [parameterized-message-object] + +Instead of an `Error` object or a string, you can supply a special parameterized message object: + +```js +apm.captureError({ + message: 'Could not find user %s with id %d in the database', + params: ['Peter', 42] +}) +``` + +This makes it possible to better group error messages that contain variable data like ID’s or names. + + +### Metadata [metadata] + +To ease debugging it’s possible to send some extra data with each error you send to the APM Server. The APM Server intake API supports a lot of different metadata fields, most of which are automatically managed by the Elastic APM Node.js Agent. But if you wish you can supply some extra details using `user` or `custom`. For more details on the properties accepted by the events intake API see the [events intake API docs](docs-content://solutions/observability/apps/elastic-apm-events-intake-api.md). + +To supply any of these extra fields, use the optional options argument when calling `apm.captureError()`. + +Here are some examples: + +```js +// Sending some extra details about the user +apm.captureError(error, { + user: { + id: 'unique_id', + username: 'foo', + email: 'foo@example.com' + } +}) + +// Sending some arbitrary details using the `custom` field +apm.captureError(error, { + custom: { + some_important_metric: 'foobar' + } +}) +``` + +To supply per-request metadata to all errors captured in one central location, use [`apm.setUserContext()`](#apm-set-user-context) and [`apm.setCustomContext()`](#apm-set-custom-context). + + +### HTTP requests [http-requests] + +Besides the options described in the [metadata section](#metadata), you can use the `options` argument to associate the error with an HTTP request: + +```js +apm.captureError(err, { + request: req // an instance of http.IncomingMessage +}) +``` + +This will log the URL that was requested, the HTTP headers, cookies and other useful details to help you debug the error. + +In most cases, this isn’t needed, as the agent is pretty smart at figuring out if your Node.js app is an HTTP server and if an error occurred during an incoming request. In which case it will automate this processes for you. + + +### HTTP responses [http-responses] + +Besides the options described in the [metadata section](#metadata), you can use the `options` argument to associate the error with an HTTP response: + +```js +apm.captureError(err, { + response: res // an instance of http.ServerResponse +}) +``` + +This will log the response status code, headers and other useful details to help you debug the error. + +In most cases, this isn’t needed, as the agent is pretty smart at figuring out if your Node.js app is an HTTP server and if an error occurred during an incoming request. In which case it will automate this processes for you. + + + +## `apm.middleware.connect()` [apm-middleware-connect] + +Added in: v0.1.0 + +Returns a middleware function used to collect and send errors to the APM Server. + +```js +const apm = require('elastic-apm-node').start() +const connect = require('connect') + +const app = connect() + +// your regular middleware: +app.use(...) +app.use(...) + +// your main HTTP router +app.use(function (req, res, next) { + throw new Error('Broke!') +}) + +// add Elastic APM in the bottom of the middleware stack +app.use(apm.middleware.connect()) + +app.listen(3000) +``` + +::::{note} +`apm.middleware.connect` *must* be added to the middleware stack *before* any other error handling middleware functions or there’s a chance that the error will never get to the agent. +:::: + + + +## `apm.startTransaction([name][, type][, options])` [apm-start-transaction] + +Added in: v0.1.0
Transaction `subtype` and `action` deprecated in: v3.25.0
Transaction `subtype` and `action` removed in: v4.0.0 + +* `name` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) The name of the transaction. You can always set this later via [`transaction.name`](/reference/transaction-api.md#transaction-name) or [`apm.setTransactionName()`](#apm-set-transaction-name). **Default:** `unnamed` +* `type` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) The type of the transaction. You can always set this later via [`transaction.type`](/reference/transaction-api.md#transaction-type). +* `options` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) The following options are supported: + + * `startTime` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) The time when the transaction started. Must be a Unix Time Stamp representing the number of milliseconds since January 1, 1970, 00:00:00 UTC. Sub-millisecond precision can be achieved using decimals. If not provided, the current time will be used + * `childOf` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) A W3C trace-context "traceparent" string, typically received from a remote service call. + * `tracestate` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) A W3C trace-context "tracestate" string. + * `links` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) Span links. A transaction can refer to zero or more other transactions or spans (separate from its parent). Span links will be shown in the Kibana APM app trace view. The `links` argument is an array of objects with a single "context" field that is a `Transaction`, `Span`, or W3C trace-context *traceparent* string. For example: `apm.startTransaction('aName', { links: [{ context: anotherSpan }] })`. + + +Start a new custom/manual transaction. See the [Transaction API](/reference/transaction-api.md) docs for details on how to use custom transactions. + +Note that the APM agent will automatically start a transaction for incoming HTTP requests. You only need to use this function to create custom transactions, for example for a periodic background routine. There’s a special `type` called `request` which is used by the agent for the transactions automatically created when an incoming HTTP request is detected. + +If the APM agent has not yet been started, then a do-nothing "no-op" transaction object will be returned. + + +## `apm.endTransaction([result][, endTime])` [apm-end-transaction] + +Added in: v0.1.0 + +* `result` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) Describes the result of the transaction. This is typically the HTTP status code, or e.g. "success" or "failure" for a background task +* `endTime` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) The time when the transaction ended. Must be a Unix Time Stamp representing the number of milliseconds since January 1, 1970, 00:00:00 UTC. Sub-millisecond precision can be achieved using decimals. If not provided, the current time will be used + +Ends the active transaction. If no transaction is currently active, nothing happens. + +Note that the agent will do this for you automatically for all regular HTTP transactions. You only need to use this function to end custom transactions created by [`apm.startTransaction()`](#apm-start-transaction) or if you wish the end a regular transaction prematurely. + +Alternatively you can call [`end()`](/reference/transaction-api.md#transaction-end) directly on an active transaction object. + + +## `apm.currentTransaction` [apm-current-transaction] + +Added in: v1.9.0 + +Get the currently active transaction, if used within the context of a transaction. + +::::{note} +If there’s no active transaction available, `null` will be returned. +:::: + + + +## `apm.currentSpan` [apm-current-span] + +Added in: v2.0.0 + +Get the currently active span, if used within the context of a span. + +::::{note} +If there’s no active span available, `null` will be returned. +:::: + + + +## `apm.currentTraceparent` [apm-current-traceparent] + +Added in: v2.9.0 + +Get the serialized traceparent string of the current transaction or span. + +::::{note} +If there’s no active transaction or span available, `null` will be returned. +:::: + + + +## `apm.setTransactionName(name)` [apm-set-transaction-name] + +Added in: v0.1.0 + +* `name` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) Set or overwrite the name of the current transaction. + +If you use a supported router/framework the agent will automatically set the transaction name for you. + +If you do not use Express, hapi, koa-router, Restify, or Fastify or if the agent for some reason cannot detect the name of the HTTP route, the transaction name will default to `METHOD unknown route` (e.g. `POST unknown route`). + +Read more about naming routes manually in the [Get started with a custom Node.js stack](/reference/custom-stack.md#custom-stack-route-naming) article. + + +## `apm.startSpan([name][, type][, subtype][, action][, options])` [apm-start-span] + +Added in: v1.1.0 + +* `name` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) The name of the span. You can alternatively set this via [`span.name`](/reference/span-api.md#span-name). **Default:** `unnamed` +* `type` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) The type of the span. You can alternatively set this via [`span.type`](/reference/span-api.md#span-type). +* `subtype` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) The subtype of the span. You can alternatively set this via [`span.subtype`](/reference/span-api.md#span-subtype). +* `action` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) The action of the span. You can alternatively set this via [`span.action`](/reference/span-api.md#span-action). +* `options` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) The following options are supported: + + * `startTime` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) The time when the span started. Must be a Unix Time Stamp representing the number of milliseconds since January 1, 1970, 00:00:00 UTC. Sub-millisecond precision can be achieved using decimals. If not provided, the current time will be used + * `exitSpan` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) Make an "exit span". Exit spans represent outgoing communication. They are used to create a node in the [Service Map](docs-content://solutions/observability/apps/service-map.md) and a downstream service in the [Dependencies Table](docs-content://solutions/observability/apps/dependencies.md). The provided subtype will be used as the downstream service name. + * `links` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) Span links. A span can refer to zero or more other transactions or spans (separate from its parent). Span links will be shown in the Kibana APM app trace view. The `links` argument is an array of objects with a single "context" field that is a `Transaction`, `Span`, or W3C trace-context *traceparent* string. For example: `apm.startSpan('aName', { links: [{ context: anotherSpan }] })`. + + +Start and return a new custom span associated with the current active transaction. This is the same as getting the current transaction with `apm.currentTransaction` and, if a transaction was found, calling `transaction.startSpan(name, type, options)` on it. + +When a span is started it will measure the time until [`span.end()`](/reference/span-api.md#span-end) is called. + +See [Span API](/reference/span-api.md) docs for details on how to use custom spans. + +::::{note} +If there’s no active transaction available, `null` will be returned. +:::: + + + +## `apm.handleUncaughtExceptions([callback])` [apm-handle-uncaught-exceptions] + +Added in: v0.1.0 + +By default, the agent will terminate the Node.js process when an uncaught exception is detected. Use this function if you need to run any custom code before the process is terminated. + +```js +apm.handleUncaughtExceptions(function (err) { + // Do your own stuff... and then exit: + process.exit(1) +}) +``` + +The callback is called **after** the event has been sent to the APM Server with the following arguments: + +* `err` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) the captured exception + +This function will also enable the uncaught exception handler if it was disabled using the [`captureExceptions`](/reference/configuration.md#capture-exceptions) configuration option. + +If you don’t specify a callback, the node process is terminated automatically when an uncaught exception has been captured and sent to the APM Server. + +[It is recommended](https://nodejs.org/api/process.md#process_event_uncaughtexception) that you don’t leave the process running after receiving an uncaught exception, so if you are using the optional callback, remember to terminate the node process. + + +## `apm.flush([callback])` [apm-flush] + +Added in: v0.12.0 + +```js +// with node-style callback +apm.flush(function (err) { + // Flush complete +}) + +// with promises +apm.flush().then(function () { + // Flush complete +}).catch(function (err) { + // Flush returned an error +}) + +// inside of an async function +try { + await apm.flush() + // Flush complete +} catch (err) { + // Flush returned an error +} +``` + +Manually end the active outgoing HTTP request to the APM Server. The HTTP request is otherwise ended automatically at regular intervals, controlled by the [`apiRequestTime`](/reference/configuration.md#api-request-time) and [`apiRequestSize`](/reference/configuration.md#api-request-size) config options. + +If an optional `callback` is provided as the first argument to this method, it will call `callback(flushErr)` when complete. If no `callback` is provided, then a `Promise` will be returned, which will either resolve with `void` or reject with `flushErr`. + +The callback is called (or the `Promise` resolves if no `callback` argument is provided) **after** the active HTTP request has ended. The callback is called even if no HTTP request is currently active. + + +## `apm.lambda([type, ]handler)` [apm-lambda] + +Added in: v1.4.0 + +```js +exports.hello = apm.lambda(function (event, context, callback) { + callback(null, `Hello, ${payload.name}!`) +}) +``` + +Manually instrument an AWS Lambda function to form a transaction around each execution. Optionally, a type may also be provided to group lambdas together. By default, "lambda" will be used as the type name. + +Read more lambda support in the [Lambda](/reference/lambda.md) article. + + +## `apm.addPatch(modules, handler)` [apm-add-patch] + +Added in: v2.7.0 + +* `modules` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | `https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type[]` Name of module(s) to apply the patch to, when required. +* `handler` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function) | [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) Must be a patch function or a path to a module exporting a patch function + + * `exports` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) The original export object of the module + * `agent` - The agent instance to use in the patch function + * `options` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) The following options are supported: + + * `version` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | [``](https://developer.mozilla.org/en-US/docs/Glossary/Undefined) The module version, if applicable. + * `enabled` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) A flag indicating if the instrumentation is enabled. Any module patch can be disabled, by module name, with [`disableInstrumentations`](/reference/configuration.md#disable-instrumentations). + + +Register a module patch to apply on intercepted `require` calls. + +A module can have any number of patches and will be applied in the order they are added. + +```js +apm.addPatch('timers', (exports, agent, { version, enabled }) => { + const setTimeout = exports.setTimeout + exports.setTimeout = (fn, ms) => { + const span = agent.startSpan('set-timeout') + return setTimeout(() => { + span.end() + fn() + }, ms) + } + + return exports +}) + +// or ... + +apm.addPatch('timers', './timer-patch') +``` + +This and the other "Patch"-related API methods should be called **before** starting the APM agent. Changes after the agent has started and relevant modules have been `require`d can have surprising caching behavior. + + +## `apm.removePatch(modules, handler)` [apm-remove-patch] + +Added in: v2.7.0 + +Removes a module patch. This will generally only be needed when replacing an existing patch. To *disable* instrumentation while keeping context propagation support, see [`disableInstrumentations`](/reference/configuration.md#disable-instrumentations). + +```js +apm.removePatch('timers', './timers-patch') + +// or ... + +apm.removePatch(['timers'], './timers-patch') + +// or ... + +apm.removePatch('timers', timerPatchFunction) +``` + + +## `apm.clearPatches(modules)` [apm-clear-patches] + +Added in: v2.7.0 + +Clear all patches for the given module. This will generally only be needed when replacing an existing patch. To *disable* instrumentation while keeping context propagation support, see [`disableInstrumentations`](/reference/configuration.md#disable-instrumentations). + +```js +apm.clearPatches('timers') + +// or ... + +apm.clearPatches(['timers']) +``` + + +## `apm.currentTraceIds` [apm-current-trace-ids] + +Added in: v2.17.0 + +`apm.currentTraceIds` produces an object containing `trace.id` and either `transaction.id` or `span.id` when a current transaction or span is available. When no transaction or span is available it will return an empty object. This enables [log correlation](/reference/logs.md#log-correlation-ids) to APM traces with structured loggers. + +```js +{ + "trace.id": "abc123", + "transaction.id": "abc123" +} +// or ... +{ + "trace.id": "abc123", + "span.id": "abc123" +} +``` + + +## `apm.registerMetric(name[, labels], callback)` [apm-register-custom-metrics] + +::::{warning} +This functionality is in technical preview and may be changed or removed in a future release. Elastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features. +:::: + + +* `name` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) Name of the metrics. +* `labels` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) Contains key/value pairs. Optional labels. Omittable. +* `callback` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function) Must be a function that returns the current metric value. + +Register a metric callback. + +Take care not to use the names of [built-in metrics](/reference/metrics.md). + +```js +apm.registerMetric( 'ws.connections' , () => { + return wss.clients.size; +}) + +// or, to additionally label the metric with "module: 'ws'": + +apm.registerMetric( 'ws.connections' , {module : 'ws'}, () => { + return wss.clients.size; +}) +``` + + +## `apm.setTransactionOutcome(outcome)` [apm-transaction-outcome] + +Added in: v3.12.0 + +* `outcome` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) + +Will set the outcome property on the *current* transaction. + +See the [Transaction Outcome docs](/reference/transaction-api.md#transaction-outcome) for more information. + + +## `apm.setSpanOutcome(outcome)` [apm-span-outcome] + +Added in: v3.12.0 + +* `outcome` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) + +Will set the outcome property on the *current* span. + +See the [Span Outcome docs](/reference/span-api.md#span-outcome) for more information. + + diff --git a/docs/reference/api.md b/docs/reference/api.md new file mode 100644 index 0000000000..18aeab55d5 --- /dev/null +++ b/docs/reference/api.md @@ -0,0 +1,16 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/api.html +--- + +# API Reference [api] + +The API reference documentation is divided into three parts: + +* [The `Agent` API](/reference/agent-api.md) - All functions and properties on the `Agent` object. An instance of the `Agent` object is acquired by requiring/importing the Node.js APM Agent module. The `Agent` is a singleton and the instance is usually referred to by the variable `apm` in this documentation +* [The `Transaction` API](/reference/transaction-api.md) - All functions and properties on the `Transaction` object. An instance of the `Transaction` object is acquired by calling `apm.startTransaction()` +* [The `Span` API](/reference/span-api.md) - All functions and properties on the `Span` object. An instance of the `Span` object is acquired by calling `apm.startSpan()` + + + + diff --git a/docs/reference/azure-functions.md b/docs/reference/azure-functions.md new file mode 100644 index 0000000000..5195222466 --- /dev/null +++ b/docs/reference/azure-functions.md @@ -0,0 +1,117 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/azure-functions.html +--- + +# Monitoring Node.js Azure Functions [azure-functions] + +The Node.js APM Agent can trace function invocations in an [Azure Functions](https://learn.microsoft.com/en-us/azure/azure-functions/) app, using either v3 or [v4 of the Node.js programming model](https://learn.microsoft.com/en-us/azure/azure-functions/functions-node-upgrade-v4). + + +## Prerequisites [azure-functions-prerequisites] + +You need an APM Server to send APM data to. Follow the [APM Quick start](docs-content://solutions/observability/apps/get-started-with-apm.md) if you have not set one up yet. You will need your **APM server URL** and an APM server **secret token** (or **API key**) for configuring the APM agent below. + +You will also need an Azure Function app to monitor. If you do not have an existing one, you can follow [this Azure guide](https://learn.microsoft.com/en-us/azure/azure-functions/create-first-function-cli-node#create-supporting-azure-resources-for-your-function) to create one. + +::::{important} +If you use `func init --javascript ...` as suggested in this Azure guide, then it is recommended that you **uninstall** the `azure-functions-core-tools` dependency by running `npm uninstall azure-functions-core-tools` and [install it separately](https://github.com/Azure/azure-functions-core-tools#installing). Having `azure-functions-core-tools` as a "devDependency" in your package.json will result in unreasonably large deployments that will be very slow to publish and will run your Azure Function app VM out of disk space. + +:::: + + +You can also take a look at and use this [Azure Functions example app with Elastic APM already integrated](https://github.com/elastic/apm-agent-nodejs/tree/main/examples/azure-function-app/). + + +## Step 1: Add the APM agent dependency [azure-functions-setup] + +Add the `elastic-apm-node` module as a dependency of your application: + +```bash +npm install elastic-apm-node --save # or 'yarn add elastic-apm-node' +``` + + +## Step 2: Start the APM agent [_step_2_start_the_apm_agent] + +For the APM agent to instrument Azure Functions, it needs to be started when the Azure host starts its Node.js worker processes. The best way to do so is by using an app-level entry point (support for this was added for Node.js Azure Functions [here](https://github.com/Azure/azure-functions-nodejs-worker/issues/537)). + +1. Create a module to start the APM agent. For example, a file at the root of your repository named "initapm.js": + + ```javascript + // initapm.js + require('elastic-apm-node').start({ + // Add configuration options here + }) + ``` + + Optional [configuration options](/reference/configuration.md) can be added on start. + +2. Change the "main" entry in your "package.json" to point to the initapm.js file. + + ```json + ... + "main": "{initapm.js,src/functions/*.js}", + ... + ``` + + + +## Step 3: Configure the APM agent [_step_3_configure_the_apm_agent] + +The APM agent can be [configured](/reference/configuring-agent.md) with options to the `.start()` method or with environment variables. Using environment variables allows one to use [application settings in the Azure Portal](https://learn.microsoft.com/en-us/azure/azure-functions/functions-how-to-use-azure-function-app-settings?tabs=portal#settings) which allows hiding values and updating settings without needing to re-deploy code. + +Open *Configuration > Application settings* for your Function App in the Azure Portal and set: + +```yaml +ELASTIC_APM_SERVER_URL: +ELASTIC_APM_SECRET_TOKEN: +``` + +For example: + +:::{image} images/azure-functions-configuration.png +:alt: Configuring the APM Agent in the Azure Portal +::: + +For local testing via `func start`, you can set these environment variables in your terminal, or in the "local.settings.json" file. See the [agent configuration guide](/reference/configuration.md) for full details on supported configuration variables. + + +## Step 4: (Re-)deploy your Azure Function app [_step_4_re_deploy_your_azure_function_app] + +```bash +func azure functionapp publish +``` + +Now, when you invoke your Azure Functions, you should see your application show up as a Service in the APM app in Kibana and see APM transactions for function invocations. Tracing data is forwarded to APM server after a period of time, so allow a minute or so for data to appear. + + +## Limitations [azure-functions-limitations] + +Distributed tracing for incoming HTTP requests to Azure Functions (using v4 of the programming model) does **not** work, because of a issue with Azure’s handling of trace-context. See [this](https://github.com/elastic/apm-agent-nodejs/pull/4426#issuecomment-2596922653) for details. + +Azure Functions instrumentation currently does *not* collect system metrics in the background because of a concern with unintentionally increasing Azure Functions costs (for Consumption plans). + +Elastic APM’s [central configuration](/reference/configuration.md#central-config) is not supported for Azure Functions. + + +## Filter sensitive information [azure-functions-filter-sensitive-information] + +By default, the Node.js agent will filter common sensitive information before sending errors and metrics to the Elastic APM server. + +It’s possible for you to tweak these defaults or remove any information you don’t want to send to Elastic APM: + +* By default, the Node.js agent will not log the body of HTTP requests. To enable this, use the [`captureBody`](/reference/configuration.md#capture-body) config option +* By default, the Node.js agent will filter certain HTTP headers known to contain sensitive information. To disable this, use the [`sanitizeFieldNames`](/reference/configuration.md#sanitize-field-names) config option +* To apply custom filters, use one of the [filtering](/reference/agent-api.md#apm-add-filter) functions + + +## Compatibility [azure-functions-compatibility] + +See [*Supported technologies*](/reference/supported-technologies.md) for details. + + +## Troubleshooting [azure-functions-troubleshooting] + +If you can’t get the Node.js agent to work as expected, please follow the [troubleshooting guide](docs-content://troubleshoot/observability/apm-agent-nodejs/apm-nodejs-agent.md). + diff --git a/docs/reference/configuration.md b/docs/reference/configuration.md new file mode 100644 index 0000000000..cffbe4e025 --- /dev/null +++ b/docs/reference/configuration.md @@ -0,0 +1,1137 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/configuration.html +--- + +# Configuration options [configuration] + +The available configuration options and equivalent environment variable names are listed below. + +For more information on setting configuration options, including configuration precedence, see [configuring the agent](/reference/configuring-agent.md). + +::::{tip} +The only required parameter is [`serviceName`](#service-name). However, the agent will use the `name` from `package.json` by default if available. +:::: + + +## `serviceName` [service-name] + +* **Type:** String +* **Default:** `name` field of `package.json`, or "unknown-nodejs-service" +* **Env:** `ELASTIC_APM_SERVICE_NAME` + +The name to identify this service in Elastic APM. Multiple instances of the same service should use the same name. Allowed characters: `a-z`, `A-Z`, `0-9`, `-`, `_`, and space. + +If `serviceName` is not provided, the agent will attempt to use the "name" field from "package.json" — looking up from the current working directory. The name will be normalized to the allowed characters. If the name cannot be inferred from package.json, then a fallback value of "unknown-nodejs-service" is used. + + +## `serviceNodeName` [service-node-name] + +* **Type:** String +* **Env:** `ELASTIC_APM_SERVICE_NODE_NAME` + +A unique name for the service node. This is optional, and if omitted, the APM Server will fall back on `system.container.id` if available, and finally `host.name` if necessary. + +This option allows you to set the node name manually to ensure uniqueness and meaningfulness. + + +## `secretToken` [secret-token] + +* **Type:** String +* **Env:** `ELASTIC_APM_SECRET_TOKEN` + +The secret token optionally expected by the APM Server. + + +## `apiKey` [api-key] + +* **Type:** String +* **Env:** `ELASTIC_APM_API_KEY` + +The API key optionally expected by the APM Server. This is an alternative to `secretToken`. + +This base64-encoded string is used to ensure that only your agents can send data to your APM server. You must have created the API key using the APM server command line tool. Please see the [APM server documentation](docs-content://solutions/observability/apps/api-keys.md) for details on how to do that. + +::::{note} +This feature is fully supported in the APM Server versions >= 7.6. +:::: + + +::::{warning} +The API key is sent as plain-text in every request to the server, so you should secure your communications using HTTPS. Unless you do so, your API key could be observed by an attacker. +:::: + + + +## `serverUrl` [server-url] + +* **Type:** String +* **Default:** `http://127.0.0.1:8200` +* **Env:** `ELASTIC_APM_SERVER_URL` + +The URL to where the APM Server is deployed. + + +## `verifyServerCert` [validate-server-cert] + +* **Type:** Boolean +* **Default:** `true` +* **Env:** `ELASTIC_APM_VERIFY_SERVER_CERT` + +By default the agent will validate the TLS/SSL certificate of the APM Server if using HTTPS. You can switch this behavior off by setting this option to `false`. + + +## `serverCaCertFile` [server-ca-cert-file] + +* **Type:** String +* **Env:** `ELASTIC_APM_SERVER_CA_CERT_FILE` + +By default the agent will validate the TLS/SSL certificate of the APM Server using the well-known CAs curated by Mozilla, as described in the Node.js docs for [`tls.createSecureContext()`](https://nodejs.org/api/tls.md#tls_tls_createsecurecontext_options). You can set this option to the path of a file containing a CA certificate that will be used instead. + +Specifying this option is required when using self-signed certificates, unless server certificate validation is disabled. + + +## `serviceVersion` [service-version] + +* **Type:** String +* **Default:** `version` field of `package.json` +* **Env:** `ELASTIC_APM_SERVICE_VERSION` + +The version of the app currently running. This could be the version from your `package.json` file, a git commit reference, or any other string that might help you pinpoint a specific version or deployment. + + +## `active` [active] + +* **Type:** Boolean +* **Default:** `true` +* **Env:** `ELASTIC_APM_ACTIVE` + +A boolean specifying if the agent should be active or not. If active, the agent will instrument incoming HTTP requests and track errors. Normally you would not want to run the agent in your development or testing environments. If you are using the `NODE_ENV` environment variable, you can use this to determine the state: + +```js +var options = { + active: process.env.NODE_ENV === 'production' +} +``` + + +## `environment` [environment] + +* **Type:** String +* **Default:** `process.env.NODE_ENV || 'development'` +* **Env:** `ELASTIC_APM_ENVIRONMENT` + +The environment name is automatically logged along with all errors and transactions. If you want to overwrite this, use this option. + +Environments allow you to easily filter data on a global level in the APM app. It’s important to be consistent when naming environments across agents. See [environment selector](docs-content://solutions/observability/apps/filter-application-data.md#apm-filter-your-data-service-environment-filter) in the APM app for more information. + +::::{note} +This feature is fully supported in the APM app in Kibana versions >= 7.2. You must use the query bar to filter for a specific environment in versions prior to 7.2. +:::: + + + +## `contextPropagationOnly` [context-propagation-only] + +* **Type:** Boolean +* **Default:** `false` +* **Env:** `ELASTIC_APM_CONTEXT_PROPAGATION_ONLY` + +If set to `true`, the agent will reduce its work to the minimum required to support automatic [HTTP trace-context](https://w3c.github.io/trace-context/) propagation (for distributed tracing) and log correlation. The agent will not communicate with APM server (no tracing data is forwarded, no central configuration is retrieved) and will not collect metrics. This setting allows using the APM agent with a service that cannot use APM server. Usage is expected to be rare. + + +## `disableSend` [disable-send] + +* **Type:** Boolean +* **Default:** `false` +* **Env:** `ELASTIC_APM_DISABLE_SEND` + +If set to `true`, the agent will work as usual, except that it will not attempt to communicate with APM server. Tracing and metrics data will be dropped and the agent won’t be able to receive central configuration, which means that any other configuration cannot be changed in this state without restarting the service. + +This setting is similar to [`contextPropagationOnly`](#context-propagation-only) in functionality. However, `disableSend` does not attempt to reduce time spent collecting tracing data. A use case for this setting is in CI environments, to test agent functionality without requiring a configured APM server. + + +## `instrument` [instrument] + +* **Type:** Boolean +* **Default:** `true` +* **Env:** `ELASTIC_APM_INSTRUMENT` + +A boolean specifying if the agent should automatically apply instrumentation to supported modules when they are loaded. + +Note that both `active` and `instrument` needs to be `true` for instrumentation to be running. + + +## `instrumentIncomingHTTPRequests` [instrument-incoming-http-requests] + +* **Type:** Boolean +* **Default:** `true` +* **Env:** `ELASTIC_APM_INSTRUMENT_INCOMING_HTTP_REQUESTS` + +A boolean specifying if the agent should instrument incoming HTTP requests. + +To configure if outgoing http requests should be instrumented, see [`disableInstrumentations`](#disable-instrumentations). + + +## `centralConfig` [central-config] + +* **Type:** Boolean +* **Default:** `true` +* **Env:** `ELASTIC_APM_CENTRAL_CONFIG` + +Activate APM Agent Configuration via Kibana. If set to `true`, the client will poll the APM Server regularly for new agent configuration. + +::::{note} +This feature requires APM Server v7.3 or later. More information is available in [APM Agent configuration](docs-content://solutions/observability/apps/apm-agent-central-configuration.md). +:::: + + + +## `contextManager` [context-manager] + +Added in: v3.37.0
The "patch" context manager was removed in: v4.0.0 + +* **Type:** String +* **Env:** `ELASTIC_APM_CONTEXT_MANAGER` + +This configuration option provides a way to override the APM agent’s default technique for tracking Node.js asynchronous tasks; sometimes referred to as "run context", "async context", or just "context". Most users should not need to change this setting. This setting replaces the older `asyncHooks` configuration option. + +To effectively trace an application, the APM agent needs to track the logical thread of control through asynchronous tasks. The preferred mechanism for this is [`AsyncLocalStorage`](https://nodejs.org/api/async_context.md#class-asynclocalstorage), usable in Node.js versions >=14.5 and >=12.19. In older versions of Node, the APM agent will fallback to using [`async_hooks`](https://nodejs.org/api/async_hooks.md), which can have a higher performance overhead, especially in Promise-heavy applications. + +Supported values for `contextManager` are: + +* `"asynclocalstorage"` - Use the `AsyncLocalStorage` mechanism, if able. Otherwise it will fallback to using `async_hooks`. +* `"asynchooks"` - Use the `async_hooks` mechanism. (Using this value will restore the agent behavior from before v3.37.0.) + + +## `transactionIgnoreUrls` [transaction-ignore-urls] + +* **Type:** Array +* **Default:** `[]` +* **Env:** `ELASTIC_APM_TRANSACTION_IGNORE_URLS` +* [![dynamic config](images/dynamic-config.svg "") ](/reference/configuring-agent.md#dynamic-configuration) **Central config name:** `transaction_ignore_urls` + +Array or comma-separated string used to restrict requests for certain URLs from being instrumented. + +When an incoming HTTP request is detected, its URL pathname will be tested against each string in this list. The `transactionIgnoreUrls` property supports exact string matches, simple wildcard (`*`) matches, and may not include commas. Wildcard matches are case-insensitive by default. You may make wildcard searches case-sensitive by using the `(?-i)` prefix. + +Note that all errors that are captured during a request to an ignored URL are still sent to the APM Server regardless of this setting. + +If you need full regular expression pattern matching, see [`ignoreUrls`](#ignore-urls). + +Example usage: + +```js +require('elastic-apm-node').start({ + transactionIgnoreUrls: [ + '/ping', + '/fetch/*', + '(?-i)/caseSensitiveSearch' + ] +}) +``` + + +## `ignoreUrls` [ignore-urls] + +* **Type:** Array +* **Default:** `undefined` + +Used to restrict requests to certain URLs from being instrumented. + +This property should be set to an array containing one or more strings or `RegExp` objects. When an incoming HTTP request is detected, its URL will be tested against each element in this list. If an element in the array is a `String`, an exact match will be performed. If an element in the array is a `RegExp` object, its test function will be called with the URL being tested. + +Note that all errors that are captured during a request to an ignored URL are still sent to the APM Server regardless of this setting. + +If you’d prefer simple wildcard pattern matching, see [`transactionIgnoreUrls`](#transaction-ignore-urls). + +Example usage: + +```js +require('elastic-apm-node').start({ + ignoreUrls: [ + '/ping', + /^\/admin\//i + ] +}) +``` + + +## `ignoreUserAgents` [ignore-user-agents] + +* **Type:** Array +* **Default:** `undefined` + +Used to restrict requests from certain User-Agents from being instrumented. + +This property should be set to an array containing one or more strings or `RegExp` objects. When an incoming HTTP request is detected, the User-Agent from the request headers will be tested against each element in this list. If an element in the array is a `String`, it’s matched against the beginning of the User-Agent. If an element in the array is a `RegExp` object, its test function will be called with the User-Agent string being tested. + +Note that all errors that are captured during a request by an ignored user agent are still sent to the APM Server regardless of this setting. + +Example usage: + +```js +require('elastic-apm-node').start({ + ignoreUserAgents: [ + 'curl/', + /pingdom/i + ] +}) +``` + + +## `captureBody` [capture-body] + +* **Type:** String +* **Default:** `off` +* **Env:** `ELASTIC_APM_CAPTURE_BODY` +* [![dynamic config](images/dynamic-config.svg "") ](/reference/configuring-agent.md#dynamic-configuration) **Central config name:** `capture_body` + +The HTTP body of incoming HTTP requests is not recorded and sent to the APM Server by default. + +Possible options are: `off`, `all`, `errors`, and `transactions`. + +* `off` - request bodies will never be reported +* `errors` - request bodies will only be reported with errors +* `transactions` - request bodies will only be reported with request transactions +* `all` - request bodies will be reported with both errors and request transactions + +The recorded body will be truncated if larger than 2 KiB. + +If the body parsing middleware captures the body as raw `Buffer` data, the request body will be represented as the string `""`. + +For the agent to be able to access the body, the body needs to be available as a property on the incoming HTTP [`request`](https://nodejs.org/api/http.md#http_class_http_incomingmessage) object. The agent will look for the body on the following properties: `req.json || req.body || req.payload` + + +## `captureHeaders` [capture-headers] + +* **Type:** Boolean +* **Default:** true +* **Env:** `ELASTIC_APM_CAPTURE_HEADERS` + +The HTTP headers of incoming HTTP requests, and its resulting response headers, are recorded and sent to the APM Server by default. This can be disabled by setting this option to `false`. + + +## `errorOnAbortedRequests` [error-on-aborted-requests] + +* **Type:** Boolean +* **Default:** `false` +* **Env:** `ELASTIC_APM_ERROR_ON_ABORTED_REQUESTS` + +A boolean specifying if the agent should monitor for aborted TCP connections with un-ended HTTP requests. An error will be generated and sent to the APM Server if this happens. + + +## `abortedErrorThreshold` [aborted-error-threshold] + +* **Type:** Number +* **Default:** `25s` +* **Env:** `ELASTIC_APM_ABORTED_ERROR_THRESHOLD` + +Specify the threshold for when an aborted TCP connection with an un-ended HTTP request is considered an error. The value is expected to be in seconds, or should include a time suffix. + +If the `errorOnAbortedRequests` property is `false`, this property is ignored. + + +## `transactionSampleRate` [transaction-sample-rate] + +* **Type:** Number +* **Default:** `1.0` +* **Env:** `ELASTIC_APM_TRANSACTION_SAMPLE_RATE` +* [![dynamic config](images/dynamic-config.svg "") ](/reference/configuring-agent.md#dynamic-configuration) **Central config name:** `transaction_sample_rate` + +Specify the sampling rate to use when deciding whether to trace a request. + +This must be a value between `0.0` and `1.0`, where `1.0` means 100% of requests are traced. The value is rounded to four decimal places of precision (e.g. 0.0001, 0.3333) to ensure consistency and reasonable size when propagating the sampling rate in the `tracestate` header for [distributed tracing](/reference/distributed-tracing.md). + + +## `hostname` [hostname] + +* **Type:** String +* **Default:** OS hostname +* **Env:** `ELASTIC_APM_HOSTNAME` + +The OS hostname is automatically logged along with all errors and transactions. If you want to overwrite this, use this option. + + +## `frameworkName` [framework-name] + +* **Type:** String +* **Env:** `ELASTIC_APM_FRAMEWORK_NAME` + +Set the name of the web framework used by the instrumented service/application. The name will be available as metadata for all errors and transactions sent to the APM Server. This can be useful for debugging and filtering. + +By default, the agent will set the value of this config option if the framework can be detected automatically. + + +## `frameworkVersion` [framework-version] + +* **Type:** String +* **Env:** `ELASTIC_APM_FRAMEWORK_VERSION` + +Set the version of the web framework used by the instrumented service/application. The version will be available as metadata for all errors and transactions sent to the APM Server. This can be useful for debugging and filtering. + +By default, the agent will set the value of this config option if the framework can be detected automatically. + +Example of setting [`frameworkName`](#framework-name) and `frameworkVersion` for a framework named `my-custom-framework`: + +```js +// read the version from the package.json file +var frameworkVersion = require('my-custom-framework/package').version + +require('elastic-apm-node').start({ + frameworkName: 'my-custom-framework', + frameworkVersion: frameworkVersion +}) +``` + + +## `logLevel` [log-level] + +* **Type:** String +* **Default:** `'info'` +* **Env:** `ELASTIC_APM_LOG_LEVEL` +* [![dynamic config](images/dynamic-config.svg "") ](/reference/configuring-agent.md#dynamic-configuration) **Central config name:** `log_level` + +Set the verbosity level for the agent’s logging. Note that this does not have any influence on the types of errors that are sent to the APM Server. This only controls how chatty the agent is in your logs. Possible levels are: `trace` (the most verbose logging, avoid in production), `debug`, `info`, `warning`, `error`, `critical`, and `off` (disable all logging). + +This config only applies when using the built-in logger. Log levels will not be automatically applied to a custom [`logger`](#logger). + + +## `logger` [logger] + +* **Type:** object +* **Env:** `ELASTIC_APM_LOGGER=false` to *ignore* a custom logger + +By default, the APM agent logs to stdout in [ecs-logging](ecs-logging://reference/intro.md) format. Use the `logger` config to pass in a custom logger object. The custom logger must provide `trace`, `debug`, `info`, `warn`, `error`, and `fatal` methods that take a string message argument. + +A custom logger may result in *structured log data being lost*. As of version 3.13, the agent uses structured logging using the [pino API](https://getpino.io/#/docs/api?id=logger). To avoid issues with incompatible logger APIs, a given custom logger is wrapped in such a way that only the log message is passed through. As a special case, if the provided logger is a *pino logger instance*, then it will be used directly without loss of structured fields. Setting the environment variable `ELASTIC_APM_LOGGER=false` will **ignore** a custom logger. This is provided to assist with [Debug mode](docs-content://troubleshoot/observability/apm-agent-nodejs/apm-nodejs-agent.md#debug-mode) troubleshooting. + +An example using a custom pino logger: + +```js +const pino = require('pino') +require('elastic-apm-node').start({ + logger: pino({ level: 'info' }) +}) +``` + +or using a [Bunyan](https://github.com/trentm/node-bunyan) logger: + +```js +const bunyan = require('bunyan') +require('elastic-apm-node').start({ + logger: bunyan.createLogger({ level: 'info' }) +}) +``` + +To get the [unstructured logging output](https://github.com/watson/console-log-level) similar to agent versions before 3.13, use the following: + +```js +require('elastic-apm-node').start({ + logger: require('console-log-level')() +}) +``` + + +## `captureExceptions` [capture-exceptions] + +As of v4.0.0 a captured exception will always be printed to stderr. + +* **Type:** Boolean +* **Default:** `true` +* **Env:** `ELASTIC_APM_CAPTURE_EXCEPTIONS` + +Whether or not the APM agent should monitor for uncaught exceptions ([`uncaughtException`](https://nodejs.org/api/process.md#event-uncaughtexception)) and send them to the APM Server automatically. This also includes unhandled rejections ([`unhandledRejection`](https://nodejs.org/api/process.md#event-unhandledrejection)), when the node process is started with `--unhandled-rejections=throw`, which is the default Node.js behavior since v15 ([reference](https://nodejs.org/api/cli.md#--unhandled-rejectionsmode)). + +When `captureExceptions` is true and an `uncaughtException` event is emitted, the APM agent will: capture error details, send that error (and buffered APM data) to APM server, and `process.exit(1)` ([as `uncaughtException` handlers should](https://nodejs.org/api/process.md#warning-using-uncaughtexception-correctly)). Some things to be aware of: + +* Because the APM agent’s handler will `process.exit(1)`, to use your own `uncaughtException` handler, you must pass your handler to [`apm.handleUncaughtExceptions([callback])`](/reference/agent-api.md#apm-handle-uncaught-exceptions). The APM agent will capture and send the error, and then call your handler. It is then up to your handler to `process.exit(1)`. +* The APM agent’s handler is async, so there is a short period while it is sending error details while the Node.js event loop will still be executing. +* When the exception and stack trace are printed to stderr, the exact format differs from [the Node.js core formatter](https://github.com/nodejs/node/blob/v20.5.0/src/node_errors.cc#L246-L266). +* Using Node.js’s [`process.setUncaughtExceptionCaptureCallback(fn)`](https://nodejs.org/api/process.md#processsetuncaughtexceptioncapturecallbackfn) results in `uncaughtException` not being called, so the APM agent’s capturing will not work. + +Set `captureExceptions: false` to disable this, and get the default Node.js behavior for uncaught exceptions. + + +## `captureErrorLogStackTraces` [capture-error-log-stack-traces] + +* **Type:** String +* **Default:** `messages` +* **Env:** `ELASTIC_APM_CAPTURE_ERROR_LOG_STACK_TRACES` + +Normally only `Error` objects have a stack trace associated with them. This stack trace is stored along with the error message when the error is sent to the APM Server. The stack trace points to the place where the `Error` object was instantiated. + +But sometimes it’s valuable to know, not where the `Error` was instantiated, but where it was detected. For instance, when an error happens deep within a database driver, the location where the error bubbles up to, is sometimes more useful for debugging, than where the error occurred. + +Set this config option to `always` to — besides the error stack trace — also capture a stack trace at the location where [`captureError`](/reference/agent-api.md#apm-capture-error) was called. + +By default, this config option has the value `messages`, which means that a stack trace of the capture location will be recorded only when `captureError` is called with either a [string](/reference/agent-api.md#message-strings) or the [special parameterized message object](/reference/agent-api.md#parameterized-message-object), in which case a normal stack trace isn’t available. + +Set this config option to `never` to never record a capture location stack trace. + +A capture location stack trace is never generated for uncaught exceptions. + + +## `spanStackTraceMinDuration` [span-stack-trace-min-duration] + +Added in: v3.30.0, replaces [`captureSpanStackTraces`](#capture-span-stack-traces) and [`spanFramesMinDuration`](#span-frames-min-duration) + +* **Type:** Duration +* **Default:** `'-1s'` (never capture span stack traces) +* **Env:** `ELASTIC_APM_SPAN_STACK_TRACE_MIN_DURATION` +* [![dynamic config](images/dynamic-config.svg "") ](/reference/configuring-agent.md#dynamic-configuration) **Central config name:** `span_stack_trace_min_duration` + +Use this option to control if stack traces are never captured for spans (the default), always captured for spans, or only captured for spans that are longer than a given duration. If you choose to enable span stack traces, even if only for slower spans, please read the [possible performance implications](/reference/performance-tuning.md#performance-stack-traces). + +* a negative value, e.g. `'-1ms'` or `-1`, means *never* capture stack traces for spans; +* a zero value, e.g. `'0ms'` or `0`, means *always* capture stack traces for spans, regardless of the span’s duration; and +* any positive value, e.g. `'50ms'`, means to capture stack traces for spans longer than that duration. + +The duration value should be a string of the form `''`. The allowed units are `ms` for milliseconds, `s` for seconds, and `m` for minutes and are case-sensitive. The ** is optional and defaults to *milliseconds*. A Number value of milliseconds may also be provided. For example, `'10ms'` and `10` are 10 milliseconds, `'2s'` is 2 seconds. + +(Note: If you are migrating from the deprecated `spanFramesMinDuration` option, the meaning for negative and zero values has changed *and* the default unit has changed to milliseconds.) + + +## `captureSpanStackTraces` [capture-span-stack-traces] + +Deprecated in: v3.30.0, use [`spanStackTraceMinDuration`](#span-stack-trace-min-duration) + +* **Type:** Boolean +* **Env:** `ELASTIC_APM_CAPTURE_SPAN_STACK_TRACES` + +This option is **deprecated** — use [`spanStackTraceMinDuration`](#span-stack-trace-min-duration) instead. In versions before v3.30.0 this option was `true` by default. As of version v3.30.0 this default has *effectively* changed to false, because the default is `spanStackTraceMinDuration: '-1s'`. + +If `spanStackTraceMinDuration` is specified, then any provided value for this option is ignored. Otherwise, + +* setting `captureSpanStackTraces: false` is equivalent to setting `spanStackTraceMinDuration: '-1s'` (stack traces will never be captured for spans), and +* setting `captureSpanStackTraces: true` will enable capture of stack traces for spans that are longer than [`spanFramesMinDuration`](#span-frames-min-duration), or 10ms if `spanFramesMinDuration` is not specified. + + +## `spanFramesMinDuration` [span-frames-min-duration] + +Deprecated in: v3.30.0, use [`spanStackTraceMinDuration`](#span-stack-trace-min-duration) + +* **Type:** Duration +* **Env:** `ELASTIC_APM_SPAN_FRAMES_MIN_DURATION` + +This option is **deprecated** — use [`spanStackTraceMinDuration`](#span-stack-trace-min-duration) instead. Note that the sense of a *negative* value and a *zero* value has switched in the new option. Also note that the default unit has changed from `s` to `ms` in the new option. + +If `spanStackTraceMinDuration` is specified, then any provided value for this option is ignored. Otherwise, + +* a zero value, e.g. `0ms`, is equivalent to `spanStackTraceMinDuration: '-1s'` (never capture span stack traces); +* a negative value, e.g. `-1ms`, is equivalent to `spanStackTraceMinDuration: 0` (always capture span stack traces); and +* any positive value, e.g. `'50ms'`, is equivalent to setting `spanStackTraceMinDuration` to the same value. + +The duration value should be a string of the form `''`. The allowed units are `ms` for milliseconds, `s` for seconds, and `m` for minutes and are case-sensitive. The ** is optional and defaults to seconds. A Number value of seconds may also be provided. For example, `'10ms'` is 10 milliseconds, `'5'` and `5` (number) are 5 seconds. + + +## `usePathAsTransactionName` [use-path-as-transaction-name] + +* **Type:** Boolean +* **Default:** `false` +* **Env:** `ELASTIC_APM_USE_PATH_AS_TRANSACTION_NAME` + +Set this option to `true` to use the URL path as the transaction name if no other route could be determined. If the agent do not support your router, you can set this option to `true` to use specific URL path as the transaction name instead of `GET unknown route`. + + +## `sourceLinesErrorAppFrames` + `sourceLinesErrorLibraryFrames` [source-context-error] + +When an error is captured by the agent, its stack trace is stored in Elasticsearch. + +By default, the agent will also collect a few lines of source code around the lines for each frame in the stack trace. This can make it easier to determine the cause of an error as the source code related to the error is visible directly in Kibana. + +The agent differentiates between so-called in-app frames and library frames. Library frames are frames belonging to Node core and code inside the application’s `node_modules` folder. In-app frames are everything else. + +Use the following two config options to change how many lines of source code to include for the different types of stack frames: + +$$$source-context-error-app-frames$$$ +**`sourceLinesErrorAppFrames`** + +* **Type:** Number +* **Default:** `5` +* **Env:** `ELASTIC_APM_SOURCE_LINES_ERROR_APP_FRAMES` + +The default value `5` means that 5 lines of source code will be collected for in-app error frames. 2 lines above the stack frame line + 2 below + the stack frame line itself. + +Setting this config option to `0` means that no source code will be collected for in-app error frames. + +$$$source-context-error-library-frames$$$ +**`sourceLinesErrorLibraryFrames`** + +* **Type:** Number +* **Default:** `5` +* **Env:** `ELASTIC_APM_SOURCE_LINES_ERROR_LIBRARY_FRAMES` + +The default value `5` means that 5 lines of source code will be collected for error library frames. 2 lines above the stack frame line + 2 below + the stack frame line itself. + +Setting this config option to `0` means that no source code will be collected for error library frames. + + +## `sourceLinesSpanAppFrames` + `sourceLinesSpanLibraryFrames` [source-context-span] + +When a span is recorded by the agent, a stack trace is recorded together with the span, pointing to the location where the span was initiated. This stack trace is stored in Elasticsearch along with the other span data. + +By default, the agent will also collect a few lines of source code around the lines for each frame in the stack trace. This can make it easier to determine why and how the span was initiated as the source code related to the span is visible directly in Kibana. + +The agent differentiates between so-called in-app frames and library frames. Library frames are frames belonging to Node core and code inside the applications `node_modules` folder. In-app frames are everything else. + +Use the following two config options to change how many lines of source code to include for the different types of stack frames: + +$$$source-context-span-app-frames$$$ +**`sourceLinesSpanAppFrames`** + +* **Type:** Number +* **Default:** `0` +* **Env:** `ELASTIC_APM_SOURCE_LINES_SPAN_APP_FRAMES` + +The default value `0` means that no source code will be collected for in-app span frames. + +$$$source-context-span-library-frames$$$ +**`sourceLinesSpanLibraryFrames`** + +* **Type:** Number +* **Default:** `0` +* **Env:** `ELASTIC_APM_SOURCE_LINES_SPAN_LIBRARY_FRAMES` + +The default value `0` means that no source code will be collected for span library frames. + + +## `errorMessageMaxLength` [error-message-max-length] + +Deprecated in: v3.21.0, use [`longFieldMaxLength`](#long-field-max-length) + +* **Type:** String +* **Default:** `longFieldMaxLength`'s value +* **Env:** `ELASTIC_APM_ERROR_MESSAGE_MAX_LENGTH` + +This option is **deprecated** — use [`longFieldMaxLength`](#long-field-max-length) instead. + +The maximum length allowed for error messages. It is expressed in bytes or includes a size suffix such as `2kb`. Size suffixes are case-insensitive and include `b`, `kb`, `mb`, and `gb`. Messages above this length will be truncated before being sent to the APM Server. Note that while the configuration option accepts a number of **bytes**, truncation is based on a number of unicode characters, not bytes. + +Set to `-1` do disable truncation. + +This applies to the following properties: + +* `error.exception.message` +* `error.log.message` + + +## `longFieldMaxLength` [long-field-max-length] + +* **Type:** Integer +* **Default:** 10000 +* **Env:** `ELASTIC_APM_LONG_FIELD_MAX_LENGTH` + +The following transaction, span, and error fields will be truncated at this number of unicode characters before being sent to APM server: + +* `transaction.context.request.body`, `error.context.request.body` +* `transaction.context.message.body`, `span.context.message.body`, `error.context.message.body` +* `span.context.db.statement` +* `error.exception.message`, `error.log.message` - If [`errorMessageMaxLength`](#error-message-max-length) is specified, then that value takes precedence for these error message fields. + +Note that tracing data is limited at the upstream APM server to [`max_event_size`](docs-content://solutions/observability/apps/general-configuration-options.md#apm-max_event_size), which defaults to 300kB. If you configure `longFieldMaxLength` too large, it could result in transactions, spans, or errors that are rejected by APM server. + + +## `stackTraceLimit` [stack-trace-limit] + +* **Type:** Number +* **Default:** `50` +* **Env:** `ELASTIC_APM_STACK_TRACE_LIMIT` + +Setting it to `0` will disable stack trace collection. Any finite integer value will be used as the maximum number of frames to collect. Setting it to `Infinity` means that all frames will be collected. + + +## `transactionMaxSpans` [transaction-max-spans] + +* **Type:** Number +* **Default:** `500` +* **Env:** `ELASTIC_APM_TRANSACTION_MAX_SPANS` +* [![dynamic config](images/dynamic-config.svg "") ](/reference/configuring-agent.md#dynamic-configuration) **Central config name:** `transaction_max_spans` + +Specify the maximum number of spans to capture within a request transaction before dropping further spans. Setting to `-1` means that spans will never be dropped. + + +## `maxQueueSize` [max-queue-size] + +* **Type:** Number +* **Default:** `1024` +* **Env:** `ELASTIC_APM_MAX_QUEUE_SIZE` + +The maximum size of buffered events. + +Events like transactions, spans, and errors are buffered when the agent can’t keep up with sending them to the APM Server or if the APM server is down. If the queue is full, events are rejected which means you will lose transactions and spans. This guards the application from consuming too much memory and possibly crashing in case the APM server is unavailable for a longer period of time. + +A lower value will decrease the heap overhead of the agent, while a higher value makes it less likely to lose events in case of a temporary spike in throughput. + + +## `apiRequestTime` [api-request-time] + +* **Type:** String +* **Default:** `10s` +* **Env:** `ELASTIC_APM_API_REQUEST_TIME` + +The agent maintains an open HTTP request to the APM Server that is used to transmit the collected transactions, spans, and errors to the server. + +To avoid issues with intermittent proxies and load balancers, the HTTP request is ended and a new one created at regular intervals controlled by this config option. The value is expected to be in seconds, or should include a time suffix. + +::::{note} +The HTTP request is ended before the time threshold is reached if enough bytes are sent over it. Use the [`apiRequestSize`](#api-request-size) config option to control the byte threshold. + +:::: + + + +## `apiRequestSize` [api-request-size] + +* **Type:** String +* **Default:** `768kb` +* **Env:** `ELASTIC_APM_API_REQUEST_SIZE` + +The agent maintains an open HTTP request to the APM Server that is used to transmit the collected transactions, spans, and errors to the server. + +To avoid issues with intermittent proxies and load balancers, the HTTP request is ended and a new one created if its body becomes too large. That limit is controlled by this config option. The value is expected to be in bytes, or include a size suffix such as `1mb`. Size suffixes are case-insensitive and include `b`, `kb`, `mb`, and `gb`. + +::::{note} +The HTTP request is otherwise ended at regular intervals controlled by the [`apiRequestTime`](#api-request-time) config option. + +:::: + + + +## `serverTimeout` [server-timeout] + +* **Type:** String +* **Default:** `30s` +* **Env:** `ELASTIC_APM_SERVER_TIMEOUT` + +Specify a timeout on the socket used for communication between the APM agent and APM Server. If no data is sent or received on the socket for this amount of time, the request will be aborted. It’s not recommended to set a `serverTimeout` lower than the [`apiRequestTime`](#api-request-time) config option. That will likely result in healthy requests being aborted prematurely. + +The value should include a time suffix (*m* for minutes, *s* for seconds, or *ms* for milliseconds), but defaults to seconds if no suffix is given. + + +## `apmClientHeaders` [apm-client-headers] + +Added in: v4.3.0 + +* **Type:** Object +* **Env:** `ELASTIC_APM_APM_CLIENT_HEADERS` + +Specify custom headers to be included in HTTP requests by the APM agent to APM Server. Generally this should not be required for normal usage. + +Examples: + +```bash +ELASTIC_APM_APM_CLIENT_HEADERS="foo=bar,spam=eggs" +``` + +```js +require('elastic-apm-node').start({ + apmClientHeaders: { foo: 'bar', spam: 'eggs' }, + // ... +}) +``` + + +## `sanitizeFieldNames` [sanitize-field-names] + +* **Type:** Array +* **Default:** `['password', 'passwd', 'pwd', 'secret', '*key', '*token*', '*session*', '*credit*', '*card*', '*auth*', 'set-cookie', '*principal*', 'pw', 'pass', 'connect.sid']` +* **Env:** `ELASTIC_APM_SANITIZE_FIELD_NAMES` +* [![dynamic config](images/dynamic-config.svg "") ](/reference/configuring-agent.md#dynamic-configuration) **Central config name:** `sanitize_field_names` + +Remove sensitive data sent to Elastic APM. + +The `sanitizeFieldNames` configuration value allows you to configure a list of wildcard patterns of field names which should be redacted from agent payloads. Wildcard matches are case-insensitive by default. You may make wildcard searches case-sensitive by using the `(?-i)` prefix. These patterns apply to the request and response HTTP headers, HTTP request cookies, and also any form field captured during an `application/x-www-form-urlencoded` data request. + +The `sanitizeFieldNames` will redact any matched *field names*. If you wish to filter or *redact* other data the [API filtering functions](/reference/agent-api.md#apm-add-filter) may be a better choice. + + +## `disableInstrumentations` [disable-instrumentations] + +* **Type:** Array of strings +* **Env:** `ELASTIC_APM_DISABLE_INSTRUMENTATIONS` + +Array or comma-separated string of module names for which to disable instrumentation. When instrumentation is disabled for a module, no spans will be collected for that module. + +Example using options object: + +```js +require('elastic-apm-node').start({ + disableInstrumentations: ['graphql', 'redis'] +}) +``` + +Example using environment variable: + +```bash +ELASTIC_APM_DISABLE_INSTRUMENTATIONS=graphql,redis +``` + +For an always up-to-date list of modules for which instrumentation can be disabled, see the [lib/instrumentation/modules](https://github.com/elastic/apm-agent-nodejs/tree/main/lib/instrumentation/modules) folder in the agent repository. Note that not all modules represented in this directory will generate spans, and adding those to this array has no effect. + +To configure if incoming http requests should be instrumented, see [`instrumentIncomingHTTPRequests`](#instrument-incoming-http-requests). + + +## `containerId` [container-id] + +* **Type:** String +* **Env:** `ELASTIC_APM_CONTAINER_ID` + +Specify the docker container id to associate with all reported events. If absent, it will be parsed out of the `/proc/self/cgroup` file. + + +## `kubernetesNodeName` [kubernetes-node-name] + +* **Type:** String +* **Env:** `KUBERNETES_NODE_NAME` + +Specify the kubernetes node name to associate with all reported events. + + +## `kubernetesNamespace` [kubernetes-namespace] + +* **Type:** String +* **Env:** `KUBERNETES_NAMESPACE` + +Specify the kubernetes namespace to associate with all reported events. + + +## `kubernetesPodName` [kubernetes-pod-name] + +* **Type:** String +* **Env:** `KUBERNETES_POD_NAME` + +Specify the kubernetes pod name to associate with all reported events. If absent, and if `kubernetesPodUID` is parsed out of the `/proc/self/cgroup` file, this will default to the local hostname. + + +## `kubernetesPodUID` [kubernetes-pod-uid] + +* **Type:** String +* **Env:** `KUBERNETES_POD_UID` + +Specify the kubernetes pod uid to associate with all reported events. If absent, it will be parsed out of the `/proc/self/cgroup` file. + + +## `metricsInterval` [metrics-interval] + +* **Type:** String +* **Default:** `"30s"` +* **Env:** `ELASTIC_APM_METRICS_INTERVAL` + +Specify the interval for reporting metrics to APM Server. The interval should be in seconds, or should include a time suffix. + +To disable all metrics reporting, including breakdown metrics, set the interval to `"0s"`. + + +## `metricsLimit` [metrics-limit] + +* **Type:** Number +* **Default:** `1000` +* **Env:** `ELASTIC_APM_METRICS_LIMIT` + +Specify the maximum number of metrics to track at any given time. When a new metric is inserted which would exceed the limit, the oldest metric will be dropped to give it space. + + +## `globalLabels` [global-labels] + +* **Type:** Object +* **Env:** `ELASTIC_APM_GLOBAL_LABELS` + +Supply a key/value pair object of labels to apply to any data recorded by the agent. + +Example: + +```bash +ELASTIC_APM_GLOBAL_LABELS="subspace=sap-hana,rack=number6" +``` + + +## `configFile` [config-file] + +* **Type:** String +* **Default:** `elastic-apm-node.js` +* **Env:** `ELASTIC_APM_CONFIG_FILE` + +The Node.js agent will look for a file named `elastic-apm-node.js` in the current working directory. You can specify a custom path using this config option (this path must include the filename), e.g: + +```bash +ELASTIC_APM_CONFIG_FILE=/path/to/my-elastic-apm-node.js +``` + +::::{note} +The inline version of this config option, that is passed to the [`start`](/reference/agent-api.md#apm-start) function, will be ignored if a config file was already loaded when this module was required (based on either the default value or because of the `ELASTIC_APM_CONFIG_FILE` environment variable). +:::: + + +The configuration file is expected to export an object, following the same conventions as the `options` object, given as the first argument to the [`start`](/reference/agent-api.md#apm-start) function, e.g.: + +```js +module.exports = { + // Override service name from package.json + // Allowed characters: a-z, A-Z, 0-9, -, _, and space + serviceName: '', + + // Use if APM Server requires a token + secretToken: '', + + // Set custom APM Server URL (default: http://127.0.0.1:8200) + serverUrl: '' +} +``` + + +## `breakdownMetrics` [breakdown-metrics] + +* **Type:** Boolean +* **Default:** `true` +* **Env:** `ELASTIC_APM_BREAKDOWN_METRICS` + +Set `breakdownMetrics: false` to disable reporting of breakdown metrics. Note that if `metricsInterval: 0`, then breakdown metrics will not be reported. + +Breakdown metrics ([`span.self_time.*`](/reference/metrics.md#metrics-span.self_time.sum)) record the self-time spent in each unique type of span. This data drives the [Time spent by span type](docs-content://solutions/observability/apps/service-overview.md#service-span-duration) chart in the APM app. + + +## `disableMetrics` [disable-metrics] + +Added in: v3.45.0 + +* **Type:** Array +* **Env:** `ELASTIC_APM_DISABLE_METRICS` + +The `disableMetrics` configuration variable is a list of wildcard patterns of metric names to **not** send to APM server. The filter is applied to [core APM agent metrics](/reference/metrics.md), custom metrics defined by [`apm.registerMetric(name[, labels], callback)`](/reference/agent-api.md#apm-register-custom-metrics), and metrics defined [using the OpenTelemetry Metrics API](/reference/opentelemetry-bridge.md#otel-metrics-api). + +For example, setting the `ELASTIC_APM_DISABLE_METRICS="nodejs.*,my_counter"` environment variable (or the equivalent `disableMetrics: ['nodejs.*', 'my_counter']` option to [`apm.start([options])`](/reference/agent-api.md#apm-start)) will result in reported metrics excluding any metric named `my_counter` and any starting with `nodejs.`. Wildcard matches are case-insensitive by default. You may make wildcard searches case-sensitive by using the `(?-i)` prefix. + +Use `metricsInterval: '0s'` to completely disable metrics collection. See [`metricsInterval`](#metrics-interval). + + +## `customMetricsHistogramBoundaries` [custom-metrics-histogram-boundaries] + +Added in: v3.45.0 as experimental + +* **Type:** number[] +* **Default:** (See below.) +* **Env:** `ELASTIC_APM_CUSTOM_METRICS_HISTOGRAM_BOUNDARIES` + +Defines the default bucket boundaries to use for OpenTelemetry Metrics histograms. By default the value is: + +```js +[ + 0.00390625, 0.00552427, 0.0078125, 0.0110485, + 0.015625, 0.0220971, 0.03125, 0.0441942, + 0.0625, 0.0883883, 0.125, 0.176777, + 0.25, 0.353553, 0.5, 0.707107, + 1, 1.41421, 2, 2.82843, + 4, 5.65685, 8, 11.3137, + 16, 22.6274, 32, 45.2548, + 64, 90.5097, 128, 181.019, + 256, 362.039, 512, 724.077, + 1024, 1448.15, 2048, 2896.31, + 4096, 5792.62, 8192, 11585.2, + 16384, 23170.5, 32768, 46341, + 65536, 92681.9, 131072 +] +``` + +This differs from the [OpenTelemetry default histogram boundaries](https://opentelemetry.io/docs/reference/specification/metrics/sdk/#explicit-bucket-histogram-aggregation). To use the OpenTelemetry default boundaries, configure the APM agent with: + +```js +apm.start({ + customMetricsHistogramBoundaries: [ 0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000 ], + // ... +}) +``` + +or + +```bash +export ELASTIC_APM_CUSTOM_METRICS_HISTOGRAM_BOUNDARIES=0,5,10,25,50,75,100,250,500,750,1000,2500,5000,7500,10000 +``` + +To customize the boundaries for specific histogram metrics, use an OpenTelemetry Metrics SDK [`View`](https://opentelemetry.io/docs/reference/specification/metrics/sdk/#view). See [this script](https://github.com/elastic/apm-agent-nodejs/blob/main/examples/opentelemetry-metrics/use-otel-metrics-sdk.js) for an example. + +See [*OpenTelemetry bridge*](/reference/opentelemetry-bridge.md) for a general guide on using OpenTelemetry with this APM agent. + + +## `cloudProvider` [cloud-provider] + +* **Type:** String +* **Default:** `auto` +* **Env:** `ELASTIC_APM_CLOUD_PROVIDER` + +During startup the Node.js agent queries the local environment to determine whether the application is running in a cloud environment, and provides the agent with details about that environment. These details are called metadata, and will be sent to APM Server with other instrumented data. The `cloudProvider` configuration value allows you to control this behavior. + +* `auto`: Automatically determine which cloud provider the agent is running on. +* `gcp`: Only query for Google Cloud Platform information. +* `aws`: Only query for Amazon Web Service information. +* `azure`: Only query for Azure information. +* `none`: Do not query for any cloud provider information. + +If the value is not one of the five listed above, the agent will use the value of `auto`. + + +## `ignoreMessageQueues` [ignore-message-queues] + +* **Type:** Array +* **Default:** `[]` +* **Env:** `ELASTIC_APM_IGNORE_MESSAGE_QUEUES` +* [![dynamic config](images/dynamic-config.svg "") ](/reference/configuring-agent.md#dynamic-configuration) **Central config name:** `ignore_message_queues` + +Array or comma-separated string of wildcard patterns that tell the agent to ignore certain queues/topics when instrumenting messaging systems. + +When an instrumented messaging system sends or receives a message, the agent will test the queue/topic name against each wildcard in this list. If the name matches, the agent will skip instrumenting the operation. + +The `ignoreMessageQueues` property supports simple wildcard (`*`) patterns, and may not include commas. Wildcard matches are case-insensitive by default. You may make wildcard searches case-sensitive by using the `(?-i)` prefix. + +Example usage: + +```js +require('elastic-apm-node').start({ + ignoreMessageQueues: [ + 'overnight_jobs', + 'events_*', + '(?-i)caseSensitiveSearch' + ] +}) +``` + + +## `traceContinuationStrategy` [trace-continuation-strategy] + +Added in: v3.34.0 + +* **Type:** String +* **Default:** `'continue'` +* **Env:** `ELASTIC_APM_TRACE_CONTINUATION_STRATEGY` +* [![dynamic config](images/dynamic-config.svg "") ](/reference/configuring-agent.md#dynamic-configuration) **Central config name:** `trace_continuation_strategy` + +This option allows some control on how the APM agent handles W3C trace-context headers on incoming requests. By default, the `traceparent` and `tracestate` headers are used per W3C spec for distributed tracing. However, in certain cases it can be helpful to **not** use the incoming `traceparent` header. Some example use cases: + +* An Elastic-monitored service is receiving requests with `traceparent` headers from **unmonitored** services. +* An Elastic-monitored service is publicly exposed, and does not want tracing data (trace-ids, sampling decisions) to possibly be spoofed by user requests. + +Valid values are: + +* `'continue'` - The default behavior. An incoming `traceparent` value is used to continue the trace and determine the sampling decision. +* `'restart'` - Always ignores the `traceparent` header of incoming requests. A new trace-id will be generated and the sampling decision will be made based on [`transactionSampleRate`](#transaction-sample-rate). A **span link** will be made to the incoming traceparent. +* `'restart_external'` - If an incoming request includes the `es` vendor flag in `tracestate`, then any *traceparent* will be considered internal and will be handled as described for *continue* above. Otherwise, any *traceparent* is considered external and will be handled as described for *restart* above. + +Starting with Elastic Observability 8.2, span links will be visible in trace views. + + +## `spanCompressionEnabled` [span-compression-enabled] + +* **Type:** Boolean +* **Default:** `true` +* **Env:** `ELASTIC_APM_SPAN_COMPRESSION_ENABLED` + +Setting this option to false will disable the [Span compression](docs-content://solutions/observability/apps/spans.md) feature. Span compression reduces the collection, processing, and storage overhead, and removes clutter from the UI. The tradeoff is that some information, such as DB statements of all the compressed spans, will not be collected. + +Example usage: + +```js +require('elastic-apm-node').start({ + spanCompressionEnabled: true +}) +``` + + +## `spanCompressionExactMatchMaxDuration` [span-compression-exact-match-max-duration] + +* **Type:** String +* **Default:** `50ms` +* **Env:** `ELASTIC_APM_SPAN_COMPRESSION_EXACT_MATCH_MAX_DURATION` + +Consecutive spans that are exact match and that are under this threshold will be compressed into a single composite span. This option does not apply to composite spans. This reduces the collection, processing, and storage overhead, and removes clutter from the UI. The tradeoff is that the DB statements of all the compressed spans will not be collected. + +Supports the duration suffixes ms (milliseconds), s (seconds) and m (minutes). + +Example usage: + +```js +require('elastic-apm-node').start({ + spanCompressionExactMatchMaxDuration:'100ms' +}) +``` + + +## `spanCompressionSameKindMaxDuration` [span-compression-same-kind-max-duration] + +* **Type:** String +* **Default:** `0ms` +* **Env:** `ELASTIC_APM_SPAN_COMPRESSION_SAME_KIND_MAX_DURATION` + +Consecutive spans to the same destination that are under this threshold will be compressed into a single composite span. This option does not apply to composite spans. This reduces the collection, processing, and storage overhead, and removes clutter from the UI. The tradeoff is that the DB statements of all the compressed spans will not be collected. + +Example usage: + +```js +require('elastic-apm-node').start({ + spanCompressionSameKindMaxDuration:'0ms' +}) +``` + + +## `opentelemetryBridgeEnabled` [opentelemetry-bridge-enabled] + +Added in: v3.34.0 as experimental + +* **Type:** Boolean +* **Default:** `false` +* **Env:** `ELASTIC_APM_OPENTELEMETRY_BRIDGE_ENABLED` + +Setting this option to true will enable the [OpenTelemetry Bridge](/reference/opentelemetry-bridge.md). Briefly, the OpenTelemetry Bridge allows one to use the vendor-neutral [OpenTelemetry Tracing API](https://opentelemetry.io/docs/instrumentation/js/api/) ([`@opentelemetry/api`](https://www.npmjs.com/package/@opentelemetry/api)) to manually instrument your code, and have the Elastic Node.js APM agent handle those API calls. + +Example usage: + +```js +require('elastic-apm-node').start({ + opentelemetryBridgeEnabled: true +}) +``` + + +## `exitSpanMinDuration` [exit-span-min-duration] + +* **Type:** String +* **Default:** `0ms` +* **Env:** `ELASTIC_APM_EXIT_SPAN_MIN_DURATION` +* [![dynamic config](images/dynamic-config.svg "") ](/reference/configuring-agent.md#dynamic-configuration) **Central config name:** `exit_span_min_duration` + +Sets the minimum duration of exit spans. If an exit span’s duration is less than this threshold the agent will attempt to drop the span and not send it. + +In some cases exit spans will not be discarded. Spans that propagate the trace context to downstream services, such as outgoing HTTP requests, will not be discarded. However, external calls that don’t propagate context, such as calls to a database, can be discarded using this threshold. + +Additionally, spans that lead to an error will not be discarded. + +Example usage: + +```js +require('elastic-apm-node').start({ + exitSpanMinDuration: '10ms' +}) +``` + + +## `elasticsearchCaptureBodyUrls` [elasticsearch-capture-body-urls] + +* **Type:** Array of wildcard patterns +* **Default:** `['*/_search', '*/_search/template', '*/_msearch', '*/_msearch/template', '*/_async_search', '*/_count', '*/_sql', '*/_eql/search' ]` +* **Env:** `ELASTIC_APM_ELASTICSEARCH_CAPTURE_BODY_URLS` + +The URL path patterns for which the APM agent will capture the request body of outgoing requests to Elasticsearch made with the `@elastic/elasticsearch` module (or the legacy `elasticsearch` module). The default setting captures the body for [Elasticsearch REST APIs](elasticsearch://reference/elasticsearch/rest-apis/index.md) making a search. + +The captured request body (if any) is stored on the `span.db.statement` field. Captured request bodies are truncated to a maximum length defined by [`longFieldMaxLength`](#long-field-max-length). + + +## `useElasticTraceparentHeader` [use-elastic-traceparent-header] + +Change default in v4.0.0, in v3.x the default was `true` + +* **Type:** Boolean +* **Default:** `false` +* **Env:** `ELASTIC_APM_USE_ELASTIC_TRACEPARENT_HEADER` + +To enable [distributed tracing](docs-content://solutions/observability/apps/traces.md), the agent adds trace context headers to outgoing requests (like HTTP requests, etc.). These headers (`traceparent` and `tracestate`) are defined in the [W3C Trace Context](https://www.w3.org/TR/trace-context-1/) specification. + +When this setting is `true`, the agent will also add the header `elastic-apm-traceparent` for backwards compatibility with older versions of Elastic APM agents. (In the next major version of this APM agent, this setting will default to false.) diff --git a/docs/reference/configuring-agent.md b/docs/reference/configuring-agent.md new file mode 100644 index 0000000000..7f455df592 --- /dev/null +++ b/docs/reference/configuring-agent.md @@ -0,0 +1,62 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/configuring-the-agent.html +--- + +# Configuring the agent [configuring-the-agent] + +There are multiple ways to configure the Node.js agent. In order of precedence: + +1. APM Agent Central Configuration via Kibana. (supported options are marked with [![dynamic config](images/dynamic-config.svg "") ](#dynamic-configuration)) +2. Environment variables. +3. If calling the `apm.start()` function, supply a [configurations object](#agent-configuration-object) as the first argument. +4. Via the [agent configuration file](#agent-configuration-file). + +For information on the available configuration properties and the expected names of environment variables, see the [Configuration options](/reference/configuration.md) documentation. + + +## Dynamic configuration [dynamic-configuration] + +Configuration options marked with the ![dynamic config](images/dynamic-config.svg "") badge can be changed at runtime when set from a supported source. + +The Node.js Agent supports [Central configuration](docs-content://solutions/observability/apps/apm-agent-central-configuration.md), which allows you to fine-tune certain configurations via the APM app in Kibana. This feature is enabled in the Agent by default, with [`centralConfig`](/reference/configuration.md#central-config). + + +## Agent configuration object [agent-configuration-object] + +To use the optional `options` argument, pass it into the `apm.start()` method: + +```js +var apm = require('elastic-apm-node').start({ + // add configuration options here +}) +``` + +This example shows how to configure the agent to only be active in production: + +```js +// Add this to the VERY top of the first file loaded in your app +require('elastic-apm-node').start({ + // Override service name from package.json + // Allowed characters: a-z, A-Z, 0-9, -, _, and space + serviceName: '', + + // Use if APM Server requires a token + secretToken: '', + + // Use if APM Server uses API keys for authentication + apiKey: '', + + // Set custom APM Server URL (default: http://127.0.0.1:8200) + serverUrl: '', + + // Only activate the agent if it's running in production + active: process.env.NODE_ENV === 'production' +}) +``` + + +## Agent configuration file [agent-configuration-file] + +The Node.js agent looks for a file named `elastic-apm-node.js` in the current working directory. You can specify a custom path for this file with the [`configFile`](/reference/configuration.md#config-file) configuration option. + diff --git a/docs/custom-spans.asciidoc b/docs/reference/custom-spans.md similarity index 73% rename from docs/custom-spans.asciidoc rename to docs/reference/custom-spans.md index 4fdc4f4491..2417688c44 100644 --- a/docs/custom-spans.asciidoc +++ b/docs/reference/custom-spans.md @@ -1,26 +1,20 @@ -[[custom-spans]] +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/custom-spans.html +--- -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/custom-spans.html[elastic.co] -endif::[] +# Custom spans [custom-spans] -=== Custom spans +This is an example of how to use custom spans. For general information about the Elastic APM Node.js Span API, see the [Span API documentation](/reference/span-api.md). -This is an example of how to use custom spans. -For general information about the Elastic APM Node.js Span API, -see the <>. - -If you want to track and time a custom event that happens in your application during a transaction, -you can add a new span to an existing transaction. +If you want to track and time a custom event that happens in your application during a transaction, you can add a new span to an existing transaction. In the example below, we create an Express app that times how long it takes to: 1. Receive the body of an HTTP POST or PUT request 2. Parse JSON sent by the client -[source,js] ----- +```js var apm = require('elastic-apm-node').start() var app = require('express')() @@ -72,4 +66,5 @@ app.use(function (req, res, next) { // ...your route handler goes here... app.listen(3000) ----- +``` + diff --git a/docs/reference/custom-stack.md b/docs/reference/custom-stack.md new file mode 100644 index 0000000000..c5e1a3a3f4 --- /dev/null +++ b/docs/reference/custom-stack.md @@ -0,0 +1,217 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/custom-stack.html +--- + +# Get started with a custom Node.js stack [custom-stack] + +Getting Elastic APM set up for your custom Node.js app is easy, and there are various ways you can tweak it to fit your needs. Follow the guide below to get started, and for more advanced topics, check out the [API Reference](/reference/api.md). + +If you are using Express, hapi, Koa, Restify, Fastify, or AWS Lambda, we recommend that you read these articles instead: + +* [Monitoring AWS Lambda Node.js Functions](/reference/lambda.md) +* [Monitoring Node.js Azure Functions](/reference/azure-functions.md) +* [Get started with Express](/reference/express.md) +* [Get started with Fastify](/reference/fastify.md) +* [Get started with hapi](/reference/hapi.md) +* [Get started with Koa](/reference/koa.md) +* [Get started with Next.js](/reference/nextjs.md) +* [Get started with Restify](/reference/restify.md) +* [Get started with TypeScript](/reference/typescript.md) + + +## Installation [custom-stack-installation] + +Add the `elastic-apm-node` module as a dependency to your application: + +```bash +npm install elastic-apm-node --save +``` + + +## Initialization [custom-stack-initialization] + +It’s important that the agent is started before you require **any** other modules in your Node.js application - i.e. before `http` and before your router etc. + +This means that you should probably require and start the agent in your application’s main file (usually `index.js`, `server.js` or `app.js`). + +Here’s a simple example of how Elastic APM is normally required and started: + +```js +// Add this to the VERY top of the first file loaded in your app +var apm = require('elastic-apm-node').start({ + // Override service name from package.json + // Allowed characters: a-z, A-Z, 0-9, -, _, and space + serviceName: '', + + // Use if APM Server requires a token + secretToken: '', + + // Use if APM Server uses API keys for authentication + apiKey: '', + + // Set custom APM Server URL (default: http://127.0.0.1:8200) + serverUrl: '', +}) +``` + +The agent will now monitor the performance of your application and record any uncaught exceptions. + + +### Advanced configuration [custom-stack-advanced-configuration] + +In the above example we initialize the agent by calling the [`start()`](/reference/agent-api.md#apm-start) function. This function takes an optional options object used to configure the agent. Any option not supplied via the options object can instead be configured using environment variables. So if you prefer, you can set the same configuration options using environment variables: + +```bash +ELASTIC_APM_SERVICE_NAME= +ELASTIC_APM_SECRET_TOKEN= +ELASTIC_APM_SERVER_URL= +``` + +And then just start the agent like so: + +```js +// Start the agent before any thing else in your app +var apm = require('elastic-apm-node').start() +``` + +See all possible ways to configure the agent [in the API documentation](/reference/configuring-agent.md). + + +### Full documentation [custom-stack-full-documentation] + +* [Setup and Configuration](/reference/advanced-setup.md) +* [API Reference](/reference/api.md) + + +## Performance monitoring [custom-stack-performance-monitoring] + +Elastic APM automatically measures the performance of your custom Node.js application. It records spans for database queries, external HTTP requests, and other slow operations that happen during requests to your custom Node.js app. + +By default, the agent will instrument [the most common modules](/reference/supported-technologies.md). To instrument other events, you can use custom spans. For information about custom spans, see the [Custom Spans section](/reference/custom-spans.md). + +Spans are grouped in transactions - by default one for each incoming HTTP request. But it’s possible to create custom transactions not associated with an HTTP request. See the [Custom Transactions section](/reference/custom-transactions.md) for details. + + +### Route naming [custom-stack-route-naming] + +The Node.js agent tracks incoming HTTP requests to your application in what are called "transactions". All transactions with the same name are grouped together automatically. + +In a normal web application, you want to name transactions based on the route that matches the incoming HTTP request. So say you have a route to display posts on a blog identified by `GET /posts/{{id}}`. You want requests `GET /posts/12`, `GET /posts/42` etc to be grouped together under a transaction named `GET /posts/{{id}}`. + +If you are using Express, hapi, koa-router, Restify, or Fastify this naming happens automatically based on the names of your routes. If you use another framework or a custom router you will see that the transactions are simply grouped together in a few big chunks named "unknown route". In that case, you will need to help us out a little by supplying a name for each transaction. You can do that by calling [`apm.setTransactionName()`](/reference/agent-api.md#apm-set-transaction-name) at any time during the request with the name of the transaction as the first argument. + +Excerpt of an application using the [patterns](https://github.com/watson/patterns) module for route handling: + +```js +var apm = require('elastic-apm-node').start() +var http = require('http') +var patterns = require('patterns')() + +// Setup routes and their respective route handlers +patterns.add('GET /', require('./routes/index')) +patterns.add('GET /posts', require('./routes/posts').index) +patterns.add('GET /posts/{id}', require('./routes/posts').show) + +http.createServer(function (req, res) { + // Check if we have a route matching the incoming request + var match = patterns.match(req.method + ' ' + req.url); + + // If no match is found, respond with a 404. Elastic APM will in + // this case use the default transaction name "unknown route" + if (!match) { + res.writeHead(404) + res.end() + return + } + + // The patterns module exposes the pattern used to match the + // request on the `pattern` property, e.g. `GET /posts/{id}` + apm.setTransactionName(match.pattern) + + // Populate the params and call the matching route handler + var fn = match.value + req.params = match.params + fn(req, res) +}).listen(3000) +``` + + +### Unknown routes [custom-stack-unknown-routes] + +When viewing the performance metrics of your application in Elastic APM, you might see some transactions named "unknown route". This indicates that the agent detected an incoming HTTP request to your application, but didn’t know which route in your custom Node.js app the HTTP request matched. + +This might simply be 404 requests, which by definition don’t match any route, or it might be a symptom that the agent wasn’t installed correctly. If you see this or can’t get any meaningful metrics to show up, please follow the [Troubleshooting Guide](docs-content://troubleshoot/observability/apm-agent-nodejs/apm-nodejs-agent.md). + + +## Error logging [custom-stack-error-logging] + +By default, the Node.js agent will watch for uncaught exceptions and send them to Elastic APM automatically. But in most cases, errors are not thrown but returned via a callback, caught by a promise, or simply manually created. Those errors will not automatically be sent to Elastic APM. To manually send an error to Elastic APM, simply call `apm.captureError()` with the error: + +```js +var err = new Error('Ups, something broke!') + +apm.captureError(err) +``` + +For advanced logging of errors, including adding extra metadata to the error, see [the API documentation](/reference/agent-api.md#apm-capture-error). + + +### Middleware error handler [custom-stack-middleware-error-handler] + +If you use the [connect](https://www.npmjs.com/package/connect) module and an error is either thrown synchronously inside one of the middleware functions or is passed as the first argument to the middleware `next()` function, it will be passed to the [Connect error handler](https://www.npmjs.com/package/connect#error-middleware). + +It’s recommended that you register the agent as a Connect error handler. In the case where you have multiple Connect error handlers, the agent error handler should be the first in the chain to ensure that it will receive the error correctly. + +```js +var apm = require('elastic-apm-node').start() +var connect = require('connect') + +var app = connect() + +// Your regular middleware and router... +app.use(...) +app.use(...) +app.use(...) + +// Add the Elastic APM middleware after your regular middleware +app.use(apm.middleware.connect()) + +// ...but before any other error handler +app.use(function (err, req, res, next) { + // Custom error handling goes here +}) +``` + + +## Filter sensitive information [custom-stack-filter-sensitive-information] + +By default, the Node.js agent will filter common sensitive information before sending errors and metrics to the Elastic APM server. + +It’s possible for you to tweak these defaults or remove any information you don’t want to send to Elastic APM: + +* By default, the Node.js agent will not log the body of HTTP requests. To enable this, use the [`captureBody`](/reference/configuration.md#capture-body) config option +* By default, the Node.js agent will filter certain HTTP headers known to contain sensitive information. To disable this, use the [`sanitizeFieldNames`](/reference/configuration.md#sanitize-field-names) config option +* To apply custom filters, use one of the [filtering](/reference/agent-api.md#apm-add-filter) functions + + +## Add your own data [custom-stack-add-your-own-data] + +The Node.js agent will keep track of the active HTTP request and will link it to errors and recorded transaction metrics when they are sent to the Elastic APM server. This allows you to see details about which request resulted in a particular error or which requests cause a certain HTTP endpoint to be slow. + +But in many cases, information about the HTTP request itself isn’t enough. To add even more metadata to errors and transactions, use one of the functions below: + +* [`apm.setUserContext()`](/reference/agent-api.md#apm-set-user-context) - Call this to enrich collected performance data and errors with information about the user/client +* [`apm.setCustomContext()`](/reference/agent-api.md#apm-set-custom-context) - Call this to enrich collected performance data and errors with any information that you think will help you debug performance issues and errors (this data is only stored, but not indexed in Elasticsearch) +* [`apm.setLabel()`](/reference/agent-api.md#apm-set-label) - Call this to enrich collected performance data and errors with simple key/value strings that you think will help you debug performance issues and errors (labels are indexed in Elasticsearch) + + +## Compatibility [custom-stack-compatibility] + +See [*Supported technologies*](/reference/supported-technologies.md) for details. + + +## Troubleshooting [custom-stack-troubleshooting] + +If you can’t get the Node.js agent to work as expected, please follow the [troubleshooting guide](docs-content://troubleshoot/observability/apm-agent-nodejs/apm-nodejs-agent.md). + diff --git a/docs/custom-transactions.asciidoc b/docs/reference/custom-transactions.md similarity index 63% rename from docs/custom-transactions.asciidoc rename to docs/reference/custom-transactions.md index b5aba01a34..bf3a5c0362 100644 --- a/docs/custom-transactions.asciidoc +++ b/docs/reference/custom-transactions.md @@ -1,28 +1,19 @@ -[[custom-transactions]] +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/custom-transactions.html +--- -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/custom-transactions.html[elastic.co] -endif::[] +# Custom transactions [custom-transactions] -=== Custom transactions +This is an example of how to use custom transactions. For general information about the Elastic APM Node.js Transaction API, see the [Transaction API documentation](/reference/transaction-api.md). -This is an example of how to use custom transactions. -For general information about the Elastic APM Node.js Transaction API, -see the <>. +The Elastic APM agent for Node.js instruments your application by grouping incoming HTTP requests into logical buckets. Each HTTP request is recorded in what we call a transaction. But if your application is not a regular HTTP server, the Node.js agent will not able to know when a transaction should start and when it ends. -The Elastic APM agent for Node.js instruments your application by grouping incoming HTTP requests into logical buckets. -Each HTTP request is recorded in what we call a transaction. -But if your application is not a regular HTTP server, -the Node.js agent will not able to know when a transaction should start and when it ends. - -If for instance your application is a background job processing worker or is only accepting WebSockets, -you'll need to manually start and end transactions. +If for instance your application is a background job processing worker or is only accepting WebSockets, you’ll need to manually start and end transactions. Example of a background job application polling the SQS queuing system for jobs: -[source,js] ----- +```js var apm = require('elastic-apm-node').start() var sqs = require('simple-sqs')() @@ -65,4 +56,5 @@ queue.on('error', function (err) { // in case the queue encounters an error, report it to Elastic APM apm.captureError(err) }) ----- +``` + diff --git a/docs/reference/distributed-tracing.md b/docs/reference/distributed-tracing.md new file mode 100644 index 0000000000..37ebae5fde --- /dev/null +++ b/docs/reference/distributed-tracing.md @@ -0,0 +1,78 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/distributed-tracing.html +--- + +# Distributed tracing [distributed-tracing] + +Distributed tracing enables you to analyze performance throughout your microservices architecture all in one view. This is accomplished by tracing all of the requests — from the initial web request to your front-end service — to queries made to your back-end services. This makes finding possible bottlenecks throughout your application much easier and faster. + +Elastic APM automatically supports distributed tracing, but there are some cases, outlined below, where additional setup is necessary. + + +## Real User Monitoring (RUM) correlation [tracing-rum-correlation] + +If your backend service generates an HTML page dynamically, the trace ID and parent span ID must be injected into the page when the RUM Agent is initialized. This ensures that the web browser’s page load appears as the root of the trace, and allows you to analyze the time spent in the browser vs in backend services. + +To enable the JavaScript RUM agent, add a snippet similar to this to the body of your HTML page, preferably before other JavaScript libraries: + +```js +elasticApm.init({ + serviceName: 'my-frontend-app', // Name of your frontend app + serverUrl: 'https://example.com:8200', // APM Server host + pageLoadTraceId: '${transaction.traceId}', + pageLoadSpanId: '${transaction.ensureParentId()}', + pageLoadSampled: ${transaction.sampled} +}) +``` + +For more information, see [`transaction.ensureParentId()`](/reference/transaction-api.md#transaction-ensure-parent-id). + + +## Custom protocols [tracing-custom-protocol] + +Distributed tracing is automatically supported with HTTP/HTTPS. If you’re using another protocol, like TCP, UDP, WebSocket, or Protocol Buffers, there are a few manual setup steps you must follow. + +In a distributed trace, multiple transactions are linked together with a `traceparent`. To create your own distributed trace, you must pass the current `traceparent` from an outgoing service, to a receiving service, and create a new transaction as a child of that `traceparent`: + +1. In one service, start a transaction with [`apm.startTransaction()`](/reference/agent-api.md#apm-start-transaction), or a span with [`apm.startSpan()`](/reference/agent-api.md#apm-start-span). +2. Get the serialized `traceparent` string of the started transaction/span with [`apm.currentTraceparent`](/reference/agent-api.md#apm-current-traceparent). +3. Encode the `traceparent` and send it to the receiving service inside your regular request. +4. Decode and store the `traceparent` in the receiving service. +5. Manually start a new transaction as a child of the received `traceparent`, with [`apm.startTransaction()`](/reference/agent-api.md#apm-start-transaction). Pass in the `traceparent` as the `childOf` option. + + +### Example [tracing-custom-example] + +Consider a scenario where you’re using raw UDP to communicate between two services, A and B: + +**Service A** + +Service A starts a transaction, and gets the current `traceparent`. + +```js +agent.startTransaction('my-service-a-transaction') +const traceparent = agent.currentTraceparent +``` + +Service A then sends the `traceparent` as a "header" to service B. + +```js +// Pseudocode for sending data +sendMetadata(`traceparent: ${traceparent}\n`) +``` + +**Service B** + +Service B reads the `traceparent` from the incoming request. + +```js +// Pseudocode for reading incoming request +const traceparent = readTraceparentFromUDPPacket() +``` + +Service B uses the `traceparent` to initialize a new transaction that is a child of the original `traceparent`. + +```js +agent.startTransaction('my-service-b-transaction', { childOf: traceparent }) +``` diff --git a/docs/reference/esm.md b/docs/reference/esm.md new file mode 100644 index 0000000000..e59b81e0a2 --- /dev/null +++ b/docs/reference/esm.md @@ -0,0 +1,109 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/esm.html +--- + +# ECMAScript module support [esm] + +::::{note} +ECMAScript module support is currently incomplete and experimental. It was added in version v3.48.0. +:::: + + +The Elastic APM Node.js agent includes *limited and experimental* support for auto-instrumentation of [ECMAScript modules](https://nodejs.org/api/esm.html#modules-ecmascript-modules) (ESM) — i.e. modules loaded via the `import ...` statement or the `import(...)` expression. Support is based on the experimental [Node.js Loaders API](https://nodejs.org/api/#loaders), which requires passing the `--experimental-loader` option to node. + +As a first example, the APM agent can provide HTTP tracing for the following Express server: + +```js +// server.mjs +import bodyParser from 'body-parser' +import express from 'express' + +const app = express() +app.use(bodyParser.json()) +app.get('/hello/:name', function (request, reply) { + reply.send({ hello: request.params.name }) +}) + +app.listen({ port: 3000}, () => { + console.log('Server is listening. Try:\n curl -i http://localhost:3000/hello/grace') +}) +``` + +when invoked as follows: + +```bash +export ELASTIC_APM_SERVER_URL='https://...apm...cloud.es.io:443' +export ELASTIC_APM_SECRET_TOKEN='...' +node -r elastic-apm-node/start.js \ + --experimental-loader=elastic-apm-node/loader.mjs \ + node server.mjs +``` + +The current ESM support is limited — only a subset of the modules listed at [*Supported technologies*](/reference/supported-technologies.md) are implemented. More will be added in subsequent releases. See below for full details. + +The ESM limitations only affects the agent’s automatic instrumentation. Other functionality — such as metrics collection, manual instrumentation and error capture — still work when using ES modules. + + +## Enabling ESM auto-instrumentation [esm-enabling] + +Enabling ESM auto-instrumentation requires starting Node.js with the `--experimental-loader=elastic-apm-node/loader.mjs` option. This can be done by passing the argument on the command line or by setting the [`NODE_OPTIONS`](https://nodejs.org/api/all.html#all_cli_node_optionsoptions) environment variable. + +```bash +node --experimental-loader=elastic-apm-node/loader.mjs server.mjs + +# or + +NODE_OPTIONS='--experimental-loader=elastic-apm-node/loader.mjs' +node server.mjs +``` + +As well, the APM agent must also be separately **started** — for example via `--require=elastic-apm-node/start.js`. See [Starting the agent](/reference/starting-agent.md) for the various ways of starting the APM agent. + + +## Supported Node.js versions [esm-compat-node] + +Automatic instrumentation of ES modules is based on the experimental Node.js Loaders API. ESM support in the Elastic APM Node.js agent will remain **experimental** while the Loaders API is experimental. + +ESM auto-instrumentation is only supported for Node.js versions that match **`^12.20.0 || ^14.13.1 || ^16.0.0 || ^18.1.0 || >=20.2.0`**. The behavior when using `node --experimental-loader=elastic-apm-node/loader.mjs` with earlier Node.js versions is undefined and unsupported. + + +## Supported modules [esm-compat-modules] + +Automatic instrumentation of ES modules is currently limited as described here. Note that the supported module version ranges often differ from those for CommonJS (i.e. `require()`) auto-instrumentation. + +| Module | Version | Note | | +| --- | --- | --- | --- | +| `@aws-sdk/client-dynamodb` | >=3.15.0 <4 | | | +| `@aws-sdk/client-s3` | >=3.15.0 <4 | | | +| `@aws-sdk/client-sns` | >=3.15.0 <4 | | | +| `@aws-sdk/client-sqs` | >=3.15.0 <4 | | | +| `cassandra-driver` | >=3.0.0 <5 | | | +| `express` | ^4.0.0 | | | +| `fastify` | >=3.5.0 | | | +| `http` | | See [Supported Node.js versions](#esm-compat-node) above. | | +| `https` | | See [Supported Node.js versions](#esm-compat-node) above. | | +| `ioredis` | >=2 <6 | | | +| `knex` | >=0.20.0 <4 | Also, only with pg@8. | | +| `pg` | ^8 | | | + + +## Troubleshooting ESM support [esm-troubleshooting] + +If you see an error like the following, then you are attempting to use ESM auto-instrumentation support with too early of a version of Node.js. See [Supported Node.js versions](#esm-compat-node) above. + +``` +file:///.../node_modules/import-in-the-middle/hook.mjs:6 +import { createHook } from './hook.js' + ^^^^^^^^^^ +SyntaxError: The requested module './hook.js' is expected to be of type CommonJS, which does not support named exports. CommonJS modules can be imported by importing the default export. +For example: +import pkg from './hook.js'; +const { createHook } = pkg; + at ModuleJob._instantiate (internal/modules/esm/module_job.js:98:21) + at async ModuleJob.run (internal/modules/esm/module_job.js:137:5) + at async Loader.import (internal/modules/esm/loader.js:165:24) + at async internal/process/esm_loader.js:57:9 + at async Object.loadESM (internal/process/esm_loader.js:67:5) +``` + diff --git a/docs/reference/express.md b/docs/reference/express.md new file mode 100644 index 0000000000..2d95da9b58 --- /dev/null +++ b/docs/reference/express.md @@ -0,0 +1,142 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/express.html +--- + +# Get started with Express [express] + +Getting Elastic APM set up for your Express app is easy, and there are various ways you can tweak it to fit your needs. Follow the guide below to get started, and for more advanced topics, check out the [*API Reference*](/reference/api.md). + + +## Installation [express-installation] + +Add the `elastic-apm-node` module as a dependency to your application: + +```bash +npm install elastic-apm-node --save +``` + + +## Initialization [express-initialization] + +It’s important that the agent is started before you require **any** other modules in your Node.js application - i.e. before `express`, `http`, etc. + +This means that you should probably require and start the agent in your application’s main file (usually `index.js`, `server.js` or `app.js`). + +Here’s a simple Express example with the Elastic APM agent installed: + +```js +// Add this to the VERY top of the first file loaded in your app +const apm = require('elastic-apm-node').start({ + // Override service name from package.json + // Allowed characters: a-z, A-Z, 0-9, -, _, and space + serviceName: '', + + // Use if APM Server requires a token + secretToken: '', + + // Use if APM Server uses API keys for authentication + apiKey: '', + + // Set custom APM Server URL (default: http://127.0.0.1:8200) + serverUrl: '', +}) + +const app = require('express')() + +app.get('/', function (req, res) { + res.send('Hello World!') +}) + +app.listen(3000) +``` + +The agent will now monitor the performance of your Express application and record any uncaught exceptions. + + +### Advanced configuration [express-advanced-configuration] + +In the above example we initialize the agent by calling the [`start()`](/reference/agent-api.md#apm-start) function. This function takes an optional options object used to configure the agent. Any option not supplied via the options object can instead be configured using environment variables. So if you prefer, you can set the same configuration options using environment variables: + +```bash +ELASTIC_APM_SERVICE_NAME= +ELASTIC_APM_SECRET_TOKEN= +ELASTIC_APM_SERVER_URL= +``` + +And then just start the agent like so: + +```js +// Start the agent before any thing else in your app +var apm = require('elastic-apm-node').start() +``` + +See all possible ways to configure the agent [in the API documentation](/reference/configuring-agent.md). + + +### Full documentation [express-full-documentation] + +* [Setup and Configuration](/reference/advanced-setup.md) +* [API Reference](/reference/api.md) + + +## Performance monitoring [express-performance-monitoring] + +Elastic APM automatically measures the performance of your Express application. It records spans for database queries, external HTTP requests, and other slow operations that happen during requests to your Express app. + +By default, the agent will instrument [the most common modules](/reference/supported-technologies.md). To instrument other events, you can use custom spans. For information about custom spans, see the [Custom Spans section](/reference/custom-spans.md). + +Spans are grouped in transactions - by default one for each incoming HTTP request. But it’s possible to create custom transactions not associated with an HTTP request. See the [Custom Transactions section](/reference/custom-transactions.md) for details. + + +### Unknown routes [express-unknown-routes] + +When viewing the performance metrics of your application in Elastic APM, you might see some transactions named "unknown route". This indicates that the agent detected an incoming HTTP request to your application, but didn’t know which route in your Express app the HTTP request matched. + +This might simply be 404 requests, which by definition don’t match any route, or it might be a symptom that the agent wasn’t installed correctly. If you see this or can’t get any meaningful metrics to show up, please follow the [Troubleshooting Guide](docs-content://troubleshoot/observability/apm-agent-nodejs/apm-nodejs-agent.md). + + +## Error logging [express-error-logging] + +By default, the Node.js agent will watch for uncaught exceptions and send them to Elastic APM automatically. But in most cases, errors are not thrown but returned via a callback, caught by a promise, or simply manually created. Those errors will not automatically be sent to Elastic APM. To manually send an error to Elastic APM, simply call `apm.captureError()` with the error: + +```js +var err = new Error('Ups, something broke!') + +apm.captureError(err) +``` + +For advanced logging of errors, including adding extra metadata to the error, see [the API documentation](/reference/agent-api.md#apm-capture-error). + + +## Filter sensitive information [express-filter-sensitive-information] + +By default, the Node.js agent will filter common sensitive information before sending errors and metrics to the Elastic APM server. + +It’s possible for you to tweak these defaults or remove any information you don’t want to send to Elastic APM: + +* By default, the Node.js agent will not log the body of HTTP requests. To enable this, use the [`captureBody`](/reference/configuration.md#capture-body) config option +* By default, the Node.js agent will filter certain HTTP headers known to contain sensitive information. To disable this, use the [`sanitizeFieldNames`](/reference/configuration.md#sanitize-field-names) config option +* To apply custom filters, use one of the [filtering](/reference/agent-api.md#apm-add-filter) functions + + +## Add your own data [express-add-your-own-data] + +The Node.js agent will keep track of the active HTTP request and will link it to errors and recorded transaction metrics when they are sent to the Elastic APM server. This allows you to see details about which request resulted in a particular error or which requests cause a certain HTTP endpoint to be slow. + +But in many cases, information about the HTTP request itself isn’t enough. To add even more metadata to errors and transactions, use one of the functions below: + +* [`apm.setUserContext()`](/reference/agent-api.md#apm-set-user-context) - Call this to enrich collected performance data and errors with information about the user/client +* [`apm.setCustomContext()`](/reference/agent-api.md#apm-set-custom-context) - Call this to enrich collected performance data and errors with any information that you think will help you debug performance issues and errors (this data is only stored, but not indexed in Elasticsearch) +* [`apm.setLabel()`](/reference/agent-api.md#apm-set-label) - Call this to enrich collected performance data and errors with simple key/value strings that you think will help you debug performance issues and errors (labels are indexed in Elasticsearch) + + +## Compatibility [express-compatibility] + +See [*Supported technologies*](/reference/supported-technologies.md) for details. + + +## Troubleshooting [express-troubleshooting] + +If you can’t get the Node.js agent to work as expected, please follow the [troubleshooting guide](docs-content://troubleshoot/observability/apm-agent-nodejs/apm-nodejs-agent.md). + diff --git a/docs/reference/fastify.md b/docs/reference/fastify.md new file mode 100644 index 0000000000..d19045f106 --- /dev/null +++ b/docs/reference/fastify.md @@ -0,0 +1,154 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/fastify.html +--- + +# Get started with Fastify [fastify] + +Getting Elastic APM set up for your Fastify app is easy, and there are various ways you can tweak it to fit your needs. + +Follow the guide below to get started, and for more advanced topics, check out the [API Reference](/reference/api.md). + + +## Installation [fastify-installation] + +Add the `elastic-apm-node` module as a dependency to your application: + +```bash +npm install elastic-apm-node --save +``` + + +## Initialization [fastify-initialization] + +It’s important that the agent is started before you require **any** other modules in your Node.js application - i.e. before `fastify`, `http`, etc. + +This means that you should probably require and start the agent in your application’s main file (usually `index.js`, `server.js` or `app.js`). + +Here’s a simple Fastify example with the Elastic APM agent installed: + +```js +// Add this to the VERY top of the first file loaded in your app +var apm = require('elastic-apm-node').start({ + // Override service name from package.json + // Allowed characters: a-z, A-Z, 0-9, -, _, and space + serviceName: '', + + // Use if APM Server requires a token + secretToken: '', + + // Use if APM Server uses API keys for authentication + apiKey: '', + + // Set custom APM Server URL (default: http://127.0.0.1:8200) + serverUrl: '', +}) + +// Require the framework and instantiate it +var fastify = require('fastify')({ + logger: true +}) + +// Declare a route +fastify.get('/', function (request, reply) { + reply.send({ hello: 'world' }) +}) + +// Run the server! +fastify.listen(3000, function (err, address) { + if (err) throw err + fastify.log.info(`server listening on ${address}`) +}) +``` + +The agent will now monitor the performance of your Fastify application and record any uncaught exceptions. + + +### Advanced configuration [fastify-advanced-configuration] + +In the above example we initialize the agent by calling the [`start()`](/reference/agent-api.md#apm-start) function. This function takes an optional options object used to configure the agent. Any option not supplied via the options object can instead be configured using environment variables. So if you prefer, you can set the same configuration options using environment variables: + +```bash +ELASTIC_APM_SERVICE_NAME= +ELASTIC_APM_SECRET_TOKEN= +ELASTIC_APM_SERVER_URL= +``` + +And then just start the agent like so: + +```js +// Start the agent before any thing else in your app +var apm = require('elastic-apm-node').start() +``` + +See all possible ways to configure the agent [in the API documentation](/reference/configuring-agent.md). + + +### Full documentation [fastify-full-documentation] + +* [Setup and Configuration](/reference/advanced-setup.md) +* [API Reference](/reference/api.md) + + +## Performance monitoring [fastify-performance-monitoring] + +Elastic APM automatically measures the performance of your Fastify application. It records spans for database queries, external HTTP requests, and other slow operations that happen during requests to your Fastify app. + +By default, the agent will instrument [the most common modules](/reference/supported-technologies.md). To instrument other events, you can use custom spans. For information about custom spans, see the [Custom Spans section](/reference/custom-spans.md). + +Spans are grouped in transactions - by default one for each incoming HTTP request. But it’s possible to create custom transactions not associated with an HTTP request. See the [Custom Transactions section](/reference/custom-transactions.md) for details. + + +### Unknown routes [fastify-unknown-routes] + +When viewing the performance metrics of your application in Elastic APM, you might see some transactions named "unknown route". This indicates that the agent detected an incoming HTTP request to your application, but didn’t know which route in your Fastify app the HTTP request matched. + +This might simply be 404 requests, which by definition don’t match any route, or it might be a symptom that the agent wasn’t installed correctly. If you see this or can’t get any meaningful metrics to show up, please follow the [Troubleshooting Guide](docs-content://troubleshoot/observability/apm-agent-nodejs/apm-nodejs-agent.md). + + +## Error logging [fastify-error-logging] + +By default, the Node.js agent will watch for uncaught exceptions and send them to Elastic APM automatically. But in most cases, errors are not thrown but returned via a callback, caught by a promise, or simply manually created. Those errors will not automatically be sent to Elastic APM. To manually send an error to Elastic APM, simply call `apm.captureError()` with the error: + +```js +var err = new Error('Ups, something broke!') + +apm.captureError(err) +``` + +For advanced logging of errors, including adding extra metadata to the error, see [the API documentation](/reference/agent-api.md#apm-capture-error). + + +## Filter sensitive information [fastify-filter-sensitive-information] + +By default, the Node.js agent will filter common sensitive information before sending errors and metrics to the Elastic APM server. + +It’s possible for you to tweak these defaults or remove any information you don’t want to send to Elastic APM: + +* By default, the Node.js agent will not log the body of HTTP requests. To enable this, use the [`captureBody`](/reference/configuration.md#capture-body) config option +* By default, the Node.js agent will filter certain HTTP headers known to contain sensitive information. To disable this, use the [`sanitizeFieldNames`](/reference/configuration.md#sanitize-field-names) config option +* To apply custom filters, use one of the [filtering](/reference/agent-api.md#apm-add-filter) functions + + +## Add your own data [fastify-add-your-own-data] + +The Node.js agent will keep track of the active HTTP request and will link it to errors and recorded transaction metrics when they are sent to the Elastic APM server. This allows you to see details about which request resulted in a particular error or which requests cause a certain HTTP endpoint to be slow. + +But in many cases, information about the HTTP request itself isn’t enough. To add even more metadata to errors and transactions, use one of the functions below: + +* [`apm.setUserContext()`](/reference/agent-api.md#apm-set-user-context) - Call this to enrich collected performance data and errors with information about the user/client +* [`apm.setCustomContext()`](/reference/agent-api.md#apm-set-custom-context) - Call this to enrich collected performance data and errors with any information that you think will help you debug performance issues and errors (this data is only stored, but not indexed in Elasticsearch) +* [`apm.setLabel()`](/reference/agent-api.md#apm-set-label) - Call this to enrich collected performance data and errors with simple key/value strings that you think will help you debug performance issues and errors (labels are indexed in Elasticsearch) + + +## Compatibility [fastify-compatibility] + +See [*Supported technologies*](/reference/supported-technologies.md) for details. + +See also: [Fastify’s own LTS documentation.](https://www.fastify.io/docs/latest/LTS/) + + +## Troubleshooting [fastify-troubleshooting] + +If you can’t get the Node.js agent to work as expected, please follow the [troubleshooting guide](docs-content://troubleshoot/observability/apm-agent-nodejs/apm-nodejs-agent.md). + diff --git a/docs/reference/hapi.md b/docs/reference/hapi.md new file mode 100644 index 0000000000..6132a25cca --- /dev/null +++ b/docs/reference/hapi.md @@ -0,0 +1,153 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/hapi.html +--- + +# Get started with hapi [hapi] + +Getting Elastic APM set up for your hapi app is easy, and there are various ways you can tweak it to fit your needs. Follow the guide below to get started, and for more advanced topics, check out the [API Reference](/reference/api.md). + + +## Installation [hapi-installation] + +Add the `elastic-apm-node` module as a dependency to your application: + +```bash +npm install elastic-apm-node --save +``` + + +## Initialization [hapi-initialization] + +It’s important that the agent is started before you require **any** other modules in your Node.js application - i.e. before `@hapi/hapi`, `http`, etc. + +This means that you should probably require and start the agent in your application’s main file (usually `index.js`, `server.js` or `app.js`). + +Here’s a simple hapi example with the Elastic APM agent installed: + +```js +// Add this to the VERY top of the first file loaded in your app +const apm = require('elastic-apm-node').start({ + // Override service name from package.json + // Allowed characters: a-z, A-Z, 0-9, -, _, and space + serviceName: '', + + // Use if APM Server requires a token + secretToken: '', + + // Use if APM Server uses API keys for authentication + apiKey: '', + + // Set custom APM Server URL (default: http://127.0.0.1:8200) + serverUrl: '', +}) + +const Hapi = require('@hapi/hapi') + +const init = async () => { + const server = Hapi.server({ port: 3000, host: 'localhost' }) + + server.route({ + method: 'GET', + path: '/', + handler: (request, h) => { + return 'hello world' + } + }) + + await server.start() + console.log('Server running on %s', server.info.uri) +} + +init() +``` + +The agent will now monitor the performance of your hapi application and record any uncaught exceptions. + + +### Advanced configuration [hapi-advanced-configuration] + +In the above example we initialize the agent by calling the [`start()`](/reference/agent-api.md#apm-start) function. This function takes an optional options object used to configure the agent. Any option not supplied via the options object can instead be configured using environment variables. So if you prefer, you can set the same configuration options using environment variables: + +```bash +ELASTIC_APM_SERVICE_NAME= +ELASTIC_APM_SECRET_TOKEN= +ELASTIC_APM_SERVER_URL= +``` + +And then just start the agent like so: + +```js +// Start the agent before any thing else in your app +var apm = require('elastic-apm-node').start() +``` + +See all possible ways to configure the agent [in the API documentation](/reference/configuring-agent.md). + + +### Full documentation [hapi-full-documentation] + +* [Setup and Configuration](/reference/advanced-setup.md) +* [API Reference](/reference/api.md) + + +## Performance monitoring [hapi-performance-monitoring] + +Elastic APM automatically measures the performance of your hapi application. It records spans for database queries, external HTTP requests, and other slow operations that happen during requests to your hapi app. + +By default, the agent will instrument [the most common modules](/reference/supported-technologies.md). To instrument other events, you can use custom spans. For information about custom spans, see the [Custom Spans section](/reference/custom-spans.md). + +Spans are grouped in transactions - by default one for each incoming HTTP request. But it’s possible to create custom transactions not associated with an HTTP request. See the [Custom Transactions section](/reference/custom-transactions.md) for details. + + +### Unknown routes [hapi-unknown-routes] + +When viewing the performance metrics of your application in Elastic APM, you might see some transactions named "unknown route". This indicates that the agent detected an incoming HTTP request to your application, but didn’t know which route in your hapi app the HTTP request matched. + +This might simply be 404 requests, which by definition don’t match any route, or it might be a symptom that the agent wasn’t installed correctly. If you see this or can’t get any meaningful metrics to show up, please follow the [Troubleshooting Guide](docs-content://troubleshoot/observability/apm-agent-nodejs/apm-nodejs-agent.md). + + +## Error logging [hapi-error-logging] + +By default, the Node.js agent will watch for uncaught exceptions and send them to Elastic APM automatically. But in most cases, errors are not thrown but returned via a callback, caught by a promise, or simply manually created. Those errors will not automatically be sent to Elastic APM. To manually send an error to Elastic APM, simply call `apm.captureError()` with the error: + +```js +var err = new Error('Ups, something broke!') + +apm.captureError(err) +``` + +For advanced logging of errors, including adding extra metadata to the error, see [the API documentation](/reference/agent-api.md#apm-capture-error). + + +## Filter sensitive information [hapi-filter-sensitive-information] + +By default, the Node.js agent will filter common sensitive information before sending errors and metrics to the Elastic APM server. + +It’s possible for you to tweak these defaults or remove any information you don’t want to send to Elastic APM: + +* By default, the Node.js agent will not log the body of HTTP requests. To enable this, use the [`captureBody`](/reference/configuration.md#capture-body) config option +* By default, the Node.js agent will filter certain HTTP headers known to contain sensitive information. To disable this, use the [`sanitizeFieldNames`](/reference/configuration.md#sanitize-field-names) config option +* To apply custom filters, use one of the [filtering](/reference/agent-api.md#apm-add-filter) functions + + +## Add your own data [hapi-add-your-own-data] + +The Node.js agent will keep track of the active HTTP request and will link it to errors and recorded transaction metrics when they are sent to the Elastic APM server. This allows you to see details about which request resulted in a particular error or which requests cause a certain HTTP endpoint to be slow. + +But in many cases, information about the HTTP request itself isn’t enough. To add even more metadata to errors and transactions, use one of the functions below: + +* [`apm.setUserContext()`](/reference/agent-api.md#apm-set-user-context) - Call this to enrich collected performance data and errors with information about the user/client +* [`apm.setCustomContext()`](/reference/agent-api.md#apm-set-custom-context) - Call this to enrich collected performance data and errors with any information that you think will help you debug performance issues and errors (this data is only stored, but not indexed in Elasticsearch) +* [`apm.setLabel()`](/reference/agent-api.md#apm-set-label) - Call this to enrich collected performance data and errors with simple key/value strings that you think will help you debug performance issues and errors (labels are indexed in Elasticsearch) + + +## Compatibility [hapi-compatibility] + +See [*Supported technologies*](/reference/supported-technologies.md) for details. + + +## Troubleshooting [hapi-troubleshooting] + +If you can’t get the Node.js agent to work as expected, please follow the [troubleshooting guide](docs-content://troubleshoot/observability/apm-agent-nodejs/apm-nodejs-agent.md). + diff --git a/docs/images/azure-functions-configuration.png b/docs/reference/images/azure-functions-configuration.png similarity index 100% rename from docs/images/azure-functions-configuration.png rename to docs/reference/images/azure-functions-configuration.png diff --git a/docs/reference/images/choose-a-layer.png b/docs/reference/images/choose-a-layer.png new file mode 100644 index 0000000000000000000000000000000000000000..49cfd9917c5fa0a88be2f27310dd9703b138bf7d GIT binary patch literal 135763 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�#HaF|wz%0j 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

jPBiWrGw-7faJ#aDC*T8iX#R$&~txp(=| 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 +ELASTIC_APM_SECRET_TOKEN= +ELASTIC_APM_SERVER_URL= +``` + +And then just start the agent like so: + +```js +// Start the agent before any thing else in your app +var apm = require('elastic-apm-node').start() +``` + +See all possible ways to configure the agent [in the API documentation](/reference/configuring-agent.md). + + +### Full documentation [koa-full-documentation] + +* [Setup and Configuration](/reference/advanced-setup.md) +* [API Reference](/reference/api.md) + + +## Performance monitoring [koa-performance-monitoring] + +Elastic APM automatically measures the performance of your Koa application. It records spans for database queries, external HTTP requests, and other slow operations that happen during requests to your Koa app. + +By default, the agent will instrument [the most common modules](/reference/supported-technologies.md). To instrument other events, you can use custom spans. For information about custom spans, see the [Custom Spans section](/reference/custom-spans.md). + +Spans are grouped in transactions - by default one for each incoming HTTP request. But it’s possible to create custom transactions not associated with an HTTP request. See the [Custom Transactions section](/reference/custom-transactions.md) for details. + + +### Unknown routes [koa-unknown-routes] + +When viewing the performance metrics of your application in Elastic APM, you might see some transactions named "unknown route". This indicates that the agent detected an incoming HTTP request to your application, but didn’t know which route in your Koa app the HTTP request matched. + +This might simply be 404 requests, which by definition don’t match any route, or it might be a symptom that the agent wasn’t installed correctly. If you see this or can’t get any meaningful metrics to show up, please follow the [Troubleshooting Guide](docs-content://troubleshoot/observability/apm-agent-nodejs/apm-nodejs-agent.md). + + +## Error logging [koa-error-logging] + +By default, the Node.js agent will watch for uncaught exceptions and send them to Elastic APM automatically. But in most cases, errors are not thrown but returned via a callback, caught by a promise, or simply manually created. Those errors will not automatically be sent to Elastic APM. To manually send an error to Elastic APM, simply call `apm.captureError()` with the error: + +```js +var err = new Error('Ups, something broke!') + +apm.captureError(err) +``` + +For advanced logging of errors, including adding extra metadata to the error, see [the API documentation](/reference/agent-api.md#apm-capture-error). + + +## Filter sensitive information [koa-filter-sensitive-information] + +By default, the Node.js agent will filter common sensitive information before sending errors and metrics to the Elastic APM server. + +It’s possible for you to tweak these defaults or remove any information you don’t want to send to Elastic APM: + +* By default, the Node.js agent will not log the body of HTTP requests. To enable this, use the [`captureBody`](/reference/configuration.md#capture-body) config option +* By default, the Node.js agent will filter certain HTTP headers known to contain sensitive information. To disable this, use the [`sanitizeFieldNames`](/reference/configuration.md#sanitize-field-names) config option +* To apply custom filters, use one of the [filtering](/reference/agent-api.md#apm-add-filter) functions + + +## Add your own data [koa-add-your-own-data] + +The Node.js agent will keep track of the active HTTP request and will link it to errors and recorded transaction metrics when they are sent to the Elastic APM server. This allows you to see details about which request resulted in a particular error or which requests cause a certain HTTP endpoint to be slow. + +But in many cases, information about the HTTP request itself isn’t enough. To add even more metadata to errors and transactions, use one of the functions below: + +* [`apm.setUserContext()`](/reference/agent-api.md#apm-set-user-context) - Call this to enrich collected performance data and errors with information about the user/client +* [`apm.setCustomContext()`](/reference/agent-api.md#apm-set-custom-context) - Call this to enrich collected performance data and errors with any information that you think will help you debug performance issues and errors (this data is only stored, but not indexed in Elasticsearch) +* [`apm.setLabel()`](/reference/agent-api.md#apm-set-label) - Call this to enrich collected performance data and errors with simple key/value strings that you think will help you debug performance issues and errors (labels are indexed in Elasticsearch) + + +## Compatibility [koa-compatibility] + +See [*Supported technologies*](/reference/supported-technologies.md) for details. + + +## Troubleshooting [koa-troubleshooting] + +If you can’t get the Node.js agent to work as expected, please follow the [troubleshooting guide](docs-content://troubleshoot/observability/apm-agent-nodejs/apm-nodejs-agent.md). + diff --git a/docs/reference/lambda.md b/docs/reference/lambda.md new file mode 100644 index 0000000000..9d3973efa3 --- /dev/null +++ b/docs/reference/lambda.md @@ -0,0 +1,281 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/lambda.html +sub: + apm-lambda-ext-v: ver-1-5-7 + apm-node-v: ver-4-11-0 +--- + +# Monitoring AWS Lambda Node.js Functions [lambda] + +The Node.js APM Agent can be used with AWS Lambda to monitor the execution of your AWS Lambda functions. + + +## Quick Start [aws-lambda-nodejs-quick-start] + +To get started with APM for your Node.js AWS Lambda functions follow the steps below. + + +### Prerequisites [aws-lambda-nodejs-prerequisites] + +You need an APM Server to send APM data to. Follow the [APM Quick start](docs-content://solutions/observability/apps/get-started-with-apm.md) if you have not set one up yet. For the best-possible performance, we recommend setting up APM on {{ecloud}} in the same AWS region as your AWS Lambda functions. + +### Step 1: Add the APM Layers to your Lambda function [add_the_apm_layers_to_your_lambda_function] + +Both the [{{apm-lambda-ext}}](apm-aws-lambda://reference/index.md) and the Node.js APM Agent are added to your Lambda function as [AWS Lambda Layers](https://docs.aws.amazon.com/lambda/latest/dg/invocation-layers.html). Therefore, you need to add the corresponding Layer ARNs (identifiers) to your Lambda function. + +:::::::{tab-set} + +::::::{tab-item} AWS Web Console +To add the layers to your Lambda function through the AWS Management Console: + +1. Navigate to your function in the AWS Management Console +2. Scroll to the Layers section and click the *Add a layer* button ![image of layer configuration section in AWS Console](images/config-layer.png "") +3. Choose the *Specify an ARN* radio button +4. Copy and paste the following ARNs of the {{apm-lambda-ext}} layer and the APM agent layer in the *Specify an ARN* text input: + * APM Extension layer: + ``` + arn:aws:lambda:{AWS_REGION}:267093732750:layer:elastic-apm-extension-{{apm-lambda-ext-v}}-{ARCHITECTURE}:1 <1> + ``` + 1. Replace `{AWS_REGION}` with the AWS region of your Lambda function and `{ARCHITECTURE}` with its architecture. + + * APM agent layer: + ``` + arn:aws:lambda:{AWS_REGION}:267093732750:layer:elastic-apm-node-{{apm-node-v}}:1 <1> + ``` + 1. Replace `{AWS_REGION}` with the AWS region of your Lambda function. + + ![image of choosing a layer in AWS Console](images/choose-a-layer.png "") +5. Click the *Add* button +:::::: + +::::::{tab-item} AWS CLI +To add the Layer ARNs of the {{apm-lambda-ext}} and the APM agent through the AWS command line interface execute the following command: + +```bash +aws lambda update-function-configuration --function-name yourLambdaFunctionName \ +--layers arn:aws:lambda:{AWS_REGION}:267093732750:layer:elastic-apm-extension-{{apm-lambda-ext-v}}-{ARCHITECTURE}:1 \ <1> +arn:aws:lambda:{AWS_REGION}:267093732750:layer:elastic-apm-node-{{apm-node-v}}:1 <2> +``` +1. Replace `{AWS_REGION}` with the AWS region of your Lambda function and `{ARCHITECTURE}` with its architecture. +2. Replace `{AWS_REGION}` with the AWS region of your Lambda function. +:::::: + +::::::{tab-item} SAM +In your SAM `template.yml` file add the Layer ARNs of the {{apm-lambda-ext}} and the APM agent as follows: + +```yaml +... +Resources: + yourLambdaFunction: + Type: AWS::Serverless::Function + Properties: + ... + Layers: + - arn:aws:lambda:{AWS_REGION}:267093732750:layer:elastic-apm-extension-{{apm-lambda-ext-v}}-{ARCHITECTURE}:1 <1> + - arn:aws:lambda:{AWS_REGION}:267093732750:layer:elastic-apm-node-{{apm-node-v}}:1 <2> +... +``` +1. Replace `{AWS_REGION}` with the AWS region of your Lambda function and `{ARCHITECTURE}` with its architecture. +2. Replace `{AWS_REGION}` with the AWS region of your Lambda function. +:::::: + +::::::{tab-item} Serverless +In your `serverless.yml` file add the Layer ARNs of the {{apm-lambda-ext}} and the APM agent to your function as follows: + +```yaml +... +functions: + yourLambdaFunction: + handler: ... + layers: + - arn:aws:lambda:{AWS_REGION}:267093732750:layer:elastic-apm-extension-{{apm-lambda-ext-v}}-{ARCHITECTURE}:1 <1> + - arn:aws:lambda:{AWS_REGION}:267093732750:layer:elastic-apm-node-{{apm-node-v}}:1 <2> +... +``` +1. Replace `{AWS_REGION}` with the AWS region of your Lambda function and `{ARCHITECTURE}` with its architecture. +2. Replace `{AWS_REGION}` with the AWS region of your Lambda function. +:::::: + +::::::{tab-item} Terraform +To add the{{apm-lambda-ext}} and the APM agent to your function add the ARNs to the `layers` property in your Terraform file: + +```yaml +... +resource "aws_lambda_function" "your_lambda_function" { + ... + layers = ["arn:aws:lambda:{AWS_REGION}:267093732750:layer:elastic-apm-extension-{{apm-lambda-ext-v}}-{ARCHITECTURE}:1", "arn:aws:lambda:{AWS_REGION}:267093732750:layer:elastic-apm-node-{{apm-node-v}}:1"] <1> +} +... +``` +1. Replace `{AWS_REGION}` with the AWS region of your Lambda function and `{ARCHITECTURE}` with its architecture. +:::::: + +::::::{tab-item} Container Image +To add the {{apm-lambda-ext}} and the APM agent to your container-based function extend the Dockerfile of your function image as follows: + +```Dockerfile +FROM docker.elastic.co/observability/apm-lambda-extension-{IMAGE_ARCH}:latest AS lambda-extension <1> +FROM docker.elastic.co/observability/apm-agent-nodejs:latest AS nodejs-agent + +# FROM ... <-- this is the base image of your Lambda function + +COPY --from=lambda-extension /opt/elastic-apm-extension /opt/extensions/elastic-apm-extension +COPY --from=nodejs-agent /opt/nodejs/ /opt/nodejs/ + +# ... +``` +1. Replace `{IMAGE_ARCH}` with the architecture of the image. +:::::: + +::::::: + +### Step 2: Configure APM on AWS Lambda [configure_apm_on_aws_lambda] + +The {{apm-lambda-ext}} and the APM Node.js agent are configured through environment variables on the AWS Lambda function. + +For the minimal configuration, you will need the *APM Server URL* to set the destination for APM data and an [APM Secret Token](docs-content://solutions/observability/apps/secret-token.md). If you prefer to use an [APM API key](docs-content://solutions/observability/apps/api-keys.md) instead of the APM secret token, use the `ELASTIC_APM_API_KEY` environment variable instead of `ELASTIC_APM_SECRET_TOKEN` in the following configuration. + +For production environments, we recommend [using the AWS Secrets Manager to store your APM authentication key](apm-aws-lambda://reference/aws-lambda-secrets-manager.md) instead of providing the secret value as plaintext in the environment variables. + +:::::::{tab-set} + +::::::{tab-item} AWS Web Console +To configure APM through the AWS Management Console: + +1. Navigate to your function in the AWS Management Console +2. Click on the *Configuration* tab +3. Click on *Environment variables* +4. Add the following required variables: + +```bash +NODE_OPTIONS = -r elastic-apm-node/start <1> +ELASTIC_APM_LAMBDA_APM_SERVER = <2> +ELASTIC_APM_SECRET_TOKEN = <3> +ELASTIC_APM_SEND_STRATEGY = background <4> +``` + +1. Use this exact fixed value. +2. This is your APM Server URL. +3. This is your APM secret token. +4. The [ELASTIC_APM_SEND_STRATEGY](apm-aws-lambda://reference/aws-lambda-config-options.md#_elastic_apm_send_strategy) defines when APM data is sent to your Elastic APM backend. To reduce the execution time of your lambda functions, we recommend to use the background strategy in production environments with steady load scenarios. + +![Node.js environment variables configuration section in AWS Console](images/nodejs-lambda-env-vars.png "") +:::::: + +::::::{tab-item} AWS CLI +To configure APM through the AWS command line interface execute the following command: + +```bash +aws lambda update-function-configuration --function-name yourLambdaFunctionName \ + --environment "Variables={NODE_OPTIONS=-r elastic-apm-node/start,ELASTIC_APM_LAMBDA_APM_SERVER=,ELASTIC_APM_SECRET_TOKEN=,ELASTIC_APM_SEND_STRATEGY=background}" <1> +``` + +1. The [ELASTIC_APM_SEND_STRATEGY](apm-aws-lambda://reference/aws-lambda-config-options.md#_elastic_apm_send_strategy) defines when APM data is sent to your Elastic APM backend. To reduce the execution time of your lambda functions, we recommend to use the background strategy in production environments with steady load scenarios. + +:::::: + +::::::{tab-item} SAM +In your SAM `template.yml` file configure the following environment variables: + +```yaml +... +Resources: + yourLambdaFunction: + Type: AWS::Serverless::Function + Properties: + ... + Environment: + Variables: + NODE_OPTIONS: -r elastic-apm-node/start + ELASTIC_APM_LAMBDA_APM_SERVER: + ELASTIC_APM_SECRET_TOKEN: + ELASTIC_APM_SEND_STRATEGY: background <1> +... +``` + +1. The [ELASTIC_APM_SEND_STRATEGY](apm-aws-lambda://reference/aws-lambda-config-options.md#_elastic_apm_send_strategy) defines when APM data is sent to your Elastic APM backend. To reduce the execution time of your lambda functions, we recommend to use the background strategy in production environments with steady load scenarios. + +:::::: + +::::::{tab-item} Serverless +In your `serverless.yml` file configure the following environment variables: + +```yaml +... +functions: + yourLambdaFunction: + ... + environment: + NODE_OPTIONS: -r elastic-apm-node/start + ELASTIC_APM_LAMBDA_APM_SERVER: + ELASTIC_APM_SECRET_TOKEN: + ELASTIC_APM_SEND_STRATEGY: background <1> +... +``` + +1. The [ELASTIC_APM_SEND_STRATEGY](apm-aws-lambda://reference/aws-lambda-config-options.md#_elastic_apm_send_strategy) defines when APM data is sent to your Elastic APM backend. To reduce the execution time of your lambda functions, we recommend to use the background strategy in production environments with steady load scenarios. + +:::::: + +::::::{tab-item} Terraform +In your Terraform file configure the following environment variables: + +```yaml +... +resource "aws_lambda_function" "your_lambda_function" { + ... + environment { + variables = { + NODE_OPTIONS = "-r elastic-apm-node/start" + ELASTIC_APM_LAMBDA_APM_SERVER = "" + ELASTIC_APM_SECRET_TOKEN = "" + ELASTIC_APM_SEND_STRATEGY = "background" <1> + } + } +} +... +``` + +1. The [ELASTIC_APM_SEND_STRATEGY](apm-aws-lambda://reference/aws-lambda-config-options.md#_elastic_apm_send_strategy) defines when APM data is sent to your Elastic APM backend. To reduce the execution time of your lambda functions, we recommend to use the background strategy in production environments with steady load scenarios. + +:::::: + +::::::{tab-item} Container Image +Environment variables configured for an AWS Lambda function are passed to the container running the lambda function. You can use one of the other options (through AWS Web Console, AWS CLI, etc.) to configure the following environment variables: + +```bash +NODE_OPTIONS = -r elastic-apm-node/start <1> +ELASTIC_APM_LAMBDA_APM_SERVER = <2> +ELASTIC_APM_SECRET_TOKEN = <3> +ELASTIC_APM_SEND_STRATEGY = background <4> +``` + +1. Use this exact fixed value. +2. This is your APM Server URL. +3. This is your APM secret token. +4. The [ELASTIC_APM_SEND_STRATEGY](apm-aws-lambda://reference/aws-lambda-config-options.md#_elastic_apm_send_strategy) defines when APM data is sent to your Elastic APM backend. To reduce the execution time of your lambda functions, we recommend to use the background strategy in production environments with steady load scenarios. + +:::::: + +::::::: +1. The [`ELASTIC_APM_SEND_STRATEGY`](apm-aws-lambda://reference/aws-lambda-config-options.md#_elastic_apm_send_strategy) defines when APM data is sent to your Elastic APM backend. To reduce the execution time of your lambda functions, we recommend to use the `background` strategy in production environments with steady load scenarios. + + +You can optionally [fine-tune the Node.js agent](/reference/configuration.md) or the [configuration of the {{apm-lambda-ext}}](apm-aws-lambda://reference/aws-lambda-config-options.md). + +That’s it. After following the steps above, you’re ready to go! Your Lambda function invocations should be traced from now on. + + +## Features [aws-lambda-features] + +The AWS Lambda instrumentation will report a transaction for all function invocations and trace any [supported modules](/reference/supported-technologies.md#compatibility-frameworks). In addition, the created transactions will capture additional data for a number of Lambda trigger types — API Gateway, SNS, SQS, S3 (when the trigger is a single event), and ELB. + +A transaction will be reported for Lambda invocations that fail due to a timeout, crash, `uncaughtException`, or `unhandledRejection`. (This requires APM agent v3.45.0 or later and [Elastic’s APM Lambda extension](apm-aws-lambda://reference/index.md) version 1.4.0 or later.) + + +## Caveats and Troubleshooting [aws-lambda-caveats] + +* System and custom metrics are not collected for Lambda functions. This is both because most of those are irrelevant and because the interval-based event sending model is not suitable for FaaS environments. +* The APM agent does not yet support a Lambda handler module that uses ECMAScript modules (ESM). That means your handler file name should end with ".js" (and not have `"type": "module"` in package.json if you have one) or end with ".cjs". A handler file that uses the ".mjs" suffix will not be instrumented by the APM agent. + diff --git a/docs/reference/logs.md b/docs/reference/logs.md new file mode 100644 index 0000000000..89c12187b5 --- /dev/null +++ b/docs/reference/logs.md @@ -0,0 +1,25 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/logs.html +--- + +# Logs [logs] + +The Elastic APM Node.js Agent provides support for [Log correlation](#log-correlation-ids). When used together with the [`ecs-logging-nodejs` packages](ecs-logging-nodejs://reference/index.md), correlation IDs will be automatically injected into log records to allow navigation between logs, traces, and services. + +This feature is part of [Application log ingestion strategies](docs-content://solutions/observability/logs/stream-application-logs.md). + + +## Log correlation [log-correlation-ids] + +[Log correlation](docs-content://solutions/observability/apps/logs.md) allows you to navigate to all logs belonging to a particular trace and vice-versa: for a specific log, see in which context it has been logged and which parameters the user provided. + +In order to correlate logs from your application with traces captured by the Elastic APM Node.js Agent, your logs must contain the following identifiers: + +* [`trace.id`](ecs://reference/ecs-tracing.md) +* [`transaction.id`](ecs://reference/ecs-tracing.md) or [`span.id`](ecs://reference/ecs-tracing.md) + +The APM Node.js Agent provides the [`apm.currentTraceIds`](/reference/agent-api.md#apm-current-trace-ids) API for this. If your application is also using one of the [ECS formatting plugin packages](ecs-logging-nodejs://reference/index.md) (available for Pino, Winston, and Morgan), then this APM Agent API will automatically be used to inject the appropriate tracing fields into your log records. Otherwise, configure your logger to add these fields when emitting a log record. + +When your logs contain the appropriate identifiers, the final step is to ingest them into the same Elasticsearch instance that contains your APM data. See [Ingest your logs into Elasticsearch](docs-content://solutions/observability/logs/stream-application-logs.md) for more information. + diff --git a/docs/message-queues.asciidoc b/docs/reference/message-queues.md similarity index 52% rename from docs/message-queues.asciidoc rename to docs/reference/message-queues.md index 80310a2b0c..766b98d7ec 100644 --- a/docs/message-queues.asciidoc +++ b/docs/reference/message-queues.md @@ -1,12 +1,15 @@ -[[message-queues]] -== Message queues +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/message-queues.html +--- -The Node.js Agent will automatically create spans for activity to/from your Amazon SQS message queues. To record these spans, your message queue activity must occur during a transaction. If you're performing queue operations during an HTTP request from a <>, the agent will start a transaction automatically. However, if you're performing queue operations in a stand-alone program (such as a message processor), you'll need to use the Node.js Agent's <> method to manually create transactions for your messages. +# Message queues [message-queues] + +The Node.js Agent will automatically create spans for activity to/from your Amazon SQS message queues. To record these spans, your message queue activity must occur during a transaction. If you’re performing queue operations during an HTTP request from a [supported framework](/reference/supported-technologies.md#compatibility-frameworks), the agent will start a transaction automatically. However, if you’re performing queue operations in a stand-alone program (such as a message processor), you’ll need to use the Node.js Agent’s [`startTransaction()`](/reference/agent-api.md#apm-start-transaction) method to manually create transactions for your messages. You can see an example of this in the following code sample. -[source,js] ----- +```js const apm = require('elastic-apm-node').start({/*...*/}) const AWS = require('aws-sdk'); // Set the region @@ -28,23 +31,24 @@ sqs.receiveMessage(params, function(err, data) { // end the transaction transaction.end() <2> }) ----- -<1> Prior to calling the `sqs.receiveMessage` method, start a new transaction. -<2> Only end the transaction _after_ the queue's processing callback finishes executing. The will ensure a transaction is active while processing your queue messages. +``` + +1. Prior to calling the `sqs.receiveMessage` method, start a new transaction. +2. Only end the transaction *after* the queue’s processing callback finishes executing. The will ensure a transaction is active while processing your queue messages. + -[float] -[[message-queues-distributed-tracing]] -=== Distributed tracing and messaging queues -To enable queue scheduling and queue processing with distributed tracing, use the Node.js Agent's API to _store_ a `traceparent` header with your queue message; then, provide that `traceparent` header when starting a new transaction. +## Distributed tracing and messaging queues [message-queues-distributed-tracing] -Here's a _new_ example that uses the Node.js Agent API to store the `traceparent` as a message attribute and then uses that attribute to link your new transaction with the original. +To enable queue scheduling and queue processing with distributed tracing, use the Node.js Agent’s API to *store* a `traceparent` header with your queue message; then, provide that `traceparent` header when starting a new transaction. + +Here’s a *new* example that uses the Node.js Agent API to store the `traceparent` as a message attribute and then uses that attribute to link your new transaction with the original. **Storing the Traceparent** -When sending the message, you'll want to add the trace as one of the `MessageAttributes`. -[source,js] ----- +When sending the message, you’ll want to add the trace as one of the `MessageAttributes`. + +```js // stores the traceparent when sending the queue message const traceParent = apm.currentTransaction ? apm.currentTransaction.traceparent : '' @@ -64,16 +68,15 @@ const params = { sqs.sendMessage(params, function(err, data) { /* ... */ }); ----- +``` This will save the traceparent value so we can use it later on when receiving the messages. **Applying the Traceparent** -When we receive our queue messages, we'll check the message for our Traceparent header, and use it to start a new transaction. By starting a transaction with this traceparent header we'll be linking the sending and receiving via distributed tracing. +When we receive our queue messages, we’ll check the message for our Traceparent header, and use it to start a new transaction. By starting a transaction with this traceparent header we’ll be linking the sending and receiving via distributed tracing. -[source,js] ----- +```js // uses the traceparent to start a transaction sqs.receiveMessage(params, function(err, data) { @@ -96,9 +99,8 @@ sqs.receiveMessage(params, function(err, data) { transactionMessage.end() <3> } }) +``` ----- -<1> Even though we only scheduled one queue message, Amazon's SQS API returns an array of _multiple_ messages. Therefore we'll need to loop over each one. -<2> We extract the traceparent header we'd previously save, and use it to start a transaction. -<3> Once we're done processing a single message, we end the transaction and move on to the next. - +1. Even though we only scheduled one queue message, Amazon’s SQS API returns an array of *multiple* messages. Therefore we’ll need to loop over each one. +2. We extract the traceparent header we’d previously save, and use it to start a transaction. +3. Once we’re done processing a single message, we end the transaction and move on to the next. diff --git a/docs/reference/metrics.md b/docs/reference/metrics.md new file mode 100644 index 0000000000..0ad10a9c1e --- /dev/null +++ b/docs/reference/metrics.md @@ -0,0 +1,151 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/metrics.html +--- + +# Metrics [metrics] + +The Node.js agent tracks various system and application metrics. These metrics will be sent regularly to the APM Server and from there to Elasticsearch. You can adjust the interval by setting [`metricsInterval`](/reference/configuration.md#metrics-interval). + +The metrics will be stored in the `apm-*` index and have the `processor.event` property set to `metric`. + + +## `system.cpu.total.norm.pct` [metric-system.cpu.total.norm.pct] + +* **Type:** Float +* **Format:** Percent + +The percentage of CPU time in states other than Idle and IOWait, normalized by the number of cores. + + +## `system.memory.total` [metric-system.memory.total] + +* **Type:** Long +* **Format:** Bytes + +The total memory of the system in bytes. + + +## `system.memory.actual.free` [metric-system.memory.actual.free] + +* **Type:** Long +* **Format:** Bytes + +Free memory of the system in bytes. + + +## `system.process.cpu.total.norm.pct` [metric-system.process.cpu.total.norm.pct] + +* **Type:** Float +* **Format:** Percent + +The percentage of CPU time spent by the process since the last event. This value is normalized by the number of CPU cores and it ranges from 0 to 100%. + + +## `system.process.memory.rss.bytes` [metric-system.process.memory.rss.bytes] + +* **Type:** Long +* **Format:** Bytes + +The Resident Set Size, the amount of memory the process occupies in main memory (RAM). + + +## `nodejs.handles.active` [metric-nodejs.handles.active] + +* **Type:** Long +* **Format:** Counter + +The number of active libuv handles, likely held open by currently running I/O operations. + + +## `nodejs.requests.active` [metric-nodejs.requests.active] + +* **Type:** Long +* **Format:** Counter + +The number of active libuv requests, likely waiting for a response to an I/O operation. + + +## `system.process.cpu.user.norm.pct` [metric-system.process.cpu.user.norm.pct] + +* **Type:** Long +* **Format:** Counter + +The number of CPU cycles spent executing application code. + + +## `system.process.cpu.system.norm.pct` [metric-system.process.cpu.system.norm.pct] + +* **Type:** Long +* **Format:** Counter + +The number of CPU cycles spent executing kernel code as a result of application activity. + + +## `nodejs.eventloop.delay.avg.ms` [metric-nodejs.eventloop.delay.avg.ms] + +* **Type:** Float +* **Format:** Milliseconds + +The number of milliseconds of event loop delay. Event loop delay is sampled every 10 milliseconds. Delays shorter than 10ms may not be observed, for example if a blocking operation starts and ends within the same sampling period. + + +## `nodejs.memory.heap.allocated.bytes` [metric-nodejs.memory.heap.allocated.bytes] + +* **Type:** Long +* **Format:** Bytes + +The current allocated heap size in bytes. + + +## `nodejs.memory.heap.used.bytes` [metric-nodejs.memory.heap.used.bytes] + +* **Type:** Long +* **Format:** Bytes + +The currently used heap size in bytes. + + +## `nodejs.memory.external.bytes` [metric-nodejs.memory.external.bytes] + +* **Type:** Long +* **Format:** Bytes + +Memory usage of C++ objects bound to JavaScript objects managed by V8. + + +## `nodejs.memory.arrayBuffers.bytes` [metric-nodejs.memory.arrayBuffers.bytes] + +* **Type:** Long +* **Format:** Bytes + +Memory allocated for ArrayBuffers and SharedArrayBuffers, including all Node.js Buffers. This is also included in the `nodejs.memory.external.bytes` value. + + +## `span.self_time.sum` [metrics-span.self_time.sum] + +* **Type:** Long +* **Format:** Milliseconds + +The sum of all span self-times in milliseconds since the last report (the delta). The `span.self_time.*` metrics are referred to as "breakdown metrics". + +You can filter and group by these dimensions: + +* `transaction.name`: The name of the transaction +* `transaction.type`: The type of the transaction, for example `request` +* `span.type`: The type of the span, for example `app`, `template` or `db` +* `span.subtype`: The sub-type of the span, for example `mysql` (optional) + + +## `span.self_time.count` [metrics-span.self_time.count] + +* **Type:** Long +* **Format:** Counter + +You can filter and group by these dimensions: + +* `transaction.name`: The name of the transaction +* `transaction.type`: The type of the transaction, for example `request` +* `span.type`: The type of the span, for example `app`, `template` or `db` +* `span.subtype`: The sub-type of the span, for example `mysql` (optional) + diff --git a/docs/reference/nextjs.md b/docs/reference/nextjs.md new file mode 100644 index 0000000000..0a10474640 --- /dev/null +++ b/docs/reference/nextjs.md @@ -0,0 +1,146 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/nextjs.html +--- + +# Get started with Next.js [nextjs] + +The Elastic APM Node.js agent can be used to trace the Next.js server (`next start` or `next dev`) that runs your application without the need for code changes to your app. The APM transactions for incoming HTTP requests to the server will be named for the [pages](https://nextjs.org/docs/routing/introduction) and [API endpoints](https://nextjs.org/docs/api-routes/introduction) in your application, as well as for internal routes used by Next.js. Errors in code run on the server will be reported for viewing in the Kibana APM app. + +Note that the Node.js APM agent can only instrument *server-side* code. To monitor the client-side parts of a Next.js application, see the [Elastic RUM agent](apm-agent-rum-js://reference/index.md). + +::::{note} +This Next.js instrumentation is a *technical preview* while we solicit feedback from Next.js users. Currently `next` versions `>=12.0.0 <13.3.0` are supported. If you are a Next.js user, please help us provide a better Next.js observability experience with your feedback on our [Discuss forum](https://discuss.elastic.co/tags/c/apm/nodejs). +:::: + + + +## Prerequisites [nextjs-prerequisites] + +You need an APM Server to send APM data to. Follow the [APM Quick start](docs-content://solutions/observability/apps/get-started-with-apm.md) if you have not set one up yet. You will need your **APM server URL** and an APM server **secret token** (or **API key**) for configuring the APM agent below. + +You will also need a Next.js application to monitor. If you do not have an existing one to use, you can use the following to create a starter app (see [Next.js Getting Started docs](https://nextjs.org/docs/getting-started) for more): + +```bash +npx create-next-app@latest # use the defaults +cd my-app +``` + +You can also take a look at and use this [Next.js + Elastic APM example app](https://github.com/elastic/apm-agent-nodejs/tree/main/examples/nextjs/). + + +## Step 1: Add the APM agent dependency [nextjs-setup] + +Add the `elastic-apm-node` module as a dependency to your application: + +```bash +npm install elastic-apm-node --save # or 'yarn add elastic-apm-node' +``` + + +## Step 2: Start the APM agent [_step_2_start_the_apm_agent_2] + +For the APM agent to instrument the Next.js server, it needs to be started before the Next.js server code is loaded. The best way to do so is by using Node’s [`--require`](https://nodejs.org/api/cli.md#-r---require-module) option to load the "elastic-apm-node/start-next.js" module — this will start the agent (plus a little more for Next.js integration). + +Edit the "dev" and "start" scripts in your "package.json" as follows: + +```json +{ + // ... + "scripts": { + "dev": "NODE_OPTIONS=--require=elastic-apm-node/start-next.js next dev", + "build": "next build", + "start": "NODE_OPTIONS=--require=elastic-apm-node/start-next.js next start", + "lint": "next lint" + }, + // ... +} +``` + + +## Step 3: Configure the APM agent [_step_3_configure_the_apm_agent_2] + +The APM agent can be [configured](/reference/configuring-agent.md) with environment variables or with an "elastic-apm-node.js" module in the current working directory. Note that because the APM agent is being loaded before the Next.js server, the [Next.js-supported ".env" files](https://nextjs.org/docs/basic-features/environment-variables) **cannot** be used to configure the APM agent. We will use an "elastic-apm-node.js" file here. + +Create an "elastic-apm-node.js" file in the application root with the APM server URL and secret token values from the [Prerequisites](#nextjs-prerequisites) section above: + +```javascript +// elastic-apm-node.js +module.exports = { + serverUrl: 'https://...', // E.g. https://my-deployment-name.apm.us-west2.gcp.elastic-cloud.com + secretToken: '...' +} +``` + +The equivalent using environment variables is: + +```bash +export ELASTIC_APM_SERVER_URL='https://...' +export ELASTIC_APM_SECRET_TOKEN='...' +``` + +See the [agent configuration guide](/reference/configuration.md) for full details on supported configuration variables. + + +## Step 4: Start your Next.js app [_step_4_start_your_next_js_app] + +```bash +npm run dev # or 'npm run build && npm start' for the production server +``` + +Open [http://localhost:3000](http://localhost:3000) in your browser to load your Next.js app. If you used the `create-next-app` tool above, it defines an [/api/hello](http://localhost:3000/api/hello) API endpoint. You can provide some artificial load by running the following in a separate terminal: + +```bash +while true; do sleep 1; curl -i http://localhost:3000/api/hello; done +``` + +Visit your Kibana APM app and, after a few seconds, you should see a service entry for your Next.js app. The service name will be pulled from the "name" field in "package.json". It can be overriden with [`serviceName`](/reference/configuration.md#service-name). Here is an example: + +:::{image} images/nextjs-my-app-screenshot.png +:alt: Kibana APM app showing Next.js my-app +::: + + +## Limitations and future work [nextjs-limitations] + +This Next.js instrumentation has some limitations to be aware of. + +Next.js build tooling bundles dependencies (using Webpack) for both client *and* server-side code execution. The Node.js APM agent does not work when bundled. See [Bundlers and APM](/reference/starting-agent.md#start-bundlers) for details. The implication for Next.js instrumentation is that you cannot directly import and use the APM agent in your code. That means that using the [`Agent` API](/reference/agent-api.md) for manual instrumentation is not currently possible. + +This instrumentation supports naming APM transactions for many internal Next.js routes. For example, for [server-side rendering (SSR)](https://nextjs.org/docs/basic-features/data-fetching/get-server-side-props) Next.js client code will make requests of the form `GET /next/_data/$buildId/$page.json`, for which the APM agent names the transaction `Next.js _next/data route $page`. However, there is a limitation with the Next.js "public folder catchall" route. HTTP requests that resolve to files in your "public/" directory, for example `GET /favicon.ico`, will result in a transaction named `GET unknown route`. See [Unknown routes](#nextjs-unknown-routes) below. + +If you notice other limitations or have any suggestions, please give us feedback on our [Discuss forum](https://discuss.elastic.co/tags/c/apm/nodejs). + + +## Performance monitoring [nextjs-performance-monitoring] + +Elastic APM automatically measures the performance of your Next.js application. It records spans for database queries, external HTTP requests, and other slow operations that happen during requests to your Next.js app. Spans are grouped in transactions — by default one for each incoming HTTP request. + + +## Unknown routes [nextjs-unknown-routes] + +When viewing the performance metrics of your application in Elastic APM, you might see some transactions named "unknown route". This indicates that the agent detected an incoming HTTP request to your application, but didn’t know which route in your Next.js app the HTTP request matched. + +This might simply be 404 requests, which by definition don’t match any route, or it might be a symptom that the agent wasn’t installed correctly. If you see this or can’t get any meaningful metrics to show up, please follow the [Troubleshooting Guide](docs-content://troubleshoot/observability/apm-agent-nodejs/apm-nodejs-agent.md). + + +## Filter sensitive information [nextjs-filter-sensitive-information] + +By default, the Node.js agent will filter common sensitive information before sending errors and metrics to the Elastic APM server. + +It’s possible for you to tweak these defaults or remove any information you don’t want to send to Elastic APM: + +* By default, the Node.js agent will not log the body of HTTP requests. To enable this, use the [`captureBody`](/reference/configuration.md#capture-body) config option +* By default, the Node.js agent will filter certain HTTP headers known to contain sensitive information. To disable this, use the [`sanitizeFieldNames`](/reference/configuration.md#sanitize-field-names) config option +* To apply custom filters, use one of the [filtering](/reference/agent-api.md#apm-add-filter) functions + + +## Compatibility [nextjs-compatibility] + +See [*Supported technologies*](/reference/supported-technologies.md) for details. + + +## Troubleshooting [nextjs-troubleshooting] + +If you can’t get the Node.js agent to work as expected, please follow the [troubleshooting guide](docs-content://troubleshoot/observability/apm-agent-nodejs/apm-nodejs-agent.md). + diff --git a/docs/reference/opentelemetry-bridge.md b/docs/reference/opentelemetry-bridge.md new file mode 100644 index 0000000000..9532e6d56d --- /dev/null +++ b/docs/reference/opentelemetry-bridge.md @@ -0,0 +1,194 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/opentelemetry-bridge.html +--- + +# OpenTelemetry bridge [opentelemetry-bridge] + +::::{note} +Integration with the OpenTelemetry Tracing API was added as experimental in v3.34.0. Integration with the OpenTelemetry Metrics API was added as experimental in v3.45.0. +:::: + + +The Elastic APM OpenTelemetry bridge allows one to use the vendor-neutral [OpenTelemetry API](https://opentelemetry.io/docs/instrumentation/js/) ([`@opentelemetry/api`](https://www.npmjs.com/package/@opentelemetry/api)) in your code, and have the Elastic Node.js APM agent handle those API calls. This allows one to use the Elastic APM agent for tracing and metrics without any vendor lock-in to the APM agent’s own [public API](/reference/api.md) when adding manual tracing or custom metrics. + + +## Using the OpenTelemetry Tracing API [otel-tracing-api] + +① First, you will need to add the Elastic APM agent and OpenTelemetry API dependencies to your project. The minimum required OpenTelemetry API version is 1.0.0; see [the OpenTelemetry compatibility section](/reference/supported-technologies.md#compatibility-opentelemetry) for the current maximum supported API version. For example: + +```bash +npm install --save elastic-apm-node @opentelemetry/api +``` + +② Second, you will need to configure and start the APM agent. This can be done completely with environment variables (so that there is no need to touch your application code): + +```bash +export ELASTIC_APM_SERVER_URL='' +export ELASTIC_APM_SECRET_TOKEN='' <1> +export ELASTIC_APM_OPENTELEMETRY_BRIDGE_ENABLED=true <2> +export NODE_OPTIONS='-r elastic-apm-node/start.js' <3> +node my-app.js +``` + +1. Or use ELASTIC_APM_API_KEY= +2. Future versions may drop this config var and enable usage of the tracing API by default. +3. Tell node to preload and start the APM agent. + +Or, alternatively, you can configure and start the APM agent at the top of your application code: + +```js +require('elastic-apm-node').start({ + serverUrl: '', + secretToken: '', <1> + opentelemetryBridgeEnabled: true +}); + +// Application code ... +``` +1. Alternatively, you can use `apiKey: ''`. + +See [the full APM agent configuration reference](/reference/configuration.md) for other configuration options. + +③ Finally, you can use the [OpenTelemetry API](https://open-telemetry.github.io/opentelemetry-js/modules/_opentelemetry_api.html) for any manual tracing in your code. For example, the following script uses [Tracer#startActiveSpan()](https://open-telemetry.github.io/opentelemetry-js/interfaces/_opentelemetry_api.Tracer.html#startActiveSpan) to trace an outgoing HTTPS request: + +```js +const https = require('https') +const otel = require('@opentelemetry/api') +const tracer = otel.trace.getTracer('trace-https-request') + +tracer.startActiveSpan('makeRequest', span => { + https.get('https://httpstat.us/200', (response) => { + console.log('STATUS:', response.statusCode) + const body = [] + response.on('data', (chunk) => body.push(chunk)) + response.on('end', () => { + console.log('BODY:', body.toString()) + span.end() + }) + }) +}) +``` + +The APM agent source code repository includes [some examples using the OpenTelemetry tracing bridge](https://github.com/elastic/apm-agent-nodejs/tree/main/examples/opentelemetry-bridge). + + +## Using the OpenTelemetry Metrics API [otel-metrics-api] + +① As above, install the needed dependencies. The minimum required OpenTelemetry API version is 1.3.0 (the version when metrics were added); see [the OpenTelemetry compatibility section](/reference/supported-technologies.md#compatibility-opentelemetry) for the current maximum supported API version. For example: + +```bash +npm install --save elastic-apm-node @opentelemetry/api +``` + +② Configure and start the APM agent. This can be done completely with environment variables — as shown below — or in code. (See [Starting the agent](/reference/starting-agent.md) and [the full APM agent configuration reference](/reference/configuration.md) for other configuration options.) + +```bash +export ELASTIC_APM_SERVER_URL='' +export ELASTIC_APM_SECRET_TOKEN='' # or ELASTIC_APM_API_KEY=... +export NODE_OPTIONS='-r elastic-apm-node/start.js' # Tell node to preload and start the APM agent +node my-app.js +``` + +③ Finally, you can use the OpenTelemetry Metrics API, to [create metrics](https://open-telemetry.github.io/opentelemetry-js/interfaces/_opentelemetry_api.Meter.html) and the APM agent will periodically ship those metrics to your Elastic APM deployment where you can visualize them in Kibana. + +```js +// otel-metrics-hello-world.js <1> +const { createServer } = require('http') +const otel = require('@opentelemetry/api') + +const meter = otel.metrics.getMeter('my-meter') +const numReqs = meter.createCounter('num_requests', { description: 'number of HTTP requests' }) + +const server = createServer((req, res) => { + numReqs.add(1) + req.resume() + req.on('end', () => { + res.end('pong\n') + }) +}) +server.listen(3000, () => { + console.log('listening at http://127.0.0.1:3000/') +}) +``` + +1. The full example is [here](https://github.com/elastic/apm-agent-nodejs/blob/main/examples/opentelemetry-metrics/otel-metrics-hello-world.js). + + + +### Using the OpenTelemetry Metrics SDK [otel-metrics-sdk] + +The Elastic APM agent also supports exporting metrics to APM server when the OpenTelemetry Metrics **SDK** is being used directly. You might want to use the OpenTelemetry Metrics SDK to use a [`View`](https://opentelemetry.io/docs/reference/specification/metrics/sdk/#view) to configure histogram bucket sizes, to setup a Prometheus exporter, or for other reasons. For example: + +```js +// use-otel-metrics-sdk.js <1> +const otel = require('@opentelemetry/api') +const { MeterProvider } = require('@opentelemetry/sdk-metrics') +const { PrometheusExporter } = require('@opentelemetry/exporter-prometheus') + +const exporter = new PrometheusExporter({ host: '127.0.0.1', port: 3001 }) +const meterProvider = new MeterProvider() +meterProvider.addMetricReader(exporter) +otel.metrics.setGlobalMeterProvider(meterProvider) + +const meter = otel.metrics.getMeter('my-meter') +const latency = meter.createHistogram('latency', { description: 'Response latency (s)' }) +// ... +``` + +1. The full example is [here](https://github.com/elastic/apm-agent-nodejs/blob/main/examples/opentelemetry-metrics/use-otel-metrics-sdk.js). + + + +### OpenTelemetry Metrics configuration [otel-metrics-conf] + +A few configuration options can be used to control OpenTelemetry Metrics support. + +* Specific metrics names can be filtered out via the [`disableMetrics`](/reference/configuration.md#disable-metrics) configuration option. +* Integration with the OpenTelemetry Metrics API can be disabled via the [`disableInstrumentations: '@opentelemetry/api'`](/reference/configuration.md#disable-instrumentations) configuration option. +* Integration with the OpenTelemetry Metrics SDK can be disabled via the [`disableInstrumentations: '@opentelemetry/sdk-metrics'`](/reference/configuration.md#disable-instrumentations) configuration option. +* All metrics support in the APM agent can be disabled via the [`metricsInterval: '0s'`](/reference/configuration.md#metrics-interval) configuration option. +* The default histogram bucket boundaries are different from the OpenTelemetry default, to provide better resolution. The boundaries used by the APM agent can be configured with the [`customMetricsHistogramBoundaries`](/reference/configuration.md#custom-metrics-histogram-boundaries) configuration option. + + +## Bridge architecture [otel-architecture] + +The OpenTelemetry Tracing bridge works similarly to the [OpenTelemetry Node.js Trace SDK](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node/). It registers Tracer and ContextManager providers with the OpenTelemetry API. Subsequent `@opentelemetry/api` calls in user code will use those providers. The APM agent translates from OpenTelemetry to Elastic APM semantics and sends tracing data to your APM server for full support in [Elastic Observability’s APM app](https://www.elastic.co/apm). + +Some examples of semantic translations: The first entry span of a service (e.g. an incoming HTTP request) will be converted to an [Elasic APM `Transaction`](docs-content://solutions/observability/apps/transactions.md), subsequent spans are mapped to [Elastic APM `Span`s](docs-content://solutions/observability/apps/spans.md). OpenTelemetry Span attributes are translated into the appropriate fields in Elastic APM’s data model. + +The only difference, from the user’s point of view, is in the setup of tracing. Instead of setting up the OpenTelemetry JS SDK, one sets up the APM agent as [described above](#otel-tracing-api). + +


+The OpenTelemetry Metrics support, is slightly different. If your code uses just the Metrics **API**, then the APM agent provides a full MeterProvider so that metrics are accumulated and sent to APM server. If your code uses the Metrics **SDK**, then the APM agents adds a MetricReader to your MeterProvider to send metrics on to APM server. This allows you to use the APM agent as either an easy setup for using metrics or in conjunction with your existing OpenTelemetry Metrics configuration. + + +## Caveats [otel-caveats] + +Not all features of the OpenTelemetry API are supported. This section describes any limitations and differences. + + +#### Tracing [otel-caveats-tracing] + +* Span Link Attributes. Adding links when [starting a span](https://open-telemetry.github.io/opentelemetry-js/interfaces/\_opentelemetry_api.Tracer.md) is supported, but any added span link **attributes** are silently dropped. +* Span events ([`Span#addEvent()`](https://open-telemetry.github.io/opentelemetry-js/interfaces/_opentelemetry_api.Span.html#addEvent)) are not currently supported. Events will be silently dropped. +* [Propagating baggage](https://open-telemetry.github.io/opentelemetry-js/classes/_opentelemetry_api.PropagationAPI.html) within or outside the process is not supported. Baggage items are silently dropped. + + +#### Metrics [otel-caveats-metrics] + +* Metrics [exemplars](https://opentelemetry.io/docs/reference/specification/metrics/data-model/#exemplars) are not supported. +* [Summary metrics](https://opentelemetry.io/docs/reference/specification/metrics/data-model/#summary-legacy) are not supported. +* [Exponential Histograms](https://opentelemetry.io/docs/reference/specification/metrics/data-model/#exponentialhistogram) are not yet supported. +* The `sum`, `count`, `min` and `max` within the OpenTelemetry histogram data are discarded. +* The default histogram bucket boundaries are different from the OpenTelemetry default. They provide better resolution. They can be configured with the [`customMetricsHistogramBoundaries`](/reference/configuration.md#custom-metrics-histogram-boundaries) configuration option. +* Metrics label names are dedotted (`s/\./_/g`) in APM server to avoid possible mapping collisions in Elasticsearch. +* The default [Aggregation Temporality](https://github.com/elastic/apm/blob/main/specs/agents/metrics-otel.md#aggregation-temporality) used differs from the OpenTelemetry default — preferring **delta**-temporality (nicer for visualizing in Kibana) to cumulative-temporality. + +Metrics support requires an APM server >=7.11 — for earlier APM server versions, metrics with label names including `.`, `*`, or `"` will get dropped. + + +#### Logs [otel-caveats-logs] + +The OpenTelemetry Logs API is currently not support — only the Tracing and Metrics APIs. + diff --git a/docs/reference/opentracing.md b/docs/reference/opentracing.md new file mode 100644 index 0000000000..40a6bdddad --- /dev/null +++ b/docs/reference/opentracing.md @@ -0,0 +1,140 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/opentracing.html +--- + +# OpenTracing bridge [opentracing] + +::::{note} +[OpenTracing](https://opentracing.io/) is discontinued in favor of OpenTelemetry. This Elastic APM OpenTracing bridge is **deprecated**. Consider using the [*OpenTelemetry bridge*](/reference/opentelemetry-bridge.md) instead. +:::: + + +The Elastic APM OpenTracing bridge allows creating Elastic APM transactions and spans, using the [OpenTracing API](https://opentracing-javascript.surge.sh/). In other words, it translates the calls to the OpenTracing API to Elastic APM and thus allows for reusing existing instrumentation. + +For more information about OpenTracing, see the [OpenTracing website](https://opentracing.io/). + + +## Prerequisites [ot-prerequisites] + +OpenTracing support for the Elastic APM Node.js Agent is provided via a separate module called [`elastic-apm-node-opentracing`](https://www.npmjs.com/package/elastic-apm-node-opentracing). + +This module requires that the Elastic APM Node.js Agent is installed separately. To ensure that both dependencies are added to the application, install them like so: + +```bash +npm install elastic-apm-node elastic-apm-node-opentracing --save +``` + + +## OpenTracing vs Elastic APM terminologies [ot-terminologies] + +Elastic APM differentiates between [transactions](docs-content://solutions/observability/apps/transactions.md) and [spans](docs-content://solutions/observability/apps/spans.md). In the context of OpenTracing, a transaction can be thought of as a special kind of span. + +Because OpenTracing natively only has the concept of spans, the Elastic APM OpenTracing bridge will automatically create either Elastic transactions or Elastic spans behind the scenes. There are a set of rules that determine which is created: + +1. If `agent.currentTransaction` is `null`, a new Elastic transaction will be created when calling `tracer.startSpan()`. +2. If `agent.currentTransaction` holds an existing transaction, but that transaction is ended, a new Elastic transaction will be created when calling `tracer.startSpan()`. +3. In all other cases, a new Elastic span will be created when calling `tracer.startSpan()`. + + +## Initialization [ot-initialization] + +It’s important that the agent is started before you require **any** other modules in your Node.js application - i.e. before `express`, `http`, etc. + +This means that you should probably require and start the agent in your application’s main file (usually `index.js`, `server.js` or `app.js`). + +Here’s a simple example where we first start the agent and then initialize the OpenTracing bridge: + +```js +// Add this to the VERY top of the first file loaded in your app +const agent = require('elastic-apm-node').start({ + // Override service name from package.json + // Allowed characters: a-z, A-Z, 0-9, -, _, and space + serviceName: '', + + // Use if APM Server requires a token + secretToken: '', + + // Use if APM Server uses API keys for authentication + apiKey: '', + + // Set custom APM Server URL (default: http://127.0.0.1:8200) + serverUrl: '', +}) + +const Tracer = require('elastic-apm-node-opentracing') + +// Pass the Elastic APM agent as an argument to the OpenTracing tracer +const tracer = new Tracer(agent) + +const span = tracer.startSpan('my-first-span') +// ... do some work ... +span.finish() +``` + + +## API [ot-api] + +```js +tracer = new Tracer(agent) +``` + +The `elastic-apm-node-opentracing` module exposes a Tracer class which is OpenTracing compatible. + +When instantiating the Tracer object, an instance of the Elastic APM Node.js Agent must be provided as its only argument. + +For details about the `tracer` API, see the [`opentracing-javascript` API docs](https://opentracing-javascript.surge.sh/). + + +## Elastic APM specific tags [ot-elastic-apm-tags] + +Elastic APM defines some tags which have special meaning and which will not be stored as regular tags. Instead, they will be used to set certain metadata on the transaction or span. + +The following tags have special meaning for both transactions and spans: + +* `type` - sets the type of the transaction or span, for example `request` for transactions or `db.mysql.query` for spans + +The following tags only have special meaning on the span if the underlying Elastic APM object is a transaction: + +* `result` - sets the result of the transaction (defaults to `success`) +* `error` - sets the result of the transaction to `error` if the tag value is `true` (defaults to `success`) +* `http.status_code` - sets the result of the transaction. E.g. If the tag value is `200`, the transaction result will be set to `HTTP 2xx` (defaults to `success`) +* `user.id` - sets the user id, appears in the "User" tab in the transaction details in the Elastic APM app +* `user.email` - sets the user email, appears in the "User" tab in the transaction details in the Elastic APM app +* `user.username` - sets the user name, appears in the "User" tab in the transaction details in the Elastic APM app + + +## Caveats [ot-caveats] + +Not all features of the OpenTracing API are supported. + + +### Context propagation [ot-propagation] + +This bridge only supports the formats `opentracing.FORMAT_TEXT_MAP` and `opentracing.FORMAT_HTTP_HEADERS`. `opentracing.FORMAT_BINARY` is currently not supported. + + +### Span References [ot-references] + +Currently, this bridge only supports `opentracing.REFERENCE_CHILD_OF` references. Other references, like `opentracing.REFERENCE_FOLLOWS_FROM`, are not supported yet. + + +### Baggage [ot-baggage] + +The `span.setBaggageItem()` method is not supported. Baggage items are silently dropped. + + +### Logs [ot-logs] + +Only error logging is supported. Logging an Error object on the OpenTracing span will create an Elastic APM [error](docs-content://solutions/observability/apps/errors.md). Example: + +```js +const err = new Error('boom!') + +span.log({ + event: 'error', + 'error.object': err +}) +``` + +Other logs are silently dropped. diff --git a/docs/reference/performance-tuning.md b/docs/reference/performance-tuning.md new file mode 100644 index 0000000000..858146ba9f --- /dev/null +++ b/docs/reference/performance-tuning.md @@ -0,0 +1,97 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/performance-tuning.html +--- + +# Performance Tuning [performance-tuning] + +The Node.js APM agent offers a variety of [configuration options](/reference/configuration.md), some of which can have a significant impact on performance. Areas where APM agent overhead might be seen are: CPU, memory, network, latency, and storage. This document discusses the options most significant for performance tuning the APM agent. + + +## Sample rate [performance-sampling] + +The *sample rate* is the percentage of incoming requests that are recorded and sent to the APM Server. This is controlled by the [`transactionSampleRate`](/reference/configuration.md#transaction-sample-rate) configuration option. By default *all* requests are traced (`transactionSampleRate: 1.0`). + +The amount of work the APM agent needs to do, generally scales linearly with the number of traced requests. Therefore, the sample rate impacts CPU, memory, network, and storage overhead. + +Applications with a high request rate and/or many spans per incoming request may want to lower the the sampling rate. For example, see the example below to trace 20% of incoming requests. Note that incoming HTTP requests that are part of a [distributed trace](/reference/distributed-tracing.md) already have the sampling decision made — the `traceparent` header includes a [sampled flag](https://w3c.github.io/trace-context/#sampled-flag). In these cases the `transactionSampleRate` setting will not apply. + +```js +require('elastic-apm-node').start({ + transactionSampleRate: 0.2 // sample 20% of incoming requests +}) +``` + + +## Stack Traces [performance-stack-traces] + +When the APM agent captures an error, it records its stack trace for later analysis and viewing. Optionally, the APM agent can also record a stack trace for captured **spans**. Stack traces can have a significant impact on CPU and memory usage of the agent. There are several settings to adjust how they are used. + + +### Span Stack Traces [performance-span-stack-traces] + +The [`spanStackTraceMinDuration`](/reference/configuration.md#span-stack-trace-min-duration) configuration option controls if stack traces are never captured for spans (the default), always captured for spans, or only captured for spans that are longer than a given duration. In a complex application, a traced request may capture many spans. Capturing and sending a stack trace for every span can result in significant CPU and memory usage. + +It is because of the possibility of this CPU overhead that the APM Agent disables stack trace collection for *spans* by default. Unfortunately, even the capturing of raw stack trace data at span creation and then throwing that away for fast spans can have significant CPU overhead for heavily loaded applications. Therefore, care must be taken before using `spanStackTraceMinDuration`. + + +### Stack Trace Source Lines [performance-source-lines] + +If you want to keep span stack traces enabled for context, the next thing to try is adjusting how many source lines are reported for each stack trace. When a stack trace is captured, the agent will also capture several lines of source code around each stack frame location in the stack trace. + +The are four different settings to control this behaviour: + +* [`sourceLinesErrorAppFrames`](/reference/configuration.md#source-context-error-app-frames) +* [`sourceLinesErrorLibraryFrames`](/reference/configuration.md#source-context-error-library-frames) +* [`sourceLinesSpanAppFrames`](/reference/configuration.md#source-context-span-app-frames) +* [`sourceLinesSpanLibraryFrames`](/reference/configuration.md#source-context-span-library-frames) + +Source line settings are divided into app frames representing your app code and library frames representing the code of your dependencies. App and library categories are both split into error and span groups. Spans, by default, do not capture source lines. Errors, by default, will capture five lines of code around each stack frame. + +Source lines are cached in-process. In memory-constrained environments, the source line cache may use more memory than desired. Turning the limits down will help prevent excessive memory use. + + +### Stack Frame Limit [performance-stack-frame-limit] + +The [`stackTraceLimit`](/reference/configuration.md#stack-trace-limit) configuration option controls how many stack frames are captured when producing an `Error` instance of any kind. A large value may impact CPU and memory overhead of the agent. + + +### Error Log Stack Traces [performance-error-log-stack-traces] + +Most stack traces recorded by the agent will point to where the error was instantiated, not where it was identified and reported to the agent with [`captureError`](/reference/agent-api.md#apm-capture-error). For this reason, the agent also has the [`captureErrorLogStackTraces`](/reference/configuration.md#capture-error-log-stack-traces) setting to enable capturing an additional stack trace pointing to the place an error was reported to the agent. By default, it will only capture the stack trace to the reporting point when [`captureError`](/reference/agent-api.md#apm-capture-error) is called with a string message. + +Setting this to `always` will increase memory and bandwidth usage, so it helps to consider how frequently the app may capture errors. + + +## Spans [performance-transaction-max-spans] + +The [`transactionMaxSpans`](/reference/configuration.md#transaction-max-spans) setting limits the number of spans which may be recorded within a single transaction before remaining spans are dropped. + +Spans may include many things such as a stack trace and context data. Limiting the number of spans that may be recorded will reduce memory usage. + +Reducing max spans could result in loss of useful data about what occurred within a request, if it is set too low. + +An alternative to limiting the maximum number of spans can be to drop spans with a very short duration, as those might not be that relevant. + +This, however, both reduces the amount of storage needed to store the spans in Elasticsearch, and the bandwidth needed to transport the data to the APM Server from the instrumented application. + +This can be implemented by providing a span-filter: + +```js +agent.addSpanFilter(payload => { + return payload.duration < 10 ? null : payload +}) +``` + +::::{note} +Using a span filter does not reduce the load of recording the spans in your application, but merely filters them out before sending them to the APM Server. +:::: + + + +## Max queue size [performance-max-queue-size] + +The APM agent uses a persistent outgoing HTTP request (periodically refreshed) to stream data to the APM Server. If either the APM agent cannot keep up with events (transactions, spans, errors, and metricsets) from the application or if the APM Server is slow or not responding, then the agent will buffer events. If the buffer exceeds [`maxQueueSize`](/reference/configuration.md#max-queue-size), then events are dropped to limit memory usage of the agent. + +A lower value for `maxQueueSize` will decrease the heap overhead (and possibly the CPU usage) of the agent, while a higher value makes it less likely to lose events in case of a temporary spike in throughput. + diff --git a/docs/reference/restify.md b/docs/reference/restify.md new file mode 100644 index 0000000000..2d95ad524a --- /dev/null +++ b/docs/reference/restify.md @@ -0,0 +1,145 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/restify.html +--- + +# Get started with Restify [restify] + +Getting Elastic APM set up for your Restify app is easy, and there are various ways you can tweak it to fit your needs. Follow the guide below to get started, and for more advanced topics, check out the [API Reference](/reference/api.md). + + +## Installation [restify-installation] + +Add the `elastic-apm-node` module as a dependency to your application: + +```bash +npm install elastic-apm-node --save +``` + + +## Initialization [restify-initialization] + +It’s important that the agent is started before you require **any** other modules in your Node.js application - i.e. before `restify`, `http`, etc. + +This means that you should probably require and start the agent in your application’s main file (usually `index.js`, `server.js` or `app.js`). + +Here’s a simple Restify example with the Elastic APM agent installed: + +```js +// Add this to the VERY top of the first file loaded in your app +const apm = require('elastic-apm-node').start({ + // Override service name from package.json + // Allowed characters: a-z, A-Z, 0-9, -, _, and space + serviceName: '', + + // Use if APM Server requires a token + secretToken: '', + + // Use if APM Server uses API keys for authentication + apiKey: '', + + // Set custom APM Server URL (default: http://127.0.0.1:8200) + serverUrl: '', +}) + +const restify = require('restify') + +const app = restify.createServer() + +app.get('/hello/:name', function (req, res, next) { + res.send('hello ' + req.params.name) + next() +}) + +app.listen(3000) +``` + +The agent will now monitor the performance of your Restify application and record any uncaught exceptions. + + +### Advanced configuration [restify-advanced-configuration] + +In the above example we initialize the agent by calling the [`start()`](/reference/agent-api.md#apm-start) function. This function takes an optional options object used to configure the agent. Any option not supplied via the options object can instead be configured using environment variables. So if you prefer, you can set the same configuration options using environment variables: + +```bash +ELASTIC_APM_SERVICE_NAME= +ELASTIC_APM_SECRET_TOKEN= +ELASTIC_APM_SERVER_URL= +``` + +And then just start the agent like so: + +```js +// Start the agent before any thing else in your app +var apm = require('elastic-apm-node').start() +``` + +See all possible ways to configure the agent [in the API documentation](/reference/configuring-agent.md). + + +### Full documentation [restify-full-documentation] + +* [Setup and Configuration](/reference/advanced-setup.md) +* [API Reference](/reference/api.md) + + +## Performance monitoring [restify-performance-monitoring] + +Elastic APM automatically measures the performance of your Restify application. It records spans for database queries, external HTTP requests, and other slow operations that happen during requests to your Restify app. + +By default, the agent will instrument [the most common modules](/reference/supported-technologies.md). To instrument other events, you can use custom spans. For information about custom spans, see the [Custom Spans section](/reference/custom-spans.md). + +Spans are grouped in transactions - by default one for each incoming HTTP request. But it’s possible to create custom transactions not associated with an HTTP request. See the [Custom Transactions section](/reference/custom-transactions.md) for details. + + +### Unknown routes [restify-unknown-routes] + +When viewing the performance metrics of your application in Elastic APM, you might see some transactions named "unknown route". This indicates that the agent detected an incoming HTTP request to your application, but didn’t know which route in your Restify app the HTTP request matched. + +This might simply be 404 requests, which by definition don’t match any route, or it might be a symptom that the agent wasn’t installed correctly. If you see this or can’t get any meaningful metrics to show up, please follow the [Troubleshooting Guide](docs-content://troubleshoot/observability/apm-agent-nodejs/apm-nodejs-agent.md). + + +## Error logging [restify-error-logging] + +By default, the Node.js agent will watch for uncaught exceptions and send them to Elastic APM automatically. But in most cases, errors are not thrown but returned via a callback, caught by a promise, or simply manually created. Those errors will not automatically be sent to Elastic APM. To manually send an error to Elastic APM, simply call `apm.captureError()` with the error: + +```js +var err = new Error('Ups, something broke!') + +apm.captureError(err) +``` + +For advanced logging of errors, including adding extra metadata to the error, see [the API documentation](/reference/agent-api.md#apm-capture-error). + + +## Filter sensitive information [restify-filter-sensitive-information] + +By default, the Node.js agent will filter common sensitive information before sending errors and metrics to the Elastic APM server. + +It’s possible for you to tweak these defaults or remove any information you don’t want to send to Elastic APM: + +* By default, the Node.js agent will not log the body of HTTP requests. To enable this, use the [`captureBody`](/reference/configuration.md#capture-body) config option +* By default, the Node.js agent will filter certain HTTP headers known to contain sensitive information. To disable this, use the [`sanitizeFieldNames`](/reference/configuration.md#sanitize-field-names) config option +* To apply custom filters, use one of the [filtering](/reference/agent-api.md#apm-add-filter) functions + + +## Add your own data [restify-add-your-own-data] + +The Node.js agent will keep track of the active HTTP request and will link it to errors and recorded transaction metrics when they are sent to the Elastic APM server. This allows you to see details about which request resulted in a particular error or which requests cause a certain HTTP endpoint to be slow. + +But in many cases, information about the HTTP request itself isn’t enough. To add even more metadata to errors and transactions, use one of the functions below: + +* [`apm.setUserContext()`](/reference/agent-api.md#apm-set-user-context) - Call this to enrich collected performance data and errors with information about the user/client +* [`apm.setCustomContext()`](/reference/agent-api.md#apm-set-custom-context) - Call this to enrich collected performance data and errors with any information that you think will help you debug performance issues and errors (this data is only stored, but not indexed in Elasticsearch) +* [`apm.setLabel()`](/reference/agent-api.md#apm-set-label) - Call this to enrich collected performance data and errors with simple key/value strings that you think will help you debug performance issues and errors (labels are indexed in Elasticsearch) + + +## Compatibility [restify-compatibility] + +See [*Supported technologies*](/reference/supported-technologies.md) for details. + + +## Troubleshooting [restify-troubleshooting] + +If you can’t get the Node.js agent to work as expected, please follow the [troubleshooting guide](docs-content://troubleshoot/observability/apm-agent-nodejs/apm-nodejs-agent.md). + diff --git a/docs/reference/set-up.md b/docs/reference/set-up.md new file mode 100644 index 0000000000..5f09fc23d3 --- /dev/null +++ b/docs/reference/set-up.md @@ -0,0 +1,41 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/set-up.html +--- + +# Set up the Agent [set-up] + +To get you off the ground, we’ve prepared guides for setting up the Agent with a few different popular web frameworks and technologies: + +* [Monitoring AWS Lambda Node.js Functions](/reference/lambda.md) +* [Monitoring Node.js Azure Functions](/reference/azure-functions.md) +* [Get started with Express](/reference/express.md) +* [Get started with Fastify](/reference/fastify.md) +* [Get started with hapi](/reference/hapi.md) +* [Get started with Koa](/reference/koa.md) +* [Get started with Next.js](/reference/nextjs.md) +* [Get started with Restify](/reference/restify.md) +* [Get started with TypeScript](/reference/typescript.md) + +Alternatively, you can [Get started with a custom Node.js stack](/reference/custom-stack.md). For Kubernetes, we support auto-attachment using the [APM attacher](apm-k8s-attacher://reference/index.md). + +To see an overview of which components of your application we instrument automatically, use the [*Supported technologies*](/reference/supported-technologies.md) page. + +Other useful documentation includes: + +* [Starting the agent](/reference/starting-agent.md) +* [*Configuration*](/reference/advanced-setup.md) +* [*API Reference*](/reference/api.md) +* [*Troubleshooting*](docs-content://troubleshoot/observability/apm-agent-nodejs/apm-nodejs-agent.md) + + + + + + + + + + + + diff --git a/docs/reference/source-maps.md b/docs/reference/source-maps.md new file mode 100644 index 0000000000..1cf3e5efd5 --- /dev/null +++ b/docs/reference/source-maps.md @@ -0,0 +1,37 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/source-maps.html +--- + +# Source map support [source-maps] + +The Elastic APM Node.js agent supports source maps by default. If you transpile your source code and supply a source map, the agent will be able to collect the correct stack traces and even the original source code if available. + +To take advantage of this, simply make sure that your transpiled source code contains a `sourceMappingURL` comment at the bottom of each JavaScript file. It can either point to a source map file on disk: + +```js +//# sourceMappingURL=/path/to/file.js.map +``` + +Or you can inline the source map using base64 encoding: + +```js +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlcyI6WyJmb28uanMiLCJiYXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O1VBQ0c7Ozs7Ozs7Ozs7Ozs7O3NCQ0RIO3NCQUNBIn0= +``` + +All modern build toolchains support generating source maps and adding these comments to the transpiled source code. + + +## Original source code [original-source-code] + +Elastic APM uses source maps for two purposes: to collect stack traces that point to your original source code, *and* to collect the original source code as inline code snippets related to each frame in your stack traces. + +For optimal support, we recommend that you either inline the original source code using the `sourcesContent` property inside the source map, or that you deploy the original source code to your production server along with the transpiled source code. + +If you choose to deploy the original source code, make sure that it’s accessible via the file system at the path specified with the `sourceRoot` property in the source map. + + +## Public access? [public-access] + +Your source maps or original source code **does not** need to be available via the internet. Everything is handled by the local Node.js agent on your server. + diff --git a/docs/reference/span-api.md b/docs/reference/span-api.md new file mode 100644 index 0000000000..1e1448ac2c --- /dev/null +++ b/docs/reference/span-api.md @@ -0,0 +1,215 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/span-api.html +--- + +# Span API [span-api] + +A span measures the duration of a single event. When a span is created it will measure the time until [`span.end()`](#span-end) is called. + +To get a `Span` object, you need to call [`apm.startSpan()`](/reference/agent-api.md#apm-start-span). + +To see an example of using custom spans, see the [Custom Spans in Node.js](/reference/custom-spans.md) article. + +## `span.transaction` [span-transaction] + +Added in: v0.1.0 + +* **Type:** Transaction + +A reference to the parent transaction object. + +All spans belong to a transaction. + + +## `span.name` [span-name] + +Added in: v0.1.0 + +* [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) **Default:** `unnamed` + +The name of the span. This can also be set via [`apm.startSpan()`](/reference/agent-api.md#apm-start-span). + + +## `span.type` [span-type] + +Added in: v0.1.0 + +Split components into `type`, `subtype` and `action` in: v3.0.0 + +* [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) **Default:** `custom` + +The type of span. This can also be set via [`apm.startSpan()`](/reference/agent-api.md#apm-start-span). + +The type is used to group similar spans together. For instance, all spans of MySQL queries are given the type `db`, with a subtype of `mysql` and an action of `query`. + +In the above example, `db` is considered the type. Though there are no naming restrictions for the type, the following are standardized across all Elastic APM agents: `app`, `db`, `cache`, `template`, and `ext`. + + +## `span.subtype` [span-subtype] + +Added in: v0.1.0 + +* [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) **Default:** `custom` + +The subtype of the span. This can also be set via [`apm.startSpan()`](/reference/agent-api.md#apm-start-span). + +The subtype is typically the name of a module or library. For example, MySQL queries have a subtype of `mysql`. + + +## `span.action` [span-action] + +Added in: v0.1.0 + +* [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) **Default:** `custom` + +The action of the span. This can also be set via [`apm.startSpan()`](/reference/agent-api.md#apm-start-span). + +The action is typically a specific function name or a general description of specific functionality. For example, a database query would generally have an action of `query`. + + +## `span.traceparent` [span-traceparent] + +Added in: v2.9.0 + +Get the serialized traceparent string of the span. + + +## `span.setLabel(name, value[, stringify = true])` [span-set-label] + +Added in: v2.1.0
Renamed from `span.setTag()` to `span.setLabel()`: v2.10.0
Added `stringify` argument in: v3.11.0 + +* `name` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) Any periods (`.`), asterisks (`*`), or double quotation marks (`"`) will be replaced by underscores (`_`), as those characters have special meaning in Elasticsearch +* `value` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) | [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) If the `stringify` argument is not given, or set to `true` then the given value will be converted to a string. +* `stringify` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) This defaults to `true` for backwards compatibility, but new usage will typically want `false`. When true, if a non-string `value` is given, it is converted to a string before being sent to the APM Server. + +```js +span.setLabel('productId', 42, false); +``` + +Set a label on the span. You can set multiple labels on the same span. + +::::{tip} +Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable (as opposed to data set via [`apm.setCustomContext()`](/reference/agent-api.md#apm-set-custom-context)). Before using custom labels, ensure you understand the different types of [metadata](docs-content://solutions/observability/apps/metadata.md) that are available. +:::: + + +::::{warning} +Avoid defining too many user-specified labels. Defining too many unique fields in an index is a condition that can lead to a [mapping explosion](docs-content://manage-data/data-store/mapping.md#mapping-limit-settings). +:::: + + + +## `span.addLabels({ [name]: value }[, stringify = true])` [span-add-labels] + +Added in: v2.1.0
Renamed from `span.addTags()` to `span.addLabels()`: v2.10.0
Added `stringify` argument in: v3.11.0 + +* `labels` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) Contains key/value pairs: + + * `name` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) Any periods (`.`), asterisks (`*`), or double quotation marks (`"`) will be replaced by underscores (`_`), as those characters have special meaning in Elasticsearch + * `value` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) | [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) If the `stringify` argument is not given, or set to `true` then the given value will be converted to a string. + +* `stringify` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) This defaults to `true` for backwards compatibility, but new usage will typically want `false`. When true, if a non-string `value` is given, it is converted to a string before being sent to the APM Server. + +```js +span.addLabels({productId: 42, productName: 'butter'}, false); +``` + +Add several labels on the span. You can add labels multiple times. + +::::{tip} +Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable (as opposed to data set via [`apm.setCustomContext()`](/reference/agent-api.md#apm-set-custom-context)). Before using custom labels, ensure you understand the different types of [metadata](docs-content://solutions/observability/apps/metadata.md) that are available. +:::: + + +::::{warning} +Avoid defining too many user-specified labels. Defining too many unique fields in an index is a condition that can lead to a [mapping explosion](docs-content://manage-data/data-store/mapping.md#mapping-limit-settings). +:::: + + + +## `span.ids` [span-ids] + +Added in: v2.17.0 + +Produces an object containing `span.id` and `trace.id`. This enables log correlation to APM traces with structured loggers. + +```js +{ + "trace.id": "abc123", + "span.id": "abc123" +} +``` + + +## `span.end([endTime])` [span-end] + +Added in: v0.1.0 + +* `endTime` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) The time when the span ended. Must be a Unix Time Stamp representing the number of milliseconds since January 1, 1970, 00:00:00 UTC. Sub-millisecond precision can be achieved using decimals. If not provided, the current time will be used + +End the span. If the span has already ended, nothing happens. + + +## `span.outcome` [span-outcome] + +Added in: v3.12.0 + +The Node.js agent automatically sets an `outcome` property on spans. This property will be one of three values: + +* `success`: Indicates the span’s operation was a success. +* `failure`: Indicates the span’s operation was *not* a success. +* `unknown`: Indicates the agent was unable to determine whether the span’s operation was a success or not. An `unknown` outcome removes a transaction from error rate considerations. + +What constitutes a success or failure will depend on the span type. + +For the general case, a span’s outcome is considered a failure if the Node.js agent captures an error during the execution of the work a span represents. + +However, for exit spans that represent an HTTP request, the `outcome` is based on the status code of the HTTP response. A status code less than `400` is considered a success. A status code greater or equal to `400` is considered a failure. + + +## `span.setOutcome(outcome)` [span-setoutcome] + +Added in: v3.12.0 + +* `outcome` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) + +The `setOutcome` method allows an end user to override the Node.js agent’s default setting of a span’s `outcome` property. The `setOutcome` method accepts a string of either `success`, `failure`, or `unknown`, and will force the agent to report this value for a specific span. + + +## `span.setServiceTarget(type, name)` [span-setservicetarget] + +Added in: v3.39.0 + +* `type` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | null The target service type, usually the same value as `span.subtype`, e.g. "mysql". +* `name` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | null The target service name, an optional scoping of the service. For databases it is typically the database name. + +Manually set the `service.target.type` and `service.target.name` fields that identify a downstream service. They are used for [Service Maps](docs-content://solutions/observability/apps/service-map.md) and [Dependencies](docs-content://solutions/observability/apps/dependencies.md) in the Kibana APM app. The values are only used for "exit" spans — spans representing outgoing communication, marked with `exitSpan: true` at span creation. + +If false-y values (e.g. `null`) are given for both `type` and `name`, then `service.target` will explicitly be excluded from this span. This may impact Service Maps and other Kibana APM app reporting for this service. + +If this method is not called, the service target values are inferred from other span fields ([spec](https://github.com/elastic/apm/blob/main/specs/agents/tracing-spans-service-target.md#field-values)). + +`service.target.*` fields are ignored for APM Server before v8.3. + + +## `span.addLink(link)` [span-addlink] + +Added in: v4.7.0 + +* `link` `{{type-link}}` + +A span can refer to zero or more other transactions or spans (separate from its parent). Span links will be shown in the Kibana APM app trace view. The `link` argument is an object with a single "context" field that is a `Transaction`, `Span`, OpenTelemetry `SpanContext` object, or W3C trace-context *traceparent* string. For example: `span.addLink({ context: anotherSpan })`. + + +## `span.addLinks([links])` [span-addlinks] + +Added in: v4.7.0 + +* `links` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) Span links. + +Add span links to this span. + +A span can refer to zero or more other transactions or spans (separate from its parent). Span links will be shown in the Kibana APM app trace view. The `link` argument is an object with a single "context" field that is a `Transaction`, `Span`, OpenTelemetry `SpanContext` object, or W3C trace-context *traceparent* string. For example: `span.addLinks([{ context: anotherSpan }])`. + + diff --git a/docs/reference/starting-agent.md b/docs/reference/starting-agent.md new file mode 100644 index 0000000000..3c7b11c398 --- /dev/null +++ b/docs/reference/starting-agent.md @@ -0,0 +1,260 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/starting-the-agent.html +--- + +# Starting the agent [starting-the-agent] + +There are a few ways to start the Node.js APM agent. Choose the one that works best for you. The most important considerations for selecting a method are: + +* ensuring the APM agent starts early enough, and +* having a convenient way to configure the agent. + +For the Node.js APM agent to be able to fully function, it **must be started before `require(...)` statements for other modules**. The APM agent automatically instruments modules by interposing itself in the import process. If a given module is imported before the APM agent has started, then it won’t be able to instrument that module. + +## Start methods [_start_methods] + +### `require('elastic-apm-node').start(...)` [start-option-require-and-start] + +The most common way to start the APM agent is to require the `elastic-apm-node` module and call the [`.start()`](/reference/agent-api.md#apm-start) method at the top of your main module. This allows you to use any of the methods to [configure the agent](/reference/configuring-agent.md). + +```js +const apm = require('elastic-apm-node').start({ + // Add configuration options here. +}); + +// Application main code goes here. +``` + + +### `require('elastic-apm-node/start')` [start-option-require-start-module] + +Another way to start the agent is with the `elastic-apm-node/start` module that imports and *starts* the agent. + +```js +const apm = require('elastic-apm-node/start'); + +// Application main code goes here. +``` + +This start method exists for those that use a tool like Babel or esbuild to translate/transpile from code using ES modules (as in the following example) to code using CommonJS. It ensures that the APM agent is started before other imports in the same file. See [Hoisted ES module imports](#start-esm-imports) below for details. + +```js +import 'elastic-apm-node/start.js'; + +// Application main code goes here. +``` + +A limitation of this approach is that you cannot configure the agent with an options object, but instead have to rely on [one of the other methods of configuration](/reference/configuring-agent.md), such as setting `ELASTIC_APM_...` environment variables. + +Note: As of elastic-apm-node version 3.47.0, the "elastic-apm-node/start.js" will **not start the agent in a Node.js Worker thread.** + + +### `node -r elastic-apm-node/start.js ...` [start-option-node-require-opt] + +Another way to start the agent is with the `-r elastic-apm-node/start.js` [command line option to `node`](https://nodejs.org/api/cli.md#-r---require-module). This will load and start the APM agent before your application code starts. This method allows you to enable the agent *without touching any code*. This is the recommended start method for [monitoring AWS Lambda functions](/reference/lambda.md) and for tracing [a Next.js server](/reference/nextjs.md). + +```bash +node -r elastic-apm-node/start.js app.js +``` + +The `-r, --require` option can also be specified via the [`NODE_OPTIONS` environment variable](https://nodejs.org/api/cli.md#node_optionsoptions): + +```bash +# export ELASTIC_APM_... # Configure the agent with envvars. +export NODE_OPTIONS='-r elastic-apm-node/start.js' +node app.js +``` + +Note: As of elastic-apm-node version 3.47.0, the "elastic-apm-node/start.js" will **not start the agent in a [Node.js Worker thread](https://nodejs.org/api/worker_threads.md).** New Worker threads inherit the `process.execArgv` and environment, so "elastic-apm-node/start.js" is executed again. Starting a new APM agent in each Worker thread because of "start.js" is deemed surprise, so is disabled for now. + + +### Separate APM init module [start-option-separate-init-module] + +If you want to avoid [the gotcha with hoisted ES modules](#start-esm-imports) but still want the flexibility of passing a config object to the [agent start method](/reference/agent-api.md#apm-start), then a good option is to write a separate JavaScript or TypeScript module that starts the agent, and import **that** init module at the top of your main file. For example: + +```ts +// initapm.ts +import apm from 'elastic-apm-node'; +apm.start({ + serverUrl: 'https://...', + secretToken: '...', + // ... +}) +``` + +```ts +// main.ts +import 'initapm' + +// Application code starts here. +``` + + + +## Start gotchas [start-gotchas] + +This section shows some sometimes subtle surprises starting the APM agent with some technologies. A general troubleshooting tip for using the agent with any build tool/system that produces compiled JavaScript is to look at the compiled JavaScript to see what is actually being executed by `node`. + +### Hoisted ES module imports [start-esm-imports] + +When using a tool like Babel or esbuild to translate/transpile from code using ES modules (i.e. `import ...` statements) to code using CommonJS (i.e. `require(...)`), all imports are "hoisted" to the top of a module, properly following ECMAScript module (ESM) semantics. This means the `apm.start()` method is called too late—**after** the `http` module has been imported. + +For example, running Babel on the following code does not initiate APM early enough: + +```js +import apm from 'elastic-apm-node'; +apm.start() // This does not work. + +import http from 'http'; +// ... +``` + +Babel translates this to the equivalent of: + +```js +var apm = require('elastic-apm-node'); +var http = require('http'); +apm.start() // This is started too late. +// ... +``` + +The [the `elastic-apm-node/start` module](#start-option-require-start-module) fixes this problem. The following will work: + +```js +import 'elastic-apm-node/start'; // This works. +import http from 'http'; +// ... +``` + +A more complete example using Babel is [here](https://github.com/elastic/apm-agent-nodejs/tree/main/test/babel). + +The same is true for ES module usage translated by esbuild (as explained well in [the esbuild docs here](https://esbuild.github.io/content-types/#real-esm-imports)). Notably, TypeScript does *not* following ECMAScript module semantics in this regard. + +Another good option is [to use a separate APM init module](#start-option-separate-init-module) and import that first. + + +### TypeScript gotcha [start-typescript] + +TypeScript is a language that compiles to JavaScript, via the `tsc` TypeScript compiler, and is then executed via `node` (or some other JavaScript interpreter). Sometimes the produced JavaScript has a gotcha for using this APM agent. TypeScript assumes that module imports do not have side-effects, so it will [elide the following import](https://github.com/Microsoft/TypeScript/wiki/FAQ#why-are-imports-being-elided-in-my-emit) if the `apm` variable is not used: + +```js +import apm from 'elastic-apm-node/start'; // Be careful +``` + +One can avoid that elision with: + +```js +import 'elastic-apm-node/start'; +``` + +Or with something like this: + +```js +import apm from 'elastic-apm-node/start'; apm; // Ensure import is kept for its side-effect. +``` + +TypeScript 5.0 [introduced a `--verbatimModuleSyntax`](https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/#verbatimmodulesyntax) option that avoids this elision. + + +### Bundlers and APM [start-bundlers] + +JavaScript Bundlers are tools that bundle up a number of JavaScript files into one, or a few, JavaScript files to be executed. Often they also include other features such as compilation (from newer to older JavaScript syntax, from TypeScript), tree-shaking (removing sections of code that are unused), minifying, bundling of CSS/images, etc. There are many bundler tools, including: [Webpack](https://webpack.js.org/), [esbuild](https://esbuild.github.io/), [Rollup](https://rollupjs.org/), [Parcel](https://parceljs.org/). + +The main use case for bundlers is for improving performance in *browser apps*, where reducing the size and number of separate files helps with network and CPU overhead. The use case is typically less strong for server-side JavaScript code executed with `node`. However, some tooling will use bundlers for server-side JavaScript, not necessarily for the *bundling* but for some of the other features. + +Unfortunately, **using a bundler typically breaks the APM agent**. Bundling multiple modules into a single file necessarily means replacing `require(...)` calls with custom bundler code that handles returning the module object. But the APM agent relies on those `require(...)` calls to instrument a module. There is no automatic fix for this. The workaround is to: + +1. exclude the `elastic-apm-node` APM agent module from the bundle; and +2. optionally exclude other modules from the bundle that you would like the APM agent to instrument. + +"Excluding" a module *foo* from the bundle (Webpack calls these "externals") means that a `require('foo')` expects "node_modules/foo/…​" to exist at runtime. This means that you need to deploy both your bundle file(s) *and* the excluded modules. This may or may not defeat your reasons for using a bundler. + +The rest of this section shows how to configure externals with various bundlers. If you know of a mechanism for a bundler that we haven’t documented, please [let us know.](https://github.com/elastic/apm-agent-nodejs/blob/main/CONTRIBUTING.md#contributing-to-the-apm-agent) + + +### Webpack [start-webpack] + +Webpack supports ["externals"](https://webpack.js.org/configuration/externals/) configuration options to exclude specific modules from its bundle. At a minimum, the *elastic-apm-agent* module must be made external. In addition, any modules that you want the APM agent to instrument (e.g. a database client) must also be made external. The easiest way to do this is to **use the [*webpack-node-externals*](https://github.com/liady/webpack-node-externals) module to make all of "node_modules/…​" external**. + +For webpack@5 ensure your "webpack.config.js" has the following: + +```js +const nodeExternals = require('webpack-node-externals'); + +module.exports = { + // ... + + // Set these so Webpack emits code using Node's CommonJS + // require functions and knows to use Node's core modules. + target: 'node', + externalsPresets: { + node: true + }, + + // This tells Webpack to make everything under + // "node_modules/" external. + externals: [nodeExternals()], +}; +``` + +For webpack@4, the `externalsPresets` config var does not exist, so use: + +```js +const nodeExternals = require('webpack-node-externals'); + +module.exports = { + // ... + + target: 'node', + externals: [nodeExternals()], +}; +``` + + +### esbuild [start-esbuild] + +Esbuild supports marking modules/files as ["external"](https://esbuild.github.io/api/#external) to the bundle. At a minimum, the *elastic-apm-agent* module must be made external for the APM agent to work. In addition, any modules that you want the APM agent to instrument (e.g. a database client) must also be made external. + +Here is an example build script for "package.json" to bundle a Node.js application (with "src/index.js" as the entry point, targetting node v14.x, and ensuring that the `pg` PostgreSQL module is instrumented): + +```json +{ + "scripts": { + "build": "esbuild src/index.js --outdir=dist --bundle --sourcemap --minify --platform=node --target=node14 --external:elastic-apm-node --external:pg" + } +} +``` + +This can be invoked via: + +```bash +npm run build +``` + +Or the esbuild configuration can be put into a build script and invoked via `node esbuild.build.js`. + +```js +// esbuild.build.js +require('esbuild').build({ + entryPoints: ['./src/index.js'], + outdir: 'dist', + bundle: true, + platform: 'node', + target: 'node14', + sourcemap: true, + minify: true, + external: ['elastic-apm-node', 'pg'] +}).catch(() => process.exit(1)) +``` + +An alternative to manually listing specific dependencies as "external" is to use the following esbuild option to exclude **all** dependencies: + +```bash +esbuild ... --external:'./node_modules/*' +``` + +A more complete example using esbuild and the APM agent is [here](https://github.com/elastic/apm-agent-nodejs/tree/main/examples/esbuild/). + + + diff --git a/docs/reference/supported-technologies.md b/docs/reference/supported-technologies.md new file mode 100644 index 0000000000..bf0cf1960c --- /dev/null +++ b/docs/reference/supported-technologies.md @@ -0,0 +1,140 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/supported-technologies.html +--- + +# Supported technologies [supported-technologies] + +The Elastic APM Node.js Agent automatically instruments various APIs in Node.js core and third-party frameworks and packages. This page lists all supported technologies and version ranges. + + +## Node.js versions [compatibility-node] + +Support for the Elastic APM Node.js agent follows the [support schedule of Node.js itself](https://nodejs.org/en/about/releases/) to the end-of-life period of each version after its maintenance term. Versions of Node.js past their end-of-life date are not supported. + +:::{image} images/node_release_schedule.svg +:alt: Node.js release schedule +::: + +APM agent 4.x releases work with Node.js versions 14.17.0 and later. APM agent 3.x maintenance releases work with Node.js versions 8.6 and later. We will only break support for older Node.js versions with a major version release of the APM agent. + + +## ECMAScript Modules (ESM) [compatibility-esm] + +Beginning with version v3.48.0, the Elastic APM Node.js agent includes *limited and experimental* support for instrumenting [ECMAScript module imports](https://nodejs.org/api/esm.html#modules-ecmascript-modules), i.e. modules that are loaded via `import ...` statements and `import('...')` (dynamic import). See the [*ECMAScript module support*](/reference/esm.md) document for details. + +Note: If you are using TypeScript or JavaScript that is *compiled/translated/transpiled to CommonJS-using JavaScript* via tools like Babel, Webpack, esbuild, etc., then using `import ...` in your source code is fine. To ensure your compiler is generating JS that uses CommonJS imports, use the following settings: + +* For TypeScript, use [`"module": "commonjs"` in your "tsconfig.json"](https://www.typescriptlang.org/tsconfig#module) (a [complete tsconfig.json example](https://github.com/tsconfig/bases/blob/main/bases/node16.json)). +* For Babel, use [`"modules": "commonjs"` in your Babel config](https://babeljs.io/docs/en/babel-preset-env#modules) ([for example](https://github.com/elastic/apm-agent-nodejs/blob/main/test/babel/.babelrc)). +* For Webpack, use `target: 'node', externalsPresets: { node: true }` in your "webpack.config.js". +* For esbuild, use `--platform=node --target=node...` options to `esbuild` ([for example](https://github.com/elastic/apm-agent-nodejs/blob/main/examples/esbuild/package.json#L7)). + + +## Elastic Stack Compatibility [elastic-stack-compatibility] + +This agent is compatible with [APM Server](docs-content://solutions/observability/apps/application-performance-monitoring-apm.md) v6.6 and above. + + +## Frameworks [compatibility-frameworks] + +Though you can use Elastic APM [with any Node.js framework](/reference/custom-stack.md), we automate a few things for the most popular Node.js modules. These are the frameworks that we officially support: + +| Framework | Version | Note | +| --- | --- | --- | +| [AWS Lambda](/reference/lambda.md) | N/A | | +| [Azure Functions](/reference/azure-functions.md) | v3, v4 | [Node.js programming model v3 and v4](https://learn.microsoft.com/en-us/azure/azure-functions/functions-node-upgrade-v4) | +| [Express](/reference/express.md) | ^4.0.0 | | +| [Fastify](/reference/fastify.md) | >=1.0.0 | See also [Fastify’s own LTS documentation](https://www.fastify.io/docs/latest/Reference/LTS/) | +| [@hapi/hapi](/reference/hapi.md) | >=17.9.0 <22.0.0 | | +| [Koa](/reference/koa.md) via koa-router or @koa/router | >=5.2.0 <14.0.0 | Koa doesn’t have a built in router, so we can’t support Koa directly since we rely on router information for full support. We currently support the most popular Koa router called [koa-router](https://github.com/koajs/koa-router). | +| [Next.js](/reference/nextjs.md) | >=12.0.0 <13.3.0 | (Technical Preview) This instruments Next.js routing to name transactions for incoming HTTP transactions; and reports errors in user pages. It supports the Next.js production server (`next start`) and development server (`next dev`). See the [Getting Started document](/reference/nextjs.md). | +| [Restify](/reference/restify.md) | >=5.2.0 <12.0.0 | | + + +## OpenTelemetry [compatibility-opentelemetry] + +The Node.js Elastic APM agent supports usage of the OpenTelemetry Tracing API via its [*OpenTelemetry bridge*](/reference/opentelemetry-bridge.md). As well, it instruments the OpenTelemetry Metrics API and Metrics SDK to allow [usage of the OpenTelemetry Metrics API](/reference/opentelemetry-bridge.md#otel-metrics-api). + +| Framework | Version | +| --- | --- | +| [@opentelemetry/api](/reference/opentelemetry-bridge.md) | >=1.0.0 <1.10.0 | +| [@opentelemetry/sdk-metrics](https://www.npmjs.com/package/@opentelemetry/sdk-metrics) | >=1.11.0 <2 | + + +## Custom Transactions [compatibility-custom-transactions] + +By default transactions are named based on their matched HTTP route if the framework used is listed above. These modules override that behavior to give better insights into specialized HTTP servers: + +| Module | Version | Note | +| --- | --- | --- | +| [express-graphql](https://www.npmjs.com/package/express-graphql) | >=0.6.1 <0.13.0 | Will name all transactions by the GraphQL query name. There is a [known issue with node <10.4](https://github.com/elastic/apm-agent-nodejs/issues/2516). This module is deprecated and is no longer tested. | +| [apollo-server-express](https://www.npmjs.com/package/apollo-server-express) | >=2.0.4 <4 | Will name all transactions by the GraphQL query name. Versions before 2.9.6 are no longer tested. | +| [@apollo/server](https://www.npmjs.com/package/@apollo/server) | >=4.0.0 | Will name all transactions by the GraphQL query name | + + +## Tracing and Instrumentation [compatibility-tracing-and-instrumentation] + +The Node.js agent will automatically instrument the following modules to give you detailed performance metrics: + +| Module | Version | Note | +| --- | --- | --- | +| [aws-sdk](https://www.npmjs.com/package/aws-sdk) | >=2.858.0 <3 | Will instrument SQS send/receive/delete messages, all S3 methods, all DynamoDB methods, and the SNS publish method | +| [@aws-sdk/client-s3](https://www.npmjs.com/package/@aws-sdk/client-s3) | >=3.15.0 <4 | Will instrument all S3 methods | +| [@aws-sdk/client-sns](https://www.npmjs.com/package/@aws-sdk/client-s3) | >=3.15.0 <4 | Will instrument the SNS publish method | +| [@aws-sdk/client-sqs](https://www.npmjs.com/package/@aws-sdk/client-s3) | >=3.15.0 <4 | Will instrument SQS send/receive/delete messages | +| [@aws-sdk/client-dynamodb](https://www.npmjs.com/package/@aws-sdk/client-dynamodb) | >=3.15.0 <4 | Will instrument all DynamoDB methods | +| [cassandra-driver](https://www.npmjs.com/package/cassandra-driver) | >=3.0.0 <5 | Will instrument all queries | +| [elasticsearch](https://www.npmjs.com/package/elasticsearch) | >=8.0.0 | Will instrument all queries | +| [@elastic/elasticsearch](https://www.npmjs.com/package/@elastic/elasticsearch) | >=7.0.0 <9.0.0 | Will instrument all queries | +| [graphql](https://www.npmjs.com/package/graphql) | >=0.7.0 <17 | Will instrument all queries | +| [handlebars](https://www.npmjs.com/package/handlebars) | * | Will instrument compile and render calls | +| [jade](https://www.npmjs.com/package/jade) | >=0.5.6 | Will instrument compile and render calls; Deprecated. No longer tested. Use pug. | +| [pug](https://www.npmjs.com/package/pug) | >=0.1.0 | Will instrument compile and render calls | +| [ioredis](https://www.npmjs.com/package/ioredis) | >=2.0.0 <6.0.0 | Will instrument all queries | +| [memcached](https://www.npmjs.com/package/memcached) | >=2.2.0 | Will instrument all commands. | +| [mongodb-core](https://www.npmjs.com/package/mongodb-core) | >=1.2.19 <4 | Will instrument all queries.A lot of higher level MongoDB modules use mongodb-core,so those should be supported as well. | +| [mongodb](https://www.npmjs.com/package/mongodb) | >=2.0.0 <3.3.0 | Supported via mongodb-core | +| [mongodb](https://www.npmjs.com/package/mongodb) | >=3.3.0 <7 | Will instrument all queries | +| [mongojs](https://www.npmjs.com/package/mongojs) | >=1.0.0 <2.7.0 | Supported via mongodb-core | +| [mongoose](https://www.npmjs.com/package/mongoose) | >=4.0.0 <5.7.0 | Supported via mongodb-core | +| [mongoose](https://www.npmjs.com/package/mongoose) | >=5.7.0 <8 | Supported via mongodb | +| [mysql](https://www.npmjs.com/package/mysql) | ^2.0.0 | Will instrument all queries | +| [mysql2](https://www.npmjs.com/package/mysql2) | >=1.0.0 <4.0.0 | Will instrument all queries | +| [pg](https://www.npmjs.com/package/pg) | >=4.0.0 <9.0.0 | Will instrument all queries | +| [redis](https://www.npmjs.com/package/redis) | >=2.0.0 <5.0.0 | Will instrument all queries | +| [tedious](https://www.npmjs.com/package/tedious) | >=1.9 <20.0.0 | (Excluding v4.0.0.) Will instrument all queries | +| [undici](https://www.npmjs.com/package/undici) | >=4.7.1 <8 | Will instrument undici HTTP requests, except HTTP CONNECT. Requires node v14.17.0 or later, or the user to have installed the [*diagnostics_channel* polyfill](https://www.npmjs.com/package/diagnostics_channel). | +| [ws](https://www.npmjs.com/package/ws) | >=1.0.0 <8.0.0 | Will instrument outgoing WebSocket messages | +| [kafkajs](https://www.npmjs.com/package/kafkajs) | >=2.0.0 <3.0.0 | Will instrument all send methods for producers and message and batch processing for consumers. | + + +## Better Stack Traces [compatibility-better-stack-traces] + +The APM agent [can be configured](/reference/configuration.md#span-stack-trace-min-duration) to capture span stack traces, to show where in your code a span (e.g. for a database query) was initiated. + +Given the async nature of Node.js, it’s not possible for the APM agent to see further back than the last async boundary. Modules that happen to have an async boundary between a call from your application code and the action that leads to an APM span will limit the utility of these span stack traces. + +The modules listed below are those that the APM agent instruments to provide more useful span stack traces — ones that point to your application code — when enabled. + +If you don’t see your own code in spans, please create a new topic in the [Elastic APM discuss forum](https://discuss.elastic.co/c/apm) and include information about your dependencies. + +| Module | Version | Note | +| --- | --- | --- | +| [knex](https://www.npmjs.com/package/knex) | >=0.10.0 <4.0.0 | Provides better span stack traces for *pg* and *mysql* spans. | + + +## Continuity [compatibility-continuity] + +The Elastic APM agent monitors async operations in your Node.js application to maintain awareness of which request is the active request at any given time. Certain modules can interfere with this monitoring if not handled properly. + +Below is a list of modules known to cause issues with this monitoring. The versions listed are the versions we support. If you use an unsupported version you might experience missing spans. This does not impact the stability of your application in any way - only the collected metrics. + +If you do experience missing spans in your performance metrics, please create a new topic in the [Elastic APM discuss forum](https://discuss.elastic.co/c/apm) and include information about your dependencies and what data is missing. + +| Module | Version | Note | +| --- | --- | --- | +| [bluebird](https://www.npmjs.com/package/bluebird) | >=2.0.0 <4.0.0 | | +| [generic-pool](https://www.npmjs.com/package/generic-pool) | ^2.0.0 || ^3.1.0 | Usedby a lot of database modules like for instance "pg" | +| [express-queue](https://www.npmjs.com/package/express-queue) | >=0.0.11 <1.0.0 | | + diff --git a/docs/reference/toc.yml b/docs/reference/toc.yml new file mode 100644 index 0000000000..b7c7bee090 --- /dev/null +++ b/docs/reference/toc.yml @@ -0,0 +1,43 @@ +project: 'APM Node.js agent reference' +toc: + - file: index.md + - file: set-up.md + children: + - file: lambda.md + - file: azure-functions.md + - file: express.md + - file: fastify.md + - file: hapi.md + - file: koa.md + - file: nextjs.md + - file: restify.md + - file: typescript.md + - file: custom-stack.md + - file: starting-agent.md + - file: supported-technologies.md + - file: advanced-setup.md + children: + - file: configuring-agent.md + - file: configuration.md + - file: custom-transactions.md + - file: custom-spans.md + - file: api.md + children: + - file: agent-api.md + - file: transaction-api.md + - file: span-api.md + - file: metrics.md + - file: logs.md + - file: opentelemetry-bridge.md + - file: opentracing.md + - file: source-maps.md + - file: esm.md + - file: distributed-tracing.md + - file: message-queues.md + - file: performance-tuning.md + - file: upgrading.md + children: + - file: upgrade-to-v4.md + - file: upgrade-to-v3.md + - file: upgrade-to-v2.md + - file: upgrade-to-v1.md \ No newline at end of file diff --git a/docs/reference/transaction-api.md b/docs/reference/transaction-api.md new file mode 100644 index 0000000000..1563d0086d --- /dev/null +++ b/docs/reference/transaction-api.md @@ -0,0 +1,243 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/transaction-api.html +--- + +# Transaction API [transaction-api] + +A transaction groups multiple spans in a logical group. + +To get a `Transaction` object, you need to call [`apm.startTransaction()`](/reference/agent-api.md#apm-start-transaction). + +To see an example of using custom transactions, see the [Custom Transactions in Node.js](/reference/custom-transactions.md) article. + +## `transaction.name` [transaction-name] + +Added in: v0.1.0 + +* [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) **Default:** `unnamed` + +The name of the transaction. + +Can be used to set or overwrite the name of the transaction (visible in the performance monitoring breakdown). If you don’t have access to the current transaction, you can also set the name using [`apm.setTransactionName()`](/reference/agent-api.md#apm-set-transaction-name). + +Transactions with the same name and [type](#transaction-type) are grouped together. + + +## `transaction.type` [transaction-type] + +Added in: v0.1.0 + +Split components into `type`, `subtype` and `action` in: v3.0.0 + +* [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) **Default:** `custom` + +The type of the transaction. + +There’s a special type called `request` which is used by the agent for the transactions automatically created when an incoming HTTP request is detected. + + +## `transaction.subtype` [v3.25.0] [transaction-subtype] + +Added in: v3.0.0
Deprecated in: v3.25.0 + +* [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) **Default:** `custom` + +The subtype of the transaction. The transaction `subtype` field is deprecated: it is not used and will be removed in the next major version. + + +## `transaction.action` [v3.25.0] [transaction-action] + +Added in: v3.0.0
Deprecated in: v3.25.0 + +* [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) **Default:** `custom` + +The action of the transaction. The transaction `action` field is deprecated: it is not used and will be removed in the next major version. + + +## `transaction.traceparent` [transaction-traceparent] + +Added in: v2.9.0 + +Get the serialized traceparent string of the transaction. + + +## `transaction.result` [transaction-result] + +Added in: v0.1.0 + +* [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) **Default:** `success` + +A string describing the result of the transaction. This is typically the HTTP status code, or e.g. "success" or "failure" for a background task. + + +## `transaction.startSpan([name][, type][, subtype][, action][, options])` [transaction-start-span] + +Added in: v2.0.0 + +Split `type` into `type`, `subtype` and `action` in: v3.0.0 + +* `name` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) The name of the span. You can alternatively set this via [`span.name`](/reference/span-api.md#span-name). **Default:** `unnamed` +* `type` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) The type of the span. You can alternatively set this via [`span.type`](/reference/span-api.md#span-type). +* `subtype` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) The subtype of the span. You can alternatively set this via [`span.subtype`](/reference/span-api.md#span-subtype). +* `action` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) The action of the span. You can alternatively set this via [`span.action`](/reference/span-api.md#span-action). +* `options` - The following options are supported: + + * `startTime` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) The time when the span started. Must be a Unix Time Stamp representing the number of milliseconds since January 1, 1970, 00:00:00 UTC. Sub-millisecond precision can be achieved using decimals. If not provided, the current time will be used + * `exitSpan` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) Make an "exit span". Exit spans represent outgoing communication. They are used to create a node in the [Service Map](docs-content://solutions/observability/apps/service-map.md) and a downstream service in the [Dependencies Table](docs-content://solutions/observability/apps/dependencies.md). The provided subtype will be used as the downstream service name. + * `links` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) Span links. A span can refer to zero or more other transactions or spans (separate from its parent). Span links will be shown in the Kibana APM app trace view. The `links` argument is an array of objects with a single "context" field that is a `Transaction`, `Span`, or W3C trace-context *traceparent* string. For example: `transaction.startSpan('aName', { links: [{ context: anotherSpan }] })`. + + +Start and return a new custom span associated with this transaction. When a span is started it will measure the time until [`span.end()`](/reference/span-api.md#span-end) is called. + +See [Span API](/reference/span-api.md) docs for details on how to use custom spans. + + +## `transaction.setLabel(name, value[, stringify = true])` [transaction-set-label] + +Added in: v0.1.0
Renamed from `transaction.setTag()` to `transaction.setLabel()`: v2.10.0
Added `stringify` argument in: v3.11.0 + +* `name` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) Any periods (`.`), asterisks (`*`), or double quotation marks (`"`) will be replaced by underscores (`_`), as those characters have special meaning in Elasticsearch +* `value` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) | [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) If the `stringify` argument is not given, or set to `true` then the given value will be converted to a string. +* `stringify` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) This defaults to `true` for backwards compatibility, but new usage will typically want `false`. When true, if a non-string `value` is given, it is converted to a string before being sent to the APM Server. + +```js +transaction.setLabel('productId', 42, false); +``` + +Set a label on the transaction. You can set multiple labels on the same transaction. If an error happens during the transaction, it will also get tagged with the same labels. + +::::{tip} +Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable (as opposed to data set via [`apm.setCustomContext()`](/reference/agent-api.md#apm-set-custom-context)). Before using custom labels, ensure you understand the different types of [metadata](docs-content://solutions/observability/apps/metadata.md) that are available. +:::: + + +::::{warning} +Avoid defining too many user-specified labels. Defining too many unique fields in an index is a condition that can lead to a [mapping explosion](docs-content://manage-data/data-store/mapping.md#mapping-limit-settings). +:::: + + + +## `transaction.addLabels({ [name]: value }[, stringify = true])` [transaction-add-labels] + +Added in: v1.5.0
Renamed from `transaction.addTags()` to `transaction.addLabels()`: v2.10.0
Added `stringify` argument in: v3.11.0 + +* `labels` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) Contains key/value pairs: + + * `name` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) Any periods (`.`), asterisks (`*`), or double quotation marks (`"`) will be replaced by underscores (`_`), as those characters have special meaning in Elasticsearch + * `value` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) | [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) If the `stringify` argument is not given, or set to `true` then the given value will be converted to a string. + +* `stringify` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) This defaults to `true` for backwards compatibility, but new usage will typically want `false`. When true, if a non-string `value` is given, it is converted to a string before being sent to the APM Server. + +```js +transaction.addLabels({productId: 42, productName: 'butter'}, false); +``` + +Add several labels on the transaction. You can add labels multiple times. If an error happens during the transaction, it will also get tagged with the same labels. + +::::{tip} +Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable (as opposed to data set via [`apm.setCustomContext()`](/reference/agent-api.md#apm-set-custom-context)). Before using custom labels, ensure you understand the different types of [metadata](docs-content://solutions/observability/apps/metadata.md) that are available. +:::: + + +::::{warning} +Avoid defining too many user-specified labels. Defining too many unique fields in an index is a condition that can lead to a [mapping explosion](docs-content://manage-data/data-store/mapping.md#mapping-limit-settings). +:::: + + + +## `transaction.ensureParentId()` [transaction-ensure-parent-id] + +Added in: v2.0.0 + +* [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) + +If the transaction does not already have a parent id, calling this method generates a new parent id, sets it as the parent id of this transaction, and returns it as a [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type). + +This enables the correlation of the spans the JavaScript Real User Monitoring (RUM) agent creates for the initial page load with the transaction of the backend service. If your backend service generates the HTML page dynamically, initializing the JavaScript RUM agent with the value of this method allows analyzing the time spent in the browser vs in the backend services. + +To enable the JavaScript RUM agent, add a snippet similar to this to the body of your HTML page, preferably before other JavaScript libraries: + +```js +elasticApm.init({ + serviceName: 'my-frontend-app', // Name of your frontend app + serverUrl: 'https://example.com:8200', // APM Server host + pageLoadTraceId: '${transaction.traceId}', + pageLoadSpanId: '${transaction.ensureParentId()}', + pageLoadSampled: ${transaction.sampled} +}) +``` + +See the [JavaScript RUM agent documentation](apm-agent-rum-js://reference/index.md) for more information. + + +## `transaction.ids` [transaction-ids] + +Added in: v2.17.0 + +Produces an object containing `transaction.id` and `trace.id`. This enables log correlation to APM traces with structured loggers. + +```js +{ + "trace.id": "abc123", + "transaction.id": "abc123" +} +``` + + +## `transaction.end([result][, endTime])` [transaction-end] + +Added in: v0.1.0 + +* `result` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) Describes the result of the transaction. This is typically the HTTP status code, or e.g. "success" or "failure" for a background task +* `endTime` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) The time when the transaction ended. Must be a Unix Time Stamp representing the number of milliseconds since January 1, 1970, 00:00:00 UTC. Sub-millisecond precision can be achieved using decimals. If not provided, the current time will be used + +Ends the transaction. If the transaction has already ended, nothing happens. + +Alternatively you can call [`apm.endTransaction()`](/reference/agent-api.md#apm-end-transaction) to end the active transaction. + + +## `transaction.outcome` [transaction-outcome] + +Added in: v3.12.0 + +The Node.js agent automatically sets an `outcome` property on transactions. This property will be one of three values: + +* `success`: Indicates the transaction’s operation was a success. +* `failure`: Indicates the transaction’s operation was *not* a success. +* `unknown`: Indicates we were unable to determine if the transaction’s operation was a success or not. An `unknown` outcome removes a transaction from error rate considerations. + +A transaction is considered a success if the underlying HTTP request handling produces a response with a status code that is less than `500`. A status code of `500` or greater is considered a failure. + +Non-HTTP transactions will begin with an outcome of `unknown`. + + +## `transaction.setOutcome(outcome)` [transaction-setoutcome] + +Added in: v3.12.0 + +* `outcome` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) + +The `setOutcome` method allows an end user to override the Node.js agent’s default setting of a transaction’s `outcome` property. The `setOutcome` method accepts a string of either `success`, `failure`, or `unknown`, and will force the agent to report this value for a specific span. + + +## `transaction.addLink(link)` [transaction-addlink] + +Added in: v4.7.0 + +* `link` `{{type-link}}` + +A transaction can refer to zero or more other transactions or spans (separate from its parent). Span links will be shown in the Kibana APM app trace view. The `link` argument is an object with a single "context" field that is a `Transaction`, `Span`, OpenTelemetry `SpanContext` object, or W3C trace-context *traceparent* string. For example: `transaction.addLink({ context: anotherSpan })`. + + +## `transaction.addLinks([links])` [transaction-addlinks] + +Added in: v4.7.0 + +* `links` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) Span links. + +Add span links to this transaction. + +A transaction can refer to zero or more other transactions or spans (separate from its parent). Span links will be shown in the Kibana APM app trace view. The `link` argument is an object with a single "context" field that is a `Transaction`, `Span`, OpenTelemetry `SpanContext` object, or W3C trace-context *traceparent* string. For example: `transaction.addLinks([{ context: anotherSpan }])`. + + diff --git a/docs/reference/typescript.md b/docs/reference/typescript.md new file mode 100644 index 0000000000..860a432f53 --- /dev/null +++ b/docs/reference/typescript.md @@ -0,0 +1,76 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/typescript.html +--- + +# Get started with TypeScript [typescript] + +The Elastic APM Node.js agent is implemented in vanilla JavaScript, but includes TypeScript types. This document shows how to integrate the APM agent with your TypeScript project. + +A small, complete example project can be found [here](https://github.com/elastic/apm-agent-nodejs/tree/main/examples/typescript). + + +## Installation [typescript-installation] + +Add `elastic-apm-node` as a dependency to your application, and possibly `@types/node` as a dev-dependency for type checking: + +```bash +npm install --save elastic-apm-node +npm install --save-dev @types/node <1> +``` + +1. Installing `@types/node` can be skipped if you use [`skipLibCheck: true`](https://www.typescriptlang.org/tsconfig#skipLibCheck) in your "tsconfig.json". + + + +## tsconfig compiler options [typescript-tsconfig] + +The TypeScript authors strongly recommend that you use the [`"esModuleInterop": true`](https://www.typescriptlang.org/tsconfig/#esModuleInterop) option in your "tsconfig.json". In case you do not, then the "default" import of the agent will not work, so instead of using `import apm from 'elastic-apm-node/start'` or similar, you will have to use: + +```js +import * as apm from 'elastic-apm-node/start' // if using esModuleInterop:false +``` + +Currently the Elastic APM Node.js agent [does not support instrumenting ECMA Script modules (ESM)](/reference/supported-technologies.md#compatibility-esm), so for full APM support you will need to tell TypeScript to generate JavaScript using CommonJS modules via the [`"module": "commonjs"`](https://www.typescriptlang.org/tsconfig/#module) compiler option. + +```json +// tsconfig.json +{ + "compilerOptions": { + "module": "commonjs", + "esModuleInterop": true, + "moduleResolution": "node" + // ... + } +} +``` + +The current TypeScript [recommended tsconfigs for node](https://github.com/tsconfig/bases#node-10-tsconfigjson) use options that work with the APM agent. + + +## Starting the agent [typescript-start] + +For the APM agent to be able to automatically instrument modules it **must be started before you import other modules**. This means that you should probably import and start the agent in your application’s main file (usually `index.js`, `server.js` or `app.js`). One way to do this is as follows. + +```typescript +import 'elastic-apm-node/start' <1> + +// Application code starts here. +// ... +``` + +1. This start method requires you to use environment variables to configure the agent. See [Starting the agent](/reference/starting-agent.md) for all the ways to start the agent. + + +Pay special attention to [the possible surprise gotcha](/reference/starting-agent.md#start-typescript) where the TypeScript compiler can throw away your import in the generated JavaScript. + + +## Next steps [typescript-next-steps] + +The APM agent will now trace your application, monitor performance, and record any uncaught exceptions. Refer to the following documentation to configure and use the APM agent. + +* [Setup and Configuration](/reference/advanced-setup.md) +* [API Reference](/reference/api.md) + +If you can’t get the Node.js agent to work as expected, please follow the [troubleshooting guide](docs-content://troubleshoot/observability/apm-agent-nodejs/apm-nodejs-agent.md). + diff --git a/docs/reference/upgrade-to-v1.md b/docs/reference/upgrade-to-v1.md new file mode 100644 index 0000000000..a8e6ad6d16 --- /dev/null +++ b/docs/reference/upgrade-to-v1.md @@ -0,0 +1,57 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/upgrade-to-v1.html +--- + +# Upgrade to v1.x [upgrade-to-v1] + +The following is a guide on upgrading your Node.js agent from version 0.x to version 1.x. + +## Overview [v1-overview] + +Version 1.x of the Node.js agent requires version 6.2 of the APM Server or higher. + +The term "trace" was previously used to describe a small piece of work instrumented by the agent during a transaction. To align with modern APM vendors, we now refer to this as a "span" + +The term "app" was previously used to describe your Node.js application in relation to Elastic APM. To be more specific, we now refer to this as a "service". + + +## Config options [v1-config-options] + +The following config options have been removed in version 1.0.0: + +| | | +| --- | --- | +| Name | Note | +| `logBody` | Use [`captureBody`](/reference/configuration.md#capture-body) instead. Note that this option is not a boolean | + +The following config options have been renamed between version 0.x and 1.x. + +::::{note} +The associated environment variable for each renamed config option have been renamed accordingly as well. +:::: + + +| | | | +| --- | --- | --- | +| Old name | New name | Note | +| `appName` | [`serviceName`](/reference/configuration.md#service-name) | Renamed to align with new naming conventions | +| `appVersion` | [`serviceVersion`](/reference/configuration.md#service-version) | Renamed to align with new naming conventions | +| `captureTraceStackTrace` | [`captureSpanStackTraces`](/reference/configuration.md#capture-span-stack-traces) | Renamed to align with new naming conventions | +| `sourceContextErrorAppFrames` | [`sourceLinesErrorAppFrames`](/reference/configuration.md#source-context-error-app-frames) | Renamed to align with other agents | +| `sourceContextSpanAppFrames` | [`sourceLinesSpanAppFrames`](/reference/configuration.md#source-context-span-app-frames) | Renamed to align with other agents | +| `sourceContextErrorLibraryFrames` | [`sourceLinesErrorLibraryFrames`](/reference/configuration.md#source-context-error-library-frames) | Renamed to align with other agents | +| `sourceContextSpanLibraryFrames` | [`sourceLinesSpanLibraryFrames`](/reference/configuration.md#source-context-span-library-frames) | Renamed to align with other agents | +| `validateServerCert` | [`verifyServerCert`](/reference/configuration.md#validate-server-cert) | Renamed to align with other agents | + + +## Agent API [v1-agent-api] + +The following functions have been renamed between version 0.x and 1.x: + +| | | | +| --- | --- | --- | +| Old name | New name | Note | +| `buildTrace()` | `buildSpan()` | Renamed to align with new naming conventions | + + diff --git a/docs/reference/upgrade-to-v2.md b/docs/reference/upgrade-to-v2.md new file mode 100644 index 0000000000..8f346d5221 --- /dev/null +++ b/docs/reference/upgrade-to-v2.md @@ -0,0 +1,75 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/upgrade-to-v2.html +--- + +# Upgrade to v2.x [upgrade-to-v2] + +The following is a guide on upgrading your Node.js agent from version 1.x to version 2.x. + +## Overview [v2-overview] + +Version 2.0.0 of the Node.js agent requires version 6.5 of the APM Server or higher and makes use of the new HTTP intake API. + +The new agent supports Node.js 6, 8, and 10+. + +The format of the error ID’s have changed from a UUID4 to a hex formatted random 128 bit number. Likewise, the format of the transaction ID’s have changed from a UUID4 to a hex formatted random 64 bit number. + + +## Config options [v2-config-options] + +### Configuration order [v2-configuration-order] + +The Node.js agent can be configured using a combination of inline config options, environment variables, and a config file. Many config options also have default values. The order in which these are applied has changed in 2.0.0. + +In 1.x the order in which config options overruled each other was (higher overwrites lower): + +* Inline options given to [`.start()`](/reference/agent-api.md#apm-start) +* [Agent config file](/reference/configuring-agent.md#agent-configuration-file) +* Environment variables +* Default values + +The new order in 2.0.0 is (higher overwrites lower): + +* Environment variables +* Inline options given to [`.start()`](/reference/agent-api.md#apm-start) +* [Agent config file](/reference/configuring-agent.md#agent-configuration-file) +* Default values + + +### Changed units [v2-changed-units] + +In 1.x, the config option [`abortedErrorThreshold`](/reference/configuration.md#aborted-error-threshold) expected a millisecond value. In 2.0.0 the default time unit is seconds. If you’d like to keep using milliseconds, you need to specify the unit, e.g: `1500ms`. + +In 1.x, all boolean config options could be configured using the strings `on`, `yes`, `1`, etc., to mean `true` with similar values representing `false`. In 2.0.0 this has been restricted, and only the strings `true` and `false` will be interpreted as the boolean equivalent. + + +### Removed config options [v2-removed-config-options] + +The following config options have been removed in version 2.0.0: + +| | | +| --- | --- | +| Name | Note | +| `flushInterval` | Use [`apiRequestTime`](/reference/configuration.md#api-request-time) instead. Note that this option has a slightly different meaning as the intake API has changed. | +| `maxQueueSize` | Use [`apiRequestSize`](/reference/configuration.md#api-request-size) instead. Note that this option has a slightly different meaning as the intake API has changed. | + + + +## Agent API [v2-agent-api] + +The [`agent.addFilter()`](/reference/agent-api.md#apm-add-filter) callback is called with a different payload in 2.0.0 (see docs for details). + +::::{note} +While the `addFilter()` function is still called for all types of data sent to the APM Server, three new filter functions have been added in 2.0.0 as well: [`agent.addErrorFilter()`](/reference/agent-api.md#apm-add-error-filter), [`agent.addTransactionFilter()`](/reference/agent-api.md#apm-add-transaction-filter), and [`agent.addSpanFilter()`](/reference/agent-api.md#apm-add-span-filter), called only for errors, transactions, and spans respectively. + +:::: + + +The previously undocumented method `span.offsetTime()` has been removed in 2.0.0. + +The previously undocumented `transaction.buildSpan()` method has been replaced with [`transaction.startSpan(name, type)`](/reference/transaction-api.md#transaction-start-span) in 2.0.0. + +The `agent.buildSpan(name, type)` and `span.start(name, type)` methods have been removed in 2.0.0. They have been replaced by [`agent.startSpan(name, type)`](/reference/agent-api.md#apm-start-span). + + diff --git a/docs/reference/upgrade-to-v3.md b/docs/reference/upgrade-to-v3.md new file mode 100644 index 0000000000..029a400227 --- /dev/null +++ b/docs/reference/upgrade-to-v3.md @@ -0,0 +1,48 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/upgrade-to-v3.html +--- + +# Upgrade to v3.x [upgrade-to-v3] + +The following is a guide on upgrading your Node.js agent from version 2.x to version 3.x. + +## Overview [v3-overview] + +Version 3.0.0 of the Node.js agent supports Node.js v8 (from v8.6.0 and onwards), v10, and v12. + + +## Config options [v3-config-options] + +The [`disableInstrumentations`](/reference/configuration.md#disable-instrumentations) config option now behaves differently if given the values `http` and/or `https`. Previously this would disable tracing of incoming and outgoing requests. Now this config option only deals with outgoing requests. To disable tracing of incoming http(s) requests, use the new [`instrumentIncomingHTTPRequests`](/reference/configuration.md#instrument-incoming-http-requests) config option. + +It’s now possible to make use of manual instrumention while the [`instrument`](/reference/configuration.md#instrument) config option is set to `false`. This means that calls to for instance [`apm.startTransaction()`](/reference/agent-api.md#apm-start-transaction) or [`apm.startSpan()`](/reference/agent-api.md#apm-start-span) will produce transactions and spans even if `instrument` is set to `false`. + + +## API changes [v3-api-changes] + +The `type` associated with transactions and spans is no longer dot-separated. Instead the `type` property has been split into three distinct properties: `type`, `subtype`, and `action`. This has resulted in changes to the following API’s: + +* [`apm.startTransaction()`](/reference/agent-api.md#apm-start-transaction): Function arguments changed +* [`apm.startSpan()`](/reference/agent-api.md#apm-start-span): Function arguments changed +* [`transaction.startSpan()`](/reference/transaction-api.md#transaction-start-span): Function arguments changed +* [`transaction.type`](/reference/transaction-api.md#transaction-type): String format changed +* [`span.type`](/reference/span-api.md#span-type): String format changed + +The following deprecated API’s has been removed: + +* `apm.setTag()`: Replaced by [`apm.setLabel()`](/reference/agent-api.md#apm-set-label) +* `apm.addTags()`: Replaced by [`apm.addLabels()`](/reference/agent-api.md#apm-add-labels) +* `transaction.setTag()`: Replaced by [`transaction.setLabel()`](/reference/transaction-api.md#transaction-set-label) +* `transaction.addTags()`: Replaced by [`transaction.addLabels()`](/reference/transaction-api.md#transaction-add-labels) +* `span.setTag()`: Replaced by [`span.setLabel()`](/reference/span-api.md#span-set-label) +* `span.addTags()`: Replaced by [`span.addLabels()`](/reference/span-api.md#span-add-labels) + + +## Changes in collected data [v3-changes-in-collected-data] + +When instrumenting a GraphQL server that is run by [`apollo-server-express`](https://www.npmjs.com/package/apollo-server-express) the Transaction type is now `graphql` instead of `request`. + +All Spans whose type was previously `ext` is now `external`. + + diff --git a/docs/reference/upgrade-to-v4.md b/docs/reference/upgrade-to-v4.md new file mode 100644 index 0000000000..333e694748 --- /dev/null +++ b/docs/reference/upgrade-to-v4.md @@ -0,0 +1,111 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/upgrade-to-v4.html +--- + +# Upgrade to v4.x [upgrade-to-v4] + +The following is a guide on upgrading your usage of the Elastic APM Node.js agent (`elastic-apm-node`) from version 3.x to version 4.x. + +## Node.js versions [v4-nodejs] + +Version 4.x of `elastic-apm-node` supports Node.js v14.17.0 and later. (The previous 3.x major supported back to Node.js v8.6.0.) + + +## Config options [v4-config-options] + +### `ELASTIC_APM_KUBERNETES_*` [_elastic_apm_kubernetes] + +Support for the following Kubernetes environment variables have been removed: `ELASTIC_APM_KUBERNETES_NAMESPACE`, `ELASTIC_APM_KUBERNETES_NODE_NAME`, `ELASTIC_APM_KUBERNETES_POD_NAME`, and `ELASTIC_APM_KUBERNETES_POD_UID`. The correct environment variables for these config vars are *without* the `ELASTIC_APM_` prefix — for example [`KUBERNETES_POD_NAME`](/reference/configuration.md#kubernetes-pod-name) — and has been documented that way since v2.11.0. + +**How to check.** Search for any usage of `ELASTIC_APM_KUBERNETES_` in your project. For example, using [ripgrep](https://github.com/BurntSushi/ripgrep), run `rg ELASTIC_APM_KUBERNETES_`. If there are any hits, remove the `ELASTIC_APM_` prefix. + + +### `filterHttpHeaders` [_filterhttpheaders] + +Support for `filterHttpHeaders` config option has been removed. Redaction of HTTP headers and also request cookies is controlled by the existing config option [`sanitizeFieldNames`](/reference/configuration.md#sanitize-field-names). + +**How to check.** Search your project for `rg filterHttpHeaders` or `rg ELASTIC_APM_FILTER_HTTP_HEADERS` and remove them. + + +### `useElasticTraceparentHeader` [_useelastictraceparentheader] + +The default value of the [`useElasticTraceparentHeader`](/reference/configuration.md#use-elastic-traceparent-header) config option has changed to `false`. This means that the vendor-specific `elastic-apm-traceparent` header will no longer be added to outgoing HTTP requests by default. The `traceparent` header (from the [W3C trace-context standard](https://w3c.github.io/trace-context/)) is added by the APM agent. If you need the agent to continue sending `elastic-apm-traceparent` HTTP header you can set it to `true` via env var or start options. + +**How to check.** Search your project for `rg useElasticTraceparentHeader` or `rg ELASTIC_APM_USE_ELASTIC_TRACEPARENT_HEADER`. + + +### `contextManager: "patch"` [_contextmanager_patch] + +The "patch" value for the [`contextManager`](/reference/configuration.md#context-manager) config option has been removed. This was a limited async context management that predated the preferred `AsyncLocalStorage` core Node.js mechanism for context tracking. As well, the related and deprecated `asyncHooks` config option has been removed. Both were deprecated in v3.37.0. + +**How to check.** Search your project for `rg -w contextManager` or `rg -w ELASTIC_APM_CONTEXT_MANAGER` which set the value to "patch". Also search for `rg -w asyncHooks` or `rg -w ELASTIC_APM_ASYNC_HOOKS` which set the value to `false`. If so, that config setting is no longer supported. + + +### `logUncaughtExceptions` [_loguncaughtexceptions] + +The `logUncaughtExceptions` config option has been removed. In v3 and earlier, when the APM agent was [capturing an uncaught exception](/reference/configuration.md#capture-exceptions) setting `logUncaughtExceptions: true` would tell the agent to print the error details to stderr before exiting; but `logUncaughtExceptions` was `false` by default. In v4, printing the error to stderr is done by default (to mimic the default Node.js uncaught exception behavior) and there is no option to disable that. + +**How to check.** Search your project for `rg -w logUncaughtExceptions` or `rg -w ELASTIC_APM_LOG_UNCAUGHT_EXCEPTIONS` and remove any usages. + + +### `ELASTIC_SANITIZE_FIELD_NAMES`, `ELASTIC_IGNORE_MESSAGE_QUEUES` [_elastic_sanitize_field_names_elastic_ignore_message_queues] + +Support for the erroneous `ELASTIC_SANITIZE_FIELD_NAMES` and `ELASTIC_IGNORE_MESSAGE_QUEUES` config environment variables has been removed. The correct env vars are `ELASTIC_APM_SANITIZE_FIELD_NAMES` and `ELASTIC_APM_IGNORE_MESSAGE_QUEUES`, respectively, and were supported starting in v3.36.0. + + + +## API changes [v4-api-changes] + +### `apm.startTransaction(...)` [v4-api-start-transaction] + +The `apm.startTransaction()` method has been changed to return a do-nothing no-op Transaction, if the agent is not yet started. The return type has changed to no longer include `| null`. The intent of these changes is to allow the user to use `.startTransaction()` without having to worry if the agent is yet started, nor to have to handle a possible `null` return value. + +**How to check.** Search your project for `rg '\.startTransaction\b'`. If your code handled a possible `null` return value from this function call, you can remove that handling. + + +### `transaction.subtype` and `transaction.action` [v4-api-transaction-subtype-action] + +The `subtype` and `action` properties have been removed from `Transaction`. This also impacts [`apm.startTransaction([name][, type][, options])`](/reference/agent-api.md#apm-start-transaction) and `transaction.setType(...)`, both of which now no longer accept `subtype` and `action` parameters. These two properties were deprecated in v3.25.0. + +**How to check.** Search your project for `rg '\.startTransaction\b'`. If your code passed in `subtype` or `action` arguments, e.g. `apm.startTransaction('a-name', 'a-type', 'a-subtype', 'an-action', { /* options */ })`, then those need to be updated. Also search your project for `rg '\.subtype\b'` and `rg '\.action\b'`. If those property accesses are on an APM Transaction object, then you should remove them. (Note that `subtype` and `action` on APM **Span** objects remain in the API.) + + +### `span.toString()`, `transaction.toString()` [v4-api-to-string] + +The `span.toString()` and `transaction.toString()` methods have been removed as documented APIs. They were never in the "index.d.ts" types and were deprecated in v3.23.0. + +Since v2.17.0 they would return a string of the form `trace.id= span.id=`, with the intent that this could be used in text-only loggers for log correlation. Using `.toString()` for this was deprecated in v3.23.0, and has now been removed in v4. In v4 the output of `.toString()` is not defined. + +Instead, prefer the use of [`span.ids`](/reference/span-api.md#span-ids), [`transaction.ids`](/reference/transaction-api.md#transaction-ids), or [`apm.currentTraceIds`](/reference/agent-api.md#apm-current-trace-ids). The v3 format may be reproduced via: + +```js +const {stringify} = require('querystring'); +console.log(stringify(span.ids, ' ', '=')); +``` + +For log correlation with *structured* logs, see [Log correlation](/reference/logs.md#log-correlation-ids). + + +### `apm.destroy()` [v4-api-destroy] + +The `apm.destroy()` method is now async. Almost no users should need to use this method. However, if used, to be sure to wait for APM agent shutdown to be complete, one can now `await apm.destroy()`. + + + +## Log warnings [v4-warnings] + +This section documents some new log output warnings from the APM agent, and how to avoid them. + +### "units missing in duration value" [v4-warning-duration-units] + +```json +{"log.level":"warn","@timestamp":"2023-08-04T16:54:03.116Z","log":{"logger":"elastic-apm-node"},"ecs":{"version":"1.6.0"},"message":"units missing in duration value \"5\" for \"metricsInterval\" config option: using default units \"s\""} +``` + +Configuration options that define a duration, like `metricsInterval` or `exitSpanMinDuration`, expect to have their units specified in the value (e.g. `"10s"`, `"100ms"`). While current duration options have a default unit, to avoid ambiguity the APM agent will now warn if the units are not provided. + + +### "units missing in size value" [v4-warning-size-units] + +Byte size config options like `apiRequestSize` expect to have the size units specified in the value (e.g. `"10kb"`, `"1gb"`). If the unit is not in the value, the agent will warn about it and fallback to bytes (`b`). diff --git a/docs/reference/upgrading.md b/docs/reference/upgrading.md new file mode 100644 index 0000000000..c367d7c491 --- /dev/null +++ b/docs/reference/upgrading.md @@ -0,0 +1,30 @@ +--- +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/upgrading.html +--- + +# Upgrading [upgrading] + +The Elastic APM Node.js Agent uses [semantic versioning](https://semver.org/), and therefore upgrades between minor versions of the agent, for example from 1.1 to 1.2, are always backwards compatible. Upgrades that involve a major version bump often come with some backwards incompatible changes. + +Before upgrading the agent, be sure to review the: + +* [Node.js APM Agent release notes](/release-notes/index.md) +* [APM Agent and Server compatibility chart](docs-content://solutions/observability/apps/apm-agent-compatibility.md) + +The following upgrade guides are available: + +* [Upgrade to v4.x](/reference/upgrade-to-v4.md) from version 3.x of the Elastic APM Node.js agent. +* [Upgrade to v3.x](/reference/upgrade-to-v3.md) from version 2.x of the Elastic APM Node.js agent. +* [Upgrade to v2.x](/reference/upgrade-to-v2.md) from version 1.x of the Elastic APM Node.js agent. +* [Upgrade to v1.x](/reference/upgrade-to-v1.md) from version 0.x of the Elastic APM Node.js agent. + + +## End of life dates [end-of-life-dates] + +We love all our products, but sometimes we must say goodbye to a release so that we can continue moving forward on future development and innovation. Our [End of life policy](https://www.elastic.co/support/eol) defines how long a given release is considered supported, as well as how long a release is considered still in active development or maintenance. + + + + + diff --git a/docs/release-notes.asciidoc b/docs/release-notes.asciidoc deleted file mode 100644 index 1d230eb282..0000000000 --- a/docs/release-notes.asciidoc +++ /dev/null @@ -1,13 +0,0 @@ -:pull: https://github.com/elastic/apm-agent-nodejs/pull/ -:issues: https://github.com/elastic/apm-agent-nodejs/issues/ - -[[release-notes]] -== Release notes - -* <> -* <> -* <> -* <> -* <> - -include::../CHANGELOG.asciidoc[] diff --git a/docs/release-notes/breaking-changes.md b/docs/release-notes/breaking-changes.md new file mode 100644 index 0000000000..c20347da62 --- /dev/null +++ b/docs/release-notes/breaking-changes.md @@ -0,0 +1,36 @@ +--- +navigation_title: "Elastic APM Node.js Agent" +--- + +# Elastic APM Node.js Agent breaking changes +Before you upgrade, carefully review the Elastic APM Node.js Agent breaking changes and take the necessary steps to mitigate any issues. + +To learn how to upgrade, check out [Upgrading](/reference/upgrading.md). + +% ## Next version [next-version] +% **Release date:** Month day, year + +% ::::{dropdown} Title of breaking change +% Description of the breaking change. +% For more information, check [PR #](PR link). +% **Impact**
Impact of the breaking change. +% **Action**
Steps for mitigating deprecation impact. +% :::: + +## 4.2.0 [4-2-0] +**Release date:** November 23, 2023 + +* Drop support for next@11. Next.js instrumentation support is currently in technical preview, so it is not considered a semver-major change to drop support for this old version of next. For more information, check ([#3664](https://github.com/elastic/apm-agent-nodejs/pull/3664)). + +## 4.0.0 [4-0-0] +* Set the new minimum supported Node.js to version 14.17.0. Users of earlier Node.js versions can use elastic-apm-node v3.x, which supports back to Node.js v8.6. +* Ignore a `timer` option passed to `startTransaction()` and `startSpan()` APIs. This option was never documented. It would be surprising if any user is impacted by this. +* Remove long deprecated support for the `ELASTIC_APM_`-prefixed environment variables for the [Kubernetes config options](/reference/configuration.md#kubernetes-node-name). For example, one must use `KUBERNETES_POD_NAME` and not `ELASTIC_APM_KUBERNETES_POD_NAME`. ([#2661](https://github.com/elastic/apm-agent-nodejs/issues/2661)) +* The config option `filterHttpHeaders` is now *removed*. ([#3539](https://github.com/elastic/apm-agent-nodejs/pull/3539)) +* Remove the deprecated `span.toString()` and `transaction.toString()` APIs. ([#2348](https://github.com/elastic/apm-agent-nodejs/issues/2348)) +* Remove instrumentation support for the old *hapi* package — the current *@hapi/hapi* package is still instrumented. ([#2691](https://github.com/elastic/apm-agent-nodejs/issues/2691)) +* Change `apm.startTransaction()` api to return a noop transaction instead of null, if the agent is not yet started. ([#2429](https://github.com/elastic/apm-agent-nodejs/issues/2429)) +* Drop support for the obsolete "patch" context manager, i.e. the `contextManager: "patch"` config option. This was a limited async context management that predated the preferred `AsyncLocalStorage` core Node.js mechanism for context tracking. It was deprecated in v3.37.0. As well, the related and deprecated `asyncHooks` config option has been removed. ([#3529](https://github.com/elastic/apm-agent-nodejs/issues/3529)) +* Remove the `logUncaughtExceptions` config option. ([#2412](https://github.com/elastic/apm-agent-nodejs/issues/2412)) +* Remove `transaction.subtype` and `transaction.action` properties from API. This also impacts [`apm.startTransaction([name][, type][, options])`](/reference/agent-api.md#apm-start-transaction) and `transaction.setType(...)`, both of which now no longer accept `subtype` and `action` parameters. These two properties were deprecated in v3.25.0. ([#3557](https://github.com/elastic/apm-agent-nodejs/issues/3557)) +* Remove support for the erroneous `ELASTIC_SANITIZE_FIELD_NAMES` and `ELASTIC_IGNORE_MESSAGE_QUEUES` config environment variables. The correct env vars are `ELASTIC_APM_SANITIZE_FIELD_NAMES` and `ELASTIC_APM_IGNORE_MESSAGE_QUEUES`, respectively, and were supported starting in v3.36.0. \ No newline at end of file diff --git a/docs/release-notes/index.md b/docs/release-notes/index.md new file mode 100644 index 0000000000..e972703aa6 --- /dev/null +++ b/docs/release-notes/index.md @@ -0,0 +1,274 @@ +--- +navigation_title: "Elastic APM Node.js Agent" +mapped_pages: + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/release-notes.html + - https://www.elastic.co/guide/en/apm/agent/nodejs/current/release-notes-4.x.html +--- + +# Elastic APM Node.js Agent release notes + +Review the changes, fixes, and more in each version of Elastic Node.js Java Agent. + +To check for security updates, go to [Security announcements for the Elastic stack](https://discuss.elastic.co/c/announcements/security-announcements/31). + +% Release notes includes only features, enhancements, and fixes. Add breaking changes, deprecations, and known issues to the applicable release notes sections. + +% ## Next [next] +% **Release date:** Month day, year + +% ### Features and enhancements [next-features-enhancements] + +% ### Fixes [next-fixes] + +## 4.11.2 [4-11-2] +**Release date:** March 17, 2025 + +### Fixes [4-11-2-fixes] + +* Fix bug in instrumentation of Azure Functions that could result in crashing the application. The known case was with a ServiceBus function (using `app.serviceBusTopic(...)` from `@azure/functions`). ([#4508](https://github.com/elastic/apm-agent-nodejs/issues/4508)) + +## 4.11.1 [4-11-1] +**Release date:** March 14, 2025 + +### Features and enhancements [4-11-1-features-enhancements] + +* Update base image of alpine in `Dockerfile` to version `3.21.3`. ([#4465](https://github.com/elastic/apm-agent-nodejs/pulls/4465)) +* Test FIPS 140 compliance. ([#4441](https://github.com/elastic/apm-agent-nodejs/pulls/4441)) + +### Fixes [4-11-1-fixes] + +* Change how `@hapi/hapi` instrumentation includes additional data when + capturing an error for Hapi `log` and `request` Server events to avoid + possible capture of large amounts of data, that could lead to latency issues + and high memory usage. Some data that may have been captured before will + *no longer* be captured. ([#4503](https://github.com/elastic/apm-agent-nodejs/issues/4503)) + + The `@hapi/hapi` instrumentation will capture an APM error whenever a + Hapi `log` or `request` server event ([https://hapi.dev/api/#server.events](https://hapi.dev/api/#server.events)) with + the "error" tag is emitted, e.g. when a Hapi server responds with an HTTP 500 + error. Before this change, any and all properties on the logged Error or data + would be included in the APM error data sent to APM server (in the + `error.custom` field). This could cause a surprise for applications that attach + (sometimes large) data to the internal server Error for other purposes (e.g. + application error handling). + + The expected surprise case is when a deeply-nested object is added as a + property to the event data. To protect against serializing these, the Hapi + instrumentation will only serialize event data properties that are "simple" + types (boolean, string, number, Date), other types (Array, object, Buffer, etc.) + will *not* be captured. This is similar behavior as is used for the + `captureAttributes` option to [`apm.captureError()`](/reference/agent-api.md#apm-capture-error) + for the same purpose. + + In addition, the updated Hapi instrumentation will no longer capture to + `error.custom` when the emitted data is an `Error` instance, because this was a + duplication of the `Error` properties already being captured to the + `error.exception.attributes` field. + +## 4.11.0 [4-11-0] +**Release date:** January 20, 2025 + +### Features and enhancements [4-11-0-features-enhancements] +* Support instrumentation of Azure Functions using the [v4 Node.js programming model](https://learn.microsoft.com/en-ca/azure/azure-functions/functions-node-upgrade-v4). ([#4426](https://github.com/elastic/apm-agent-nodejs/pull/4426)) + +### Fixes [4-11-0-fixes] +* Fix instrumentation of `@aws-sdk/client-s3`, `@aws-sdk/client-sqs`, and `@aws-sdk/client-sns` for versions 3.723.0 and later. Internally the AWS SDK clients updated to `@smithy/smithy-client@4`. ([#4398](https://github.com/elastic/apm-agent-nodejs/pull/4398)) + +## 4.10.0 [4-10-0] +**Release date:** December 24, 2024 + +### Features and enhancements [4-10-0-features-enhancements] +* Improve trace-level logging to better support debugging central config and transaction sampling issues. ([#4291](https://github.com/elastic/apm-agent-nodejs/issues/4291)) + +## 4.9.0 [4-9-0] +**Release date:** December 9, 2024 + +### Features and enhancements [4-9-0-features-enhancements] +* Add support for `undici` v7. ([#4336](https://github.com/elastic/apm-agent-nodejs/pull/4336)) + +### Fixes [4-9-0-fixes] +* Fix to support a internal refactor in `mysql2` v3.11.5. ([#4334](https://github.com/elastic/apm-agent-nodejs/pull/4334)) +* Guard against a possible encoding error of tracing data in the APM client, before it is sent. It is **possible** this could wedge the APM client, resulting in the APM agent no longer sending tracing data. ([#4359](https://github.com/elastic/apm-agent-nodejs/pull/4359)) + +## 4.8.1 [4-8-1] +**Release date:** November 4, 2024 + +### Fixes [4-8-1-fixes] +* Fix AWS Lambda instrumentation to work with a "handler" string that includes a period (`.`) in the module path. E.g. the leading `.` in `Handler: ./src/functions/myfunc/handler.main`. ([#4293](https://github.com/elastic/apm-agent-nodejs/issues/4293)). + +## 4.8.0 [4-8-0] +**Release date:** October 8, 2024 + +### Features and enhancements [4-8-0-features-enhancements] +* Minor improvement to container ID parsing from /etc/cgroup v1 files in AWS ECS Fargate, where the pattern has been observed to sometimes differ from the documented pattern. ([APM spec issue #888](https://github.com/elastic/apm/issues/888)) +* Add support for `tedious` v19. ([#4218](https://github.com/elastic/apm-agent-nodejs/issues/4218)) +* Add support for `koa-router` v13. ([#4236](https://github.com/elastic/apm-agent-nodejs/pull/4236)) + +### Fixes [4-8-0-fixes] +* Update `cookie` to version `v0.7.2` to fix security issue [CVE-2024-47764](https://github.com/advisories/GHSA-pxg6-pf52-xh8x) + +## 4.7.3 [4-7-3] +**Release date:** August 9, 2024 + +### Fixes [4-7-3-fixes] +* Update import-in-the-middle to 1.11.0, which fixes [an issue](https://github.com/nodejs/import-in-the-middle/issues/144) that can crash users using Nuxt and ESM. ([#4175](https://github.com/elastic/apm-agent-nodejs/pull/4175)) + +## 4.7.2 [4-7-2] +**Release date:** August 1, 2024 + +### Features and enhancements [4-7-2-features-enhancements] +* Support hooking built-in Node.js modules loaded via [`process.getBuiltinModule`](https://nodejs.org/api/all.html#all_process_processgetbuiltinmoduleid), added in v22.3.0. ([#4160](https://github.com/elastic/apm-agent-nodejs/pull/4160)) + +### Fixes [4-7-2-fixes] +* Fix for instrumentation for `@aws-sdk/sns-client` that will prevent a crash if the client is used when there is no parent transaction present. ([#4168](https://github.com/elastic/apm-agent-nodejs/pull/4168)) +* Fix for config resolution process. Before this change falsy config options coming from the `elastic-apm-node.js` file were ignored. ([#4119](https://github.com/elastic/apm-agent-nodejs/pull/4119)) +* Fix publishing of AWS Lambda layer to all AWS regions. This was broken in the 4.7.1 release. ([#4171](https://github.com/elastic/apm-agent-nodejs/issues/4171)) + +## 4.7.1 [4-7-1] +**Release date:** July 24, 2024 + +### Fixes [4-7-1-fixes] +* Update import-in-the-middle internally-used library to v1.9.1. This can fix usage with ESM code (see [*ECMAScript module support*](/reference/esm.md)) in some cases, e.g. usage with [Nuxt 3](https://github.com/elastic/apm-agent-nodejs/issues/4143). + +## 4.7.0 [4-7-0] +**Release date:** June 13, 2024 + +### Features and enhancements [4-7-0-features-enhancements] +* Update [*OpenTelemetry bridge*](/reference/opentelemetry-bridge.md) support to `@opentelemetry/api` version 1.9.0. ([#4078](https://github.com/elastic/apm-agent-nodejs/issues/4078)) + + Support for the new `addLink` and `addLinks` methods on Span have been added. However, support for the new synchronous gauge have not yet been added. + +## 4.6.0 [4-6-0] +**Release date:** June 5, 2024 + +### Features and enhancements [4-6-0-features-enhancements] +* Make published `docker.elastic.co/observability/apm-agent-nodejs` Docker images multi-platform, with support for `linux/amd64,linux/arm64` for now. This is necessary for users of the Elastic APM Attacher for Kubernetes, when deploying to k8s nodes that are ARM64 (e.g. Gravitron on AWS). ([#4038](https://github.com/elastic/apm-agent-nodejs/issues/4038)) + +### Fixes [4-6-0-fixes] +* Fix instrumentation for recent `@aws-sdk/client-*` releases that use `@smithy/smithy-client` v3. (For example `@aws-sdk/client-s3@3.575.0` released 2024-05-13 updated to smithy-client v3.) Before this change the APM agent had been limiting patching of `@smithy/smithy-client` to `>=1 <3`. ([#4036](https://github.com/elastic/apm-agent-nodejs/pull/4036)) +* Mark the published AWS Lambda layers as supporting the "nodejs20.x" Lambda Runtime (`--compatible-runtimes`). The "nodejs20.x" runtime was released by AWS on 2023-11-15. ([#4033](https://github.com/elastic/apm-agent-nodejs/issues/4033)) + + Note that this Node.js APM agent supports Node.js 20.x, so the new AWS Lambda runtime was supported when it was released. However, the metadata stating compatible runtimes (which is advisory) was not updated until now. + +## 4.5.4 [4-5-4] +**Release date:** May 13, 2024 + +### Fixes [4-5-4-fixes] +* Change how the "cookie" HTTP request header is represented in APM transaction data to avoid a rare, but possible, intake bug where the transaction could be rejected due to a mapping conflict. + + Before this change a `Cookie: foo=bar; sessionid=42` HTTP request header would be represented in the transaction document in Elasticsearch with these document fields (the example assumes [`sanitizeFieldNames`](/reference/configuration.md#sanitize-field-names) matches "sessionid", as it does by default): + + ``` + http.request.headers.cookie: "[REDACTED]" + ... + http.request.cookies.foo: "bar" + http.request.cookies.sessionid: "[REDACTED]" + ``` + + After this change it is represented as: + + ``` + http.request.headers.cookie: "foo=bar; sessionid=REDACTED" + ``` + + In other words, `http.request.cookies` are no longer separated out. ([#4006](https://github.com/elastic/apm-agent-nodejs/issues/4006)) + + +## 4.5.3 [4-5-3] +**Release date:** April 23, 2024 + +### Fixes [4-5-3-fixes] +* Fix message handling for tombstone messages in `kafkajs` instrumentation. ([#3985](https://github.com/elastic/apm-agent-nodejs/pull/3985)) + +## 4.5.2 [4-5-2] +**Release date:** April 12, 2024 + +### Fixes [4-5-2-fixes] +* Fix path resolution for requests that contain invalid characters in its host header. ([#3923](https://github.com/elastic/apm-agent-nodejs/pull/3923)) +* Fix span names for `getMore` command of mongodb. ([#3919](https://github.com/elastic/apm-agent-nodejs/pull/3919)) +* Fix undici instrumentation to cope with a bug in undici@6.11.0 where `request.addHeader()` was accidentally removed. (It was re-added in undici@6.11.1.) ([#3963](https://github.com/elastic/apm-agent-nodejs/pull/3963)) +* Update undici instrumentation to avoid possibly adding a **second** *traceparent* header to outgoing HTTP requests, because this can break Elasticsearch requests. ([#3964](https://github.com/elastic/apm-agent-nodejs/issues/3964)) + +## 4.5.0 [4-5-0] +**Release date:** March 13, 2024 + +### Features and enhancements [4-5-0-features-enhancements] +* Update [*OpenTelemetry bridge*](/reference/opentelemetry-bridge.md) support to `@opentelemetry/api` version 1.8.0. +* Update `tedious` instrumentation to support versions 17 and 18. ([#3901](https://github.com/elastic/apm-agent-nodejs/pull/3901), [#3911](https://github.com/elastic/apm-agent-nodejs/pull/3911)) +* Add new `kafkajs` instrumentation. ([#2905](https://github.com/elastic/apm-agent-nodejs/issues/2905)) + +### Fixes [4-5-0-fixes] +* Fix instrumentation of mongodb to not break mongodb@6.4.0. Mongodb v6.4.0 included changes that resulted in the APM agent’s instrumentation breaking it. ([#3897](https://github.com/elastic/apm-agent-nodejs/pull/3897)) +* Fix hostname detection on Windows in some cases (where a powershell profile could break collection). ([#3899](https://github.com/elastic/apm-agent-nodejs/pull/3899)) +* Fix a path normalization issue that broke (or partially broke) instrumentation of some modules on Windows: Next.js, redis v4+, mongodb. ([#3905](https://github.com/elastic/apm-agent-nodejs/pull/3905)) + +## 4.4.1 [4-4-1] +**Release date:** February 6, 2024 + +### Fixes [4-4-1-fixes] +* Add support for [instrumentation of ES module-using (ESM) code](/reference/esm.md) with Node.js versions matching `^18.19.0 || >=20.2.0`. Before this version of the APM agent, ESM instrumentation was only supported for some **earlier** Node.js versions. Changes in Node.js’s ESM loader in v18.19.0 and v20 broke earlier ESM support. ([#3784](https://github.com/elastic/apm-agent-nodejs/issues/3784), [#3844](https://github.com/elastic/apm-agent-nodejs/pull/3844)) + +## 4.4.0 [4-4-0] +**Release date:** January 12, 2024 + +### Features and enhancements [4-4-0-features-enhancements] +* Support `ELASTIC_APM_ACTIVATION_METHOD=K8S_ATTACH` (in addition to the current `K8S` value) to indicate the agent is being started by apm-k8s-attacher. Newer releases of apm-k8s-attacher will be using this value (to have a common value used between APM agents). + +### Fixes [4-4-0-fixes] +* Fix bug where `NODE_ENV` environment value was not used as a default for the [`environment`](/reference/configuration.md#environment) config setting. The bug was introduced in v4.2.0. ([#3807](https://github.com/elastic/apm-agent-nodejs/issues/3807)) +* Improve Fastify instrumentation to no longer cause the [`FSTDEP017`](https://fastify.dev/docs/latest/Reference/Warnings/#FSTDEP017) and [`FSTDEP018`](https://fastify.dev/docs/latest/Reference/Warnings/#FSTDEP018) deprecation warnings. ([#3814](https://github.com/elastic/apm-agent-nodejs/pull/3814)) + +## 4.3.0 [4-3-0] +**Release date:** December 5, 2023 + +### Features and enhancements [4-3-0-features-enhancements] +* Add the [`apmClientHeaders`](/reference/configuration.md#apm-client-headers) config option, to allow adding custom headers to HTTP requests made to APM server by the APM agent. ([#3759](https://github.com/elastic/apm-agent-nodejs/issues/3759)) +* Skip undici tests for `undici` `>=5.28.0` and NodeJS `<14.18.0`. ([#3755](https://github.com/elastic/apm-agent-nodejs/pull/3755)) +* Change the log level of `Sending error to Elastic APM: ...` from `info` to `debug`. There is no need to clutter the log output with this message. ([#3748](https://github.com/elastic/apm-agent-nodejs/issues/3748)) +* Explicitly mark this package as being of type="commonjs". The experimental `node --experimental-default-type=module ...` option [added in Node.js v20.10.0](https://nodejs.org/en/blog/release/v20.10.0#--experimental-default-type-flag-to-flip-module-defaults) means that a default to "commonjs" isn’t guaranteed. + +### Fixes [4-3-0-fixes] +* Fix the dependency version range for `@elastic/ecs-pino-format`. ([#3774](https://github.com/elastic/apm-agent-nodejs/issues/3774)) + +## 4.2.0 [4-2-0] +**Release date:** November 23, 2023 + +### Features and enhancements [4-2-0-features-enhancements] +* Add [`apm.getServiceVersion()`](/reference/agent-api.md#apm-get-service-version), [`apm.getServiceEnvironment()`](/reference/agent-api.md#apm-get-service-environment), and [`apm.getServiceNodeName()`](/reference/agent-api.md#apm-get-service-node-name). These are intended for use by [ecs-logging-nodejs formatting packages](ecs-logging-nodejs://reference/index.md). See [https://github.com/elastic/ecs-logging-nodejs/pull/152](https://github.com/elastic/ecs-logging-nodejs/pull/152). ([#3195](https://github.com/elastic/apm-agent-nodejs/issues/3195)) +* Add knex@3 instrumentation. ([#3659](https://github.com/elastic/apm-agent-nodejs/pull/3659)) +* Update [*OpenTelemetry bridge*](/reference/opentelemetry-bridge.md) support to `@opentelemetry/api` version 1.7.0. + +### Fixes [4-2-0-fixes] +* Fix `mongodb` instrumentation to avoid loosing context when multiple cursors are running concurrently. ([#3161](https://github.com/elastic/apm-agent-nodejs/issues/3161)) +* Set `mongodb` span’s outcome according to the result of the command being traced. ([#3695](https://github.com/elastic/apm-agent-nodejs/pull/3695)) +* Fix `@aws-sdk/client-sqs` instrumentation which was failing for `SendMessageBatch` command when any of the entities does not contain `MessageAttributes`. ([#3746](https://github.com/elastic/apm-agent-nodejs/issues/3746)) + +## 4.1.0 [4-1-0] +**Release date:** October 9, 2023 + +### Features and enhancements [4-1-0-features-enhancements] +* Update [*OpenTelemetry bridge*](/reference/opentelemetry-bridge.md) support to `@opentelemetry/api` version 1.6.0. [#3622](https://github.com/elastic/apm-agent-nodejs/pull/3622) +* Add support for `@aws-sdk/client-dynamodb`, one of the AWS SDK v3 clients. ([#2958](https://github.com/elastic/apm-agent-nodejs/issues/2958)) +* Add support for `@aws-sdk/client-sns`, one of the AWS SDK v3 clients. ([#2956](https://github.com/elastic/apm-agent-nodejs/issues/2956)) +* Add support for `@aws-sdk/client-sqs`, one of the AWS SDK v3 clients. ([#2957](https://github.com/elastic/apm-agent-nodejs/issues/2957)) +* Fixes for some values of the [`disableInstrumentations`](/reference/configuration.md#disable-instrumentations) config setting. "redis" will now properly disable instrumentation for redis@4. "next" will propertly disable all Next.js instrumentation. ([#3658](https://github.com/elastic/apm-agent-nodejs/pull/3658)) + +### Fixes [4-1-0-fixes] +* Changes to cloud metadata collection for Google Cloud (GCP). Most notably the `cloud.project.id` field is now the `project-id` from [https://cloud.google.com/compute/docs/metadata/default-metadata-values#project_metadata](https://cloud.google.com/compute/docs/metadata/default-metadata-values#project_metadata) rather than the `numeric-project-id`. This matches the value produced by Elastic Beats (like filebeat). [#3614](https://github.com/elastic/apm-agent-nodejs/issues/3614) + +## 4.0.0 [4-0-0] +**Release date:** September 7, 2023 + +### Features and enhancements [4-0-0-features-enhancements] +* The `apm.destroy()` method is now async. Almost no users should need to use this method. However, if used, to be sure to wait for APM agent shutdown to be complete, one can now `await apm.destroy()`. ([#3222](https://github.com/elastic/apm-agent-nodejs/issues/3222)) +* Support instrumenting `mongodb` v6. ([#3596](https://github.com/elastic/apm-agent-nodejs/pull/3596)) +* Add a warning message when a duration or size config option is provided without units. ([#2121](https://github.com/elastic/apm-agent-nodejs/issues/2121)) +* Change default value of `useElasticTraceparentHeader` config option to `false`. This means that for outgoing HTTP requests, the APM agent will no longer add the `elastic-apm-traceparent` header. This vendor-specific header was used in the past while the [W3C trace-context](https://w3c.github.io/trace-context/) spec was still in development. Now that it is in wide use, the `elastic-apm-traceparent` header is only useful for interaction with very old Elastic APM agents. +* Add default ports into `context.service.target.name` for HTTP spans conforming to the spec update done in [https://github.com/elastic/apm/pull/700](https://github.com/elastic/apm/pull/700) ([#3590](https://github.com/elastic/apm-agent-nodejs/pull/3590)) + +### Fixes [4-0-0-fixes] +* Fix instrumentation of `mongodb` to avoid multiple command handler registrations when client is created via `MongoClient.connect` static method. ([#3586](https://github.com/elastic/apm-agent-nodejs/pull/3586)) + + + + diff --git a/docs/release-notes/known-issues.md b/docs/release-notes/known-issues.md new file mode 100644 index 0000000000..6cd8017604 --- /dev/null +++ b/docs/release-notes/known-issues.md @@ -0,0 +1,31 @@ +--- +navigation_title: "Elastic APM Node.js Agent" +--- + +# Elastic APM Node.js Agent known issues [elastic-apm-nodejs-agent-known-issues] + +% Use the following template to add entries to this page. + +% :::{dropdown} Title of known issue +% **Details** +% On [Month/Day/Year], a known issue was discovered that [description of known issue]. + +% **Workaround** +% Workaround description. + +% **Resolved** +% On [Month/Day/Year], this issue was resolved. + +::: + +## 4.4.0 [4-4-0] + +**Release date:** January 12, 2024 + +**Known issue**: Using the APM agent’s [*ECMAScript module support*](/reference/esm.md) with Node.js **v18.19.0** is not supported in this version. Upgrade to APM agent version v4.5.0 or later, or use Node.js v18.18.1 or earlier. See [https://github.com/elastic/apm-agent-nodejs/issues/3784](https://github.com/elastic/apm-agent-nodejs/issues/3784) for details. + +## 4.3.0 [4-3-0] + +**Release date:** December 5, 2023 + +**Known issue**: Using the APM agent’s [*ECMAScript module support*](/reference/esm.md) with Node.js **v18.19.0** is not supported in this version. Upgrade to APM agent version v4.5.0 or later, or use Node.js v18.18.1 or earlier. See [https://github.com/elastic/apm-agent-nodejs/issues/3784](https://github.com/elastic/apm-agent-nodejs/issues/3784) for details. \ No newline at end of file diff --git a/docs/release-notes/toc.yml b/docs/release-notes/toc.yml new file mode 100644 index 0000000000..7000d42b96 --- /dev/null +++ b/docs/release-notes/toc.yml @@ -0,0 +1,4 @@ +toc: + - file: index.md + - file: known-issues.md + - file: breaking-changes.md \ No newline at end of file diff --git a/docs/restify.asciidoc b/docs/restify.asciidoc deleted file mode 100644 index bbc7b4b845..0000000000 --- a/docs/restify.asciidoc +++ /dev/null @@ -1,120 +0,0 @@ -:framework: Restify - -[[restify]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/restify.html[elastic.co] -endif::[] - -=== Get started with Restify - -include::./shared-set-up.asciidoc[tag=introduction] - -[float] -[[restify-installation]] -==== Installation - -Add the `elastic-apm-node` module as a dependency to your application: - -[source,bash] ----- -npm install elastic-apm-node --save ----- - -[float] -[[restify-initialization]] -==== Initialization - -It's important that the agent is started before you require *any* other modules in your Node.js application - i.e. before `restify`, `http`, etc. - -This means that you should probably require and start the agent in your application's main file (usually `index.js`, `server.js` or `app.js`). - -Here's a simple Restify example with the Elastic APM agent installed: - -[source,js] ----- -// Add this to the VERY top of the first file loaded in your app -const apm = require('elastic-apm-node').start({ - // Override service name from package.json - // Allowed characters: a-z, A-Z, 0-9, -, _, and space - serviceName: '', - - // Use if APM Server requires a token - secretToken: '', - - // Use if APM Server uses API keys for authentication - apiKey: '', - - // Set custom APM Server URL (default: http://127.0.0.1:8200) - serverUrl: '', -}) - -const restify = require('restify') - -const app = restify.createServer() - -app.get('/hello/:name', function (req, res, next) { - res.send('hello ' + req.params.name) - next() -}) - -app.listen(3000) ----- - -The agent will now monitor the performance of your Restify application and record any uncaught exceptions. - -[float] -[[restify-advanced-configuration]] -===== Advanced configuration - -include::./shared-set-up.asciidoc[tag=advanced-configuration] - -[float] -[[restify-full-documentation]] -===== Full documentation - -* <> -* <> - -[float] -[[restify-performance-monitoring]] -==== Performance monitoring - -include::./shared-set-up.asciidoc[tag=performance-monitoring] - -[float] -[[restify-unknown-routes]] -===== Unknown routes - -include::./shared-set-up.asciidoc[tag=unknown-roots] - -[float] -[[restify-error-logging]] -==== Error logging - -include::./shared-set-up.asciidoc[tag=error-logging] - -[float] -[[restify-filter-sensitive-information]] -==== Filter sensitive information - -include::./shared-set-up.asciidoc[tag=filter-sensitive-info] - -[float] -[[restify-add-your-own-data]] -==== Add your own data - -include::./shared-set-up.asciidoc[tag=add-your-own-data] - -[float] -[[restify-compatibility]] -==== Compatibility - -include::./shared-set-up.asciidoc[tag=compatibility-link] - -[float] -[[restify-troubleshooting]] -==== Troubleshooting - -include::./shared-set-up.asciidoc[tag=troubleshooting-link] diff --git a/docs/set-up.asciidoc b/docs/set-up.asciidoc deleted file mode 100644 index 4dcb884d10..0000000000 --- a/docs/set-up.asciidoc +++ /dev/null @@ -1,335 +0,0 @@ -[[set-up]] -== Set up the Agent - -To get you off the ground, we've prepared guides for setting up the Agent with a few different popular web frameworks and technologies: - -// This tagged region is used throughout the documentation to link to the framework guides -// Updates made here will be applied elsewhere as well. -// tag::web-frameworks-list[] -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -// end::web-frameworks-list[] - -Alternatively, you can <>. -For Kubernetes, we support auto-attachment using the {apm-attacher-ref}/index.html[APM attacher]. - -To see an overview of which components of your application we instrument automatically, -use the <> page. - -Other useful documentation includes: - -* <> -* <> -* <> -* <> - -include::./lambda.asciidoc[] - -include::./azure-functions.asciidoc[] - -include::./express.asciidoc[] - -include::./fastify.asciidoc[] - -include::./hapi.asciidoc[] - -include::./koa.asciidoc[] - -include::./nextjs.asciidoc[] - -include::./restify.asciidoc[] - -include::./typescript.asciidoc[] - -include::./custom-stack.asciidoc[] - - -[[starting-the-agent]] -=== Starting the agent - -There are a few ways to start the Node.js APM agent. Choose the one that works best for you. The most important considerations for selecting a method are: - -- ensuring the APM agent starts early enough, and -- having a convenient way to configure the agent. - -For the Node.js APM agent to be able to fully function, it *must be started before `require(...)` statements for other modules*. The APM agent automatically instruments modules by interposing itself in the import process. If a given module is imported before the APM agent has started, then it won't be able to instrument that module. - - -==== Start methods - -[[start-option-require-and-start]] -===== `require('elastic-apm-node').start(...)` - -The most common way to start the APM agent is to require the `elastic-apm-node` module and call the <> method at the top of your main module. This allows you to use any of the methods to <>. - -[source,js] ----- -const apm = require('elastic-apm-node').start({ - // Add configuration options here. -}); - -// Application main code goes here. ----- - - -[[start-option-require-start-module]] -===== `require('elastic-apm-node/start')` - -Another way to start the agent is with the `elastic-apm-node/start` module that imports and _starts_ the agent. - -[source,js] ----- -const apm = require('elastic-apm-node/start'); - -// Application main code goes here. ----- - -This start method exists for those that use a tool like Babel or esbuild to translate/transpile from code using ES modules (as in the following example) to code using CommonJS. It ensures that the APM agent is started before other imports in the same file. See <> below for details. - -[source,js] ----- -import 'elastic-apm-node/start.js'; - -// Application main code goes here. ----- - -A limitation of this approach is that you cannot configure the agent with an options object, but instead have to rely on <>, such as setting `ELASTIC_APM_...` environment variables. - -Note: As of elastic-apm-node version 3.47.0, the "elastic-apm-node/start.js" will *not start the agent in a Node.js Worker thread.* - - -[[start-option-node-require-opt]] -===== `node -r elastic-apm-node/start.js ...` - -Another way to start the agent is with the `-r elastic-apm-node/start.js` https://nodejs.org/api/cli.html#-r---require-module[command line option to `node`]. This will load and start the APM agent before your application code starts. This method allows you to enable the agent _without touching any code_. This is the recommended start method for <> and for tracing <>. - -[source,bash] ----- -node -r elastic-apm-node/start.js app.js ----- - -The `-r, --require` option can also be specified via the https://nodejs.org/api/cli.html#node_optionsoptions[`NODE_OPTIONS` environment variable]: - -[source,bash] ----- -# export ELASTIC_APM_... # Configure the agent with envvars. -export NODE_OPTIONS='-r elastic-apm-node/start.js' -node app.js ----- - -Note: As of elastic-apm-node version 3.47.0, the "elastic-apm-node/start.js" will *not start the agent in a https://nodejs.org/api/worker_threads.html[Node.js Worker thread].* New Worker threads inherit the `process.execArgv` and environment, so "elastic-apm-node/start.js" is executed again. Starting a new APM agent in each Worker thread because of "start.js" is deemed surprise, so is disabled for now. - - -[[start-option-separate-init-module]] -===== Separate APM init module - -If you want to avoid <> but still want the flexibility of passing a config object to the <>, then a good option is to write a separate JavaScript or TypeScript module that starts the agent, and import *that* init module at the top of your main file. For example: - -[source,ts] ----- -// initapm.ts -import apm from 'elastic-apm-node'; -apm.start({ - serverUrl: 'https://...', - secretToken: '...', - // ... -}) ----- - -[source,ts] ----- -// main.ts -import 'initapm' - -// Application code starts here. ----- - - -[[start-gotchas]] -==== Start gotchas - -This section shows some sometimes subtle surprises starting the APM agent with some technologies. A general troubleshooting tip for using the agent with any build tool/system that produces compiled JavaScript is to look at the compiled JavaScript to see what is actually being executed by `node`. - -[[start-esm-imports]] -===== Hoisted ES module imports - -When using a tool like Babel or esbuild to translate/transpile from code using ES modules (i.e. `import ...` statements) to code using CommonJS (i.e. `require(...)`), all imports are "hoisted" to the top of a module, properly following ECMAScript module (ESM) semantics. This means the `apm.start()` method is called too late—*after* the `http` module has been imported. - -For example, running Babel on the following code does not initiate APM early enough: - -[source,js] ----- -import apm from 'elastic-apm-node'; -apm.start() // This does not work. - -import http from 'http'; -// ... ----- - -Babel translates this to the equivalent of: - -[source,js] ----- -var apm = require('elastic-apm-node'); -var http = require('http'); -apm.start() // This is started too late. -// ... ----- - -The <> fixes this problem. The following will work: - -[source,js] ----- -import 'elastic-apm-node/start'; // This works. -import http from 'http'; -// ... ----- - -A more complete example using Babel is https://github.com/elastic/apm-agent-nodejs/tree/main/test/babel[here]. - -The same is true for ES module usage translated by esbuild (as explained well in https://esbuild.github.io/content-types/#real-esm-imports[the esbuild docs here]). Notably, TypeScript does _not_ following ECMAScript module semantics in this regard. - -Another good option is <> and import that first. - - -[[start-typescript]] -===== TypeScript gotcha - -TypeScript is a language that compiles to JavaScript, via the `tsc` TypeScript compiler, and is then executed via `node` (or some other JavaScript interpreter). Sometimes the produced JavaScript has a gotcha for using this APM agent. TypeScript assumes that module imports do not have side-effects, so it will https://github.com/Microsoft/TypeScript/wiki/FAQ#why-are-imports-being-elided-in-my-emit[elide the following import] if the `apm` variable is not used: - -[source,js] ----- -import apm from 'elastic-apm-node/start'; // Be careful ----- - -One can avoid that elision with: - -[source,js] ----- -import 'elastic-apm-node/start'; ----- - -Or with something like this: - -[source,js] ----- -import apm from 'elastic-apm-node/start'; apm; // Ensure import is kept for its side-effect. ----- - -TypeScript 5.0 https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/#verbatimmodulesyntax[introduced a `--verbatimModuleSyntax`] -option that avoids this elision. - - -[[start-bundlers]] -===== Bundlers and APM - -JavaScript Bundlers are tools that bundle up a number of JavaScript files into one, or a few, JavaScript files to be executed. Often they also include other features such as compilation (from newer to older JavaScript syntax, from TypeScript), tree-shaking (removing sections of code that are unused), minifying, bundling of CSS/images, etc. There are many bundler tools, including: https://webpack.js.org/[Webpack], https://esbuild.github.io/[esbuild], https://rollupjs.org/[Rollup], https://parceljs.org/[Parcel]. - -The main use case for bundlers is for improving performance in _browser apps_, where reducing the size and number of separate files helps with network and CPU overhead. The use case is typically less strong for server-side JavaScript code executed with `node`. However, some tooling will use bundlers for server-side JavaScript, not necessarily for the _bundling_ but for some of the other features. - -Unfortunately, *using a bundler typically breaks the APM agent*. Bundling multiple modules into a single file necessarily means replacing `require(...)` calls with custom bundler code that handles returning the module object. But the APM agent relies on those `require(...)` calls to instrument a module. There is no automatic fix for this. The workaround is to: - -1. exclude the `elastic-apm-node` APM agent module from the bundle; and -2. optionally exclude other modules from the bundle that you would like the APM agent to instrument. - -"Excluding" a module 'foo' from the bundle (Webpack calls these "externals") means that a `require('foo')` expects "node_modules/foo/..." to exist at runtime. This means that you need to deploy both your bundle file(s) _and_ the excluded modules. This may or may not defeat your reasons for using a bundler. - -The rest of this section shows how to configure externals with various bundlers. If you know of a mechanism for a bundler that we haven't documented, please https://github.com/elastic/apm-agent-nodejs/blob/main/CONTRIBUTING.md#contributing-to-the-apm-agent[let us know.] - -[[start-webpack]] -===== Webpack - -Webpack supports https://webpack.js.org/configuration/externals/["externals"] configuration options to exclude specific modules from its bundle. At a minimum, the 'elastic-apm-agent' module must be made external. In addition, any modules that you want the APM agent to instrument (e.g. a database client) must also be made external. The easiest way to do this is to *use the https://github.com/liady/webpack-node-externals['webpack-node-externals'] module to make all of "node_modules/..." external*. - -For webpack@5 ensure your "webpack.config.js" has the following: - -[source,js] ----- -const nodeExternals = require('webpack-node-externals'); - -module.exports = { - // ... - - // Set these so Webpack emits code using Node's CommonJS - // require functions and knows to use Node's core modules. - target: 'node', - externalsPresets: { - node: true - }, - - // This tells Webpack to make everything under - // "node_modules/" external. - externals: [nodeExternals()], -}; ----- - -For webpack@4, the `externalsPresets` config var does not exist, so use: - -[source,js] ----- -const nodeExternals = require('webpack-node-externals'); - -module.exports = { - // ... - - target: 'node', - externals: [nodeExternals()], -}; ----- - - -[[start-esbuild]] -===== esbuild - -Esbuild supports marking modules/files as https://esbuild.github.io/api/#external["external"] to the bundle. At a minimum, the 'elastic-apm-agent' module must be made external for the APM agent to work. In addition, any modules that you want the APM agent to instrument (e.g. a database client) must also be made external. - -Here is an example build script for "package.json" to bundle a Node.js application (with "src/index.js" as the entry point, targetting node v14.x, and ensuring that the `pg` PostgreSQL module is instrumented): - -[source,json] ----- -{ - "scripts": { - "build": "esbuild src/index.js --outdir=dist --bundle --sourcemap --minify --platform=node --target=node14 --external:elastic-apm-node --external:pg" - } -} ----- - -This can be invoked via: - -[source,bash] ----- -npm run build ----- - -Or the esbuild configuration can be put into a build script and invoked via `node esbuild.build.js`. - -[source,js] ----- -// esbuild.build.js -require('esbuild').build({ - entryPoints: ['./src/index.js'], - outdir: 'dist', - bundle: true, - platform: 'node', - target: 'node14', - sourcemap: true, - minify: true, - external: ['elastic-apm-node', 'pg'] -}).catch(() => process.exit(1)) ----- - -An alternative to manually listing specific dependencies as "external" is to use the following esbuild option to exclude *all* dependencies: - -[source,bash] ----- -esbuild ... --external:'./node_modules/*' ----- - -A more complete example using esbuild and the APM agent is https://github.com/elastic/apm-agent-nodejs/tree/main/examples/esbuild/[here]. diff --git a/docs/setup.asciidoc b/docs/setup.asciidoc deleted file mode 100644 index e595ebb2b4..0000000000 --- a/docs/setup.asciidoc +++ /dev/null @@ -1,93 +0,0 @@ -[[advanced-setup]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/advanced-setup.html[elastic.co]. -endif::[] - -== Configuration - -Use the following pages to configure the APM Agent. - -* <> -** <> -** <> -* <> - -[[configuring-the-agent]] -=== Configuring the agent - -There are multiple ways to configure the Node.js agent. In order of precedence: - -1. APM Agent Central Configuration via Kibana. -(supported options are marked with <>) - -2. Environment variables. - -3. If calling the `apm.start()` function, supply a <> as the first argument. - -4. Via the <>. - -For information on the available configuration properties and the expected names of environment variables, see the <> documentation. - -[float] -[[dynamic-configuration]] -==== Dynamic configuration - -Configuration options marked with the image:./images/dynamic-config.svg[] badge can be changed at runtime -when set from a supported source. - -The Node.js Agent supports {apm-app-ref}/agent-configuration.html[Central configuration], -which allows you to fine-tune certain configurations via the APM app in Kibana. -This feature is enabled in the Agent by default, with <>. - -[float] -[[agent-configuration-object]] -==== Agent configuration object - -To use the optional `options` argument, pass it into the `apm.start()` method: - -[source,js] ----- -var apm = require('elastic-apm-node').start({ - // add configuration options here -}) ----- - -This example shows how to configure the agent to only be active in production: - -[source,js] ----- -// Add this to the VERY top of the first file loaded in your app -require('elastic-apm-node').start({ - // Override service name from package.json - // Allowed characters: a-z, A-Z, 0-9, -, _, and space - serviceName: '', - - // Use if APM Server requires a token - secretToken: '', - - // Use if APM Server uses API keys for authentication - apiKey: '', - - // Set custom APM Server URL (default: http://127.0.0.1:8200) - serverUrl: '', - - // Only activate the agent if it's running in production - active: process.env.NODE_ENV === 'production' -}) ----- - -[float] -[[agent-configuration-file]] -==== Agent configuration file - -The Node.js agent looks for a file named `elastic-apm-node.js` in the current working directory. -You can specify a custom path for this file with the <> configuration option. - - -include::./configuration.asciidoc[] - -include::./custom-transactions.asciidoc[] - -include::./custom-spans.asciidoc[] diff --git a/docs/shared-set-up.asciidoc b/docs/shared-set-up.asciidoc deleted file mode 100644 index 0f48c65458..0000000000 --- a/docs/shared-set-up.asciidoc +++ /dev/null @@ -1,148 +0,0 @@ -// Content in this file is shared across the Node.js documentation. -// Ensure any changes made here are relevant to all areas where the documentation is included. -// You can search for the tag name to determine where the content is used. -// ----------------------------------------------------------------- - -// tag::introduction[] -Getting Elastic APM set up for your {framework} app is easy, -and there are various ways you can tweak it to fit your needs. -Follow the guide below to get started, and for more advanced topics, -check out the <>. -// end::introduction[] - -// ----------------------------------------------------------------- - -// Advanced configuration -// tag::advanced-configuration[] -In the above example we initialize the agent by calling the <> function. -This function takes an optional options object used to configure the agent. -Any option not supplied via the options object can instead be configured using environment variables. -So if you prefer, you can set the same configuration options using environment variables: - -[source,bash] ----- -ELASTIC_APM_SERVICE_NAME= -ELASTIC_APM_SECRET_TOKEN= -ELASTIC_APM_SERVER_URL= ----- - -And then just start the agent like so: - -[source,js] ----- -// Start the agent before any thing else in your app -var apm = require('elastic-apm-node').start() ----- - -See all possible ways to configure the agent <>. -// end::advanced-configuration[] - -// ----------------------------------------------------------------- - -// Performance monitoring -// tag::performance-monitoring[] -Elastic APM automatically measures the performance of your {framework} application. -It records spans for database queries, -external HTTP requests, -and other slow operations that happen during requests to your {framework} app. - -By default, the agent will instrument <>. -To instrument other events, -you can use custom spans. -For information about custom spans, -see the <>. - -Spans are grouped in transactions - by default one for each incoming HTTP request. -But it's possible to create custom transactions not associated with an HTTP request. -See the <> for details. -// end::performance-monitoring[] - -// ----------------------------------------------------------------- - -// Unknown roots -// tag::unknown-roots[] -When viewing the performance metrics of your application in Elastic APM, -you might see some transactions named "unknown route". -This indicates that the agent detected an incoming HTTP request to your application, -but didn't know which route in your {framework} app the HTTP request matched. - -This might simply be 404 requests, -which by definition don't match any route, -or it might be a symptom that the agent wasn't installed correctly. -If you see this or can't get any meaningful metrics to show up, -please follow the <>. -// end::unknown-roots[] - -// ----------------------------------------------------------------- - -// Error logging -// tag::error-logging[] -By default, the Node.js agent will watch for uncaught exceptions and send them to Elastic APM automatically. -But in most cases, errors are not thrown but returned via a callback, -caught by a promise, -or simply manually created. -Those errors will not automatically be sent to Elastic APM. -To manually send an error to Elastic APM, -simply call `apm.captureError()` with the error: - -[source,js] ----- -var err = new Error('Ups, something broke!') - -apm.captureError(err) ----- - -For advanced logging of errors, -including adding extra metadata to the error, -see <>. -// end::error-logging[] - -// ----------------------------------------------------------------- - -// Filter sensitive information -// tag::filter-sensitive-info[] -By default, the Node.js agent will filter common sensitive information before sending errors and metrics to the Elastic APM server. - -It's possible for you to tweak these defaults or remove any information you don't want to send to Elastic APM: - -* By default, the Node.js agent will not log the body of HTTP requests. -To enable this, -use the <> config option -* By default, the Node.js agent will filter certain HTTP headers known to contain sensitive information. -To disable this, -use the <> config option -* To apply custom filters, -use one of the <> functions -//end::filter-sensitive-info[] - -// ----------------------------------------------------------------- - -// Add your own data -// tag::add-your-own-data[] -The Node.js agent will keep track of the active HTTP request and will link it to errors and recorded transaction metrics when they are sent to the Elastic APM server. -This allows you to see details about which request resulted in a particular error or which requests cause a certain HTTP endpoint to be slow. - -But in many cases, -information about the HTTP request itself isn't enough. -To add even more metadata to errors and transactions, -use one of the functions below: - -* <> - Call this to enrich collected performance data and errors with information about the user/client -* <> - Call this to enrich collected performance data and errors with any information that you think will help you debug performance issues and errors (this data is only stored, but not indexed in Elasticsearch) -* <> - Call this to enrich collected performance data and errors with simple key/value strings that you think will help you debug performance issues and errors (labels are indexed in Elasticsearch) -//end::add-your-own-data[] - -// ----------------------------------------------------------------- - -// Compatibility -// tag::compatibility-link[] -See <> for details. -// end::compatibility-link[] - -// ----------------------------------------------------------------- - -// Troubleshooting -// tag::troubleshooting-link[] -If you can't get the Node.js agent to work as expected, -please follow the <>. -// end::troubleshooting-link[] \ No newline at end of file diff --git a/docs/source-maps.asciidoc b/docs/source-maps.asciidoc deleted file mode 100644 index 940afe05aa..0000000000 --- a/docs/source-maps.asciidoc +++ /dev/null @@ -1,51 +0,0 @@ -[[source-maps]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/source-maps.html[elastic.co] -endif::[] - -== Source map support - -The Elastic APM Node.js agent supports source maps by default. -If you transpile your source code and supply a source map, -the agent will be able to collect the correct stack traces and even the original source code if available. - -To take advantage of this, simply make sure that your transpiled source code contains a `sourceMappingURL` comment at the bottom of each JavaScript file. -It can either point to a source map file on disk: - -[source,js] ----- -//# sourceMappingURL=/path/to/file.js.map ----- - -Or you can inline the source map using base64 encoding: - -[source,js] ----- -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlcyI6WyJmb28uanMiLCJiYXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O1VBQ0c7Ozs7Ozs7Ozs7Ozs7O3NCQ0RIO3NCQUNBIn0= ----- - -All modern build toolchains support generating source maps and adding these comments to the transpiled source code. - -[float] -[[original-source-code]] -=== Original source code - -Elastic APM uses source maps for two purposes: -to collect stack traces that point to your original source code, -_and_ to collect the original source code as inline code snippets related to each frame in your stack traces. - -For optimal support, -we recommend that you either inline the original source code using the `sourcesContent` property inside the source map, -or that you deploy the original source code to your production server along with the transpiled source code. - -If you choose to deploy the original source code, -make sure that it's accessible via the file system at the path specified with the `sourceRoot` property in the source map. - -[float] -[[public-access]] -=== Public access? - -Your source maps or original source code *does not* need to be available via the internet. -Everything is handled by the local Node.js agent on your server. diff --git a/docs/span-api.asciidoc b/docs/span-api.asciidoc deleted file mode 100644 index 80b0cc7a41..0000000000 --- a/docs/span-api.asciidoc +++ /dev/null @@ -1,274 +0,0 @@ -[[span-api]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/span-api.html[elastic.co] -endif::[] - -=== `Span` API - -A span measures the duration of a single event. -When a span is created it will measure the time until <> is called. - -To get a `Span` object, -you need to call <>. - -To see an example of using custom spans, -see the <> article. - -[[span-transaction]] -==== `span.transaction` - -[small]#Added in: v0.1.0# - -* *Type:* Transaction - -A reference to the parent transaction object. - -All spans belong to a transaction. - -[[span-name]] -==== `span.name` - -[small]#Added in: v0.1.0# - -* +{type-string}+ *Default:* `unnamed` - -The name of the span. -This can also be set via <>. - -[[span-type]] -==== `span.type` - -[small]#Added in: v0.1.0# - -[small]#Split components into `type`, `subtype` and `action` in: v3.0.0# - -* +{type-string}+ *Default:* `custom` - -The type of span. -This can also be set via <>. - -The type is used to group similar spans together. -For instance, -all spans of MySQL queries are given the type `db`, -with a subtype of `mysql` and an action of `query`. - -In the above example, `db` is considered the type. -Though there are no naming restrictions for the type, -the following are standardized across all Elastic APM agents: -`app`, `db`, `cache`, `template`, and `ext`. - -[[span-subtype]] -==== `span.subtype` - -[small]#Added in: v0.1.0# - -* +{type-string}+ *Default:* `custom` - -The subtype of the span. -This can also be set via <>. - -The subtype is typically the name of a module or library. -For example, -MySQL queries have a subtype of `mysql`. - -[[span-action]] -==== `span.action` - -[small]#Added in: v0.1.0# - -* +{type-string}+ *Default:* `custom` - -The action of the span. -This can also be set via <>. - -The action is typically a specific function name or a general description of specific functionality. -For example, -a database query would generally have an action of `query`. - -[[span-traceparent]] -==== `span.traceparent` - -[small]#Added in: v2.9.0# - -Get the serialized traceparent string of the span. - - -[[span-set-label]] -==== `span.setLabel(name, value[, stringify = true])` - -[small]#Added in: v2.1.0# + -[small]#Renamed from `span.setTag()` to `span.setLabel()`: v2.10.0# + -[small]#Added `stringify` argument in: v3.11.0# - -* `name` +{type-string}+ -Any periods (`.`), asterisks (`*`), or double quotation marks (`"`) will be replaced by underscores (`_`), -as those characters have special meaning in Elasticsearch -* `value` +{type-string}+ | +{type-number}+ | +{type-boolean}+ -If the `stringify` argument is not given, or set to `true` then the given value -will be converted to a string. -* `stringify` +{type-boolean}+ -This defaults to `true` for backwards compatibility, but new usage will -typically want `false`. When true, if a non-string `value` is given, it is -converted to a string before being sent to the APM Server. - -[source,js] ----- -span.setLabel('productId', 42, false); ----- - -Set a label on the span. -You can set multiple labels on the same span. - -TIP: Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable -(as opposed to data set via <>). -Before using custom labels, ensure you understand the different types of -{apm-guide-ref}/data-model-metadata.html[metadata] that are available. - -WARNING: Avoid defining too many user-specified labels. -Defining too many unique fields in an index is a condition that can lead to a -{ref}/mapping.html#mapping-limit-settings[mapping explosion]. - - -[[span-add-labels]] -==== `span.addLabels({ [name]: value }[, stringify = true])` - -[small]#Added in: v2.1.0# + -[small]#Renamed from `span.addTags()` to `span.addLabels()`: v2.10.0# + -[small]#Added `stringify` argument in: v3.11.0# - -* `labels` +{type-object}+ Contains key/value pairs: -** `name` +{type-string}+ -Any periods (`.`), asterisks (`*`), or double quotation marks (`"`) will be replaced by underscores (`_`), -as those characters have special meaning in Elasticsearch -** `value` +{type-string}+ | +{type-number}+ | +{type-boolean}+ -If the `stringify` argument is not given, or set to `true` then the given value -will be converted to a string. -* `stringify` +{type-boolean}+ -This defaults to `true` for backwards compatibility, but new usage will -typically want `false`. When true, if a non-string `value` is given, it is -converted to a string before being sent to the APM Server. - -[source,js] ----- -span.addLabels({productId: 42, productName: 'butter'}, false); ----- - -Add several labels on the span. -You can add labels multiple times. - -TIP: Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable -(as opposed to data set via <>). -Before using custom labels, ensure you understand the different types of -{apm-guide-ref}/data-model-metadata.html[metadata] that are available. - -WARNING: Avoid defining too many user-specified labels. -Defining too many unique fields in an index is a condition that can lead to a -{ref}/mapping.html#mapping-limit-settings[mapping explosion]. - - -[[span-ids]] -==== `span.ids` - -[small]#Added in: v2.17.0# - -Produces an object containing `span.id` and `trace.id`. -This enables log correlation to APM traces with structured loggers. - -[source,js] ----- -{ - "trace.id": "abc123", - "span.id": "abc123" -} ----- - - -[[span-end]] -==== `span.end([endTime])` - -[small]#Added in: v0.1.0# - -* `endTime` +{type-number}+ The time when the span ended. -Must be a Unix Time Stamp representing the number of milliseconds since January 1, 1970, 00:00:00 UTC. -Sub-millisecond precision can be achieved using decimals. -If not provided, -the current time will be used - -End the span. -If the span has already ended, -nothing happens. - -[[span-outcome]] -==== `span.outcome` -[small]#Added in: v3.12.0# - -The Node.js agent automatically sets an `outcome` property on spans. This property will be one of three values: - -- `success`: Indicates the span's operation was a success. - -- `failure`: Indicates the span's operation was _not_ a success. - -- `unknown`: Indicates the agent was unable to determine whether the span's operation was a success or not. An `unknown` outcome removes a transaction from error rate considerations. - -What constitutes a success or failure will depend on the span type. - -For the general case, a span's outcome is considered a failure if the Node.js agent captures an error during the execution of the work a span represents. - -However, for exit spans that represent an HTTP request, the `outcome` is based on the status code of the HTTP response. A status code less than `400` is considered a success. A status code greater or equal to `400` is considered a failure. - -[[span-setoutcome]] -==== `span.setOutcome(outcome)` - -[small]#Added in: v3.12.0# - -* `outcome` +{type-string}+ - -The `setOutcome` method allows an end user to override the Node.js agent's default setting of a span's `outcome` property. The `setOutcome` method accepts a string of either `success`, `failure`, or `unknown`, and will force the agent to report this value for a specific span. - -[[span-setservicetarget]] -==== `span.setServiceTarget(type, name)` - -[small]#Added in: v3.39.0# - -* `type` +{type-string}+ | null The target service type, usually the same value as `span.subtype`, e.g. "mysql". -* `name` +{type-string}+ | null The target service name, an optional scoping of the service. For databases it is typically the database name. - -Manually set the `service.target.type` and `service.target.name` fields that identify a downstream service. They are used for https://www.elastic.co/guide/en/kibana/current/service-maps.html[Service Maps] and https://www.elastic.co/guide/en/kibana/current/dependencies.html[Dependencies] in the Kibana APM app. The values are only used for "exit" spans -- spans representing outgoing communication, marked with `exitSpan: true` at span creation. - -If false-y values (e.g. `null`) are given for both `type` and `name`, then `service.target` will explicitly be excluded from this span. This may impact Service Maps and other Kibana APM app reporting for this service. - -If this method is not called, the service target values are inferred from other span fields (https://github.com/elastic/apm/blob/main/specs/agents/tracing-spans-service-target.md#field-values[spec]). - -`service.target.*` fields are ignored for APM Server before v8.3. - -[[span-addlink]] -==== `span.addLink(link)` - -[small]#Added in: v4.7.0# - -* `link` +{type-link}+ - -A span can refer to zero or more other transactions or spans (separate -from its parent). Span links will be shown in the Kibana APM app trace view. The -`link` argument is an object with a single "context" field that is a -`Transaction`, `Span`, OpenTelemetry `SpanContext` object, or W3C trace-context -'traceparent' string. -For example: `span.addLink({ context: anotherSpan })`. - -[[span-addlinks]] -==== `span.addLinks([links])` - -[small]#Added in: v4.7.0# - -* `links` +{type-array}+ Span links. - -Add span links to this span. - -A span can refer to zero or more other transactions or spans (separate -from its parent). Span links will be shown in the Kibana APM app trace view. The -`link` argument is an object with a single "context" field that is a -`Transaction`, `Span`, OpenTelemetry `SpanContext` object, or W3C trace-context -'traceparent' string. -For example: `span.addLinks([{ context: anotherSpan }])`. diff --git a/docs/supported-technologies.asciidoc b/docs/supported-technologies.asciidoc deleted file mode 100644 index db51748035..0000000000 --- a/docs/supported-technologies.asciidoc +++ /dev/null @@ -1,196 +0,0 @@ -[[supported-technologies]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/supported-technologies.html[elastic.co] -endif::[] - -== Supported technologies - -The Elastic APM Node.js Agent automatically instruments various APIs in Node.js core and third-party frameworks and packages. This page lists all supported technologies and version ranges. - - -[float] -[[compatibility-node]] -=== Node.js versions - -Support for the Elastic APM Node.js agent follows the https://nodejs.org/en/about/releases/[support schedule of Node.js itself] -to the end-of-life period of each version after its maintenance term. -Versions of Node.js past their end-of-life date are not supported. - -image::./images/node_release_schedule.svg[Node.js release schedule] - -APM agent 4.x releases work with Node.js versions 14.17.0 and later. -APM agent 3.x maintenance releases work with Node.js versions 8.6 and later. -We will only break support for older Node.js versions with a major version release of the APM agent. - -[float] -[[compatibility-esm]] -=== ECMAScript Modules (ESM) - -Beginning with version v3.48.0, the Elastic APM Node.js agent includes -_limited and experimental_ support for instrumenting -https://nodejs.org/api/esm.html#modules-ecmascript-modules[ECMAScript module imports], -i.e. modules that are loaded via `import ...` statements and `import('...')` (dynamic import). -See the <> document for details. - -Note: If you are using TypeScript or JavaScript that is _compiled/translated/transpiled to CommonJS-using JavaScript_ via tools like Babel, Webpack, esbuild, etc., then using `import ...` in your source code is fine. To ensure your compiler is generating JS that uses CommonJS imports, use the following settings: - -- For TypeScript, use https://www.typescriptlang.org/tsconfig#module[`"module": "commonjs"` in your "tsconfig.json"] (a https://github.com/tsconfig/bases/blob/main/bases/node16.json[complete tsconfig.json example]). -- For Babel, use https://babeljs.io/docs/en/babel-preset-env#modules[`"modules": "commonjs"` in your Babel config] (https://github.com/elastic/apm-agent-nodejs/blob/main/test/babel/.babelrc[for example]). -- For Webpack, use `target: 'node', externalsPresets: { node: true }` in your "webpack.config.js". -- For esbuild, use `--platform=node --target=node...` options to `esbuild` (https://github.com/elastic/apm-agent-nodejs/blob/main/examples/esbuild/package.json#L7[for example]). - - -[float] -[[elastic-stack-compatibility]] -=== Elastic Stack Compatibility - -// See the APM agent compatibility table: https://www.elastic.co/guide/en/apm/guide/current/agent-server-compatibility.html - -This agent is compatible with {apm-guide-ref}[APM Server] v6.6 and above. - - -[float] -[[compatibility-frameworks]] -=== Frameworks - -Though you can use Elastic APM <>, -we automate a few things for the most popular Node.js modules. -These are the frameworks that we officially support: - -[options="header"] -|======================================================================= -| Framework | Version | Note -| <> | N/A | -| <> | v3, v4 | https://learn.microsoft.com/en-us/azure/azure-functions/functions-node-upgrade-v4[Node.js programming model v3 and v4] -| <> | ^4.0.0 | -| <> | >=1.0.0 | See also https://www.fastify.io/docs/latest/Reference/LTS/[Fastify's own LTS documentation] -| <> | >=17.9.0 <22.0.0 | -| <> via koa-router or @koa/router | >=5.2.0 <14.0.0 | Koa doesn't have a built in router, so we can't support Koa directly since we rely on router information for full support. We currently support the most popular Koa router called https://github.com/koajs/koa-router[koa-router]. -| <> | >=12.0.0 <13.3.0 | (Technical Preview) This instruments Next.js routing to name transactions for incoming HTTP transactions; and reports errors in user pages. It supports the Next.js production server (`next start`) and development server (`next dev`). See the <>. -| <> | >=5.2.0 <12.0.0 | -|======================================================================= - -[float] -[[compatibility-opentelemetry]] -=== OpenTelemetry - -The Node.js Elastic APM agent supports usage of the OpenTelemetry Tracing API -via its <>. As well, it instruments the OpenTelemetry -Metrics API and Metrics SDK to allow -<>. - -[options="header"] -|======================================================================= -| Framework | Version -| <> | >=1.0.0 <1.10.0 -| https://www.npmjs.com/package/@opentelemetry/sdk-metrics[@opentelemetry/sdk-metrics] | >=1.11.0 <2 -|======================================================================= - - -[float] -[[compatibility-custom-transactions]] -=== Custom Transactions - -By default transactions are named based on their matched HTTP route if the framework used is listed above. -These modules override that behavior to give better insights into specialized HTTP servers: - -[options="header"] -|======================================================================= -|Module |Version |Note -|https://www.npmjs.com/package/express-graphql[express-graphql] |>=0.6.1 <0.13.0 |Will name all transactions by the GraphQL query name. There is a https://github.com/elastic/apm-agent-nodejs/issues/2516[known issue with node <10.4]. This module is deprecated and is no longer tested. -|https://www.npmjs.com/package/apollo-server-express[apollo-server-express] |>=2.0.4 <4|Will name all transactions by the GraphQL query name. Versions before 2.9.6 are no longer tested. -|https://www.npmjs.com/package/@apollo/server[@apollo/server] |>=4.0.0|Will name all transactions by the GraphQL query name -|======================================================================= - -[float] -[[compatibility-tracing-and-instrumentation]] -=== Tracing and Instrumentation - -The Node.js agent will automatically instrument the following modules to give you detailed performance metrics: - -[options="header"] -|======================================================================= -|Module |Version |Note -|https://www.npmjs.com/package/aws-sdk[aws-sdk] |>=2.858.0 <3 |Will instrument SQS send/receive/delete messages, all S3 methods, all DynamoDB methods, and the SNS publish method -|https://www.npmjs.com/package/@aws-sdk/client-s3[@aws-sdk/client-s3] |>=3.15.0 <4 |Will instrument all S3 methods -|https://www.npmjs.com/package/@aws-sdk/client-s3[@aws-sdk/client-sns] |>=3.15.0 <4 |Will instrument the SNS publish method -|https://www.npmjs.com/package/@aws-sdk/client-s3[@aws-sdk/client-sqs] |>=3.15.0 <4 |Will instrument SQS send/receive/delete messages -|https://www.npmjs.com/package/@aws-sdk/client-dynamodb[@aws-sdk/client-dynamodb] |>=3.15.0 <4 |Will instrument all DynamoDB methods -|https://www.npmjs.com/package/cassandra-driver[cassandra-driver] |>=3.0.0 <5 |Will instrument all queries -|https://www.npmjs.com/package/elasticsearch[elasticsearch] |>=8.0.0 |Will instrument all queries -|https://www.npmjs.com/package/@elastic/elasticsearch[@elastic/elasticsearch] |>=7.0.0 <9.0.0 |Will instrument all queries -|https://www.npmjs.com/package/graphql[graphql] |>=0.7.0 <17 |Will instrument all queries -|https://www.npmjs.com/package/handlebars[handlebars] |* |Will instrument compile and render calls -|https://www.npmjs.com/package/jade[jade] |>=0.5.6 |Will instrument compile and render calls; Deprecated. No longer tested. Use pug. -|https://www.npmjs.com/package/pug[pug] |>=0.1.0 |Will instrument compile and render calls -|https://www.npmjs.com/package/ioredis[ioredis] |>=2.0.0 <6.0.0 |Will instrument all queries -|https://www.npmjs.com/package/memcached[memcached] |>=2.2.0 |Will instrument all commands. -|https://www.npmjs.com/package/mongodb-core[mongodb-core] |>=1.2.19 <4 |Will instrument all queries. -A lot of higher level MongoDB modules use mongodb-core, -so those should be supported as well. -|https://www.npmjs.com/package/mongodb[mongodb] |>=2.0.0 <3.3.0 |Supported via mongodb-core -|https://www.npmjs.com/package/mongodb[mongodb] |>=3.3.0 <7 |Will instrument all queries -|https://www.npmjs.com/package/mongojs[mongojs] |>=1.0.0 <2.7.0 |Supported via mongodb-core -|https://www.npmjs.com/package/mongoose[mongoose] |>=4.0.0 <5.7.0 |Supported via mongodb-core -|https://www.npmjs.com/package/mongoose[mongoose] |>=5.7.0 <8 |Supported via mongodb -|https://www.npmjs.com/package/mysql[mysql] |^2.0.0 |Will instrument all queries -|https://www.npmjs.com/package/mysql2[mysql2] |>=1.0.0 <4.0.0 |Will instrument all queries -|https://www.npmjs.com/package/pg[pg] |>=4.0.0 <9.0.0 |Will instrument all queries -|https://www.npmjs.com/package/redis[redis] |>=2.0.0 <5.0.0 |Will instrument all queries -|https://www.npmjs.com/package/tedious[tedious] |>=1.9 <20.0.0 | (Excluding v4.0.0.) Will instrument all queries -|https://www.npmjs.com/package/undici[undici] | >=4.7.1 <8 | Will instrument undici HTTP requests, except HTTP CONNECT. Requires node v14.17.0 or later, or the user to have installed the https://www.npmjs.com/package/diagnostics_channel['diagnostics_channel' polyfill]. -|https://www.npmjs.com/package/ws[ws] |>=1.0.0 <8.0.0 |Will instrument outgoing WebSocket messages -|https://www.npmjs.com/package/kafkajs[kafkajs] |>=2.0.0 <3.0.0 |Will instrument all send methods for producers and message and batch processing for consumers. -|======================================================================= - -[float] -[[compatibility-better-stack-traces]] -=== Better Stack Traces - -The APM agent <> to capture -span stack traces, to show where in your code a span (e.g. for a database query) -was initiated. - -Given the async nature of Node.js, it's not possible for the APM agent to see -further back than the last async boundary. Modules that happen to have an async -boundary between a call from your application code and the action that leads -to an APM span will limit the utility of these span stack traces. - -The modules listed below are those that the APM agent instruments to provide -more useful span stack traces -- ones that point to your application code -- -when enabled. - -If you don't see your own code in spans, -please create a new topic in the https://discuss.elastic.co/c/apm[Elastic APM discuss forum] and include information about your dependencies. - -[options="header"] -|================================================= -|Module |Version |Note -|https://www.npmjs.com/package/knex[knex] |>=0.10.0 <4.0.0 | Provides better span stack traces for 'pg' and 'mysql' spans. -|================================================= - -[float] -[[compatibility-continuity]] -=== Continuity - -The Elastic APM agent monitors async operations in your Node.js application to maintain awareness of which request is the active request at any given time. -Certain modules can interfere with this monitoring if not handled properly. - -Below is a list of modules known to cause issues with this monitoring. -The versions listed are the versions we support. -If you use an unsupported version you might experience missing spans. -This does not impact the stability of your application in any way - only the collected metrics. - -If you do experience missing spans in your performance metrics, -please create a new topic in the https://discuss.elastic.co/c/apm[Elastic APM discuss forum] and include information about your dependencies and what data is missing. - -[options="header"] -|======================================================================= -|Module |Version |Note -|https://www.npmjs.com/package/bluebird[bluebird] |>=2.0.0 <4.0.0 | -|https://www.npmjs.com/package/generic-pool[generic-pool] | ^2.0.0 \|\| ^3.1.0 |Used -by a lot of database modules like for instance "pg" -|https://www.npmjs.com/package/express-queue[express-queue] |>=0.0.11 <1.0.0 | -|======================================================================= diff --git a/docs/transaction-api.asciidoc b/docs/transaction-api.asciidoc deleted file mode 100644 index f55eb0ab45..0000000000 --- a/docs/transaction-api.asciidoc +++ /dev/null @@ -1,340 +0,0 @@ -[[transaction-api]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/transaction-api.html[elastic.co] -endif::[] - -=== `Transaction` API - -A transaction groups multiple spans in a logical group. - -To get a `Transaction` object, -you need to call <>. - -To see an example of using custom transactions, -see the <> article. - -[[transaction-name]] -==== `transaction.name` - -[small]#Added in: v0.1.0# - -* +{type-string}+ *Default:* `unnamed` - -The name of the transaction. - -Can be used to set or overwrite the name of the transaction (visible in the performance monitoring breakdown). -If you don't have access to the current transaction, -you can also set the name using <>. - -Transactions with the same name and <> are grouped together. - -[[transaction-type]] -==== `transaction.type` - -[small]#Added in: v0.1.0# - -[small]#Split components into `type`, `subtype` and `action` in: v3.0.0# - -* +{type-string}+ *Default:* `custom` - -The type of the transaction. - -There's a special type called `request` which is used by the agent for the transactions automatically created when an incoming HTTP request is detected. - -[[transaction-subtype]] -==== `transaction.subtype` deprecated:[v3.25.0] - -[small]#Added in: v3.0.0# + -[small]#Deprecated in: v3.25.0# - -* +{type-string}+ *Default:* `custom` - -The subtype of the transaction. -The transaction `subtype` field is deprecated: it is not used and will be -removed in the next major version. - -[[transaction-action]] -==== `transaction.action` deprecated:[v3.25.0] - -[small]#Added in: v3.0.0# + -[small]#Deprecated in: v3.25.0# - -* +{type-string}+ *Default:* `custom` - -The action of the transaction. -The transaction `action` field is deprecated: it is not used and will be removed -in the next major version. - -[[transaction-traceparent]] -==== `transaction.traceparent` - -[small]#Added in: v2.9.0# - -Get the serialized traceparent string of the transaction. - -[[transaction-result]] -==== `transaction.result` - -[small]#Added in: v0.1.0# - -* +{type-string}+ *Default:* `success` - -A string describing the result of the transaction. -This is typically the HTTP status code, -or e.g. "success" or "failure" for a background task. - -[[transaction-start-span]] -==== `transaction.startSpan([name][, type][, subtype][, action][, options])` - -[small]#Added in: v2.0.0# - -[small]#Split `type` into `type`, `subtype` and `action` in: v3.0.0# - -* `name` +{type-string}+ The name of the span. -You can alternatively set this via <>. -*Default:* `unnamed` - -* `type` +{type-string}+ The type of the span. -You can alternatively set this via <>. - -* `subtype` +{type-string}+ The subtype of the span. -You can alternatively set this via <>. - -* `action` +{type-string}+ The action of the span. -You can alternatively set this via <>. - -* `options` - The following options are supported: - -** `startTime` +{type-number}+ The time when the span started. -Must be a Unix Time Stamp representing the number of milliseconds since January 1, 1970, 00:00:00 UTC. -Sub-millisecond precision can be achieved using decimals. -If not provided, -the current time will be used - -** `exitSpan` +{type-boolean}+ Make an "exit span". -Exit spans represent outgoing communication. They are used to create a node -in the {kibana-ref}/service-maps.html[Service Map] and a downstream service -in the {kibana-ref}/dependencies.html[Dependencies Table]. The provided subtype -will be used as the downstream service name. - -** `links` +{type-array}+ Span links. -A span can refer to zero or more other transactions or spans (separate from -its parent). Span links will be shown in the Kibana APM app trace view. The -`links` argument is an array of objects with a single "context" field that is a -`Transaction`, `Span`, or W3C trace-context 'traceparent' string. For example: -`transaction.startSpan('aName', { links: [{ context: anotherSpan }] })`. - -Start and return a new custom span associated with this transaction. -When a span is started it will measure the time until <> is called. - -See <> docs for details on how to use custom spans. - -[[transaction-set-label]] -==== `transaction.setLabel(name, value[, stringify = true])` - -[small]#Added in: v0.1.0# + -[small]#Renamed from `transaction.setTag()` to `transaction.setLabel()`: v2.10.0# + -[small]#Added `stringify` argument in: v3.11.0# - -* `name` +{type-string}+ -Any periods (`.`), asterisks (`*`), or double quotation marks (`"`) will be replaced by underscores (`_`), -as those characters have special meaning in Elasticsearch -* `value` +{type-string}+ | +{type-number}+ | +{type-boolean}+ -If the `stringify` argument is not given, or set to `true` then the given value -will be converted to a string. -* `stringify` +{type-boolean}+ -This defaults to `true` for backwards compatibility, but new usage will -typically want `false`. When true, if a non-string `value` is given, it is -converted to a string before being sent to the APM Server. - -[source,js] ----- -transaction.setLabel('productId', 42, false); ----- - -Set a label on the transaction. -You can set multiple labels on the same transaction. -If an error happens during the transaction, -it will also get tagged with the same labels. - -TIP: Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable -(as opposed to data set via <>). -Before using custom labels, ensure you understand the different types of -{apm-guide-ref}/data-model-metadata.html[metadata] that are available. - -WARNING: Avoid defining too many user-specified labels. -Defining too many unique fields in an index is a condition that can lead to a -{ref}/mapping.html#mapping-limit-settings[mapping explosion]. - - -[[transaction-add-labels]] -==== `transaction.addLabels({ [name]: value }[, stringify = true])` - -[small]#Added in: v1.5.0# + -[small]#Renamed from `transaction.addTags()` to `transaction.addLabels()`: v2.10.0# + -[small]#Added `stringify` argument in: v3.11.0# - -* `labels` +{type-object}+ Contains key/value pairs: -** `name` +{type-string}+ -Any periods (`.`), asterisks (`*`), or double quotation marks (`"`) will be replaced by underscores (`_`), -as those characters have special meaning in Elasticsearch -** `value` +{type-string}+ | +{type-number}+ | +{type-boolean}+ -If the `stringify` argument is not given, or set to `true` then the given value -will be converted to a string. -* `stringify` +{type-boolean}+ -This defaults to `true` for backwards compatibility, but new usage will -typically want `false`. When true, if a non-string `value` is given, it is -converted to a string before being sent to the APM Server. - -[source,js] ----- -transaction.addLabels({productId: 42, productName: 'butter'}, false); ----- - -Add several labels on the transaction. -You can add labels multiple times. -If an error happens during the transaction, -it will also get tagged with the same labels. - -TIP: Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable -(as opposed to data set via <>). -Before using custom labels, ensure you understand the different types of -{apm-guide-ref}/data-model-metadata.html[metadata] that are available. - -WARNING: Avoid defining too many user-specified labels. -Defining too many unique fields in an index is a condition that can lead to a -{ref}/mapping.html#mapping-limit-settings[mapping explosion]. - - -[[transaction-ensure-parent-id]] -==== `transaction.ensureParentId()` - -[small]#Added in: v2.0.0# - -* +{type-string}+ - -If the transaction does not already have a parent id, -calling this method generates a new parent id, -sets it as the parent id of this transaction, -and returns it as a +{type-string}+. - -This enables the correlation of the spans the JavaScript Real User Monitoring (RUM) agent creates for the initial page load with the transaction of the backend service. -If your backend service generates the HTML page dynamically, -initializing the JavaScript RUM agent with the value of this method allows analyzing the time spent in the browser vs in the backend services. - -// WARNING: The below content is reused in distributed-tracing.asciidoc -// Ensure any changes made here are safe to include on that page as well. -// tag::ensure-parent-id-snippet[] -To enable the JavaScript RUM agent, -add a snippet similar to this to the body of your HTML page, -preferably before other JavaScript libraries: - -[source,js] ----- -elasticApm.init({ - serviceName: 'my-frontend-app', // Name of your frontend app - serverUrl: 'https://example.com:8200', // APM Server host - pageLoadTraceId: '${transaction.traceId}', - pageLoadSpanId: '${transaction.ensureParentId()}', - pageLoadSampled: ${transaction.sampled} -}) ----- -// end::ensure-parent-id-snippet[] - -See the {apm-rum-ref}[JavaScript RUM agent documentation] for more information. - -[[transaction-ids]] -==== `transaction.ids` - -[small]#Added in: v2.17.0# - -Produces an object containing `transaction.id` and `trace.id`. -This enables log correlation to APM traces with structured loggers. - -[source,js] ----- -{ - "trace.id": "abc123", - "transaction.id": "abc123" -} ----- - - -[[transaction-end]] -==== `transaction.end([result][, endTime])` - -[small]#Added in: v0.1.0# - -* `result` +{type-string}+ Describes the result of the transaction. -This is typically the HTTP status code, -or e.g. "success" or "failure" for a background task - -* `endTime` +{type-number}+ The time when the transaction ended. -Must be a Unix Time Stamp representing the number of milliseconds since January 1, 1970, 00:00:00 UTC. -Sub-millisecond precision can be achieved using decimals. -If not provided, -the current time will be used - -Ends the transaction. -If the transaction has already ended, -nothing happens. - -Alternatively you can call <> to end the active transaction. - -[[transaction-outcome]] -==== `transaction.outcome` - -[small]#Added in: v3.12.0# - -The Node.js agent automatically sets an `outcome` property on transactions. This property will be one of three values: - -- `success`: Indicates the transaction's operation was a success. - -- `failure`: Indicates the transaction's operation was _not_ a success. - -- `unknown`: Indicates we were unable to determine if the transaction's operation was a success or not. An `unknown` outcome removes a transaction from error rate considerations. - -A transaction is considered a success if the underlying HTTP request handling produces a response with a status code that is less than `500`. A status code of `500` or greater is considered a failure. - -Non-HTTP transactions will begin with an outcome of `unknown`. - -[[transaction-setoutcome]] -==== `transaction.setOutcome(outcome)` - -[small]#Added in: v3.12.0# - -* `outcome` +{type-string}+ - -The `setOutcome` method allows an end user to override the Node.js agent's default setting of a transaction's `outcome` property. The `setOutcome` method accepts a string of either `success`, `failure`, or `unknown`, and will force the agent to report this value for a specific span. - -[[transaction-addlink]] -==== `transaction.addLink(link)` - -[small]#Added in: v4.7.0# - -* `link` +{type-link}+ - -A transaction can refer to zero or more other transactions or spans (separate -from its parent). Span links will be shown in the Kibana APM app trace view. The -`link` argument is an object with a single "context" field that is a -`Transaction`, `Span`, OpenTelemetry `SpanContext` object, or W3C trace-context -'traceparent' string. -For example: `transaction.addLink({ context: anotherSpan })`. - -[[transaction-addlinks]] -==== `transaction.addLinks([links])` - -[small]#Added in: v4.7.0# - -* `links` +{type-array}+ Span links. - -Add span links to this transaction. - -A transaction can refer to zero or more other transactions or spans (separate -from its parent). Span links will be shown in the Kibana APM app trace view. The -`link` argument is an object with a single "context" field that is a -`Transaction`, `Span`, OpenTelemetry `SpanContext` object, or W3C trace-context -'traceparent' string. -For example: `transaction.addLinks([{ context: anotherSpan }])`. diff --git a/docs/troubleshooting.asciidoc b/docs/troubleshooting.asciidoc deleted file mode 100644 index 892f794692..0000000000 --- a/docs/troubleshooting.asciidoc +++ /dev/null @@ -1,129 +0,0 @@ -[[troubleshooting]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/troubleshooting.html[elastic.co] -endif::[] - -== Troubleshooting - -Is something not working as expected? -Don't worry if you can't figure out what the problem is; we’re here to help! -As a first step, ensure your app is compatible with the agent's <>. - -If you're an existing Elastic customer with a support contract, please create a ticket in the -https://support.elastic.co/customers/s/login/[Elastic Support portal]. -Other users can post in the https://discuss.elastic.co/c/apm[APM discuss forum]. - -IMPORTANT: *Please upload your complete debug logs* to a service like https://gist.github.com[GitHub Gist] -so that we can analyze the problem. -Logs should include everything from when the application starts up until the first request executes. -See <> for more information. - - -[float] -[[use-latest-agent]] -=== Updating to latest agent version - -The Elastic Node.js APM Agent is updated frequently and releases are not -strongly tied to other components in the Elastic Stack. Therefore, -updating to the most recently released agent version is often the recommended -first troubleshooting step. - -See <> for more details. - - -[float] -[[debug-mode]] -=== Debug mode - -To capture enough information for troubleshooting, perform these steps: - -1. Start your app with "trace"-level logging. This can be done by setting the - environment variable `ELASTIC_APM_LOG_LEVEL=trace` or adding `logLevel: 'trace'` - to the `apm.start(options)` call (see <> for details). -2. Disable a possible custom `logger` config, because a custom logger can - result in structured log data being lost. This can be done by setting the - environment variable `ELASTIC_APM_LOGGER=false`. -3. Send a few HTTP requests to some of the app endpoints and/or reproduce the - issue you are seeing. -4. Wait at least 10 seconds to allow the agent to try and connect to the APM - Server (controlled by <>). - -For example: - -[source,bash] ----- -ELASTIC_APM_LOG_LEVEL=trace ELASTIC_APM_LOGGER=false node app.js | tee -a apm-debug.log ----- - -If you are capturing debugging output for Elastic support, for help on the -Elastic forums, or for a GitHub issue, *please upload the complete debug -output* to a service like https://gist.github.com[GitHub Gist] so that -we can analyze the problem. - - -[float] -[[common-problems]] -=== Common problems - -[float] -[[no-data-sent]] -==== No data is sent to the APM Server - -If there is no data for your service in the Kibana APM app, check the log output -for messages like the following. - -The most common source of problems are connection issues between the agent and -the APM server. Look for a log message of the form `APM Server transport error ...`. -For example: - -[source,text] ----- -APM Server transport error (ECONNREFUSED): connect ECONNREFUSED 127.0.0.1:8200 ----- - -These may indicate an issue with the agent configuration (see <>, -<> or <>), a network problem between agent and server, or -that the APM server is down or misconfigured (see -{apm-guide-ref}/troubleshooting.html[the APM server troubleshooting docs]). - -Also look for error messages starting with `Elastic APM ...`. Some examples: - -[source,text] ----- -Elastic APM agent disabled (`active` is false) ----- - -This indicates that you have likely set the `active` option or the `ELASTIC_APM_ACTIVE` environment variable to `false`. See <>. - - -[source,text] ----- -Elastic APM is incorrectly configured: serverUrl "..." contains an invalid port! (allowed: 1-65535) ----- - - -[float] -[[missing-performance-metrics]] -==== No metrics or trace data is sent to APM Server - -Errors get tracked just fine, but you don't see any performance metrics or -trace data. - -Make sure that the agent is *both required and started at the very top of your main app file* (usually the `index.js`, `server.js` or `app.js` file). -It's important that the agent is started before any other modules are -`require`d. If not, the agent will not be able to hook into any modules and -will not be able to measure the performance of your application. -See <> for a number of possible surprises in correctly starting the APM agent when used with some compilers or bundlers. - - -[float] -[[disable-agent]] -=== Disable the Agent - -In the unlikely event the agent causes disruptions to a production application, -you can disable the agent while you troubleshoot. - -To disable the agent, set <> to `false`. -You'll need to restart your application for the changes to apply. diff --git a/docs/typescript.asciidoc b/docs/typescript.asciidoc deleted file mode 100644 index 83cf19ba50..0000000000 --- a/docs/typescript.asciidoc +++ /dev/null @@ -1,85 +0,0 @@ -[[typescript]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/typescript.html[elastic.co] -endif::[] - -=== Get started with TypeScript - -The Elastic APM Node.js agent is implemented in vanilla JavaScript, but includes TypeScript types. This document shows how to integrate the APM agent with your TypeScript project. - -A small, complete example project can be found https://github.com/elastic/apm-agent-nodejs/tree/main/examples/typescript[here]. - - -[float] -[[typescript-installation]] -==== Installation - -Add `elastic-apm-node` as a dependency to your application, and possibly `@types/node` as a dev-dependency for type checking: - -[source,bash] ----- -npm install --save elastic-apm-node -npm install --save-dev @types/node <1> ----- -<1> Installing `@types/node` can be skipped if you use https://www.typescriptlang.org/tsconfig#skipLibCheck[`skipLibCheck: true`] in your "tsconfig.json". - - -[float] -[[typescript-tsconfig]] -==== tsconfig compiler options - -The TypeScript authors strongly recommend that you use the https://www.typescriptlang.org/tsconfig/#esModuleInterop[`"esModuleInterop": true`] option in your "tsconfig.json". In case you do not, then the "default" import of the agent will not work, so instead of using `import apm from 'elastic-apm-node/start'` or similar, you will have to use: - -[source,js] ----- -import * as apm from 'elastic-apm-node/start' // if using esModuleInterop:false ----- - -Currently the Elastic APM Node.js agent <>, so for full APM support you will need to tell TypeScript to generate JavaScript using CommonJS modules via the https://www.typescriptlang.org/tsconfig/#module[`"module": "commonjs"`] compiler option. - -[source,json] ----- -// tsconfig.json -{ - "compilerOptions": { - "module": "commonjs", - "esModuleInterop": true, - "moduleResolution": "node" - // ... - } -} ----- - -The current TypeScript https://github.com/tsconfig/bases#node-10-tsconfigjson[recommended tsconfigs for node] use options that work with the APM agent. - - -[float] -[[typescript-start]] -==== Starting the agent - -For the APM agent to be able to automatically instrument modules it *must be started before you import other modules*. This means that you should probably import and start the agent in your application's main file (usually `index.js`, `server.js` or `app.js`). One way to do this is as follows. - -[source,typescript] ----- -import 'elastic-apm-node/start' <1> - -// Application code starts here. -// ... ----- -<1> This start method requires you to use environment variables to configure the agent. See <> for all the ways to start the agent. - -Pay special attention to <> where the TypeScript compiler can throw away your import in the generated JavaScript. - - -[float] -[[typescript-next-steps]] -==== Next steps - -The APM agent will now trace your application, monitor performance, and record any uncaught exceptions. Refer to the following documentation to configure and use the APM agent. - -* <> -* <> - -include::./shared-set-up.asciidoc[tag=troubleshooting-link] diff --git a/docs/upgrade-to-v1.asciidoc b/docs/upgrade-to-v1.asciidoc deleted file mode 100644 index 49ac38bf09..0000000000 --- a/docs/upgrade-to-v1.asciidoc +++ /dev/null @@ -1,59 +0,0 @@ -[[upgrade-to-v1]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/upgrade-to-v1.html[elastic.co] -endif::[] - -=== Upgrade to v1.x - -The following is a guide on upgrading your Node.js agent from version 0.x to version 1.x. - -[[v1-overview]] -==== Overview - -Version 1.x of the Node.js agent requires version 6.2 of the APM Server or higher. - -The term "trace" was previously used to describe a small piece of work instrumented by the agent during a transaction. -To align with modern APM vendors, -we now refer to this as a "span" - -The term "app" was previously used to describe your Node.js application in relation to Elastic APM. -To be more specific, -we now refer to this as a "service". - -[[v1-config-options]] -==== Config options - -The following config options have been removed in version 1.0.0: - -|======================================================================= -|Name |Note -|`logBody` |Use <> instead. Note that this option is not a boolean -|======================================================================= - -The following config options have been renamed between version 0.x and 1.x. - -NOTE: The associated environment variable for each renamed config option have been renamed accordingly as well. - -|======================================================================= -|Old name |New name| Note -|`appName` |<> |Renamed to align with new naming conventions -|`appVersion` |<> |Renamed to align with new naming conventions -|`captureTraceStackTrace` |<> |Renamed to align with new naming conventions -|`sourceContextErrorAppFrames` |<> |Renamed to align with other agents -|`sourceContextSpanAppFrames` |<> |Renamed to align with other agents -|`sourceContextErrorLibraryFrames` |<> |Renamed to align with other agents -|`sourceContextSpanLibraryFrames` |<> |Renamed to align with other agents -|`validateServerCert` |<> |Renamed to align with other agents -|======================================================================= - -[[v1-agent-api]] -==== Agent API - -The following functions have been renamed between version 0.x and 1.x: - -|======================================================================= -|Old name |New name| Note -|`buildTrace()` |`buildSpan()` |Renamed to align with new naming conventions -|======================================================================= diff --git a/docs/upgrade-to-v2.asciidoc b/docs/upgrade-to-v2.asciidoc deleted file mode 100644 index 5c2e004394..0000000000 --- a/docs/upgrade-to-v2.asciidoc +++ /dev/null @@ -1,99 +0,0 @@ -[[upgrade-to-v2]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/upgrade-to-v2.html[elastic.co] -endif::[] - -=== Upgrade to v2.x - -The following is a guide on upgrading your Node.js agent from version 1.x to version 2.x. - -[[v2-overview]] -==== Overview - -Version 2.0.0 of the Node.js agent requires version 6.5 of the APM Server or higher and makes use of the new HTTP intake API. - -The new agent supports Node.js 6, 8, and 10+. - -The format of the error ID's have changed from a UUID4 to a hex formatted random 128 bit number. -Likewise, -the format of the transaction ID's have changed from a UUID4 to a hex formatted random 64 bit number. - -[[v2-config-options]] -==== Config options - -[[v2-configuration-order]] -===== Configuration order - -The Node.js agent can be configured using a combination of inline config options, -environment variables, -and a config file. -Many config options also have default values. -The order in which these are applied has changed in 2.0.0. - -In 1.x the order in which config options overruled each other was (higher overwrites lower): - -- Inline options given to <> -- <> -- Environment variables -- Default values - -The new order in 2.0.0 is (higher overwrites lower): - -- Environment variables -- Inline options given to <> -- <> -- Default values - -[[v2-changed-units]] -===== Changed units - -In 1.x, -the config option <> expected a millisecond value. -In 2.0.0 the default time unit is seconds. -If you'd like to keep using milliseconds, -you need to specify the unit, -e.g: `1500ms`. - -In 1.x, -all boolean config options could be configured using the strings `on`, -`yes`, -`1`, etc., to mean `true` with similar values representing `false`. -In 2.0.0 this has been restricted, -and only the strings `true` and `false` will be interpreted as the boolean equivalent. - -[[v2-removed-config-options]] -===== Removed config options - -The following config options have been removed in version 2.0.0: - -|======================================================================= -|Name |Note -|`flushInterval` |Use <> instead. Note that this option has a slightly different meaning as the intake API has changed. -|`maxQueueSize` |Use <> instead. Note that this option has a slightly different meaning as the intake API has changed. -|======================================================================= - -[[v2-agent-api]] -==== Agent API - -The <> callback is called with a different payload in 2.0.0 (see docs for details). - -[NOTE] -==== -While the `addFilter()` function is still called for all types of data sent to the APM Server, -three new filter functions have been added in 2.0.0 as well: -<>, -<>, -and <>, -called only for errors, -transactions, -and spans respectively. -==== - -The previously undocumented method `span.offsetTime()` has been removed in 2.0.0. - -The previously undocumented `transaction.buildSpan()` method has been replaced with <> in 2.0.0. - -The `agent.buildSpan(name, type)` and `span.start(name, type)` methods have been removed in 2.0.0. -They have been replaced by <>. diff --git a/docs/upgrade-to-v3.asciidoc b/docs/upgrade-to-v3.asciidoc deleted file mode 100644 index 8b6c30382a..0000000000 --- a/docs/upgrade-to-v3.asciidoc +++ /dev/null @@ -1,56 +0,0 @@ -[[upgrade-to-v3]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/upgrade-to-v3.html[elastic.co] -endif::[] - -=== Upgrade to v3.x - -The following is a guide on upgrading your Node.js agent from version 2.x to version 3.x. - -[[v3-overview]] -==== Overview - -Version 3.0.0 of the Node.js agent supports Node.js v8 (from v8.6.0 and onwards), v10, and v12. - -[[v3-config-options]] -==== Config options - -The <> config option now behaves differently if given the values `http` and/or `https`. -Previously this would disable tracing of incoming and outgoing requests. -Now this config option only deals with outgoing requests. -To disable tracing of incoming http(s) requests, use the new <> config option. - -It's now possible to make use of manual instrumention while the <> config option is set to `false`. -This means that calls to for instance <> or <> will produce transactions and spans even if `instrument` is set to `false`. - -[[v3-api-changes]] -==== API changes - -The `type` associated with transactions and spans is no longer dot-separated. -Instead the `type` property has been split into three distinct properties: `type`, `subtype`, and `action`. -This has resulted in changes to the following API's: - -- <>: Function arguments changed -- <>: Function arguments changed -- <>: Function arguments changed -- <>: String format changed -- <>: String format changed - -The following deprecated API's has been removed: - -- `apm.setTag()`: Replaced by <> -- `apm.addTags()`: Replaced by <> -- `transaction.setTag()`: Replaced by <> -- `transaction.addTags()`: Replaced by <> -- `span.setTag()`: Replaced by <> -- `span.addTags()`: Replaced by <> - -[[v3-changes-in-collected-data]] -==== Changes in collected data - -When instrumenting a GraphQL server that is run by https://www.npmjs.com/package/apollo-server-express[`apollo-server-express`] -the Transaction type is now `graphql` instead of `request`. - -All Spans whose type was previously `ext` is now `external`. diff --git a/docs/upgrade-to-v4.asciidoc b/docs/upgrade-to-v4.asciidoc deleted file mode 100644 index 600817e05b..0000000000 --- a/docs/upgrade-to-v4.asciidoc +++ /dev/null @@ -1,188 +0,0 @@ -[[upgrade-to-v4]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/upgrade-to-v4.html[elastic.co] -endif::[] - -=== Upgrade to v4.x - -The following is a guide on upgrading your usage of the Elastic APM Node.js agent -(`elastic-apm-node`) from version 3.x to version 4.x. - -[[v4-nodejs]] -==== Node.js versions - -Version 4.x of `elastic-apm-node` supports Node.js v14.17.0 and later. -(The previous 3.x major supported back to Node.js v8.6.0.) - - -[[v4-config-options]] -==== Config options - -===== `ELASTIC_APM_KUBERNETES_*` - -Support for the following Kubernetes environment variables have been removed: -`ELASTIC_APM_KUBERNETES_NAMESPACE`, `ELASTIC_APM_KUBERNETES_NODE_NAME`, -`ELASTIC_APM_KUBERNETES_POD_NAME`, and `ELASTIC_APM_KUBERNETES_POD_UID`. The -correct environment variables for these config vars are _without_ the -`ELASTIC_APM_` prefix -- for example -<> -- and has been documented that -way since v2.11.0. - -**How to check.** Search for any usage of `ELASTIC_APM_KUBERNETES_` in your -project. For example, using https://github.com/BurntSushi/ripgrep[ripgrep], -run `rg ELASTIC_APM_KUBERNETES_`. If there are any hits, remove the -`ELASTIC_APM_` prefix. - -===== `filterHttpHeaders` - -Support for `filterHttpHeaders` config option has been removed. Redaction of -HTTP headers and also request cookies is controlled by the existing config -option <>. - -**How to check.** Search your project for `rg filterHttpHeaders` or -`rg ELASTIC_APM_FILTER_HTTP_HEADERS` and remove them. - -===== `useElasticTraceparentHeader` - -The default value of the <> config option has -changed to `false`. This means that the vendor-specific -`elastic-apm-traceparent` header will no longer be added to outgoing HTTP -requests by default. The `traceparent` header (from the -https://w3c.github.io/trace-context/[W3C trace-context standard]) is added by -the APM agent. If you need the agent to continue sending -`elastic-apm-traceparent` HTTP header you can set it to `true` via env var or -start options. - -**How to check.** Search your project for `rg useElasticTraceparentHeader` or -`rg ELASTIC_APM_USE_ELASTIC_TRACEPARENT_HEADER`. - -===== `contextManager: "patch"` - -The "patch" value for the <> config option has been removed. -This was a limited async context management that predated the preferred -`AsyncLocalStorage` core Node.js mechanism for context tracking. As well, the -related and deprecated `asyncHooks` config option has been removed. Both were -deprecated in v3.37.0. - -**How to check.** Search your project for `rg -w contextManager` or -`rg -w ELASTIC_APM_CONTEXT_MANAGER` which set the value to "patch". Also search -for `rg -w asyncHooks` or `rg -w ELASTIC_APM_ASYNC_HOOKS` which set the value to -`false`. If so, that config setting is no longer supported. - -===== `logUncaughtExceptions` - -The `logUncaughtExceptions` config option has been removed. In v3 and earlier, -when the APM agent was <> -setting `logUncaughtExceptions: true` would tell the agent to print the error -details to stderr before exiting; but `logUncaughtExceptions` was `false` by -default. In v4, printing the error to stderr is done by default (to mimic the -default Node.js uncaught exception behavior) and there is no option to disable -that. - -**How to check.** Search your project for `rg -w logUncaughtExceptions` or -`rg -w ELASTIC_APM_LOG_UNCAUGHT_EXCEPTIONS` and remove any usages. - -===== `ELASTIC_SANITIZE_FIELD_NAMES`, `ELASTIC_IGNORE_MESSAGE_QUEUES` - -Support for the erroneous `ELASTIC_SANITIZE_FIELD_NAMES` and -`ELASTIC_IGNORE_MESSAGE_QUEUES` config environment variables has been removed. -The correct env vars are `ELASTIC_APM_SANITIZE_FIELD_NAMES` and -`ELASTIC_APM_IGNORE_MESSAGE_QUEUES`, respectively, and were supported starting -in v3.36.0. - - -[[v4-api-changes]] -==== API changes - -[[v4-api-start-transaction]] -===== `apm.startTransaction(...)` - -The `apm.startTransaction()` method has been changed to return a do-nothing -no-op Transaction, if the agent is not yet started. The return type has changed to -no longer include `| null`. The intent of these changes is to allow the user to use -`.startTransaction()` without having to worry if the agent is yet started, nor to -have to handle a possible `null` return value. - -**How to check.** Search your project for `rg '\.startTransaction\b'`. If your -code handled a possible `null` return value from this function call, you can -remove that handling. - -[[v4-api-transaction-subtype-action]] -===== `transaction.subtype` and `transaction.action` - -The `subtype` and `action` properties have been removed from `Transaction`. -This also impacts <> and `transaction.setType(...)`, -both of which now no longer accept `subtype` and `action` parameters. -These two properties were deprecated in v3.25.0. - -**How to check.** Search your project for `rg '\.startTransaction\b'`. If your -code passed in `subtype` or `action` arguments, e.g. -`apm.startTransaction('a-name', 'a-type', 'a-subtype', 'an-action', { /* options */ })`, -then those need to be updated. Also search your project for `rg '\.subtype\b'` -and `rg '\.action\b'`. If those property accesses are on an APM Transaction -object, then you should remove them. (Note that `subtype` and `action` on -APM **Span** objects remain in the API.) - -[[v4-api-to-string]] -===== `span.toString()`, `transaction.toString()` - -The `span.toString()` and `transaction.toString()` methods have been removed as -documented APIs. They were never in the "index.d.ts" types and were deprecated -in v3.23.0. - -Since v2.17.0 they would return a string of the form `trace.id= span.id=`, with the intent that this could be used in -text-only loggers for log correlation. Using `.toString()` for this was -deprecated in v3.23.0, and has now been removed in v4. In v4 the output of -`.toString()` is not defined. - -Instead, prefer the use of <>, -<>, or -<>. The v3 format may be reproduced -via: - -[source,js] ----- -const {stringify} = require('querystring'); -console.log(stringify(span.ids, ' ', '=')); ----- - -For log correlation with _structured_ logs, see <>. - -[[v4-api-destroy]] -===== `apm.destroy()` - -The `apm.destroy()` method is now async. Almost no users should need to use -this method. However, if used, to be sure to wait for APM agent shutdown to -be complete, one can now `await apm.destroy()`. - - -[[v4-warnings]] -==== Log warnings - -This section documents some new log output warnings from the APM agent, and how to avoid them. - -[[v4-warning-duration-units]] -===== "units missing in duration value" - - -[source,json] ----- -{"log.level":"warn","@timestamp":"2023-08-04T16:54:03.116Z","log":{"logger":"elastic-apm-node"},"ecs":{"version":"1.6.0"},"message":"units missing in duration value \"5\" for \"metricsInterval\" config option: using default units \"s\""} ----- - -Configuration options that define a duration, like `metricsInterval` or -`exitSpanMinDuration`, expect to have their units specified in the value -(e.g. `"10s"`, `"100ms"`). While current duration options have a default -unit, to avoid ambiguity the APM agent will now warn if the units are not -provided. - -[[v4-warning-size-units]] -===== "units missing in size value" - -Byte size config options like `apiRequestSize` expect to have the size -units specified in the value (e.g. `"10kb"`, `"1gb"`). If the unit is not -in the value, the agent will warn about it and fallback to bytes (`b`). - diff --git a/docs/upgrading.asciidoc b/docs/upgrading.asciidoc deleted file mode 100644 index 81c26e7f2d..0000000000 --- a/docs/upgrading.asciidoc +++ /dev/null @@ -1,44 +0,0 @@ -[[upgrading]] - -ifdef::env-github[] -NOTE: For the best reading experience, -please view this documentation at https://www.elastic.co/guide/en/apm/agent/nodejs/current/upgrading.html[elastic.co] -endif::[] - -== Upgrading - -The Elastic APM Node.js Agent uses https://semver.org/[semantic versioning], and -therefore upgrades between minor versions of the agent, for example from 1.1 to -1.2, are always backwards compatible. Upgrades that involve a major version bump -often come with some backwards incompatible changes. - -Before upgrading the agent, be sure to review the: - -* <> -* {apm-guide-ref}/agent-server-compatibility.html[APM Agent and Server compatibility chart] - -The following upgrade guides are available: - -* <> from version 3.x of the Elastic APM Node.js agent. -* <> from version 2.x of the Elastic APM Node.js agent. -* <> from version 1.x of the Elastic APM Node.js agent. -* <> from version 0.x of the Elastic APM Node.js agent. - -[float] -[[end-of-life-dates]] -=== End of life dates - -We love all our products, but sometimes we must say goodbye to a release so that we can continue moving -forward on future development and innovation. -Our https://www.elastic.co/support/eol[End of life policy] defines how long a given release is considered supported, -as well as how long a release is considered still in active development or maintenance. - -include::./upgrade-to-v4.asciidoc[Upgrade to v4.x] - -include::./upgrade-to-v3.asciidoc[Upgrade to v3.x] - -include::./upgrade-to-v2.asciidoc[Upgrade to v2.x] - -include::./upgrade-to-v1.asciidoc[Upgrade to v1.x] - - From a89892c3bb704554d8cb0b0317ea5591b7c44b9f Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 11:43:19 +0100 Subject: [PATCH 341/396] chore(deps): update wolfi (versioned) (#4525) --- .github/workflows/test-fips.yml | 2 +- Dockerfile.wolfi | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-fips.yml b/.github/workflows/test-fips.yml index 920e68c406..b7ee35e68b 100644 --- a/.github/workflows/test-fips.yml +++ b/.github/workflows/test-fips.yml @@ -21,7 +21,7 @@ jobs: # https://docs.github.com/en/actions/writing-workflows/choosing-where-your-workflow-runs/running-jobs-in-a-container # docker run -it --rm --name fipsy docker.elastic.co/wolfi/chainguard-base-fips:latest container: - image: docker.elastic.co/wolfi/chainguard-base-fips:latest@sha256:6a705e8b0035ffb0368b15e55668746c577943f71e845ed4bf4f8ad32b78eccf + image: docker.elastic.co/wolfi/chainguard-base-fips:latest@sha256:60d2da332337ed2252d3ad06d0b51416adf72448e61215103e9e73657dff63a9 credentials: username: ${{ secrets.ELASTIC_DOCKER_USERNAME }} password: ${{ secrets.ELASTIC_DOCKER_PASSWORD }} diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 383d1b3fc9..2bcb5bcea2 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:5ba5defb8c55ea6e2d4a697ca82da534c21c6328dfa903fe460c762720875794 +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:c4e10ecf3d8a21cf4be2fb53a2f522de50e14c80ce1da487e3ffd13f4d48d24d ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 3d19d14e49ef4edc4dae41cf61c734b813e1855a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 11:45:57 +0100 Subject: [PATCH 342/396] chore(deps): bump next from 14.2.21 to 14.2.25 in /examples/nextjs (#4527) --- examples/nextjs/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 669926d343..b7b8d61c1b 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "elastic-apm-node": "elastic/apm-agent-nodejs#main", - "next": "14.2.21", + "next": "14.2.25", "react": "18.2.0", "react-dom": "18.2.0" }, From cfaf60049d0c246d01195796158fdfcd855f9f48 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 11:47:03 +0100 Subject: [PATCH 343/396] chore(deps-dev): bump mongodb from 6.14.2 to 6.15.0 (#4528) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index ddabdbcdec..8fad1a41fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12416,9 +12416,9 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "node_modules/mongodb": { - "version": "6.14.2", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.14.2.tgz", - "integrity": "sha512-kMEHNo0F3P6QKDq17zcDuPeaywK/YaJVCEQRzPF3TOM/Bl9MFg64YE5Tu7ifj37qZJMhwU1tl2Ioivws5gRG5Q==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.15.0.tgz", + "integrity": "sha512-ifBhQ0rRzHDzqp9jAQP6OwHSH7dbYIQjD3SbJs9YYk9AikKEettW/9s/tbSFDTpXcRbF+u1aLrhHxDFaYtZpFQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -25903,9 +25903,9 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "mongodb": { - "version": "6.14.2", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.14.2.tgz", - "integrity": "sha512-kMEHNo0F3P6QKDq17zcDuPeaywK/YaJVCEQRzPF3TOM/Bl9MFg64YE5Tu7ifj37qZJMhwU1tl2Ioivws5gRG5Q==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.15.0.tgz", + "integrity": "sha512-ifBhQ0rRzHDzqp9jAQP6OwHSH7dbYIQjD3SbJs9YYk9AikKEettW/9s/tbSFDTpXcRbF+u1aLrhHxDFaYtZpFQ==", "dev": true, "requires": { "@mongodb-js/saslprep": "^1.1.9", From 7cb605b255803501f47e8c708e2723a8ddd39b2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 11:49:38 +0100 Subject: [PATCH 344/396] chore(deps-dev): bump the eslint group across 1 directory with 3 updates (#4492) - Updates `eslint` from 9.21.0 to 9.22.0 - Updates `eslint-config-prettier` from 10.0.1 to 10.1.1 - Updates `eslint-plugin-n` from 17.15.1 to 17.16.2 --- package-lock.json | 107 +++++++++++++++++++++++++++------------------- 1 file changed, 64 insertions(+), 43 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8fad1a41fb..8df510e6a9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4135,6 +4135,16 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz", + "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/core": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", @@ -4149,9 +4159,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", - "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4210,9 +4220,9 @@ "license": "MIT" }, "node_modules/@eslint/js": { - "version": "9.21.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.21.0.tgz", - "integrity": "sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==", + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz", + "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==", "dev": true, "license": "MIT", "engines": { @@ -8954,18 +8964,19 @@ } }, "node_modules/eslint": { - "version": "9.21.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.21.0.tgz", - "integrity": "sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==", + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz", + "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.2", + "@eslint/config-helpers": "^0.2.0", "@eslint/core": "^0.12.0", - "@eslint/eslintrc": "^3.3.0", - "@eslint/js": "9.21.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.23.0", "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -8977,7 +8988,7 @@ "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.2.0", + "eslint-scope": "^8.3.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", @@ -9029,13 +9040,13 @@ } }, "node_modules/eslint-config-prettier": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.0.1.tgz", - "integrity": "sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.1.tgz", + "integrity": "sha512-4EQQr6wXwS+ZJSzaR5ZCrYgLxqvUjdXctaEtBqHcbkW944B1NQyO4qpdHQbXBONfwxXdkAY81HH4+LUfrg+zPw==", "dev": true, "license": "MIT", "bin": { - "eslint-config-prettier": "build/bin/cli.js" + "eslint-config-prettier": "bin/cli.js" }, "peerDependencies": { "eslint": ">=7.0.0" @@ -9182,10 +9193,11 @@ } }, "node_modules/eslint-plugin-n": { - "version": "17.15.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.15.1.tgz", - "integrity": "sha512-KFw7x02hZZkBdbZEFQduRGH4VkIH4MW97ClsbAM4Y4E6KguBJWGfWG1P4HEIpZk2bkoWf0bojpnjNAhYQP8beA==", + "version": "17.16.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.16.2.tgz", + "integrity": "sha512-iQM5Oj+9o0KaeLoObJC/uxNGpktZCkYiTTBo8PkRWq3HwNcRxwpvSDFjBhQ5+HLJzBTy+CLDC5+bw0Z5GyhlOQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.1", "enhanced-resolve": "^5.17.1", @@ -9292,10 +9304,11 @@ } }, "node_modules/eslint-scope": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", - "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -9459,6 +9472,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -19380,6 +19394,12 @@ "minimatch": "^3.1.2" } }, + "@eslint/config-helpers": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz", + "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==", + "dev": true + }, "@eslint/core": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", @@ -19390,9 +19410,9 @@ } }, "@eslint/eslintrc": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", - "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -19433,9 +19453,9 @@ } }, "@eslint/js": { - "version": "9.21.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.21.0.tgz", - "integrity": "sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==", + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz", + "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==", "dev": true }, "@eslint/object-schema": { @@ -23312,17 +23332,18 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.21.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.21.0.tgz", - "integrity": "sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==", + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz", + "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.2", + "@eslint/config-helpers": "^0.2.0", "@eslint/core": "^0.12.0", - "@eslint/eslintrc": "^3.3.0", - "@eslint/js": "9.21.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.23.0", "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -23334,7 +23355,7 @@ "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.2.0", + "eslint-scope": "^8.3.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", @@ -23429,9 +23450,9 @@ } }, "eslint-config-prettier": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.0.1.tgz", - "integrity": "sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.1.tgz", + "integrity": "sha512-4EQQr6wXwS+ZJSzaR5ZCrYgLxqvUjdXctaEtBqHcbkW944B1NQyO4qpdHQbXBONfwxXdkAY81HH4+LUfrg+zPw==", "dev": true }, "eslint-import-resolver-node": { @@ -23550,9 +23571,9 @@ } }, "eslint-plugin-n": { - "version": "17.15.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.15.1.tgz", - "integrity": "sha512-KFw7x02hZZkBdbZEFQduRGH4VkIH4MW97ClsbAM4Y4E6KguBJWGfWG1P4HEIpZk2bkoWf0bojpnjNAhYQP8beA==", + "version": "17.16.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.16.2.tgz", + "integrity": "sha512-iQM5Oj+9o0KaeLoObJC/uxNGpktZCkYiTTBo8PkRWq3HwNcRxwpvSDFjBhQ5+HLJzBTy+CLDC5+bw0Z5GyhlOQ==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.1", @@ -23611,9 +23632,9 @@ } }, "eslint-scope": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", - "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", "dev": true, "requires": { "esrecurse": "^4.3.0", From 593873b866a49ccd0b73eafe5c241f42c4eb6aa8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 11:50:48 +0100 Subject: [PATCH 345/396] chore(deps-dev): bump mysql2 from 3.13.0 to 3.14.0 (#4532) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8df510e6a9..c8f23a6131 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12593,9 +12593,9 @@ } }, "node_modules/mysql2": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.13.0.tgz", - "integrity": "sha512-M6DIQjTqKeqXH5HLbLMxwcK5XfXHw30u5ap6EZmu7QVmcF/gnh2wS/EOiQ4MTbXz/vQeoXrmycPlVRM00WSslg==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.14.0.tgz", + "integrity": "sha512-8eMhmG6gt/hRkU1G+8KlGOdQi2w+CgtNoD1ksXZq9gQfkfDsX4LHaBwTe1SY0Imx//t2iZA03DFnyYKPinxSRw==", "dev": true, "license": "MIT", "dependencies": { @@ -26040,9 +26040,9 @@ } }, "mysql2": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.13.0.tgz", - "integrity": "sha512-M6DIQjTqKeqXH5HLbLMxwcK5XfXHw30u5ap6EZmu7QVmcF/gnh2wS/EOiQ4MTbXz/vQeoXrmycPlVRM00WSslg==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.14.0.tgz", + "integrity": "sha512-8eMhmG6gt/hRkU1G+8KlGOdQi2w+CgtNoD1ksXZq9gQfkfDsX4LHaBwTe1SY0Imx//t2iZA03DFnyYKPinxSRw==", "dev": true, "requires": { "aws-ssl-profiles": "^1.1.1", From 009aeb54a9048c7cd204d7f49d31115ddf08a083 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 15:38:16 +0100 Subject: [PATCH 346/396] chore(deps-dev): bump pg from 8.14.0 to 8.14.1 (#4531) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index c8f23a6131..35c32de1ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13204,9 +13204,9 @@ } }, "node_modules/pg": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.14.0.tgz", - "integrity": "sha512-nXbVpyoaXVmdqlKEzToFf37qzyeeh7mbiXsnoWvstSqohj88yaa/I/Rq/HEVn2QPSZEuLIJa/jSpRDyzjEx4FQ==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.14.1.tgz", + "integrity": "sha512-0TdbqfjwIun9Fm/r89oB7RFQ0bLgduAhiIqIXOsyKoiC/L54DbuAAzIEN/9Op0f1Po9X7iCPXGoa/Ah+2aI8Xw==", "dev": true, "license": "MIT", "dependencies": { @@ -26517,9 +26517,9 @@ "dev": true }, "pg": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.14.0.tgz", - "integrity": "sha512-nXbVpyoaXVmdqlKEzToFf37qzyeeh7mbiXsnoWvstSqohj88yaa/I/Rq/HEVn2QPSZEuLIJa/jSpRDyzjEx4FQ==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.14.1.tgz", + "integrity": "sha512-0TdbqfjwIun9Fm/r89oB7RFQ0bLgduAhiIqIXOsyKoiC/L54DbuAAzIEN/9Op0f1Po9X7iCPXGoa/Ah+2aI8Xw==", "dev": true, "requires": { "pg-cloudflare": "^1.1.1", From 6be0f05e2f48f5b4cc07fa4dc7417a3e80dfd7c6 Mon Sep 17 00:00:00 2001 From: "elastic-observability-automation[bot]" <180520183+elastic-observability-automation[bot]@users.noreply.github.com> Date: Tue, 25 Mar 2025 12:41:05 +0100 Subject: [PATCH 347/396] chore: deps(updatecli): Bump updatecli version to v0.96.0 (#4538) --- .tool-versions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tool-versions b/.tool-versions index 7133ace51c..a744ca662e 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -updatecli v0.95.1 \ No newline at end of file +updatecli v0.96.0 \ No newline at end of file From 94ca6f01516d48f968407addb1b0147fb2449991 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Wed, 26 Mar 2025 11:53:58 +0100 Subject: [PATCH 348/396] dependabot: support for docker internal registry (#4539) --- .github/dependabot.yml | 10 +++++++++- renovate.json | 6 ------ 2 files changed, 9 insertions(+), 7 deletions(-) delete mode 100644 renovate.json diff --git a/.github/dependabot.yml b/.github/dependabot.yml index e13d06a591..3461cf5687 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,4 +1,11 @@ version: 2 +registries: + docker-elastic: + type: docker-registry + url: https://docker.elastic.co + username: ${{secrets.ELASTIC_DOCKER_USERNAME}} + password: ${{secrets.ELASTIC_DOCKER_PASSWORD}} + updates: - package-ecosystem: "npm" directory: "/" @@ -113,5 +120,6 @@ updates: # Docker - package-ecosystem: "docker" directory: "/" + registries: "*" schedule: - interval: "weekly" \ No newline at end of file + interval: "weekly" diff --git a/renovate.json b/renovate.json deleted file mode 100644 index 36237c56f4..0000000000 --- a/renovate.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": [ - "github>elastic/renovate-config:only-chainguard" - ] -} From f243c35b80770fd8fb80d15a41112097103095f7 Mon Sep 17 00:00:00 2001 From: Kaarina Tungseth Date: Fri, 28 Mar 2025 08:53:42 -0500 Subject: [PATCH 349/396] Updates navigation titles for release notes (#4526) * Updates navigation titles for release notes * Update index.md --------- Co-authored-by: Colleen McGinnis --- docs/release-notes/breaking-changes.md | 2 +- docs/release-notes/index.md | 2 +- docs/release-notes/known-issues.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/release-notes/breaking-changes.md b/docs/release-notes/breaking-changes.md index c20347da62..9e3d6ca08d 100644 --- a/docs/release-notes/breaking-changes.md +++ b/docs/release-notes/breaking-changes.md @@ -1,5 +1,5 @@ --- -navigation_title: "Elastic APM Node.js Agent" +navigation_title: "Breaking changes" --- # Elastic APM Node.js Agent breaking changes diff --git a/docs/release-notes/index.md b/docs/release-notes/index.md index e972703aa6..7bc5dfebbf 100644 --- a/docs/release-notes/index.md +++ b/docs/release-notes/index.md @@ -7,7 +7,7 @@ mapped_pages: # Elastic APM Node.js Agent release notes -Review the changes, fixes, and more in each version of Elastic Node.js Java Agent. +Review the changes, fixes, and more in each version of Elastic Node.js Agent. To check for security updates, go to [Security announcements for the Elastic stack](https://discuss.elastic.co/c/announcements/security-announcements/31). diff --git a/docs/release-notes/known-issues.md b/docs/release-notes/known-issues.md index 6cd8017604..c931a5f33d 100644 --- a/docs/release-notes/known-issues.md +++ b/docs/release-notes/known-issues.md @@ -1,5 +1,5 @@ --- -navigation_title: "Elastic APM Node.js Agent" +navigation_title: "Known issues" --- # Elastic APM Node.js Agent known issues [elastic-apm-nodejs-agent-known-issues] From 6bc861f6c451d582414a8466fc6d4f76e7fc5ef6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Mar 2025 09:28:35 +0200 Subject: [PATCH 350/396] chore(deps-dev): bump undici from 7.5.0 to 7.6.0 (#4546) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 35c32de1ce..3ba9c28bbc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15789,9 +15789,9 @@ } }, "node_modules/undici": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.5.0.tgz", - "integrity": "sha512-NFQG741e8mJ0fLQk90xKxFdaSM7z4+IQpAgsFI36bCDY9Z2+aXXZjVy2uUksMouWfMI9+w5ejOq5zYYTBCQJDQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.6.0.tgz", + "integrity": "sha512-gaFsbThjrDGvAaD670r81RZro/s6H2PVZF640Qn0p5kZK+/rim7/mmyfp2W7VB5vOMaFM8vuFBJUaMlaZTYHlA==", "dev": true, "license": "MIT", "engines": { @@ -28532,9 +28532,9 @@ "dev": true }, "undici": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.5.0.tgz", - "integrity": "sha512-NFQG741e8mJ0fLQk90xKxFdaSM7z4+IQpAgsFI36bCDY9Z2+aXXZjVy2uUksMouWfMI9+w5ejOq5zYYTBCQJDQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.6.0.tgz", + "integrity": "sha512-gaFsbThjrDGvAaD670r81RZro/s6H2PVZF640Qn0p5kZK+/rim7/mmyfp2W7VB5vOMaFM8vuFBJUaMlaZTYHlA==", "dev": true }, "undici-types": { From 073fb822f771f6a15f1c872e85841edea5859ddc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Mar 2025 09:29:09 +0200 Subject: [PATCH 351/396] chore(deps-dev): bump fastify from 5.2.1 to 5.2.2 (#4542) --- package-lock.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3ba9c28bbc..8a35793daa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9906,9 +9906,9 @@ } }, "node_modules/fastify": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.2.1.tgz", - "integrity": "sha512-rslrNBF67eg8/Gyn7P2URV8/6pz8kSAscFL4EThZJ8JBMaXacVdVE4hmUcnPNKERl5o/xTiBSLfdowBRhVF1WA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.2.2.tgz", + "integrity": "sha512-22T/PnhquWozuFXg3Ish4md5ipsF1Nx1mJ9ulLdZPXSk14WFj/wMlyNB/yll9sQOojKRgOIxT2inK3Xpjg5hyw==", "dev": true, "funding": [ { @@ -9920,6 +9920,7 @@ "url": "https://opencollective.com/fastify" } ], + "license": "MIT", "dependencies": { "@fastify/ajv-compiler": "^4.0.0", "@fastify/error": "^4.0.0", @@ -24027,9 +24028,9 @@ } }, "fastify": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.2.1.tgz", - "integrity": "sha512-rslrNBF67eg8/Gyn7P2URV8/6pz8kSAscFL4EThZJ8JBMaXacVdVE4hmUcnPNKERl5o/xTiBSLfdowBRhVF1WA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.2.2.tgz", + "integrity": "sha512-22T/PnhquWozuFXg3Ish4md5ipsF1Nx1mJ9ulLdZPXSk14WFj/wMlyNB/yll9sQOojKRgOIxT2inK3Xpjg5hyw==", "dev": true, "requires": { "@fastify/ajv-compiler": "^4.0.0", From d566921400b18e4c91461b6a4b98109743b7cfb7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Mar 2025 09:30:17 +0200 Subject: [PATCH 352/396] chore(deps-dev): bump azure-functions-core-tools from 4.0.6821 to 4.0.7030 in fixtures/azurefunc3 (#4545) --- .../fixtures/azfunc3/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/instrumentation/azure-functions/fixtures/azfunc3/package-lock.json b/test/instrumentation/azure-functions/fixtures/azfunc3/package-lock.json index 845b57e4e5..699790bf7a 100644 --- a/test/instrumentation/azure-functions/fixtures/azfunc3/package-lock.json +++ b/test/instrumentation/azure-functions/fixtures/azfunc3/package-lock.json @@ -11,9 +11,9 @@ } }, "node_modules/azure-functions-core-tools": { - "version": "4.0.6821", - "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.6821.tgz", - "integrity": "sha512-D+VcQKPk+aVk9WRO56zlkq9xmeO+kxixDIMEIH2tG9OSSSxmioNOdjkpEnZuUEUdv6PPFn9vybcLhGCXL4Xftg==", + "version": "4.0.7030", + "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.7030.tgz", + "integrity": "sha512-rsnAH5jVfkZKj7L6vYyDC0lDi3MxkJrngIIBJVc24ygG5Yl339iCD2PkGYRZLaupzj67zirOllfT4vFf8BKq2A==", "dev": true, "hasInstallScript": true, "hasShrinkwrap": true, @@ -415,9 +415,9 @@ }, "dependencies": { "azure-functions-core-tools": { - "version": "4.0.6821", - "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.6821.tgz", - "integrity": "sha512-D+VcQKPk+aVk9WRO56zlkq9xmeO+kxixDIMEIH2tG9OSSSxmioNOdjkpEnZuUEUdv6PPFn9vybcLhGCXL4Xftg==", + "version": "4.0.7030", + "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.7030.tgz", + "integrity": "sha512-rsnAH5jVfkZKj7L6vYyDC0lDi3MxkJrngIIBJVc24ygG5Yl339iCD2PkGYRZLaupzj67zirOllfT4vFf8BKq2A==", "dev": true, "requires": { "chalk": "3.0.0", From 9a9b6c75557d8d12291ee85a6a4ff578c43d900c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Mar 2025 09:30:53 +0200 Subject: [PATCH 353/396] chore(deps-dev): bump azure-functions-core-tools from 4.0.6821 to 4.0.7030 in fixtures/azurefunc4 (#4544) --- .../azure-functions/fixtures/azfunc4/package-lock.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/test/instrumentation/azure-functions/fixtures/azfunc4/package-lock.json b/test/instrumentation/azure-functions/fixtures/azfunc4/package-lock.json index 217b27a650..7319e024bf 100644 --- a/test/instrumentation/azure-functions/fixtures/azfunc4/package-lock.json +++ b/test/instrumentation/azure-functions/fixtures/azfunc4/package-lock.json @@ -34,11 +34,12 @@ } }, "node_modules/azure-functions-core-tools": { - "version": "4.0.6821", - "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.6821.tgz", - "integrity": "sha512-D+VcQKPk+aVk9WRO56zlkq9xmeO+kxixDIMEIH2tG9OSSSxmioNOdjkpEnZuUEUdv6PPFn9vybcLhGCXL4Xftg==", + "version": "4.0.7030", + "resolved": "https://registry.npmjs.org/azure-functions-core-tools/-/azure-functions-core-tools-4.0.7030.tgz", + "integrity": "sha512-rsnAH5jVfkZKj7L6vYyDC0lDi3MxkJrngIIBJVc24ygG5Yl339iCD2PkGYRZLaupzj67zirOllfT4vFf8BKq2A==", "hasInstallScript": true, "hasShrinkwrap": true, + "license": "MIT", "os": [ "win32", "darwin", From d8f7a18eabe885bd155cf4b23e6d48e8836ae372 Mon Sep 17 00:00:00 2001 From: Colleen McGinnis Date: Mon, 31 Mar 2025 16:06:55 -0500 Subject: [PATCH 354/396] [docs] Add `CHANGELOG.md` (#4523) * add CHANGELOG.md * Update CHANGELOG.md Co-authored-by: Trent Mick --------- Co-authored-by: Trent Mick --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000000..2eb866ac60 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,8 @@ +# Changelog + + +* [APM Node.js Agent version 4.x](https://www.elastic.co/guide/en/apm/agent/nodejs/current/release-notes-4.x.html) ([local changelog source file](./docs/release-notes/index.md), includes unreleased changes) +* [APM Node.js Agent version 3.x](https://www.elastic.co/guide/en/apm/agent/nodejs/3.x/release-notes-3.x.html) +* [APM Node.js Agent version 2.x](https://www.elastic.co/guide/en/apm/agent/nodejs/2.x/release-notes-2.x.html) +* [APM Node.js Agent version 1.x](https://github.com/elastic/apm-agent-nodejs/blob/1.x/CHANGELOG.md) +* [APM Node.js Agent version 0.x](https://github.com/elastic/apm-agent-nodejs/blob/0.x/CHANGELOG.md) From 486d22b174ab398ff140d38a4da7428b6ee8ab12 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Apr 2025 10:35:46 +0200 Subject: [PATCH 355/396] chore(deps): bump wolfi/chainguard-base from `c4e10ec` to `29150cd` (#4557) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 2bcb5bcea2..bf9d3b70d7 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:c4e10ecf3d8a21cf4be2fb53a2f522de50e14c80ce1da487e3ffd13f4d48d24d +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:29150cd940cc7f69407d978d5a19c86f4d9e67cf44e4d6ded787a497e8f27c9a ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 47855450a6500a50cd349fd59f1c43eabe4ae9b0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Apr 2025 10:36:13 +0200 Subject: [PATCH 356/396] chore(deps-dev): bump koa from 2.16.0 to 2.16.1 (#4556) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8a35793daa..b03cb15a91 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11804,9 +11804,9 @@ } }, "node_modules/koa": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.16.0.tgz", - "integrity": "sha512-Afhqq0Vq3W7C+/rW6IqHVBDLzqObwZ07JaUNUEF8yCQ6afiyFE3RAy+i7V0E46XOWlH7vPWn/x0vsZwNy6PWxw==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.16.1.tgz", + "integrity": "sha512-umfX9d3iuSxTQP4pnzLOz0HKnPg0FaUUIKcye2lOiz3KPu1Y3M3xlz76dISdFPQs37P9eJz1wUpcTS6KDPn9fA==", "dev": true, "license": "MIT", "dependencies": { @@ -25428,9 +25428,9 @@ } }, "koa": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.16.0.tgz", - "integrity": "sha512-Afhqq0Vq3W7C+/rW6IqHVBDLzqObwZ07JaUNUEF8yCQ6afiyFE3RAy+i7V0E46XOWlH7vPWn/x0vsZwNy6PWxw==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.16.1.tgz", + "integrity": "sha512-umfX9d3iuSxTQP4pnzLOz0HKnPg0FaUUIKcye2lOiz3KPu1Y3M3xlz76dISdFPQs37P9eJz1wUpcTS6KDPn9fA==", "dev": true, "requires": { "accepts": "^1.3.5", From a893f9c672c0ad241007fba9eb87961cb23afca9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Apr 2025 12:58:37 +0200 Subject: [PATCH 357/396] chore(deps-dev): bump undici from 7.6.0 to 7.7.0 (#4555) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index b03cb15a91..312be3e10e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15790,9 +15790,9 @@ } }, "node_modules/undici": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.6.0.tgz", - "integrity": "sha512-gaFsbThjrDGvAaD670r81RZro/s6H2PVZF640Qn0p5kZK+/rim7/mmyfp2W7VB5vOMaFM8vuFBJUaMlaZTYHlA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.7.0.tgz", + "integrity": "sha512-tZ6+5NBq4KH35rr46XJ2JPFKxfcBlYNaqLF/wyWIO9RMHqqU/gx/CLB1Y2qMcgB8lWw/bKHa7qzspqCN7mUHvA==", "dev": true, "license": "MIT", "engines": { @@ -28533,9 +28533,9 @@ "dev": true }, "undici": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.6.0.tgz", - "integrity": "sha512-gaFsbThjrDGvAaD670r81RZro/s6H2PVZF640Qn0p5kZK+/rim7/mmyfp2W7VB5vOMaFM8vuFBJUaMlaZTYHlA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.7.0.tgz", + "integrity": "sha512-tZ6+5NBq4KH35rr46XJ2JPFKxfcBlYNaqLF/wyWIO9RMHqqU/gx/CLB1Y2qMcgB8lWw/bKHa7qzspqCN7mUHvA==", "dev": true }, "undici-types": { From e3c29db7188a34f12c5416e47d85475752b8ee70 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Apr 2025 14:41:05 +0200 Subject: [PATCH 358/396] chore(deps-dev): bump typescript from 5.8.2 to 5.8.3 (#4551) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 312be3e10e..298e9469ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15731,9 +15731,9 @@ } }, "node_modules/typescript": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", - "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -28497,9 +28497,9 @@ } }, "typescript": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", - "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true }, "typical": { From 48962c86535a4ae13d619c5e90f4ddc8a2b300ba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Apr 2025 13:21:50 +0200 Subject: [PATCH 359/396] chore(deps): bump next from 14.2.25 to 14.2.26 in /examples/nextjs (#4550) --- examples/nextjs/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index b7b8d61c1b..c437ac2059 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "elastic-apm-node": "elastic/apm-agent-nodejs#main", - "next": "14.2.25", + "next": "14.2.26", "react": "18.2.0", "react-dom": "18.2.0" }, From 582a93c5f2c7f998bb98b0e25df6e8e9306d57d7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Apr 2025 13:23:16 +0200 Subject: [PATCH 360/396] chore(deps-dev): bump the eslint group across 1 directory with 3 updates (#4552) - Updates `eslint` from 9.23.0 to 9.24.0 - Updates `eslint-plugin-n` from 17.16.2 to 17.17.0 - Updates `eslint-plugin-prettier` from 5.2.3 to 5.2.6 --- package-lock.json | 127 ++++++++++++++++++++++++---------------------- 1 file changed, 65 insertions(+), 62 deletions(-) diff --git a/package-lock.json b/package-lock.json index 298e9469ba..4459208ff6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4082,10 +4082,11 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", + "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.4.3" }, @@ -4121,9 +4122,9 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", - "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz", + "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -4220,9 +4221,9 @@ "license": "MIT" }, "node_modules/@eslint/js": { - "version": "9.23.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz", - "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==", + "version": "9.24.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz", + "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==", "dev": true, "license": "MIT", "engines": { @@ -5231,10 +5232,11 @@ } }, "node_modules/@pkgr/core": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.1.tgz", + "integrity": "sha512-VzgHzGblFmUeBmmrk55zPyrQIArQN4vujc9shWytaPdB3P7qhi0cpaiKIr7tlCmFv2lYUwnLospIqjL9ZSAhhg==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, @@ -8964,19 +8966,19 @@ } }, "node_modules/eslint": { - "version": "9.23.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz", - "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==", + "version": "9.24.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz", + "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.2", + "@eslint/config-array": "^0.20.0", "@eslint/config-helpers": "^0.2.0", "@eslint/core": "^0.12.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.23.0", + "@eslint/js": "9.24.0", "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -9193,13 +9195,13 @@ } }, "node_modules/eslint-plugin-n": { - "version": "17.16.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.16.2.tgz", - "integrity": "sha512-iQM5Oj+9o0KaeLoObJC/uxNGpktZCkYiTTBo8PkRWq3HwNcRxwpvSDFjBhQ5+HLJzBTy+CLDC5+bw0Z5GyhlOQ==", + "version": "17.17.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.17.0.tgz", + "integrity": "sha512-2VvPK7Mo73z1rDFb6pTvkH6kFibAmnTubFq5l83vePxu0WiY1s0LOtj2WHb6Sa40R3w4mnh8GFYbHBQyMlotKw==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.1", + "@eslint-community/eslint-utils": "^4.5.0", "enhanced-resolve": "^5.17.1", "eslint-plugin-es-x": "^7.8.0", "get-tsconfig": "^4.8.1", @@ -9255,14 +9257,14 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.3.tgz", - "integrity": "sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.6.tgz", + "integrity": "sha512-mUcf7QG2Tjk7H055Jk0lGBjbgDnfrvqjhXh9t2xLMSCjZVcw9Rb1V6sVNXO0th3jgeO7zllWPTNRil3JW94TnQ==", "dev": true, "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.9.1" + "synckit": "^0.11.0" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -9273,7 +9275,7 @@ "peerDependencies": { "@types/eslint": ">=8.0.0", "eslint": ">=8.0.0", - "eslint-config-prettier": "*", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", "prettier": ">=3.0.0" }, "peerDependenciesMeta": { @@ -15254,19 +15256,20 @@ } }, "node_modules/synckit": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", - "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.2.tgz", + "integrity": "sha512-1IUffI8zZ8qUMB3NUJIjk0RpLroG/8NkQDAWH1NbB2iJ0/5pn3M8rxfNzMz4GH9OnYaGYn31LEDSXJp/qIlxgA==", "dev": true, + "license": "MIT", "dependencies": { - "@pkgr/core": "^0.1.0", - "tslib": "^2.6.2" + "@pkgr/core": "^0.2.0", + "tslib": "^2.8.1" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/unts" + "url": "https://opencollective.com/synckit" } }, "node_modules/table-layout": { @@ -19362,9 +19365,9 @@ } }, "@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", + "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==", "dev": true, "requires": { "eslint-visitor-keys": "^3.4.3" @@ -19385,9 +19388,9 @@ "dev": true }, "@eslint/config-array": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", - "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz", + "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==", "dev": true, "requires": { "@eslint/object-schema": "^2.1.6", @@ -19454,9 +19457,9 @@ } }, "@eslint/js": { - "version": "9.23.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz", - "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==", + "version": "9.24.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz", + "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==", "dev": true }, "@eslint/object-schema": { @@ -20376,9 +20379,9 @@ "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==" }, "@pkgr/core": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.1.tgz", + "integrity": "sha512-VzgHzGblFmUeBmmrk55zPyrQIArQN4vujc9shWytaPdB3P7qhi0cpaiKIr7tlCmFv2lYUwnLospIqjL9ZSAhhg==", "dev": true }, "@protobufjs/aspromise": { @@ -23333,18 +23336,18 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.23.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz", - "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==", + "version": "9.24.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz", + "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.2", + "@eslint/config-array": "^0.20.0", "@eslint/config-helpers": "^0.2.0", "@eslint/core": "^0.12.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.23.0", + "@eslint/js": "9.24.0", "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -23572,12 +23575,12 @@ } }, "eslint-plugin-n": { - "version": "17.16.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.16.2.tgz", - "integrity": "sha512-iQM5Oj+9o0KaeLoObJC/uxNGpktZCkYiTTBo8PkRWq3HwNcRxwpvSDFjBhQ5+HLJzBTy+CLDC5+bw0Z5GyhlOQ==", + "version": "17.17.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.17.0.tgz", + "integrity": "sha512-2VvPK7Mo73z1rDFb6pTvkH6kFibAmnTubFq5l83vePxu0WiY1s0LOtj2WHb6Sa40R3w4mnh8GFYbHBQyMlotKw==", "dev": true, "requires": { - "@eslint-community/eslint-utils": "^4.4.1", + "@eslint-community/eslint-utils": "^4.5.0", "enhanced-resolve": "^5.17.1", "eslint-plugin-es-x": "^7.8.0", "get-tsconfig": "^4.8.1", @@ -23614,13 +23617,13 @@ } }, "eslint-plugin-prettier": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.3.tgz", - "integrity": "sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.6.tgz", + "integrity": "sha512-mUcf7QG2Tjk7H055Jk0lGBjbgDnfrvqjhXh9t2xLMSCjZVcw9Rb1V6sVNXO0th3jgeO7zllWPTNRil3JW94TnQ==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.9.1" + "synckit": "^0.11.0" } }, "eslint-plugin-promise": { @@ -28106,13 +28109,13 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, "synckit": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", - "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.2.tgz", + "integrity": "sha512-1IUffI8zZ8qUMB3NUJIjk0RpLroG/8NkQDAWH1NbB2iJ0/5pn3M8rxfNzMz4GH9OnYaGYn31LEDSXJp/qIlxgA==", "dev": true, "requires": { - "@pkgr/core": "^0.1.0", - "tslib": "^2.6.2" + "@pkgr/core": "^0.2.0", + "tslib": "^2.8.1" } }, "table-layout": { From 28b5b67e33663ed47e6a33220449bbd1c33b992e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Apr 2025 16:27:27 +0200 Subject: [PATCH 361/396] chore(deps-dev): bump @babel/cli from 7.26.4 to 7.27.0 in the babel group (#4540) --- package-lock.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4459208ff6..f1ca7e049f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2442,10 +2442,11 @@ } }, "node_modules/@babel/cli": { - "version": "7.26.4", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.26.4.tgz", - "integrity": "sha512-+mORf3ezU3p3qr+82WvJSnQNE1GAYeoCfEv4fik6B5/2cvKZ75AX8oawWQdXtM9MmndooQj15Jr9kelRFWsuRw==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.27.0.tgz", + "integrity": "sha512-bZfxn8DRxwiVzDO5CEeV+7IqXeCkzI4yYnrQbpwjT76CUyossQc6RYE7n+xfm0/2k40lPaCpW0FhxYs7EBAetw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "commander": "^6.2.0", @@ -18231,9 +18232,9 @@ } }, "@babel/cli": { - "version": "7.26.4", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.26.4.tgz", - "integrity": "sha512-+mORf3ezU3p3qr+82WvJSnQNE1GAYeoCfEv4fik6B5/2cvKZ75AX8oawWQdXtM9MmndooQj15Jr9kelRFWsuRw==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.27.0.tgz", + "integrity": "sha512-bZfxn8DRxwiVzDO5CEeV+7IqXeCkzI4yYnrQbpwjT76CUyossQc6RYE7n+xfm0/2k40lPaCpW0FhxYs7EBAetw==", "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.25", From 8627dcf1f90227cb2b461881481be2374af91779 Mon Sep 17 00:00:00 2001 From: David Luna Date: Thu, 10 Apr 2025 09:01:59 +0200 Subject: [PATCH 362/396] test: update assertion on self signed cert rejection (#4558) --- test/apm-client/http-apm-client/config.test.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/apm-client/http-apm-client/config.test.js b/test/apm-client/http-apm-client/config.test.js index 04898c2e3e..dbe35f49bb 100644 --- a/test/apm-client/http-apm-client/config.test.js +++ b/test/apm-client/http-apm-client/config.test.js @@ -235,7 +235,10 @@ test('reject unauthorized TLS by default', function (t) { client.on('request-error', function (err) { t.ok(err instanceof Error); let expectedErrorMessage = 'self signed certificate'; - if (semver.gte(process.version, 'v17.0.0')) { + if (semver.gte(process.version, 'v23.11.0')) { + expectedErrorMessage = + 'self-signed certificate; if the root CA is installed locally, try running Node.js with --use-system-ca'; + } else if (semver.gte(process.version, 'v17.0.0')) { expectedErrorMessage = 'self-signed certificate'; } t.equal(err.message, expectedErrorMessage); From 6e09ec05532f6274583de319d54c4fd4af67fa16 Mon Sep 17 00:00:00 2001 From: Colleen McGinnis Date: Thu, 10 Apr 2025 10:28:54 -0500 Subject: [PATCH 363/396] update apm links (#4562) --- docs/reference/agent-api.md | 18 +++++++++--------- docs/reference/azure-functions.md | 2 +- docs/reference/configuration.md | 14 +++++++------- docs/reference/configuring-agent.md | 2 +- docs/reference/index.md | 2 +- docs/reference/lambda.md | 4 ++-- docs/reference/logs.md | 2 +- docs/reference/nextjs.md | 2 +- docs/reference/opentelemetry-bridge.md | 2 +- docs/reference/opentracing.md | 4 ++-- docs/reference/span-api.md | 6 +++--- docs/reference/supported-technologies.md | 2 +- docs/reference/transaction-api.md | 6 +++--- docs/reference/upgrading.md | 2 +- 14 files changed, 34 insertions(+), 34 deletions(-) diff --git a/docs/reference/agent-api.md b/docs/reference/agent-api.md index 992f7e7523..83bdcc39b8 100644 --- a/docs/reference/agent-api.md +++ b/docs/reference/agent-api.md @@ -85,7 +85,7 @@ Each filter function will be called just before data is being sent to the APM Se Each filter function will be called in the order they were added, and will receive a `payload` object as the only argument, containing the data about to be sent to the APM Server. -The format of the payload depends on the event type being sent. For details about the different formats, see the [events intake API docs](docs-content://solutions/observability/apps/elastic-apm-events-intake-api.md). +The format of the payload depends on the event type being sent. For details about the different formats, see the [events intake API docs](docs-content://solutions/observability/apm/elastic-apm-events-intake-api.md). The filter function is synchronous and should return the manipulated payload object. If a filter function doesn’t return any value or returns a falsy value, the remaining filter functions will not be called and the payload **will not** be sent to the APM Server. @@ -134,7 +134,7 @@ Similar to [`apm.addFilter()`](#apm-add-filter), but the `fn` will only be calle Added in: v3.14.0 -Use `addMetadataFilter(fn)` to supply a filter function for the [metadata object](docs-content://solutions/observability/apps/elastic-apm-events-intake-api.md#apm-api-events-schema-definition) sent to the APM Server. This will allow you to manipulate the data being sent, for instance to remove possibly sensitive information. +Use `addMetadataFilter(fn)` to supply a filter function for the [metadata object](docs-content://solutions/observability/apm/elastic-apm-events-intake-api.md#apm-api-events-schema-definition) sent to the APM Server. This will allow you to manipulate the data being sent, for instance to remove possibly sensitive information. Each filter function will be called in the order they were added, and will receive a `metadata` object as the only argument. The filter function is synchronous and must return the manipulated object. Example usage: @@ -147,7 +147,7 @@ apm.addMetadataFilter(function dropArgv(metadata) { }) ``` -Warning: It is the responsibility of the author to ensure the returned object conforms to the [metadata schema](docs-content://solutions/observability/apps/elastic-apm-events-intake-api.md#apm-api-events-schema-definition) otherwise all APM data injest will fail. A metadata filter that breaks the metadata will result in error logging from the agent, something like: +Warning: It is the responsibility of the author to ensure the returned object conforms to the [metadata schema](docs-content://solutions/observability/apm/elastic-apm-events-intake-api.md#apm-api-events-schema-definition) otherwise all APM data injest will fail. A metadata filter that breaks the metadata will result in error logging from the agent, something like: ```text ERROR (elastic-apm-node): APM Server transport error (400): Unexpected APM Server response @@ -196,7 +196,7 @@ It’s possible to call this function multiple times within the scope of the sam If an error is captured, the context from the active transaction is used as context for the captured error, and any custom context given as the 2nd argument to [`apm.captureError`](#apm-capture-error) takes precedence and is shallow merged on top. ::::{tip} -Before using custom context, ensure you understand the different types of [metadata](docs-content://solutions/observability/apps/metadata.md) that are available. +Before using custom context, ensure you understand the different types of [metadata](docs-content://solutions/observability/apm/metadata.md) that are available. :::: @@ -216,7 +216,7 @@ apm.setLabel('productId', 42, false); Set a label on the current transaction. You can set multiple labels on the same transaction. If an error happens during the current transaction, it will also get tagged with the same label. ::::{tip} -Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable (as opposed to data set via [`apm.setCustomContext()`](#apm-set-custom-context)). Before using custom labels, ensure you understand the different types of [metadata](docs-content://solutions/observability/apps/metadata.md) that are available. +Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable (as opposed to data set via [`apm.setCustomContext()`](#apm-set-custom-context)). Before using custom labels, ensure you understand the different types of [metadata](docs-content://solutions/observability/apm/metadata.md) that are available. :::: @@ -244,7 +244,7 @@ apm.addLabels({productId: 42, productName: 'butter'}, false); Add several labels on the current transaction. You can add labels multiple times. If an error happens during the current transaction, it will also get tagged with the same labels. ::::{tip} -Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable (as opposed to data set via [`apm.setCustomContext()`](#apm-set-custom-context)). Before using custom labels, ensure you understand the different types of [metadata](docs-content://solutions/observability/apps/metadata.md) that are available. +Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable (as opposed to data set via [`apm.setCustomContext()`](#apm-set-custom-context)). Before using custom labels, ensure you understand the different types of [metadata](docs-content://solutions/observability/apm/metadata.md) that are available. :::: @@ -264,7 +264,7 @@ Added in: v3.47.0 Extends the [`globalLabels`](/reference/configuration.md#global-labels) configuration. It allows setting labels that are applied to all transactions. A potential use case is to specify a label with the state of your application: `'initializing' | 'available' | 'unhealthy'`. ::::{tip} -Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable (as opposed to data set via [`apm.setCustomContext()`](#apm-set-custom-context)). Before using custom labels, ensure you understand the different types of [metadata](docs-content://solutions/observability/apps/metadata.md) that are available. +Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable (as opposed to data set via [`apm.setCustomContext()`](#apm-set-custom-context)). Before using custom labels, ensure you understand the different types of [metadata](docs-content://solutions/observability/apm/metadata.md) that are available. :::: @@ -328,7 +328,7 @@ This makes it possible to better group error messages that contain variable data ### Metadata [metadata] -To ease debugging it’s possible to send some extra data with each error you send to the APM Server. The APM Server intake API supports a lot of different metadata fields, most of which are automatically managed by the Elastic APM Node.js Agent. But if you wish you can supply some extra details using `user` or `custom`. For more details on the properties accepted by the events intake API see the [events intake API docs](docs-content://solutions/observability/apps/elastic-apm-events-intake-api.md). +To ease debugging it’s possible to send some extra data with each error you send to the APM Server. The APM Server intake API supports a lot of different metadata fields, most of which are automatically managed by the Elastic APM Node.js Agent. But if you wish you can supply some extra details using `user` or `custom`. For more details on the properties accepted by the events intake API see the [events intake API docs](docs-content://solutions/observability/apm/elastic-apm-events-intake-api.md). To supply any of these extra fields, use the optional options argument when calling `apm.captureError()`. @@ -514,7 +514,7 @@ Added in: v1.1.0 * `options` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) The following options are supported: * `startTime` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) The time when the span started. Must be a Unix Time Stamp representing the number of milliseconds since January 1, 1970, 00:00:00 UTC. Sub-millisecond precision can be achieved using decimals. If not provided, the current time will be used - * `exitSpan` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) Make an "exit span". Exit spans represent outgoing communication. They are used to create a node in the [Service Map](docs-content://solutions/observability/apps/service-map.md) and a downstream service in the [Dependencies Table](docs-content://solutions/observability/apps/dependencies.md). The provided subtype will be used as the downstream service name. + * `exitSpan` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) Make an "exit span". Exit spans represent outgoing communication. They are used to create a node in the [Service Map](docs-content://solutions/observability/apm/service-map.md) and a downstream service in the [Dependencies Table](docs-content://solutions/observability/apm/dependencies.md). The provided subtype will be used as the downstream service name. * `links` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) Span links. A span can refer to zero or more other transactions or spans (separate from its parent). Span links will be shown in the Kibana APM app trace view. The `links` argument is an array of objects with a single "context" field that is a `Transaction`, `Span`, or W3C trace-context *traceparent* string. For example: `apm.startSpan('aName', { links: [{ context: anotherSpan }] })`. diff --git a/docs/reference/azure-functions.md b/docs/reference/azure-functions.md index 5195222466..07832720c7 100644 --- a/docs/reference/azure-functions.md +++ b/docs/reference/azure-functions.md @@ -10,7 +10,7 @@ The Node.js APM Agent can trace function invocations in an [Azure Functions](htt ## Prerequisites [azure-functions-prerequisites] -You need an APM Server to send APM data to. Follow the [APM Quick start](docs-content://solutions/observability/apps/get-started-with-apm.md) if you have not set one up yet. You will need your **APM server URL** and an APM server **secret token** (or **API key**) for configuring the APM agent below. +You need an APM Server to send APM data to. Follow the [APM Quick start](docs-content://solutions/observability/apm/get-started.md) if you have not set one up yet. You will need your **APM server URL** and an APM server **secret token** (or **API key**) for configuring the APM agent below. You will also need an Azure Function app to monitor. If you do not have an existing one, you can follow [this Azure guide](https://learn.microsoft.com/en-us/azure/azure-functions/create-first-function-cli-node#create-supporting-azure-resources-for-your-function) to create one. diff --git a/docs/reference/configuration.md b/docs/reference/configuration.md index cffbe4e025..999b63c535 100644 --- a/docs/reference/configuration.md +++ b/docs/reference/configuration.md @@ -50,7 +50,7 @@ The secret token optionally expected by the APM Server. The API key optionally expected by the APM Server. This is an alternative to `secretToken`. -This base64-encoded string is used to ensure that only your agents can send data to your APM server. You must have created the API key using the APM server command line tool. Please see the [APM server documentation](docs-content://solutions/observability/apps/api-keys.md) for details on how to do that. +This base64-encoded string is used to ensure that only your agents can send data to your APM server. You must have created the API key using the APM server command line tool. Please see the [APM server documentation](docs-content://solutions/observability/apm/api-keys.md) for details on how to do that. ::::{note} This feature is fully supported in the APM Server versions >= 7.6. @@ -123,7 +123,7 @@ var options = { The environment name is automatically logged along with all errors and transactions. If you want to overwrite this, use this option. -Environments allow you to easily filter data on a global level in the APM app. It’s important to be consistent when naming environments across agents. See [environment selector](docs-content://solutions/observability/apps/filter-application-data.md#apm-filter-your-data-service-environment-filter) in the APM app for more information. +Environments allow you to easily filter data on a global level in the APM app. It’s important to be consistent when naming environments across agents. See [environment selector](docs-content://solutions/observability/apm/filter-data.md#apm-filter-your-data-service-environment-filter) in the APM app for more information. ::::{note} This feature is fully supported in the APM app in Kibana versions >= 7.2. You must use the query bar to filter for a specific environment in versions prior to 7.2. @@ -182,7 +182,7 @@ To configure if outgoing http requests should be instrumented, see [`disableInst Activate APM Agent Configuration via Kibana. If set to `true`, the client will poll the APM Server regularly for new agent configuration. ::::{note} -This feature requires APM Server v7.3 or later. More information is available in [APM Agent configuration](docs-content://solutions/observability/apps/apm-agent-central-configuration.md). +This feature requires APM Server v7.3 or later. More information is available in [APM Agent configuration](docs-content://solutions/observability/apm/apm-agent-central-configuration.md). :::: @@ -629,7 +629,7 @@ The following transaction, span, and error fields will be truncated at this numb * `span.context.db.statement` * `error.exception.message`, `error.log.message` - If [`errorMessageMaxLength`](#error-message-max-length) is specified, then that value takes precedence for these error message fields. -Note that tracing data is limited at the upstream APM server to [`max_event_size`](docs-content://solutions/observability/apps/general-configuration-options.md#apm-max_event_size), which defaults to 300kB. If you configure `longFieldMaxLength` too large, it could result in transactions, spans, or errors that are rejected by APM server. +Note that tracing data is limited at the upstream APM server to [`max_event_size`](docs-content://solutions/observability/apm/general-configuration-options.md#apm-max_event_size), which defaults to 300kB. If you configure `longFieldMaxLength` too large, it could result in transactions, spans, or errors that are rejected by APM server. ## `stackTraceLimit` [stack-trace-limit] @@ -888,7 +888,7 @@ module.exports = { Set `breakdownMetrics: false` to disable reporting of breakdown metrics. Note that if `metricsInterval: 0`, then breakdown metrics will not be reported. -Breakdown metrics ([`span.self_time.*`](/reference/metrics.md#metrics-span.self_time.sum)) record the self-time spent in each unique type of span. This data drives the [Time spent by span type](docs-content://solutions/observability/apps/service-overview.md#service-span-duration) chart in the APM app. +Breakdown metrics ([`span.self_time.*`](/reference/metrics.md#metrics-span.self_time.sum)) record the self-time spent in each unique type of span. This data drives the [Time spent by span type](docs-content://solutions/observability/apm/service-overview.md#service-span-duration) chart in the APM app. ## `disableMetrics` [disable-metrics] @@ -1025,7 +1025,7 @@ Starting with Elastic Observability 8.2, span links will be visible in trace vie * **Default:** `true` * **Env:** `ELASTIC_APM_SPAN_COMPRESSION_ENABLED` -Setting this option to false will disable the [Span compression](docs-content://solutions/observability/apps/spans.md) feature. Span compression reduces the collection, processing, and storage overhead, and removes clutter from the UI. The tradeoff is that some information, such as DB statements of all the compressed spans, will not be collected. +Setting this option to false will disable the [Span compression](docs-content://solutions/observability/apm/spans.md) feature. Span compression reduces the collection, processing, and storage overhead, and removes clutter from the UI. The tradeoff is that some information, such as DB statements of all the compressed spans, will not be collected. Example usage: @@ -1132,6 +1132,6 @@ Change default in v4.0.0, in v3.x the default was `true` * **Default:** `false` * **Env:** `ELASTIC_APM_USE_ELASTIC_TRACEPARENT_HEADER` -To enable [distributed tracing](docs-content://solutions/observability/apps/traces.md), the agent adds trace context headers to outgoing requests (like HTTP requests, etc.). These headers (`traceparent` and `tracestate`) are defined in the [W3C Trace Context](https://www.w3.org/TR/trace-context-1/) specification. +To enable [distributed tracing](docs-content://solutions/observability/apm/traces.md), the agent adds trace context headers to outgoing requests (like HTTP requests, etc.). These headers (`traceparent` and `tracestate`) are defined in the [W3C Trace Context](https://www.w3.org/TR/trace-context-1/) specification. When this setting is `true`, the agent will also add the header `elastic-apm-traceparent` for backwards compatibility with older versions of Elastic APM agents. (In the next major version of this APM agent, this setting will default to false.) diff --git a/docs/reference/configuring-agent.md b/docs/reference/configuring-agent.md index 7f455df592..0dd7494f76 100644 --- a/docs/reference/configuring-agent.md +++ b/docs/reference/configuring-agent.md @@ -19,7 +19,7 @@ For information on the available configuration properties and the expected names Configuration options marked with the ![dynamic config](images/dynamic-config.svg "") badge can be changed at runtime when set from a supported source. -The Node.js Agent supports [Central configuration](docs-content://solutions/observability/apps/apm-agent-central-configuration.md), which allows you to fine-tune certain configurations via the APM app in Kibana. This feature is enabled in the Agent by default, with [`centralConfig`](/reference/configuration.md#central-config). +The Node.js Agent supports [Central configuration](docs-content://solutions/observability/apm/apm-agent-central-configuration.md), which allows you to fine-tune certain configurations via the APM app in Kibana. This feature is enabled in the Agent by default, with [`centralConfig`](/reference/configuration.md#central-config). ## Agent configuration object [agent-configuration-object] diff --git a/docs/reference/index.md b/docs/reference/index.md index 8ffffbf438..fa78d0bb06 100644 --- a/docs/reference/index.md +++ b/docs/reference/index.md @@ -20,5 +20,5 @@ These events, called Transactions and Spans, are sent to the APM Server. The APM ## Additional Components [additional-components] -APM Agents work in conjunction with the [APM Server](docs-content://solutions/observability/apps/application-performance-monitoring-apm.md), [Elasticsearch](docs-content://get-started/index.md), and [Kibana](docs-content://get-started/the-stack.md). The [APM Guide](docs-content://solutions/observability/apps/application-performance-monitoring-apm.md) provides details on how these components work together, and provides a matrix outlining [Agent and Server compatibility](docs-content://solutions/observability/apps/apm-agent-compatibility.md). +APM Agents work in conjunction with the [APM Server](docs-content://solutions/observability/apm/index.md), [Elasticsearch](docs-content://get-started/index.md), and [Kibana](docs-content://get-started/the-stack.md). The [APM Guide](docs-content://solutions/observability/apm/index.md) provides details on how these components work together, and provides a matrix outlining [Agent and Server compatibility](docs-content://solutions/observability/apm/apm-agent-compatibility.md). diff --git a/docs/reference/lambda.md b/docs/reference/lambda.md index 9d3973efa3..e0a2ecc31a 100644 --- a/docs/reference/lambda.md +++ b/docs/reference/lambda.md @@ -18,7 +18,7 @@ To get started with APM for your Node.js AWS Lambda functions follow the steps b ### Prerequisites [aws-lambda-nodejs-prerequisites] -You need an APM Server to send APM data to. Follow the [APM Quick start](docs-content://solutions/observability/apps/get-started-with-apm.md) if you have not set one up yet. For the best-possible performance, we recommend setting up APM on {{ecloud}} in the same AWS region as your AWS Lambda functions. +You need an APM Server to send APM data to. Follow the [APM Quick start](docs-content://solutions/observability/apm/get-started.md) if you have not set one up yet. For the best-possible performance, we recommend setting up APM on {{ecloud}} in the same AWS region as your AWS Lambda functions. ### Step 1: Add the APM Layers to your Lambda function [add_the_apm_layers_to_your_lambda_function] @@ -134,7 +134,7 @@ COPY --from=nodejs-agent /opt/nodejs/ /opt/nodejs/ The {{apm-lambda-ext}} and the APM Node.js agent are configured through environment variables on the AWS Lambda function. -For the minimal configuration, you will need the *APM Server URL* to set the destination for APM data and an [APM Secret Token](docs-content://solutions/observability/apps/secret-token.md). If you prefer to use an [APM API key](docs-content://solutions/observability/apps/api-keys.md) instead of the APM secret token, use the `ELASTIC_APM_API_KEY` environment variable instead of `ELASTIC_APM_SECRET_TOKEN` in the following configuration. +For the minimal configuration, you will need the *APM Server URL* to set the destination for APM data and an [APM Secret Token](docs-content://solutions/observability/apm/secret-token.md). If you prefer to use an [APM API key](docs-content://solutions/observability/apm/api-keys.md) instead of the APM secret token, use the `ELASTIC_APM_API_KEY` environment variable instead of `ELASTIC_APM_SECRET_TOKEN` in the following configuration. For production environments, we recommend [using the AWS Secrets Manager to store your APM authentication key](apm-aws-lambda://reference/aws-lambda-secrets-manager.md) instead of providing the secret value as plaintext in the environment variables. diff --git a/docs/reference/logs.md b/docs/reference/logs.md index 89c12187b5..32799ebd82 100644 --- a/docs/reference/logs.md +++ b/docs/reference/logs.md @@ -12,7 +12,7 @@ This feature is part of [Application log ingestion strategies](docs-content://so ## Log correlation [log-correlation-ids] -[Log correlation](docs-content://solutions/observability/apps/logs.md) allows you to navigate to all logs belonging to a particular trace and vice-versa: for a specific log, see in which context it has been logged and which parameters the user provided. +[Log correlation](docs-content://solutions/observability/apm/logs.md) allows you to navigate to all logs belonging to a particular trace and vice-versa: for a specific log, see in which context it has been logged and which parameters the user provided. In order to correlate logs from your application with traces captured by the Elastic APM Node.js Agent, your logs must contain the following identifiers: diff --git a/docs/reference/nextjs.md b/docs/reference/nextjs.md index 0a10474640..068a158070 100644 --- a/docs/reference/nextjs.md +++ b/docs/reference/nextjs.md @@ -17,7 +17,7 @@ This Next.js instrumentation is a *technical preview* while we solicit feedback ## Prerequisites [nextjs-prerequisites] -You need an APM Server to send APM data to. Follow the [APM Quick start](docs-content://solutions/observability/apps/get-started-with-apm.md) if you have not set one up yet. You will need your **APM server URL** and an APM server **secret token** (or **API key**) for configuring the APM agent below. +You need an APM Server to send APM data to. Follow the [APM Quick start](docs-content://solutions/observability/apm/get-started.md) if you have not set one up yet. You will need your **APM server URL** and an APM server **secret token** (or **API key**) for configuring the APM agent below. You will also need a Next.js application to monitor. If you do not have an existing one to use, you can use the following to create a starter app (see [Next.js Getting Started docs](https://nextjs.org/docs/getting-started) for more): diff --git a/docs/reference/opentelemetry-bridge.md b/docs/reference/opentelemetry-bridge.md index 9532e6d56d..68cc12e24d 100644 --- a/docs/reference/opentelemetry-bridge.md +++ b/docs/reference/opentelemetry-bridge.md @@ -155,7 +155,7 @@ A few configuration options can be used to control OpenTelemetry Metrics support The OpenTelemetry Tracing bridge works similarly to the [OpenTelemetry Node.js Trace SDK](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node/). It registers Tracer and ContextManager providers with the OpenTelemetry API. Subsequent `@opentelemetry/api` calls in user code will use those providers. The APM agent translates from OpenTelemetry to Elastic APM semantics and sends tracing data to your APM server for full support in [Elastic Observability’s APM app](https://www.elastic.co/apm). -Some examples of semantic translations: The first entry span of a service (e.g. an incoming HTTP request) will be converted to an [Elasic APM `Transaction`](docs-content://solutions/observability/apps/transactions.md), subsequent spans are mapped to [Elastic APM `Span`s](docs-content://solutions/observability/apps/spans.md). OpenTelemetry Span attributes are translated into the appropriate fields in Elastic APM’s data model. +Some examples of semantic translations: The first entry span of a service (e.g. an incoming HTTP request) will be converted to an [Elasic APM `Transaction`](docs-content://solutions/observability/apm/transactions.md), subsequent spans are mapped to [Elastic APM `Span`s](docs-content://solutions/observability/apm/spans.md). OpenTelemetry Span attributes are translated into the appropriate fields in Elastic APM’s data model. The only difference, from the user’s point of view, is in the setup of tracing. Instead of setting up the OpenTelemetry JS SDK, one sets up the APM agent as [described above](#otel-tracing-api). diff --git a/docs/reference/opentracing.md b/docs/reference/opentracing.md index 40a6bdddad..9de4791628 100644 --- a/docs/reference/opentracing.md +++ b/docs/reference/opentracing.md @@ -28,7 +28,7 @@ npm install elastic-apm-node elastic-apm-node-opentracing --save ## OpenTracing vs Elastic APM terminologies [ot-terminologies] -Elastic APM differentiates between [transactions](docs-content://solutions/observability/apps/transactions.md) and [spans](docs-content://solutions/observability/apps/spans.md). In the context of OpenTracing, a transaction can be thought of as a special kind of span. +Elastic APM differentiates between [transactions](docs-content://solutions/observability/apm/transactions.md) and [spans](docs-content://solutions/observability/apm/spans.md). In the context of OpenTracing, a transaction can be thought of as a special kind of span. Because OpenTracing natively only has the concept of spans, the Elastic APM OpenTracing bridge will automatically create either Elastic transactions or Elastic spans behind the scenes. There are a set of rules that determine which is created: @@ -126,7 +126,7 @@ The `span.setBaggageItem()` method is not supported. Baggage items are silently ### Logs [ot-logs] -Only error logging is supported. Logging an Error object on the OpenTracing span will create an Elastic APM [error](docs-content://solutions/observability/apps/errors.md). Example: +Only error logging is supported. Logging an Error object on the OpenTracing span will create an Elastic APM [error](docs-content://solutions/observability/apm/errors.md). Example: ```js const err = new Error('boom!') diff --git a/docs/reference/span-api.md b/docs/reference/span-api.md index 1e1448ac2c..a790c5c456 100644 --- a/docs/reference/span-api.md +++ b/docs/reference/span-api.md @@ -90,7 +90,7 @@ span.setLabel('productId', 42, false); Set a label on the span. You can set multiple labels on the same span. ::::{tip} -Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable (as opposed to data set via [`apm.setCustomContext()`](/reference/agent-api.md#apm-set-custom-context)). Before using custom labels, ensure you understand the different types of [metadata](docs-content://solutions/observability/apps/metadata.md) that are available. +Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable (as opposed to data set via [`apm.setCustomContext()`](/reference/agent-api.md#apm-set-custom-context)). Before using custom labels, ensure you understand the different types of [metadata](docs-content://solutions/observability/apm/metadata.md) that are available. :::: @@ -118,7 +118,7 @@ span.addLabels({productId: 42, productName: 'butter'}, false); Add several labels on the span. You can add labels multiple times. ::::{tip} -Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable (as opposed to data set via [`apm.setCustomContext()`](/reference/agent-api.md#apm-set-custom-context)). Before using custom labels, ensure you understand the different types of [metadata](docs-content://solutions/observability/apps/metadata.md) that are available. +Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable (as opposed to data set via [`apm.setCustomContext()`](/reference/agent-api.md#apm-set-custom-context)). Before using custom labels, ensure you understand the different types of [metadata](docs-content://solutions/observability/apm/metadata.md) that are available. :::: @@ -184,7 +184,7 @@ Added in: v3.39.0 * `type` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | null The target service type, usually the same value as `span.subtype`, e.g. "mysql". * `name` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type) | null The target service name, an optional scoping of the service. For databases it is typically the database name. -Manually set the `service.target.type` and `service.target.name` fields that identify a downstream service. They are used for [Service Maps](docs-content://solutions/observability/apps/service-map.md) and [Dependencies](docs-content://solutions/observability/apps/dependencies.md) in the Kibana APM app. The values are only used for "exit" spans — spans representing outgoing communication, marked with `exitSpan: true` at span creation. +Manually set the `service.target.type` and `service.target.name` fields that identify a downstream service. They are used for [Service Maps](docs-content://solutions/observability/apm/service-map.md) and [Dependencies](docs-content://solutions/observability/apm/dependencies.md) in the Kibana APM app. The values are only used for "exit" spans — spans representing outgoing communication, marked with `exitSpan: true` at span creation. If false-y values (e.g. `null`) are given for both `type` and `name`, then `service.target` will explicitly be excluded from this span. This may impact Service Maps and other Kibana APM app reporting for this service. diff --git a/docs/reference/supported-technologies.md b/docs/reference/supported-technologies.md index bf0cf1960c..7fa0d09ee5 100644 --- a/docs/reference/supported-technologies.md +++ b/docs/reference/supported-technologies.md @@ -33,7 +33,7 @@ Note: If you are using TypeScript or JavaScript that is *compiled/translated/tra ## Elastic Stack Compatibility [elastic-stack-compatibility] -This agent is compatible with [APM Server](docs-content://solutions/observability/apps/application-performance-monitoring-apm.md) v6.6 and above. +This agent is compatible with [APM Server](docs-content://solutions/observability/apm/index.md) v6.6 and above. ## Frameworks [compatibility-frameworks] diff --git a/docs/reference/transaction-api.md b/docs/reference/transaction-api.md index 1563d0086d..165c3f1531 100644 --- a/docs/reference/transaction-api.md +++ b/docs/reference/transaction-api.md @@ -84,7 +84,7 @@ Split `type` into `type`, `subtype` and `action` in: v3.0.0 * `options` - The following options are supported: * `startTime` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type) The time when the span started. Must be a Unix Time Stamp representing the number of milliseconds since January 1, 1970, 00:00:00 UTC. Sub-millisecond precision can be achieved using decimals. If not provided, the current time will be used - * `exitSpan` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) Make an "exit span". Exit spans represent outgoing communication. They are used to create a node in the [Service Map](docs-content://solutions/observability/apps/service-map.md) and a downstream service in the [Dependencies Table](docs-content://solutions/observability/apps/dependencies.md). The provided subtype will be used as the downstream service name. + * `exitSpan` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type) Make an "exit span". Exit spans represent outgoing communication. They are used to create a node in the [Service Map](docs-content://solutions/observability/apm/service-map.md) and a downstream service in the [Dependencies Table](docs-content://solutions/observability/apm/dependencies.md). The provided subtype will be used as the downstream service name. * `links` [``](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) Span links. A span can refer to zero or more other transactions or spans (separate from its parent). Span links will be shown in the Kibana APM app trace view. The `links` argument is an array of objects with a single "context" field that is a `Transaction`, `Span`, or W3C trace-context *traceparent* string. For example: `transaction.startSpan('aName', { links: [{ context: anotherSpan }] })`. @@ -108,7 +108,7 @@ transaction.setLabel('productId', 42, false); Set a label on the transaction. You can set multiple labels on the same transaction. If an error happens during the transaction, it will also get tagged with the same labels. ::::{tip} -Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable (as opposed to data set via [`apm.setCustomContext()`](/reference/agent-api.md#apm-set-custom-context)). Before using custom labels, ensure you understand the different types of [metadata](docs-content://solutions/observability/apps/metadata.md) that are available. +Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable (as opposed to data set via [`apm.setCustomContext()`](/reference/agent-api.md#apm-set-custom-context)). Before using custom labels, ensure you understand the different types of [metadata](docs-content://solutions/observability/apm/metadata.md) that are available. :::: @@ -136,7 +136,7 @@ transaction.addLabels({productId: 42, productName: 'butter'}, false); Add several labels on the transaction. You can add labels multiple times. If an error happens during the transaction, it will also get tagged with the same labels. ::::{tip} -Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable (as opposed to data set via [`apm.setCustomContext()`](/reference/agent-api.md#apm-set-custom-context)). Before using custom labels, ensure you understand the different types of [metadata](docs-content://solutions/observability/apps/metadata.md) that are available. +Labels are key/value pairs that are indexed by Elasticsearch and therefore searchable (as opposed to data set via [`apm.setCustomContext()`](/reference/agent-api.md#apm-set-custom-context)). Before using custom labels, ensure you understand the different types of [metadata](docs-content://solutions/observability/apm/metadata.md) that are available. :::: diff --git a/docs/reference/upgrading.md b/docs/reference/upgrading.md index c367d7c491..0843ff8178 100644 --- a/docs/reference/upgrading.md +++ b/docs/reference/upgrading.md @@ -10,7 +10,7 @@ The Elastic APM Node.js Agent uses [semantic versioning](https://semver.org/), a Before upgrading the agent, be sure to review the: * [Node.js APM Agent release notes](/release-notes/index.md) -* [APM Agent and Server compatibility chart](docs-content://solutions/observability/apps/apm-agent-compatibility.md) +* [APM Agent and Server compatibility chart](docs-content://solutions/observability/apm/apm-agent-compatibility.md) The following upgrade guides are available: From 12f9bf3ff6848a3d295efcce805a8b6274040038 Mon Sep 17 00:00:00 2001 From: "elastic-observability-automation[bot]" <180520183+elastic-observability-automation[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 11:05:19 +0200 Subject: [PATCH 364/396] chore: deps(updatecli): Bump updatecli version to v0.97.0 (#4563) --- .tool-versions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tool-versions b/.tool-versions index a744ca662e..7d99e82c35 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -updatecli v0.96.0 \ No newline at end of file +updatecli v0.97.0 \ No newline at end of file From 3cf07e8a4caad4e83c6a20fc5ee948edfc7c38a0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 11:05:54 +0200 Subject: [PATCH 365/396] chore(deps): bump wolfi/chainguard-base from `29150cd` to `1c7f5aa` (#4564) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index bf9d3b70d7..5bb5ceb1bf 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:29150cd940cc7f69407d978d5a19c86f4d9e67cf44e4d6ded787a497e8f27c9a +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:1c7f5aa0e7997455b8500d095c7a90e617102d3941eb0757ac62cfea509e09b9 ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 343c119924e397b04a4ae546b16e3dcfce263f41 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 11:06:52 +0200 Subject: [PATCH 366/396] chore(deps-dev): bump @apollo/server from 4.11.3 to 4.12.0 (#4565) --- package-lock.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index f1ca7e049f..2d3f8c06c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -197,10 +197,11 @@ "dev": true }, "node_modules/@apollo/server": { - "version": "4.11.3", - "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.11.3.tgz", - "integrity": "sha512-mW8idE2q0/BN14mimfJU5DAnoPHZRrAWgwsVLBEdACds+mxapIYxIbI6AH4AsOpxfrpvHts3PCYDbopy1XPW1g==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.12.0.tgz", + "integrity": "sha512-Z5RNTCnIia+dFsP5HW2ugQMrIOWgyNWyKP+jMVXthp/ECjYyyRYPC41ukCDwxHQY4vNZ3rgbgqroWVQUGFt2gA==", "dev": true, + "license": "MIT", "dependencies": { "@apollo/cache-control-types": "^1.0.3", "@apollo/server-gateway-interface": "^1.1.1", @@ -16361,9 +16362,9 @@ } }, "@apollo/server": { - "version": "4.11.3", - "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.11.3.tgz", - "integrity": "sha512-mW8idE2q0/BN14mimfJU5DAnoPHZRrAWgwsVLBEdACds+mxapIYxIbI6AH4AsOpxfrpvHts3PCYDbopy1XPW1g==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.12.0.tgz", + "integrity": "sha512-Z5RNTCnIia+dFsP5HW2ugQMrIOWgyNWyKP+jMVXthp/ECjYyyRYPC41ukCDwxHQY4vNZ3rgbgqroWVQUGFt2gA==", "dev": true, "requires": { "@apollo/cache-control-types": "^1.0.3", From 88628c9ae89ce306e6803c5357dc93dbe6eea3f1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 11:07:44 +0200 Subject: [PATCH 367/396] chore(deps-dev): bump eslint-config-prettier from 10.1.1 to 10.1.2 (#4566) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2d3f8c06c6..7ec19f6add 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9044,9 +9044,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.1.tgz", - "integrity": "sha512-4EQQr6wXwS+ZJSzaR5ZCrYgLxqvUjdXctaEtBqHcbkW944B1NQyO4qpdHQbXBONfwxXdkAY81HH4+LUfrg+zPw==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.2.tgz", + "integrity": "sha512-Epgp/EofAUeEpIdZkW60MHKvPyru1ruQJxPL+WIycnaPApuseK0Zpkrh/FwL9oIpQvIhJwV7ptOy0DWUjTlCiA==", "dev": true, "license": "MIT", "bin": { @@ -23456,9 +23456,9 @@ } }, "eslint-config-prettier": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.1.tgz", - "integrity": "sha512-4EQQr6wXwS+ZJSzaR5ZCrYgLxqvUjdXctaEtBqHcbkW944B1NQyO4qpdHQbXBONfwxXdkAY81HH4+LUfrg+zPw==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.2.tgz", + "integrity": "sha512-Epgp/EofAUeEpIdZkW60MHKvPyru1ruQJxPL+WIycnaPApuseK0Zpkrh/FwL9oIpQvIhJwV7ptOy0DWUjTlCiA==", "dev": true }, "eslint-import-resolver-node": { From 050bf0dd8cf83c63fb9273b756281d87442eef59 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 11:09:14 +0200 Subject: [PATCH 368/396] chore(deps-dev): bump fastify from 5.2.2 to 5.3.0 (#4568) --- package-lock.json | 81 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 59 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7ec19f6add..70a62db31e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9910,9 +9910,9 @@ } }, "node_modules/fastify": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.2.2.tgz", - "integrity": "sha512-22T/PnhquWozuFXg3Ish4md5ipsF1Nx1mJ9ulLdZPXSk14WFj/wMlyNB/yll9sQOojKRgOIxT2inK3Xpjg5hyw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.3.0.tgz", + "integrity": "sha512-vDpCJa4KRkHrdDMpDNtyPaIDi/ptCwoJ0M8RiefuIMvyXTgG63xYGe9DYYiCpydjh0ETIaLoSyKBNKkh7ew1eA==", "dev": true, "funding": [ { @@ -9936,9 +9936,9 @@ "find-my-way": "^9.0.0", "light-my-request": "^6.0.0", "pino": "^9.0.0", - "process-warning": "^4.0.0", + "process-warning": "^5.0.0", "rfdc": "^1.3.1", - "secure-json-parse": "^3.0.1", + "secure-json-parse": "^4.0.0", "semver": "^7.6.0", "toad-cache": "^3.7.0" } @@ -9985,11 +9985,29 @@ "pino": "bin.js" } }, - "node_modules/fastify/node_modules/process-warning": { + "node_modules/fastify/node_modules/pino/node_modules/process-warning": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/fastify/node_modules/process-warning": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", + "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" }, "node_modules/fastify/node_modules/ret": { "version": "0.5.0", @@ -10010,10 +10028,21 @@ } }, "node_modules/fastify/node_modules/secure-json-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-3.0.1.tgz", - "integrity": "sha512-9QR7G96th4QJ2+dJwvZB+JoXyt8PN+DbEjOr6kL2/JU4KH8Eb2sFdU+gt8EDdzWDWoWH0uocDdfCoFzdVSixUA==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.0.0.tgz", + "integrity": "sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" }, "node_modules/fastq": { "version": "1.17.1", @@ -24033,9 +24062,9 @@ } }, "fastify": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.2.2.tgz", - "integrity": "sha512-22T/PnhquWozuFXg3Ish4md5ipsF1Nx1mJ9ulLdZPXSk14WFj/wMlyNB/yll9sQOojKRgOIxT2inK3Xpjg5hyw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.3.0.tgz", + "integrity": "sha512-vDpCJa4KRkHrdDMpDNtyPaIDi/ptCwoJ0M8RiefuIMvyXTgG63xYGe9DYYiCpydjh0ETIaLoSyKBNKkh7ew1eA==", "dev": true, "requires": { "@fastify/ajv-compiler": "^4.0.0", @@ -24048,9 +24077,9 @@ "find-my-way": "^9.0.0", "light-my-request": "^6.0.0", "pino": "^9.0.0", - "process-warning": "^4.0.0", + "process-warning": "^5.0.0", "rfdc": "^1.3.1", - "secure-json-parse": "^3.0.1", + "secure-json-parse": "^4.0.0", "semver": "^7.6.0", "toad-cache": "^3.7.0" }, @@ -24083,12 +24112,20 @@ "safe-stable-stringify": "^2.3.1", "sonic-boom": "^3.7.0", "thread-stream": "^2.6.0" + }, + "dependencies": { + "process-warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", + "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==", + "dev": true + } } }, "process-warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", - "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", + "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", "dev": true }, "ret": { @@ -24107,9 +24144,9 @@ } }, "secure-json-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-3.0.1.tgz", - "integrity": "sha512-9QR7G96th4QJ2+dJwvZB+JoXyt8PN+DbEjOr6kL2/JU4KH8Eb2sFdU+gt8EDdzWDWoWH0uocDdfCoFzdVSixUA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.0.0.tgz", + "integrity": "sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==", "dev": true } } From d3ea585e06421db4634bdc54e13b196e7681baf7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 11:10:07 +0200 Subject: [PATCH 369/396] chore(deps-dev): bump ioredis from 5.6.0 to 5.6.1 (#4569) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 70a62db31e..6fbe520cf5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10983,9 +10983,9 @@ } }, "node_modules/ioredis": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.6.0.tgz", - "integrity": "sha512-tBZlIIWbndeWBWCXWZiqtOF/yxf6yZX3tAlTJ7nfo5jhd6dctNxF7QnYlZLZ1a0o0pDoen7CgZqO+zjNaFbJAg==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.6.1.tgz", + "integrity": "sha512-UxC0Yv1Y4WRJiGQxQkP0hfdL0/5/6YvdfOOClRgJ0qppSarkhneSa6UvkMkms0AkdGimSH3Ikqm+6mkMmX7vGA==", "dev": true, "license": "MIT", "dependencies": { @@ -24857,9 +24857,9 @@ "dev": true }, "ioredis": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.6.0.tgz", - "integrity": "sha512-tBZlIIWbndeWBWCXWZiqtOF/yxf6yZX3tAlTJ7nfo5jhd6dctNxF7QnYlZLZ1a0o0pDoen7CgZqO+zjNaFbJAg==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.6.1.tgz", + "integrity": "sha512-UxC0Yv1Y4WRJiGQxQkP0hfdL0/5/6YvdfOOClRgJ0qppSarkhneSa6UvkMkms0AkdGimSH3Ikqm+6mkMmX7vGA==", "dev": true, "requires": { "@ioredis/commands": "^1.1.1", From 13f812de05bb829d30a90e8242ce4b247eb58400 Mon Sep 17 00:00:00 2001 From: "elastic-observability-automation[bot]" <180520183+elastic-observability-automation[bot]@users.noreply.github.com> Date: Tue, 15 Apr 2025 08:55:19 +0200 Subject: [PATCH 370/396] chore: deps(updatecli): Bump updatecli version to v0.98.0 (#4571) --- .tool-versions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tool-versions b/.tool-versions index 7d99e82c35..e337dddcab 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -updatecli v0.97.0 \ No newline at end of file +updatecli v0.98.0 \ No newline at end of file From 4115cef27440d40358609f00bedc998bbbd68b30 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 15 Apr 2025 09:59:07 +0200 Subject: [PATCH 371/396] chore(deps-dev): bump undici from 7.7.0 to 7.8.0 (#4570) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6fbe520cf5..d37669b878 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15824,9 +15824,9 @@ } }, "node_modules/undici": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.7.0.tgz", - "integrity": "sha512-tZ6+5NBq4KH35rr46XJ2JPFKxfcBlYNaqLF/wyWIO9RMHqqU/gx/CLB1Y2qMcgB8lWw/bKHa7qzspqCN7mUHvA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.8.0.tgz", + "integrity": "sha512-vFv1GA99b7eKO1HG/4RPu2Is3FBTWBrmzqzO0mz+rLxN3yXkE4mqRcb8g8fHxzX4blEysrNZLqg5RbJLqX5buA==", "dev": true, "license": "MIT", "engines": { @@ -28575,9 +28575,9 @@ "dev": true }, "undici": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.7.0.tgz", - "integrity": "sha512-tZ6+5NBq4KH35rr46XJ2JPFKxfcBlYNaqLF/wyWIO9RMHqqU/gx/CLB1Y2qMcgB8lWw/bKHa7qzspqCN7mUHvA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.8.0.tgz", + "integrity": "sha512-vFv1GA99b7eKO1HG/4RPu2Is3FBTWBrmzqzO0mz+rLxN3yXkE4mqRcb8g8fHxzX4blEysrNZLqg5RbJLqX5buA==", "dev": true }, "undici-types": { From 06f1c14a6fec4a8ba0c1cd6475ab403d4c6015b4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 15 Apr 2025 09:59:40 +0200 Subject: [PATCH 372/396] chore(deps-dev): bump @types/node from 22.13.0 to 22.14.1 (#4567) --- package-lock.json | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index d37669b878..73f0c9076b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6274,13 +6274,13 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.13.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.0.tgz", - "integrity": "sha512-ClIbNe36lawluuvq3+YYhnIN2CELi+6q8NpnM7PYp4hBn/TatfboPgVSm2rwKRfnV2M+Ty9GWDFI64KEe+kysA==", + "version": "22.14.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", + "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "undici-types": "~6.21.0" } }, "node_modules/@types/node-fetch": { @@ -6308,10 +6308,11 @@ } }, "node_modules/@types/node/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "dev": true + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" }, "node_modules/@types/qs": { "version": "6.9.7", @@ -21294,18 +21295,18 @@ "dev": true }, "@types/node": { - "version": "22.13.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.0.tgz", - "integrity": "sha512-ClIbNe36lawluuvq3+YYhnIN2CELi+6q8NpnM7PYp4hBn/TatfboPgVSm2rwKRfnV2M+Ty9GWDFI64KEe+kysA==", + "version": "22.14.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", + "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==", "dev": true, "requires": { - "undici-types": "~6.20.0" + "undici-types": "~6.21.0" }, "dependencies": { "undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true } } From f87e41788a567660d8006faa72cf6c0201906192 Mon Sep 17 00:00:00 2001 From: Colleen McGinnis Date: Tue, 15 Apr 2025 18:07:40 -0500 Subject: [PATCH 373/396] fix image paths for docs-assembler (#4572) --- docs/reference/azure-functions.md | 4 +--- docs/reference/nextjs.md | 5 +---- docs/reference/supported-technologies.md | 4 +--- 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/docs/reference/azure-functions.md b/docs/reference/azure-functions.md index 07832720c7..7cfcef33ac 100644 --- a/docs/reference/azure-functions.md +++ b/docs/reference/azure-functions.md @@ -70,9 +70,7 @@ ELASTIC_APM_SECRET_TOKEN: For example: -:::{image} images/azure-functions-configuration.png -:alt: Configuring the APM Agent in the Azure Portal -::: +![Configuring the APM Agent in the Azure Portal](images/azure-functions-configuration.png) For local testing via `func start`, you can set these environment variables in your terminal, or in the "local.settings.json" file. See the [agent configuration guide](/reference/configuration.md) for full details on supported configuration variables. diff --git a/docs/reference/nextjs.md b/docs/reference/nextjs.md index 068a158070..a0d8d444b8 100644 --- a/docs/reference/nextjs.md +++ b/docs/reference/nextjs.md @@ -96,10 +96,7 @@ while true; do sleep 1; curl -i http://localhost:3000/api/hello; done Visit your Kibana APM app and, after a few seconds, you should see a service entry for your Next.js app. The service name will be pulled from the "name" field in "package.json". It can be overriden with [`serviceName`](/reference/configuration.md#service-name). Here is an example: -:::{image} images/nextjs-my-app-screenshot.png -:alt: Kibana APM app showing Next.js my-app -::: - +![Kibana APM app showing Next.js my-app](images/nextjs-my-app-screenshot.png) ## Limitations and future work [nextjs-limitations] diff --git a/docs/reference/supported-technologies.md b/docs/reference/supported-technologies.md index 7fa0d09ee5..561bfca924 100644 --- a/docs/reference/supported-technologies.md +++ b/docs/reference/supported-technologies.md @@ -12,9 +12,7 @@ The Elastic APM Node.js Agent automatically instruments various APIs in Node.js Support for the Elastic APM Node.js agent follows the [support schedule of Node.js itself](https://nodejs.org/en/about/releases/) to the end-of-life period of each version after its maintenance term. Versions of Node.js past their end-of-life date are not supported. -:::{image} images/node_release_schedule.svg -:alt: Node.js release schedule -::: +![Node.js release schedule](images/node_release_schedule.svg) APM agent 4.x releases work with Node.js versions 14.17.0 and later. APM agent 3.x maintenance releases work with Node.js versions 8.6 and later. We will only break support for older Node.js versions with a major version release of the APM agent. From 411920ca7736611a6d04185b852bee0c3b3d5121 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Apr 2025 09:14:20 +0200 Subject: [PATCH 374/396] chore(deps-dev): bump fastify from 5.3.0 to 5.3.2 (#4574) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 73f0c9076b..95689bec7a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9911,9 +9911,9 @@ } }, "node_modules/fastify": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.3.0.tgz", - "integrity": "sha512-vDpCJa4KRkHrdDMpDNtyPaIDi/ptCwoJ0M8RiefuIMvyXTgG63xYGe9DYYiCpydjh0ETIaLoSyKBNKkh7ew1eA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.3.2.tgz", + "integrity": "sha512-AIPqBgtqBAwkOkrnwesEE+dOyU30dQ4kh7udxeGVR05CRGwubZx+p2H8P0C4cRnQT0+EPK4VGea2DTL2RtWttg==", "dev": true, "funding": [ { @@ -24063,9 +24063,9 @@ } }, "fastify": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.3.0.tgz", - "integrity": "sha512-vDpCJa4KRkHrdDMpDNtyPaIDi/ptCwoJ0M8RiefuIMvyXTgG63xYGe9DYYiCpydjh0ETIaLoSyKBNKkh7ew1eA==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.3.2.tgz", + "integrity": "sha512-AIPqBgtqBAwkOkrnwesEE+dOyU30dQ4kh7udxeGVR05CRGwubZx+p2H8P0C4cRnQT0+EPK4VGea2DTL2RtWttg==", "dev": true, "requires": { "@fastify/ajv-compiler": "^4.0.0", From a7b79630d3fba67bb738031e5bbba141498eba11 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Apr 2025 09:52:50 +0200 Subject: [PATCH 375/396] chore(deps-dev): bump eslint from 9.24.0 to 9.25.0 in the eslint group (#4575) --- package-lock.json | 80 +++++++++++++++++++++++------------------------ 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/package-lock.json b/package-lock.json index 95689bec7a..ebea4d833f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4139,9 +4139,9 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz", - "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.1.tgz", + "integrity": "sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -4149,9 +4149,9 @@ } }, "node_modules/@eslint/core": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", - "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz", + "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -4223,9 +4223,9 @@ "license": "MIT" }, "node_modules/@eslint/js": { - "version": "9.24.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz", - "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==", + "version": "9.25.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.0.tgz", + "integrity": "sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==", "dev": true, "license": "MIT", "engines": { @@ -4243,13 +4243,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", - "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz", + "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.12.0", + "@eslint/core": "^0.13.0", "levn": "^0.4.1" }, "engines": { @@ -8969,20 +8969,20 @@ } }, "node_modules/eslint": { - "version": "9.24.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz", - "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==", + "version": "9.25.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.0.tgz", + "integrity": "sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.20.0", - "@eslint/config-helpers": "^0.2.0", - "@eslint/core": "^0.12.0", + "@eslint/config-helpers": "^0.2.1", + "@eslint/core": "^0.13.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.24.0", - "@eslint/plugin-kit": "^0.2.7", + "@eslint/js": "9.25.0", + "@eslint/plugin-kit": "^0.2.8", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", @@ -19431,15 +19431,15 @@ } }, "@eslint/config-helpers": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz", - "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.1.tgz", + "integrity": "sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==", "dev": true }, "@eslint/core": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", - "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz", + "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==", "dev": true, "requires": { "@types/json-schema": "^7.0.15" @@ -19489,9 +19489,9 @@ } }, "@eslint/js": { - "version": "9.24.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz", - "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==", + "version": "9.25.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.0.tgz", + "integrity": "sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==", "dev": true }, "@eslint/object-schema": { @@ -19501,12 +19501,12 @@ "dev": true }, "@eslint/plugin-kit": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", - "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz", + "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==", "dev": true, "requires": { - "@eslint/core": "^0.12.0", + "@eslint/core": "^0.13.0", "levn": "^0.4.1" } }, @@ -23368,19 +23368,19 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.24.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz", - "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==", + "version": "9.25.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.0.tgz", + "integrity": "sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.20.0", - "@eslint/config-helpers": "^0.2.0", - "@eslint/core": "^0.12.0", + "@eslint/config-helpers": "^0.2.1", + "@eslint/core": "^0.13.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.24.0", - "@eslint/plugin-kit": "^0.2.7", + "@eslint/js": "9.25.0", + "@eslint/plugin-kit": "^0.2.8", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", From 102b60a61f1b035cc5b356ad0ff4cec0e6f18a49 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Apr 2025 09:53:58 +0200 Subject: [PATCH 376/396] chore(deps): bump wolfi/chainguard-base to 5ffa55ac0 (#4577) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 5bb5ceb1bf..5793eed86c 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:1c7f5aa0e7997455b8500d095c7a90e617102d3941eb0757ac62cfea509e09b9 +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:5ffa55ac0a7ec95f1232622f62d5c0953ca931ae64cfd9946629b0e408a85d0e ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From b05ecaf3aa3b25e3f5013dcf003ec964c10e09c0 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Wed, 23 Apr 2025 12:05:48 -0700 Subject: [PATCH 377/396] feat: support sourcemap resolution for *ESM* stack frames in captured APM errors (#4578) --- docs/reference/starting-agent.md | 4 ++-- docs/release-notes/index.md | 11 +++++++++++ examples/typescript/README.md | 13 +++++++------ examples/typescript/index.ts | 6 +++--- examples/typescript/package.json | 13 +++++++------ examples/typescript/tsconfig.json | 2 +- lib/stacktraces.js | 29 ++++++++++++++++++++++------- 7 files changed, 53 insertions(+), 25 deletions(-) diff --git a/docs/reference/starting-agent.md b/docs/reference/starting-agent.md index 3c7b11c398..e53430a8b7 100644 --- a/docs/reference/starting-agent.md +++ b/docs/reference/starting-agent.md @@ -80,12 +80,12 @@ apm.start({ serverUrl: 'https://...', secretToken: '...', // ... -}) +}); ``` ```ts // main.ts -import 'initapm' +import './initapm.js'; // Application code starts here. ``` diff --git a/docs/release-notes/index.md b/docs/release-notes/index.md index 7bc5dfebbf..a285471a69 100644 --- a/docs/release-notes/index.md +++ b/docs/release-notes/index.md @@ -20,6 +20,17 @@ To check for security updates, go to [Security announcements for the Elastic sta % ### Fixes [next-fixes] +## Next [next] + +### Features and enhancements [next-features-enhancements] + +* Get sourcemap handling for captured exceptions to work with stack frames in + ES Modules (ESM). Before this, sourcemap handling would only work for stack + frames in CommonJS modules. + +### Fixes [next-fixes] + + ## 4.11.2 [4-11-2] **Release date:** March 17, 2025 diff --git a/examples/typescript/README.md b/examples/typescript/README.md index a5eb5f0ab6..8ec54b638f 100644 --- a/examples/typescript/README.md +++ b/examples/typescript/README.md @@ -1,12 +1,13 @@ -This directory includes an example TypeScript project using the Elastic -Node.js APM agent. It uses a tsconfig as recommended at -https://github.com/tsconfig/bases#node-14-tsconfigjson +This directory includes an example TypeScript project using the Elastic Node.js +APM agent. It uses a tsconfig as recommended at https://github.com/tsconfig/bases#node-20-tsconfigjson +and because `"type": "module"` is set in package.json, the built JavaScript will +use ES Modules (i.e. `import`). Install dependencies: npm install -Compile the TypeScript ("index.ts") to JavaScript ("dist/index.js"): +Compile the TypeScript to JavaScript ("dist/..."): npm run build @@ -15,7 +16,7 @@ the top of "index.ts". (See [the docs](https://www.elastic.co/guide/en/apm/agent for other ways of starting the APM agent.) ```ts -import 'elastic-apm-node/start' +import 'elastic-apm-node/start.js' ``` This start methods means that we need to use environment variables (or an @@ -26,7 +27,7 @@ Configure the APM agent with values from [your Elastic Stack](https://www.elasti export ELASTIC_APM_SERVER_URL='https://...apm...cloud.es.io:443' export ELASTIC_APM_SECRET_TOKEN='...' export ELASTIC_APM_USE_PATH_AS_TRANSACTION_NAME=true - node dist/index.js + node --experimental-loader=elastic-apm-node/loader.mjs dist/index.js This simple script creates an HTTP server and makes a single request to it. If things work properly, you should see a trace with a single HTTP transaction diff --git a/examples/typescript/index.ts b/examples/typescript/index.ts index ff096bdc69..59d8104136 100755 --- a/examples/typescript/index.ts +++ b/examples/typescript/index.ts @@ -4,10 +4,10 @@ * compliance with the BSD 2-Clause License. */ -// Be sure to import and *start* the agent before other imports. -import 'elastic-apm-node/start' +// Be sure to import and *start* the APM agent before other imports. +import 'elastic-apm-node/start.js' -import http from 'http' +import * as http from 'http' // Create an HTTP server listening at port 3000. const server = http.createServer((req, res) => { diff --git a/examples/typescript/package.json b/examples/typescript/package.json index ec305c8706..1db5bb1452 100644 --- a/examples/typescript/package.json +++ b/examples/typescript/package.json @@ -1,16 +1,17 @@ { "name": "elastic-apm-node-typescript-example", - "version": "1.0.0", + "version": "2.0.0", "private": true, - "main": "index.ts", + "type": "module", "scripts": { - "build": "tsc" + "build": "tsc", + "start": "node --enable-source-maps --experimental-loader=elastic-apm-node/loader.mjs dist/index.js" }, "dependencies": { - "elastic-apm-node": "^3.37.0" + "elastic-apm-node": "^4.11.2" }, "devDependencies": { - "@tsconfig/node14": "^1.0.3", - "typescript": "^4.7.4" + "@tsconfig/node20": "^20.1.5", + "typescript": "^5.0.4" } } diff --git a/examples/typescript/tsconfig.json b/examples/typescript/tsconfig.json index 440bbffea0..737196932f 100644 --- a/examples/typescript/tsconfig.json +++ b/examples/typescript/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "@tsconfig/node14/tsconfig.json", + "extends": "@tsconfig/node20/tsconfig.json", "compilerOptions": { "outDir": "dist" } diff --git a/lib/stacktraces.js b/lib/stacktraces.js index 3bb510c613..d3eafbd6e9 100644 --- a/lib/stacktraces.js +++ b/lib/stacktraces.js @@ -16,6 +16,7 @@ var fsPromises = require('fs/promises'); var path = require('path'); var { promisify } = require('util'); +const { fileURLToPath } = require('url'); // avoid loading error-callsites until needed to avoid // Error.prepareStackTrace side-effects @@ -89,6 +90,20 @@ function getCwd(log) { return cwd; } +// "filePath" refers to frame.fileName(), but with the possible "file://..." +// URL converted to a local path. An callsite in an ES module will have a +// file URL for the `fileName`. +// +// This just relies on `callsite.getFileName() -> ` +// so it works with CallSite or StackFrames (from `error-stack-parser`). +function filePathFromCallSite(callsite) { + let filePath = callsite.getFileName(); + if (filePath && filePath.startsWith('file://')) { + filePath = fileURLToPath(filePath); + } + return filePath; +} + // If gathering a stacktrace from the structured CallSites fails, this is // used as a fallback: parsing the `err.stack` *string*. function stackTraceFromErrStackString(log, err) { @@ -114,7 +129,7 @@ function stackTraceFromErrStackString(log, err) { const cwd = getCwd(log); for (var i = 0; i < frames.length; i++) { const frame = frames[i]; - const filename = frame.getFileName() || ''; + const filename = filePathFromCallSite(frame) || ''; stacktrace.push({ filename: getRelativeFileName(filename, cwd), function: frame.getFunctionName(), @@ -136,7 +151,7 @@ function isStackFrameApp(stackframe) { if (isStackFrameNode(stackframe)) { return false; } else { - const fileName = stackframe.getFileName(); + const fileName = filePathFromCallSite(stackframe); if (!fileName) { return true; } else if (fileName.indexOf(NODE_MODULES_PATH_SEG) === -1) { @@ -153,7 +168,7 @@ function isStackFrameNode(stackframe) { if (stackframe.isNative) { return true; } else { - const fileName = stackframe.getFileName(); + const fileName = filePathFromCallSite(stackframe); if (!fileName) { return true; } else { @@ -166,7 +181,7 @@ function isCallSiteApp(callsite) { if (isCallSiteNode(callsite)) { return false; } else { - const fileName = callsite.getFileName(); + const fileName = filePathFromCallSite(callsite); if (!fileName) { return true; } else if (fileName.indexOf(NODE_MODULES_PATH_SEG) === -1) { @@ -181,7 +196,7 @@ function isCallSiteNode(callsite) { if (callsite.isNative()) { return true; } else { - const fileName = callsite.getFileName(); + const fileName = filePathFromCallSite(callsite); if (!fileName) { return true; } else { @@ -244,7 +259,7 @@ async function getSourceMapConsumer(callsite) { if (isCallSiteNode(callsite)) { return null; } else { - var filename = callsite.getFileName(); + var filename = filePathFromCallSite(callsite); if (!filename) { return null; } else { @@ -277,7 +292,7 @@ async function frameFromCallSite( sourceLinesLibraryFrames, ) { // getFileName can return null, e.g. with a `at Generator.next ()` frame. - const filename = callsite.getFileName() || ''; + const filename = filePathFromCallSite(callsite) || ''; const lineno = callsite.getLineNumber(); const colno = callsite.getColumnNumber(); From cd398aa760a48cd38b15b23757333ca797bc2429 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Thu, 24 Apr 2025 09:15:29 -0700 Subject: [PATCH 378/396] release 4.12.0 (#4580) --- CONTRIBUTING.md | 3 ++- docs/release-notes/index.md | 9 ++++----- package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d714f140e1..9221bfd69c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -195,9 +195,10 @@ A release involves the following published artifacts: - the version in `package-lock.json` (by running `npm install`), - all cases of "REPLACEME" in docs and comments, - "docs/release-notes/index.md": Add missing release notes, if any. Then change - the "Next" section title to: + the "Next" section title, release date, and sub-section anchors: ``` ## x.y.z [x-y-z] + ... ``` If there are particular highlights for the release, then it can be helpful to point those out in the PR description. diff --git a/docs/release-notes/index.md b/docs/release-notes/index.md index a285471a69..205cf0fc49 100644 --- a/docs/release-notes/index.md +++ b/docs/release-notes/index.md @@ -20,15 +20,14 @@ To check for security updates, go to [Security announcements for the Elastic sta % ### Fixes [next-fixes] -## Next [next] +## 4.12.0 [4-12-0] +**Release date:** April 24, 2025 -### Features and enhancements [next-features-enhancements] +### Features and enhancements [4-12-0-next-features-enhancements] * Get sourcemap handling for captured exceptions to work with stack frames in ES Modules (ESM). Before this, sourcemap handling would only work for stack - frames in CommonJS modules. - -### Fixes [next-fixes] + frames in CommonJS modules. ([#4578](https://github.com/elastic/apm-agent-nodejs/issues/4578)) ## 4.11.2 [4-11-2] diff --git a/package-lock.json b/package-lock.json index ebea4d833f..00026ff317 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "elastic-apm-node", - "version": "4.11.2", + "version": "4.12.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "elastic-apm-node", - "version": "4.11.2", + "version": "4.12.0", "license": "BSD-2-Clause", "dependencies": { "@elastic/ecs-pino-format": "^1.5.0", diff --git a/package.json b/package.json index 3c4c04c7a3..6bb58737b2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "elastic-apm-node", - "version": "4.11.2", + "version": "4.12.0", "description": "The official Elastic APM agent for Node.js", "type": "commonjs", "main": "index.js", From 2b2c7e3bae10cb17bde47d0a5d0a9dd96c222095 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Fri, 25 Apr 2025 13:35:13 -0700 Subject: [PATCH 379/396] test: fix testing for @elastic/elasticsearch version 9 (#4583) `@elastic/elasticsearch@9.0.0` was released recently. This updates our testing to pass with it. So far no instrumentation changes were necessary. (I'm not sure if testing with v9 of the client would have failed with the older 8.7.1 version of the server that we had been using.) Also reduce the number of ES client versions tested. Obsoletes: #4576 --- .ci/docker/docker-compose.yml | 2 +- .github/workflows/test.yml | 2 +- .tav.yml | 22 +++- ...asticsearch8.js => trace-elasticsearch.js} | 49 ++++---- examples/trace-elasticsearch7.js | 85 ------------- package-lock.json | 117 ++++++++++-------- package.json | 2 +- test/docker-compose.yml | 6 +- .../modules/@elastic/elasticsearch.test.js | 4 - 9 files changed, 111 insertions(+), 178 deletions(-) rename examples/{trace-elasticsearch8.js => trace-elasticsearch.js} (69%) delete mode 100755 examples/trace-elasticsearch7.js diff --git a/.ci/docker/docker-compose.yml b/.ci/docker/docker-compose.yml index b34f484cf9..872729faae 100644 --- a/.ci/docker/docker-compose.yml +++ b/.ci/docker/docker-compose.yml @@ -74,7 +74,7 @@ services: retries: 30 elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.7.1 + image: docker.elastic.co/elasticsearch/elasticsearch:9.0.0 environment: - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - "network.host=_site_" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index af8212411e..160def573a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -104,7 +104,7 @@ jobs: - nodemssqldata:/var/opt/mssql elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.7.1 + image: docker.elastic.co/elasticsearch/elasticsearch:9.0.0 env: ES_JAVA_OPTS: '-Xms512m -Xmx512m' network.host: '_site_' diff --git a/.tav.yml b/.tav.yml index 3fe1b3021f..13982494b0 100644 --- a/.tav.yml +++ b/.tav.yml @@ -267,18 +267,32 @@ elasticsearch: # semver (and TAV) consider "-patch.N" to be a *prereleases*. This # leads to some tortured "versions:" ranges below. # - Version 8.11.0 dropped node v14 and v16 support. +# - Version 9 dropped v18 support (effectively by using undici@7). '@elastic/elasticsearch': - - versions: '>=7.0.0 <7.7.0 || >7.7.0 <7.12.0' + - versions: + mode: max-3 + include: '>=7.0.0 <7.7.0 || >7.7.0 <7.12.0' commands: node test/instrumentation/modules/@elastic/elasticsearch.test.js - - versions: '>=7.12.0 <8.2' + - versions: + mode: max-3 + include: '>=7.12.0 <8.2' node: '>=12.0.0' commands: node test/instrumentation/modules/@elastic/elasticsearch.test.js - - versions: '>=8.2.0-patch.1 <8.2.0 || >8.2.0 <8.11.0' + - versions: + mode: max-3 + include: '>8.2.0 <8.11.0' node: '>=14.0.0' commands: node test/instrumentation/modules/@elastic/elasticsearch.test.js - - versions: '>=8.11.0' + - versions: + mode: max-5 + include: '>=8.11.0 <9.0.0' node: '>=18.0.0' commands: node test/instrumentation/modules/@elastic/elasticsearch.test.js + - versions: + mode: max-5 + include: '>=9.0.0 <10' + node: '>=20.0.0' + commands: node test/instrumentation/modules/@elastic/elasticsearch.test.js handlebars: versions: diff --git a/examples/trace-elasticsearch8.js b/examples/trace-elasticsearch.js similarity index 69% rename from examples/trace-elasticsearch8.js rename to examples/trace-elasticsearch.js index 34bf9b63b3..e6373a266e 100755 --- a/examples/trace-elasticsearch8.js +++ b/examples/trace-elasticsearch.js @@ -6,7 +6,7 @@ * compliance with the BSD 2-Clause License. */ -// A small example showing Elastic APM tracing @elastic/elasticsearch version 8. +// A small example showing Elastic APM tracing @elastic/elasticsearch. // // This assumes an Elasticsearch running on localhost. You can use: // npm run docker:start elasticsearch @@ -14,17 +14,12 @@ // npm run docker:stop const apm = require('../').start({ - serviceName: 'example-trace-elasticsearch8', + serviceName: 'example-trace-elasticsearch', }); -// eslint-disable-next-line no-unused-vars -const { Client, HttpConnection } = require('@elastic/elasticsearch'); +const { Client } = require('@elastic/elasticsearch'); const client = new Client({ - // By default version 8 uses the new undici HTTP client lib. You can specify - // `HttpConnection` to use the older HTTP client. - // Connection: HttpConnection, - node: process.env.ES_URL || 'http://localhost:9200', auth: { username: process.env.ES_USERNAME || undefined, @@ -33,7 +28,7 @@ const client = new Client({ maxRetries: 1, }); -async function run() { +async function main() { // For tracing spans to be created, there must be an active transaction. // Typically, a transaction is automatically started for incoming HTTP // requests to a Node.js server. However, because this script is not running @@ -75,25 +70,23 @@ async function run() { t2.end(); }); - // Example aborting requests using AbortController (node v15 and above). - if (global.AbortController) { - const t3 = apm.startTransaction('t3'); - const ac = new AbortController(); // eslint-disable-line no-undef - setImmediate(() => { - ac.abort(); - }); - try { - const res = await client.search( - { query: { match_all: {} } }, - { signal: ac.signal }, - ); - console.log('[example 3] search response:', res); - } catch (err) { - console.log('[example 3] search error:', err); - } finally { - t3.end(); - } + // Example aborting requests using AbortController. + const t3 = apm.startTransaction('t3'); + const ac = new AbortController(); // eslint-disable-line no-undef + setImmediate(() => { + ac.abort(); + }); + try { + const res = await client.search( + { query: { match_all: {} } }, + { signal: ac.signal }, + ); + console.log('[example 3] search response:', res); + } catch (err) { + console.log('[example 3] search error:', err); + } finally { + t3.end(); } } -run(); +main(); diff --git a/examples/trace-elasticsearch7.js b/examples/trace-elasticsearch7.js deleted file mode 100755 index 858c624379..0000000000 --- a/examples/trace-elasticsearch7.js +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env node --unhandled-rejections=strict - -/* - * Copyright Elasticsearch B.V. and other contributors where applicable. - * Licensed under the BSD 2-Clause License; you may not use this file except in - * compliance with the BSD 2-Clause License. - */ - -// A small example showing Elastic APM tracing @elastic/elasticsearch version 7. -// -// This assumes an Elasticsearch running on localhost. You can use: -// npm run docker:start elasticsearch -// to start an Elasticsearch docker container. Then the following to stop: -// npm run docker:stop - -const apm = require('../').start({ - serviceName: 'example-trace-elasticsearch7', -}); - -// Note that version 7 is *not* installed by default. To use v7 you'll need to: -// npm install @elastic/elasticsearch@7 -const { Client } = require('@elastic/elasticsearch'); - -const client = new Client({ - node: process.env.ES_URL || 'http://localhost:9200', - auth: { - username: process.env.ES_USERNAME || undefined, - password: process.env.ES_PASSWORD || undefined, - }, -}); - -async function run() { - // For tracing spans to be created, there must be an active transaction. - // Typically, a transaction is automatically started for incoming HTTP - // requests to a Node.js server. However, because this script is not running - // an HTTP server, we manually start a transaction. More details at: - // https://www.elastic.co/guide/en/apm/agent/nodejs/current/custom-transactions.html - const t1 = apm.startTransaction('t1'); - - // Using await. - try { - const res = await client.search({ q: 'pants' }); - console.log('search succeeded: hits:', res.body.hits); - } catch (err) { - console.log('search error:', err.message); - } finally { - t1.end(); - } - - // Using Promises directly. - const t2 = apm.startTransaction('t2'); - client - .ping() - .then((_res) => { - console.log('ping succeeded'); - }) - .catch((err) => { - console.log('ping error:', err); - }); - // Another request to have two concurrent requests. Also use a bogus index - // to trigger an error and see APM error capture. - client - .search({ index: 'no-such-index', q: 'pants' }) - .then((_res) => { - console.log('search succeeded'); - }) - .catch((err) => { - console.log('search error:', err.message); - }) - .finally(() => { - t2.end(); - }); - - // Callback style. - const t3 = apm.startTransaction('t3'); - client.ping(function (err, _res) { - console.log( - 'ping', - err ? `error ${err.name}: ${err.message}` : 'succeeded', - ); - t3.end(); - }); -} - -run(); diff --git a/package-lock.json b/package-lock.json index 00026ff317..eb5fe29af5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -57,7 +57,7 @@ "@babel/cli": "^7.8.4", "@babel/core": "^7.8.4", "@babel/preset-env": "^7.8.4", - "@elastic/elasticsearch": "^8.6.0", + "@elastic/elasticsearch": "^9.0.0", "@fastify/formbody": "^8.0.1", "@hapi/hapi": "^21.0.0", "@koa/router": "^13.0.1", @@ -4035,13 +4035,12 @@ } }, "node_modules/@elastic/elasticsearch": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.17.1.tgz", - "integrity": "sha512-EaDP4/jfNu0nhnHZjxk9bL9ofKWKX9QUdEJ8QsGa+/KMPBEwD+HMyYXH4FSRlg7YONI0UbdO/mMZobvcEnMFBA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-9.0.0.tgz", + "integrity": "sha512-AsH+F/Z0pTOaYLSkFoTdMaILCGH/wodTONw1WB6AbseHVAPtk/C/FMtPUMhWuBUxcbDhBCFx4O3sdA3LBCcTPQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "@elastic/transport": "^8.9.1", + "@elastic/transport": "^9.0.0", "apache-arrow": "^18.0.0", "tslib": "^2.4.0" }, @@ -4050,39 +4049,46 @@ } }, "node_modules/@elastic/transport": { - "version": "8.9.1", - "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.9.1.tgz", - "integrity": "sha512-jasKNQeOb1vNf9aEYg+8zXmetaFjApDTSCC4QTl6aTixvyiRiSLcCiB8P6Q0lY9JIII/BhqNl8WbpFnsKitntw==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-9.0.1.tgz", + "integrity": "sha512-6jVZQzAe2iTRsZA6I/wkO2BjzJFD9BHTASo2YgGfbcoV95ey/8D/ABRhpgfg35LIDrmialIGJBizunSwxsRDLg==", "dev": true, "dependencies": { "@opentelemetry/api": "1.x", - "debug": "^4.3.4", - "hpagent": "^1.0.0", + "debug": "^4.4.0", + "hpagent": "^1.2.0", "ms": "^2.1.3", - "secure-json-parse": "^2.4.0", - "tslib": "^2.4.0", - "undici": "^6.12.0" + "secure-json-parse": "^3.0.2", + "tslib": "^2.8.1", + "undici": "^7.2.3" }, "engines": { "node": ">=18" } }, + "node_modules/@elastic/transport/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/@elastic/transport/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "node_modules/@elastic/transport/node_modules/undici": { - "version": "6.21.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz", - "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.17" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", @@ -14581,10 +14587,20 @@ "dev": true }, "node_modules/secure-json-parse": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", - "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", - "dev": true + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-3.0.2.tgz", + "integrity": "sha512-H6nS2o8bWfpFEV6U38sOSjS7bTbdgbCGU9wEM6W14P5H0QOsz94KCusifV44GpHDTu2nqZbuDNhTzu+mjDSw1w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ] }, "node_modules/select-hose": { "version": "2.0.0", @@ -19357,42 +19373,45 @@ } }, "@elastic/elasticsearch": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.17.1.tgz", - "integrity": "sha512-EaDP4/jfNu0nhnHZjxk9bL9ofKWKX9QUdEJ8QsGa+/KMPBEwD+HMyYXH4FSRlg7YONI0UbdO/mMZobvcEnMFBA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-9.0.0.tgz", + "integrity": "sha512-AsH+F/Z0pTOaYLSkFoTdMaILCGH/wodTONw1WB6AbseHVAPtk/C/FMtPUMhWuBUxcbDhBCFx4O3sdA3LBCcTPQ==", "dev": true, "requires": { - "@elastic/transport": "^8.9.1", + "@elastic/transport": "^9.0.0", "apache-arrow": "^18.0.0", "tslib": "^2.4.0" } }, "@elastic/transport": { - "version": "8.9.1", - "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.9.1.tgz", - "integrity": "sha512-jasKNQeOb1vNf9aEYg+8zXmetaFjApDTSCC4QTl6aTixvyiRiSLcCiB8P6Q0lY9JIII/BhqNl8WbpFnsKitntw==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-9.0.1.tgz", + "integrity": "sha512-6jVZQzAe2iTRsZA6I/wkO2BjzJFD9BHTASo2YgGfbcoV95ey/8D/ABRhpgfg35LIDrmialIGJBizunSwxsRDLg==", "dev": true, "requires": { "@opentelemetry/api": "1.x", - "debug": "^4.3.4", - "hpagent": "^1.0.0", + "debug": "^4.4.0", + "hpagent": "^1.2.0", "ms": "^2.1.3", - "secure-json-parse": "^2.4.0", - "tslib": "^2.4.0", - "undici": "^6.12.0" + "secure-json-parse": "^3.0.2", + "tslib": "^2.8.1", + "undici": "^7.2.3" }, "dependencies": { + "debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "requires": { + "ms": "^2.1.3" + } + }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true - }, - "undici": { - "version": "6.21.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz", - "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==", - "dev": true } } }, @@ -27573,9 +27592,9 @@ "dev": true }, "secure-json-parse": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", - "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-3.0.2.tgz", + "integrity": "sha512-H6nS2o8bWfpFEV6U38sOSjS7bTbdgbCGU9wEM6W14P5H0QOsz94KCusifV44GpHDTu2nqZbuDNhTzu+mjDSw1w==", "dev": true }, "select-hose": { diff --git a/package.json b/package.json index 6bb58737b2..5f9b1176ae 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "@babel/cli": "^7.8.4", "@babel/core": "^7.8.4", "@babel/preset-env": "^7.8.4", - "@elastic/elasticsearch": "^8.6.0", + "@elastic/elasticsearch": "^9.0.0", "@fastify/formbody": "^8.0.1", "@hapi/hapi": "^21.0.0", "@koa/router": "^13.0.1", diff --git a/test/docker-compose.yml b/test/docker-compose.yml index 1fb739bb9c..b3c412c8d8 100644 --- a/test/docker-compose.yml +++ b/test/docker-compose.yml @@ -74,7 +74,7 @@ services: retries: 30 elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.7.1 + image: docker.elastic.co/elasticsearch/elasticsearch:9.0.0 environment: - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - "network.host=_site_" @@ -83,8 +83,6 @@ services: - "xpack.security.enabled=false" ports: - "9200:9200" - volumes: - - nodeesdata:/usr/share/elasticsearch/data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9200"] interval: 1s @@ -187,8 +185,6 @@ volumes: driver: local nodemysqldata: driver: local - nodeesdata: - driver: local nodecassandradata: driver: local nodelocalstackdata: diff --git a/test/instrumentation/modules/@elastic/elasticsearch.test.js b/test/instrumentation/modules/@elastic/elasticsearch.test.js index 700c6eea57..01c85bba70 100644 --- a/test/instrumentation/modules/@elastic/elasticsearch.test.js +++ b/test/instrumentation/modules/@elastic/elasticsearch.test.js @@ -1221,10 +1221,6 @@ function checkDataAndEnd( expectedStatusCode, 'context.http.status_code', ); - t.ok( - esSpan.context.http.response.encoded_body_size, - 'context.http.response.encoded_body_size is present', - ); t.end(); }; From de110d74943960ad1af061ab2bb56127ef530cbe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 12:30:09 +0200 Subject: [PATCH 380/396] chore(deps-dev): bump eslint from 9.25.0 to 9.25.1 in the eslint group (#4586) --- package-lock.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index eb5fe29af5..2aea4e180c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4229,9 +4229,9 @@ "license": "MIT" }, "node_modules/@eslint/js": { - "version": "9.25.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.0.tgz", - "integrity": "sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==", + "version": "9.25.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.1.tgz", + "integrity": "sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==", "dev": true, "license": "MIT", "engines": { @@ -8975,9 +8975,9 @@ } }, "node_modules/eslint": { - "version": "9.25.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.0.tgz", - "integrity": "sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA==", + "version": "9.25.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.1.tgz", + "integrity": "sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==", "dev": true, "license": "MIT", "dependencies": { @@ -8987,7 +8987,7 @@ "@eslint/config-helpers": "^0.2.1", "@eslint/core": "^0.13.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.25.0", + "@eslint/js": "9.25.1", "@eslint/plugin-kit": "^0.2.8", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -19508,9 +19508,9 @@ } }, "@eslint/js": { - "version": "9.25.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.0.tgz", - "integrity": "sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==", + "version": "9.25.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.1.tgz", + "integrity": "sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==", "dev": true }, "@eslint/object-schema": { @@ -23387,9 +23387,9 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.25.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.0.tgz", - "integrity": "sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA==", + "version": "9.25.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.1.tgz", + "integrity": "sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", @@ -23398,7 +23398,7 @@ "@eslint/config-helpers": "^0.2.1", "@eslint/core": "^0.13.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.25.0", + "@eslint/js": "9.25.1", "@eslint/plugin-kit": "^0.2.8", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", From 5777217d6af9d3ab23db133a62788fcc2ebca1a6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 12:30:39 +0200 Subject: [PATCH 381/396] chore(deps-dev): bump @types/node from 22.14.1 to 22.15.2 (#4587) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2aea4e180c..0df9892ba0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6280,9 +6280,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.14.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", - "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==", + "version": "22.15.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.2.tgz", + "integrity": "sha512-uKXqKN9beGoMdBfcaTY1ecwz6ctxuJAcUlwE55938g0ZJ8lRxwAZqRz2AJ4pzpt5dHdTPMB863UZ0ESiFUcP7A==", "dev": true, "license": "MIT", "dependencies": { @@ -21314,9 +21314,9 @@ "dev": true }, "@types/node": { - "version": "22.14.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", - "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==", + "version": "22.15.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.2.tgz", + "integrity": "sha512-uKXqKN9beGoMdBfcaTY1ecwz6ctxuJAcUlwE55938g0ZJ8lRxwAZqRz2AJ4pzpt5dHdTPMB863UZ0ESiFUcP7A==", "dev": true, "requires": { "undici-types": "~6.21.0" From 272612b14e61533d44d76334079c49c02893464c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 12:31:13 +0200 Subject: [PATCH 382/396] chore(deps-dev): bump mysql2 from 3.14.0 to 3.14.1 (#4588) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0df9892ba0..6cc378df56 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12634,9 +12634,9 @@ } }, "node_modules/mysql2": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.14.0.tgz", - "integrity": "sha512-8eMhmG6gt/hRkU1G+8KlGOdQi2w+CgtNoD1ksXZq9gQfkfDsX4LHaBwTe1SY0Imx//t2iZA03DFnyYKPinxSRw==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.14.1.tgz", + "integrity": "sha512-7ytuPQJjQB8TNAYX/H2yhL+iQOnIBjAMam361R7UAL0lOVXWjtdrmoL9HYKqKoLp/8UUTRcvo1QPvK9KL7wA8w==", "dev": true, "license": "MIT", "dependencies": { @@ -26103,9 +26103,9 @@ } }, "mysql2": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.14.0.tgz", - "integrity": "sha512-8eMhmG6gt/hRkU1G+8KlGOdQi2w+CgtNoD1ksXZq9gQfkfDsX4LHaBwTe1SY0Imx//t2iZA03DFnyYKPinxSRw==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.14.1.tgz", + "integrity": "sha512-7ytuPQJjQB8TNAYX/H2yhL+iQOnIBjAMam361R7UAL0lOVXWjtdrmoL9HYKqKoLp/8UUTRcvo1QPvK9KL7wA8w==", "dev": true, "requires": { "aws-ssl-profiles": "^1.1.1", From 7893532ac755975d20b35179db3125205cf0c31f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 12:31:55 +0200 Subject: [PATCH 383/396] chore(deps-dev): bump mongodb from 6.15.0 to 6.16.0 (#4589) --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6cc378df56..2455c1c6f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12471,9 +12471,9 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "node_modules/mongodb": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.15.0.tgz", - "integrity": "sha512-ifBhQ0rRzHDzqp9jAQP6OwHSH7dbYIQjD3SbJs9YYk9AikKEettW/9s/tbSFDTpXcRbF+u1aLrhHxDFaYtZpFQ==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.16.0.tgz", + "integrity": "sha512-D1PNcdT0y4Grhou5Zi/qgipZOYeWrhLEpk33n3nm6LGtz61jvO88WlrWCK/bigMjpnOdAUKKQwsGIl0NtWMyYw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -25987,9 +25987,9 @@ "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" }, "mongodb": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.15.0.tgz", - "integrity": "sha512-ifBhQ0rRzHDzqp9jAQP6OwHSH7dbYIQjD3SbJs9YYk9AikKEettW/9s/tbSFDTpXcRbF+u1aLrhHxDFaYtZpFQ==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.16.0.tgz", + "integrity": "sha512-D1PNcdT0y4Grhou5Zi/qgipZOYeWrhLEpk33n3nm6LGtz61jvO88WlrWCK/bigMjpnOdAUKKQwsGIl0NtWMyYw==", "dev": true, "requires": { "@mongodb-js/saslprep": "^1.1.9", From 070d9c83018f063ea5850f92f8a9f5c3b8a01994 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 12:32:31 +0200 Subject: [PATCH 384/396] chore(deps-dev): bump @elastic/elasticsearch from 9.0.0 to 9.0.1 (#4590) --- package-lock.json | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2455c1c6f6..64b75869cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4035,13 +4035,14 @@ } }, "node_modules/@elastic/elasticsearch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-9.0.0.tgz", - "integrity": "sha512-AsH+F/Z0pTOaYLSkFoTdMaILCGH/wodTONw1WB6AbseHVAPtk/C/FMtPUMhWuBUxcbDhBCFx4O3sdA3LBCcTPQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-9.0.1.tgz", + "integrity": "sha512-V/Hj/ePRiC6H8vOQF4GfOGIUFjYyA2C1Je6qKBD20AShmxqkaTRAQSvia4tvLobHqjrljUzb6khfhDuPrb6E8g==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@elastic/transport": "^9.0.0", - "apache-arrow": "^18.0.0", + "@elastic/transport": "^9.0.1", + "apache-arrow": "18.x - 19.x", "tslib": "^2.4.0" }, "engines": { @@ -19373,13 +19374,13 @@ } }, "@elastic/elasticsearch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-9.0.0.tgz", - "integrity": "sha512-AsH+F/Z0pTOaYLSkFoTdMaILCGH/wodTONw1WB6AbseHVAPtk/C/FMtPUMhWuBUxcbDhBCFx4O3sdA3LBCcTPQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-9.0.1.tgz", + "integrity": "sha512-V/Hj/ePRiC6H8vOQF4GfOGIUFjYyA2C1Je6qKBD20AShmxqkaTRAQSvia4tvLobHqjrljUzb6khfhDuPrb6E8g==", "dev": true, "requires": { - "@elastic/transport": "^9.0.0", - "apache-arrow": "^18.0.0", + "@elastic/transport": "^9.0.1", + "apache-arrow": "18.x - 19.x", "tslib": "^2.4.0" } }, From 5758700d4dd788045cb40735916300a14f233681 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 12:38:35 +0200 Subject: [PATCH 385/396] chore(deps): bump docker/build-push-action in the github-actions group (#4585) Bumps the github-actions group with 1 update: [docker/build-push-action](https://github.com/docker/build-push-action). Updates `docker/build-push-action` from 6.15.0 to 6.16.0 - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/471d1dc4e07e5cdedd4c2171150001c434f0b7a4...14487ce63c7a62a4a324b0bfb37086795e31c6c1) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-version: 6.16.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: github-actions ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bded51d3dc..a91c425809 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -63,7 +63,7 @@ jobs: - name: Build and Push Docker Image id: docker-push - uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0 + uses: docker/build-push-action@14487ce63c7a62a4a324b0bfb37086795e31c6c1 # v6.16.0 with: context: . platforms: linux/amd64,linux/arm64 @@ -97,7 +97,7 @@ jobs: - name: Build and Push Docker Image (wolfi) id: docker-push-wolfi - uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0 + uses: docker/build-push-action@14487ce63c7a62a4a324b0bfb37086795e31c6c1 # v6.16.0 with: context: . platforms: linux/amd64,linux/arm64 From 57bb30161179bb2080c37fab3787e1cd2947431c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Apr 2025 12:12:05 +0200 Subject: [PATCH 386/396] chore(deps): bump wolfi/chainguard-base from `5ffa55a` to `67d82bc` (#4592) --- Dockerfile.wolfi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi index 5793eed86c..e3a64e773c 100644 --- a/Dockerfile.wolfi +++ b/Dockerfile.wolfi @@ -1,3 +1,3 @@ -FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:5ffa55ac0a7ec95f1232622f62d5c0953ca931ae64cfd9946629b0e408a85d0e +FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:67d82bc56a9c34572abe331c14f5e4b23a284d94a5bc1ea3be64f991ced51892 ARG AGENT_DIR COPY ${AGENT_DIR} /opt/nodejs \ No newline at end of file From 221e042cdc8a0a93d1c732c07e910d7e0befcb6b Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Wed, 30 Apr 2025 09:37:15 -0700 Subject: [PATCH 387/396] docs: release process no longer requires merging changes to a docs-related branch (#4594) With the docs v3 system, it automatically updates from main now. --- CONTRIBUTING.md | 17 +---- dev-utils/update-legacy-docs-branch.sh | 93 -------------------------- 2 files changed, 3 insertions(+), 107 deletions(-) delete mode 100755 dev-utils/update-legacy-docs-branch.sh diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9221bfd69c..a46d272107 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -212,20 +212,9 @@ A release involves the following published artifacts: steps -- including the `npm publish`. See the appropriate run at: https://github.com/elastic/apm-agent-nodejs/actions/workflows/release.yml) -4. Updating published docs: If this is for the latest major (currently `4.x`), - then the "do-not-delete_legacy-docs" branch needs to be updated to the same - state as the release tag on "main". Use the - [update-legacy-docs-branch.sh](./dev-utils/update-legacy-docs-branch.sh) - script for this. - - - Run `./dev-utils/update-legacy-docs-branch.sh` to create a working dir with the - needed changes. - - Follow its instructions to create a PR from this working dir. - - Ensure the "buildkite/docs-build-pr" workflow passes for this branch. - (Re-run via `run docs-build` comment.) - - "Squash and merge" the PR. - - The periodic docs CI will update the - [published docs](https://www.elastic.co/guide/en/apm/agent/nodejs/current/release-notes-4.x.html). +4. The published docs should update automatically with CI that runs + (at time of writing) every 30 minutes + a CDN cache time. + https://www.elastic.co/docs/release-notes/apm/agents/nodejs If this is a new major release, then: diff --git a/dev-utils/update-legacy-docs-branch.sh b/dev-utils/update-legacy-docs-branch.sh deleted file mode 100755 index bd397f449f..0000000000 --- a/dev-utils/update-legacy-docs-branch.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/bash -# -# Create a PR to update the `do-not-delete_legacy-docs` branch to match the -# state of "main" for the just-tagged release. The `do-not-delete_legacy-docs` -# branch needs to be updated for the current docs build. -# -# (Here "legacy docs" means the old Elastic (v1?) docs system based on -# AsciiDoc sources and the elastic/docs.git tooling. Around Mar/Apr 2025 -# this docs system is being phased out in favour of a "docs v3" system based -# on Markdown sources and new tooling.) -# -# Usage: -# ./dev-utils/update-legacy-docs-branch.sh [TARGTAG [LASTTAG]] - -if [ "$TRACE" != "" ]; then - export PS4='${BASH_SOURCE}:${LINENO}: ${FUNCNAME[0]:+${FUNCNAME[0]}(): }' - set -o xtrace -fi -set -o errexit -set -o pipefail - -function fatal { - echo "$(basename $0): error: $*" - exit 1 -} - -TOP=$(cd $(dirname $0)/../ >/dev/null; pwd) -WRKDIR=${TOP}/build/update-legacy-docs-branch - -echo "# Creating working git clone in: ${WRKDIR}/apm-agent-nodejs" -rm -rf $WRKDIR -mkdir -p $WRKDIR -cd $WRKDIR -git clone git@github.com:elastic/apm-agent-nodejs.git -cd apm-agent-nodejs - -# Allow passing in target tag (first arg), in case the latest commit is no -# longer the tagged release commit. -TARGTAG="$1" -if [[ -z "$TARGTAG" ]]; then - TARGTAG=$(git tag --points-at HEAD) -fi -if [[ ! ("$TARGTAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]$) ]]; then - fatal "the target tag, '${TARGTAG}', does not look like a release tag" -fi -# echo "TARGTAG=$TARGTAG" - -# Allow passing in last tag (second arg), in case the -# 'do-not-delete_legacy-docs' branch wasn't updated for some previous releases. -LASTTAG="$2" -if [[ -z "$LASTTAG" ]]; then - readonly NUM_COMMITS_SANITY_GUARD=200 - LASTTAG=$( - git log --pretty=format:%h -$NUM_COMMITS_SANITY_GUARD | tail -n +2 | while read sha; do - possible=$(git tag --points-at $sha) - if [[ "$possible" =~ ^v[0-9]+\.[0-9]+\.[0-9]$ ]]; then - echo $possible - break - fi - done - ) - if [[ -z "$LASTTAG" ]]; then - fatal "could not find previous release tag in last $NUM_COMMITS_SANITY_GUARD commits" - fi -fi -if [[ ! ("$LASTTAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]$) ]]; then - fatal "the last tag, '${LASTTAG}', does not look like a release tag" -fi -# echo "LASTTAG=$LASTTAG" - - -# Merging generally fails, IME. Let's attempt to cherry-pick each commit. -# - That 'awk' command is to reverse the lines of commit shas. -# `tac` works on Linux, `tail -r` works on BSD/macOS. -# https://stackoverflow.com/a/744093/14444044 -echo -echo "# Creating PR to update 'do-not-delete_legacy-docs' branch with commits from $LASTTAG to $TARGTAG." -FEATBRANCH=update-legacy-docs-branch-$(date +%Y%m%d) -git checkout do-not-delete_legacy-docs -git checkout -b "$FEATBRANCH" -git log --pretty=format:"%h" $LASTTAG...$TARGTAG \ - | awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] }' \ - | while read sha; do - echo "$ git cherry-pick $sha" - git cherry-pick $sha - done - -RELEASE_PR=$(git log --pretty=format:"%s" -1 $TARGTAG | sed -E 's/^.* \(\#([0-9]+)\)$/\1/') -echo -echo "# You can create a PR now with:" -echo " cd $WRKDIR/apm-agent-nodejs" -echo " gh pr create -w -B "do-not-delete_legacy-docs" -t 'docs: update "do-not-delete_legacy-docs" branch for $TARGTAG release' --body 'Refs: #$RELEASE_PR (release PR)'" - From a68b0b858f4029b34f7ad99e70da20039998960b Mon Sep 17 00:00:00 2001 From: David Luna Date: Mon, 5 May 2025 07:36:53 +0200 Subject: [PATCH 388/396] feat: add support for express v5 (#4581) Co-authored-by: Trent Mick --- .tav.yml | 66 +- docs/reference/esm.md | 2 +- docs/reference/supported-technologies.md | 2 +- docs/release-notes/index.md | 9 + lib/instrumentation/modules/express.js | 13 +- package-lock.json | 1629 +++++++++++++---- package.json | 2 +- test/_is_express_incompat.js | 42 + test/_mock_express_app.js | 103 ++ test/agent.test.js | 25 +- test/cloud-metadata/_lib.js | 60 +- test/config.test.js | 8 +- .../modules/apollo-server-express.test.js | 6 + .../modules/aws-sdk/dynamodb.test.js | 7 +- .../modules/aws-sdk/sns.test.js | 24 +- .../modules/express-queue.test.js | 6 + .../modules/express/basic.test.js | 9 +- .../express/capture-exceptions-off.test.js | 6 + .../express/capture-exceptions-on.test.js | 6 + .../modules/express/express-fixtures.test.js | 85 +- .../modules/express/set-framework.test.js | 6 + .../modules/finalhandler.test.js | 6 + .../modules/http/disabling.test.js | 5 +- .../modules/http/request.test.js | 20 +- test/instrumentation/modules/pg/pg.test.js | 3 +- test/lambda/github-issue-2709.test.js | 6 + test/lambda/wrap-bundled-handler.test.js | 6 + test/lambda/wrapper.test.js | 6 + test/sanitize-field-names/express.test.js | 7 + test/testconsts.js | 2 + 30 files changed, 1688 insertions(+), 489 deletions(-) create mode 100644 test/_is_express_incompat.js create mode 100644 test/_mock_express_app.js diff --git a/.tav.yml b/.tav.yml index 13982494b0..55b6b92c0a 100644 --- a/.tav.yml +++ b/.tav.yml @@ -186,44 +186,51 @@ graphql: commands: node test/instrumentation/modules/graphql.test.js express: - versions: - mode: latest-minors - include: '>=4 <5' - commands: - - node test/instrumentation/modules/express/basic.test.js - - node test/instrumentation/modules/express/capture-exceptions-off.test.js - - node test/instrumentation/modules/express/capture-exceptions-on.test.js - - node test/instrumentation/modules/express/set-framework.test.js + - versions: + mode: latest-minors + include: '>=5 <6' + node: '>=18' + commands: + - node test/instrumentation/modules/express/basic.test.js + - node test/instrumentation/modules/express/capture-exceptions-off.test.js + - node test/instrumentation/modules/express/capture-exceptions-on.test.js + - node test/instrumentation/modules/express/set-framework.test.js + - versions: + mode: latest-minors + include: '>=4 <5' + commands: + - node test/instrumentation/modules/express/basic.test.js + - node test/instrumentation/modules/express/capture-exceptions-off.test.js + - node test/instrumentation/modules/express/capture-exceptions-on.test.js + - node test/instrumentation/modules/express/set-framework.test.js apollo-server-express: - # We want this version range: - # versions: '>=2.9.16 <2.2 || >= 2.3.2 <3' - # but only the latest MAJOR.MINOR.x to reduce the test matrix. - # - # Maintenance note: This should be updated for newer MAJOR.MINOR releases. - - versions: '2.9.16 || 2.10.1 || 2.11.0 || 2.12.0 || 2.13.1 || 2.14.5 || 2.15.1 || 2.16.1 || 2.17.0 || 2.18.2 || 2.19.2 || 2.20.0 || 2.21.2 || 2.22.2 || 2.23.0 || 2.24.1 || 2.25.0 || >2.25.x <3' - peerDependencies: graphql@^14.0.0 + - versions: + include: '>=2.9.16 <3' + mode: latest-minors + peerDependencies: + - graphql@^14.0.0 + - express@^4.17.1 node: '>=6' commands: node test/instrumentation/modules/apollo-server-express.test.js # We want this version range (2.12.0 was the first release of - # apollo-server-express after graphql@15 was released): - # versions: '>=2.12.0 <3' - # but only the latest MAJOR.MINOR.x to reduce the test matrix. - # - # Maintenance note: This should be updated for newer MAJOR.MINOR releases. - - versions: '2.15.1 || 2.16.1 || 2.17.0 || 2.18.2 || 2.19.2 || 2.20.0 || 2.21.2 || 2.22.2 || 2.23.0 || 2.24.1 || 2.25.0 || >2.25.x <3' - peerDependencies: graphql@^15.0.0 + # apollo-server-express after graphql@15 was released) + - versions: + include: '>=2.12.0 <3' + mode: latest-minors + peerDependencies: + - graphql@^15.0.0 + - express@^4.17.1 # Per https://github.com/graphql/graphql-js/releases/tag/v15.0.0 # graphql v15 supports node v8 as a minimum. node: '>=8' commands: node test/instrumentation/modules/apollo-server-express.test.js - # We want this version range: - # versions: '^3.0.0' - # but only test the latest MAJOR.MINOR.x to reduce the test matrix. - # - # Maintenance note: This should be updated for newer MAJOR.MINOR releases. - - versions: '3.0.2 || 3.1.2 || 3.2.0 || 3.3.0 || 3.4.1 || 3.5.0 || 3.6.8 || 3.7.0 || 3.8.2 || 3.9.0 || ^3.10.2' - peerDependencies: graphql@^15.0.0 + - versions: + include: '>=3.0.0 <4' + mode: latest-minors + peerDependencies: + - graphql@^15.0.0 + - express@^4.17.1 commands: node test/instrumentation/modules/apollo-server-express.test.js express-queue: @@ -464,6 +471,7 @@ finalhandler: - versions: mode: max-3 include: '>=1 <2' + peerDependencies: 'express@^4.17.1' node: '>=0.8' commands: node test/instrumentation/modules/finalhandler.test.js - versions: diff --git a/docs/reference/esm.md b/docs/reference/esm.md index e59b81e0a2..e3cf0607eb 100644 --- a/docs/reference/esm.md +++ b/docs/reference/esm.md @@ -79,7 +79,7 @@ Automatic instrumentation of ES modules is currently limited as described here. | `@aws-sdk/client-sns` | >=3.15.0 <4 | | | | `@aws-sdk/client-sqs` | >=3.15.0 <4 | | | | `cassandra-driver` | >=3.0.0 <5 | | | -| `express` | ^4.0.0 | | | +| `express` | >=4.0.0 <6 | | | | `fastify` | >=3.5.0 | | | | `http` | | See [Supported Node.js versions](#esm-compat-node) above. | | | `https` | | See [Supported Node.js versions](#esm-compat-node) above. | | diff --git a/docs/reference/supported-technologies.md b/docs/reference/supported-technologies.md index 561bfca924..57c4555918 100644 --- a/docs/reference/supported-technologies.md +++ b/docs/reference/supported-technologies.md @@ -42,7 +42,7 @@ Though you can use Elastic APM [with any Node.js framework](/reference/custom-st | --- | --- | --- | | [AWS Lambda](/reference/lambda.md) | N/A | | | [Azure Functions](/reference/azure-functions.md) | v3, v4 | [Node.js programming model v3 and v4](https://learn.microsoft.com/en-us/azure/azure-functions/functions-node-upgrade-v4) | -| [Express](/reference/express.md) | ^4.0.0 | | +| [Express](/reference/express.md) | >=4.0.0 <6.0.0 | | | [Fastify](/reference/fastify.md) | >=1.0.0 | See also [Fastify’s own LTS documentation](https://www.fastify.io/docs/latest/Reference/LTS/) | | [@hapi/hapi](/reference/hapi.md) | >=17.9.0 <22.0.0 | | | [Koa](/reference/koa.md) via koa-router or @koa/router | >=5.2.0 <14.0.0 | Koa doesn’t have a built in router, so we can’t support Koa directly since we rely on router information for full support. We currently support the most popular Koa router called [koa-router](https://github.com/koajs/koa-router). | diff --git a/docs/release-notes/index.md b/docs/release-notes/index.md index 205cf0fc49..87a4c61df1 100644 --- a/docs/release-notes/index.md +++ b/docs/release-notes/index.md @@ -20,6 +20,15 @@ To check for security updates, go to [Security announcements for the Elastic sta % ### Fixes [next-fixes] +## Next [next] +**Release date:** Month day, year + +### Features and enhancements [next-features-enhancements] + +* Add support for `express` v5. ([#4581](https://github.com/elastic/apm-agent-nodejs/pull/4581)) + +### Fixes [next-fixes] + ## 4.12.0 [4-12-0] **Release date:** April 24, 2025 diff --git a/lib/instrumentation/modules/express.js b/lib/instrumentation/modules/express.js index d7784cfaf1..a9c33df75f 100644 --- a/lib/instrumentation/modules/express.js +++ b/lib/instrumentation/modules/express.js @@ -17,10 +17,19 @@ module.exports = function (express, agent, { version, enabled }) { agent.setFramework({ name: 'express', version, overwrite: false }); - if (!semver.satisfies(version, '^4.0.0')) { + if (!semver.satisfies(version, '>=4.0.0 <6')) { + agent.logger.debug('cannot instrument express version %s', version); + return express; + } + + if ( + semver.satisfies(version, '>5') && + semver.satisfies(process.version, '<18') + ) { agent.logger.debug( - 'express version %s not supported - aborting...', + 'express version %s not supported for node version %s, skipping express instrumentation', version, + process.version, ); return express; } diff --git a/package-lock.json b/package-lock.json index 64b75869cb..5f845324bb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -83,7 +83,7 @@ "eslint-plugin-n": "^17.2.0", "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-promise": "^7.0.0", - "express": "^4.17.1", + "express": "^5.0.0", "express-queue": "^0.0.13", "fastify": "^5.0.0", "finalhandler": "^2.1.0", @@ -427,6 +427,128 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, + "node_modules/@apollo/server/node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@apollo/server/node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/@apollo/server/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@apollo/server/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@apollo/server/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@apollo/server/node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.12", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/@apollo/server/node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@apollo/server/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/@apollo/server/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", @@ -436,6 +558,110 @@ "node": ">=12" } }, + "node_modules/@apollo/server/node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@apollo/server/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/@apollo/server/node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "dev": true + }, + "node_modules/@apollo/server/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/@apollo/server/node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@apollo/server/node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@apollo/server/node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/@apollo/server/node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "dev": true, + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@apollo/server/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/@apollo/server/node_modules/uuid": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", @@ -6839,7 +7065,7 @@ "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true }, "node_modules/array-includes": { @@ -7619,6 +7845,33 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -8103,10 +8356,13 @@ } }, "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "dev": true, + "engines": { + "node": ">=6.6.0" + } }, "node_modules/cookies": { "version": "0.9.0", @@ -8616,6 +8872,19 @@ "node": ">=0.10" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -8850,12 +9119,9 @@ } }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "engines": { "node": ">= 0.4" } @@ -8895,9 +9161,9 @@ "dev": true }, "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dependencies": { "es-errors": "^1.3.0" }, @@ -9546,45 +9812,41 @@ } }, "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", "dev": true, "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 18" }, "funding": { "type": "opencollective", @@ -9632,22 +9894,66 @@ "node": ">=6" } }, - "node_modules/express/node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "node_modules/express/node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "dev": true, + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "dev": true, + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/express/node_modules/content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, "engines": { "node": ">= 0.6" } }, "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/express/node_modules/depd": { @@ -9668,21 +9974,11 @@ "node": ">= 0.8" } }, - "node_modules/express/node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "node_modules/express/node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, "engines": { "node": ">= 0.8" } @@ -9703,17 +9999,92 @@ "node": ">= 0.8" } }, + "node_modules/express/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/express/node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dev": true, + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "dev": true + "node_modules/express/node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "dev": true, + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/express/node_modules/raw-body": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } }, "node_modules/express/node_modules/safe-buffer": { "version": "5.2.1", @@ -9736,51 +10107,48 @@ ] }, "node_modules/express/node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", "dev": true, "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 18" } }, - "node_modules/express/node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "node_modules/express/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, "engines": { "node": ">= 0.8" } }, - "node_modules/express/node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/express/node_modules/statuses": { + "node_modules/express/node_modules/type-is": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", "dev": true, + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, "engines": { - "node": ">= 0.8" + "node": ">= 0.6" } }, "node_modules/extsprintf": { @@ -10357,15 +10725,20 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -10395,6 +10768,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -10510,11 +10895,11 @@ } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10688,9 +11073,9 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "engines": { "node": ">= 0.4" }, @@ -12234,6 +12619,14 @@ "resolved": "https://registry.npmjs.org/mapcap/-/mapcap-1.0.0.tgz", "integrity": "sha512-KcNlZSlFPx+r1jYZmxEbTVymG+dIctf10WmWkuhrhrblM+KMoF77HelwihL5cxYlORye79KoR4IlOOk99lUJ0g==" }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/measured-core": { "version": "1.51.1", "resolved": "https://registry.npmjs.org/measured-core/-/measured-core-1.51.1.tgz", @@ -12286,10 +12679,13 @@ "dev": true }, "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", "dev": true, + "engines": { + "node": ">=18" + }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } @@ -12306,7 +12702,7 @@ "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, "engines": { "node": ">= 0.6" @@ -12920,9 +13316,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "engines": { "node": ">= 0.4" }, @@ -14462,21 +14858,75 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/router/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/router/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/router/node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true + }, + "node_modules/router/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { "type": "consulting", "url": "https://feross.org/support" } @@ -14706,35 +15156,37 @@ "dev": true }, "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", "dev": true, "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 18" } }, "node_modules/serve-static/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/serve-static/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, "node_modules/serve-static/node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -14753,6 +15205,15 @@ "node": ">= 0.8" } }, + "node_modules/serve-static/node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/serve-static/node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -14769,6 +15230,27 @@ "node": ">= 0.8" } }, + "node_modules/serve-static/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dev": true, + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/serve-static/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -14776,36 +15258,25 @@ "dev": true }, "node_modules/serve-static/node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", "dev": true, "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" }, "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-static/node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "engines": { - "node": ">= 0.8" + "node": ">= 18" } }, "node_modules/serve-static/node_modules/statuses": { @@ -14898,14 +15369,65 @@ } }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dependencies": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -16535,12 +17057,189 @@ "tslib": "^2.4.0" } }, + "cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true + }, + "express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.12", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, "lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true }, + "merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "dev": true, + "requires": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, "uuid": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", @@ -21754,7 +22453,7 @@ "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true }, "array-includes": { @@ -22341,6 +23040,24 @@ "set-function-length": "^1.2.1" } }, + "call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + } + }, + "call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "requires": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -22713,9 +23430,9 @@ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==" }, "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", "dev": true }, "cookies": { @@ -23094,6 +23811,16 @@ "nan": "^2.14.0" } }, + "dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "requires": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + } + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -23290,12 +24017,9 @@ } }, "es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "requires": { - "get-intrinsic": "^1.2.4" - } + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" }, "es-errors": { "version": "1.3.0", @@ -23328,9 +24052,9 @@ } }, "es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "requires": { "es-errors": "^1.3.0" } @@ -23777,57 +24501,83 @@ } }, "express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", "dev": true, "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" }, "dependencies": { - "cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", - "dev": true + "accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "dev": true, + "requires": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + } + }, + "body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "dev": true, + "requires": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + } + }, + "content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + } }, "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.3" } }, "depd": { @@ -23842,20 +24592,11 @@ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true }, - "finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - } + "fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "dev": true }, "http-errors": { "version": "2.0.0", @@ -23870,18 +24611,69 @@ "toidentifier": "1.0.1" } }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "dev": true + }, + "mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true + }, + "mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dev": true, + "requires": { + "mime-db": "^1.54.0" + } + }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "dev": true }, + "qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "dev": true, + "requires": { + "side-channel": "^1.1.0" + } + }, + "raw-body": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -23889,38 +24681,22 @@ "dev": true }, "send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", "dev": true, "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "dependencies": { - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" } }, "statuses": { @@ -23928,6 +24704,17 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true + }, + "type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "dev": true, + "requires": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + } } } }, @@ -24401,15 +25188,20 @@ "dev": true }, "get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "requires": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" } }, "get-package-type": { @@ -24424,6 +25216,15 @@ "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", "dev": true }, + "get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "requires": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + } + }, "get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -24505,12 +25306,9 @@ } }, "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "requires": { - "get-intrinsic": "^1.1.3" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" }, "got": { "version": "11.8.6", @@ -24631,9 +25429,9 @@ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" }, "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" }, "has-tostringtag": { "version": "1.0.2", @@ -25806,6 +26604,11 @@ "resolved": "https://registry.npmjs.org/mapcap/-/mapcap-1.0.0.tgz", "integrity": "sha512-KcNlZSlFPx+r1jYZmxEbTVymG+dIctf10WmWkuhrhrblM+KMoF77HelwihL5cxYlORye79KoR4IlOOk99lUJ0g==" }, + "math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" + }, "measured-core": { "version": "1.51.1", "resolved": "https://registry.npmjs.org/measured-core/-/measured-core-1.51.1.tgz", @@ -25849,9 +26652,9 @@ "dev": true }, "merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", "dev": true }, "merge2": { @@ -25863,7 +26666,7 @@ "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true }, "micromatch": { @@ -26342,9 +27145,9 @@ } }, "object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==" + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==" }, "object-is": { "version": "1.1.6", @@ -27498,6 +28301,48 @@ "glob": "^7.1.3" } }, + "router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "dev": true, + "requires": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "dependencies": { + "debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "requires": { + "ms": "^2.1.3" + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -27687,32 +28532,24 @@ "dev": true }, "serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", "dev": true, "requires": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } + "ms": "^2.1.3" } }, "depd": { @@ -27727,6 +28564,12 @@ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true }, + "fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "dev": true + }, "http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -27740,6 +28583,21 @@ "toidentifier": "1.0.1" } }, + "mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true + }, + "mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dev": true, + "requires": { + "mime-db": "^1.54.0" + } + }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -27747,32 +28605,22 @@ "dev": true }, "send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", "dev": true, "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "dependencies": { - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true - } + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" } }, "statuses": { @@ -27849,14 +28697,47 @@ "dev": true }, "side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "requires": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + } + }, + "side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "requires": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + } + }, + "side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + } + }, + "side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" } }, "simple-lru-cache": { diff --git a/package.json b/package.json index 5f9b1176ae..8be21b8d5c 100644 --- a/package.json +++ b/package.json @@ -162,7 +162,7 @@ "eslint-plugin-n": "^17.2.0", "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-promise": "^7.0.0", - "express": "^4.17.1", + "express": "^5.0.0", "express-queue": "^0.0.13", "fastify": "^5.0.0", "finalhandler": "^2.1.0", diff --git a/test/_is_express_incompat.js b/test/_is_express_incompat.js new file mode 100644 index 0000000000..bf0bf0f9c3 --- /dev/null +++ b/test/_is_express_incompat.js @@ -0,0 +1,42 @@ +/* + * Copyright Elasticsearch B.V. and other contributors where applicable. + * Licensed under the BSD 2-Clause License; you may not use this file except in + * compliance with the BSD 2-Clause License. + */ + +'use strict'; + +var semver = require('semver'); + +/** + * Return whether the current 'express' version is incompatible with the + * current version of node. If so, this returns a string that can be used + * as a reason for a test skip message. Otherwise it returns false. + * + * Usage: + * const isExpressIncompat = require('.../_is_express_incompat')() + * if (isExpressIncompat) { + * console.log(`# SKIP ${isExpressIncompat}`) + * process.exit() + * } + * + * Dev Note: These version ranges should mirror the express section of ".tav.yml". + * + * @returns {string | boolean} + */ +function isExpressIncompat() { + const nodeVer = process.version; + const expressVer = require('express/package.json').version; + const msg = `express@${expressVer} is incompatible with node@${nodeVer}`; + + if ( + semver.satisfies(expressVer, '>=5') && + semver.satisfies(nodeVer, '<18.0.0') + ) { + return msg; + } + + return false; +} + +module.exports = isExpressIncompat; diff --git a/test/_mock_express_app.js b/test/_mock_express_app.js new file mode 100644 index 0000000000..d57492c3a8 --- /dev/null +++ b/test/_mock_express_app.js @@ -0,0 +1,103 @@ +/* + * Copyright Elasticsearch B.V. and other contributors where applicable. + * Licensed under the BSD 2-Clause License; you may not use this file except in + * compliance with the BSD 2-Clause License. + */ + +'use strict'; + +const http = require('http'); + +/** + * @param {Map} routes + * @param {http.IncomingMessage} req + * @returns {((req, res) => void ) | undefined} + */ +function getRouteHandler(routes, req) { + const url = new URL(req.url, 'http://localhost'); + const method = req.method.toUpperCase(); + let path = url.pathname; + let handler = routes.get(`${method} ${path}`); + + if (!handler) { + // Some routes are defined wihtout a final slash `/` + path = path.replace(/\/$/, ''); + handler = routes.get(`${method} ${path}`); + } + + // Express sets metadata about the hit route + if (handler) { + req.route = { path }; + } + return handler; +} + +/** + * @param {http.IncomingMessage} req + * @returns {any} + */ +function makeExpressReq(req) { + const url = new URL(req.url, 'http://localhost'); + req.header = (name) => req.headers[name.toLowerCase()]; + req.query = {}; + url.searchParams.forEach((val, key) => { + req.query[key] = val; + }); + return req; +} + +/** + * @param {http.ServerResponse} res + * @returns {any} + */ +function makeExpressRes(res) { + res.set = res.setHeader; + res.status = function (code) { + this.statusCode = code; + }; + res.send = function (data) { + const payload = typeof data === 'string' ? data : JSON.stringify(data); + + if (!this.statusCode) { + this.statusCode = 200; + } + if (!this.getHeader('content-type')) { + this.setHeader('content-type', 'application/json'); + } + this.setHeader('content-length', payload.length); + this.write(payload); + this.end(); + }; + return res; +} + +/** + * this function returns a HTTP server which replaces the previous usage of `express` + * for mocking cloud metadata responses. + */ +function createMockExpressApp() { + const routes = new Map(); + const server = http.createServer((req, res) => { + const handler = getRouteHandler(routes, req); + if (typeof handler === 'function') { + // make express like req & res + const expReq = makeExpressReq(req); + const expRes = makeExpressRes(res); + return handler(expReq, expRes); + } + + res.writeHead(404, 'Not found'); + res.end(); + }); + + // return express like app object + return { + _server: server, + get: (path, handler) => routes.set(`GET ${path}`, handler), + post: (path, handler) => routes.set(`POST ${path}`, handler), + put: (path, handler) => routes.set(`PUT ${path}`, handler), + listen: server.listen.bind(server), + }; +} + +module.exports = createMockExpressApp; diff --git a/test/agent.test.js b/test/agent.test.js index 8d9aaaf02f..f6ccc7df63 100644 --- a/test/agent.test.js +++ b/test/agent.test.js @@ -2127,11 +2127,12 @@ test('#active: false', function (t) { }); test('patches', function (t) { + // NOTE: we're using `generic-pool` package since it still supports Node.js v14 t.test('#clearPatches(name)', function (t) { const agent = new Agent().start(); - t.ok(agent._instrumentation._patcherReg.has('express')); - t.doesNotThrow(() => agent.clearPatches('express')); - t.notOk(agent._instrumentation._patcherReg.has('express')); + t.ok(agent._instrumentation._patcherReg.has('generic-pool')); + t.doesNotThrow(() => agent.clearPatches('generic-pool')); + t.notOk(agent._instrumentation._patcherReg.has('generic-pool')); t.doesNotThrow(() => agent.clearPatches('does-not-exists')); agent.destroy(); t.end(); @@ -2139,16 +2140,16 @@ test('patches', function (t) { t.test('#addPatch(name, moduleName)', function (t) { const agent = new Agent(); - agent.clearPatches('express'); + agent.clearPatches('generic-pool'); agent.start(agentOptsNoopTransport); - agent.addPatch('express', './test/_patch.js'); + agent.addPatch('generic-pool', './test/_patch.js'); - const before = require('express'); + const before = require('generic-pool'); const patch = require('./_patch'); - delete require.cache[require.resolve('express')]; - t.deepEqual(require('express'), patch(before)); + delete require.cache[require.resolve('generic-pool')]; + t.deepEqual(require('generic-pool'), patch(before)); agent.destroy(); t.end(); @@ -2156,14 +2157,14 @@ test('patches', function (t) { t.test('#addPatch(name, function) - does not exist', function (t) { const agent = new Agent(); - agent.clearPatches('express'); + agent.clearPatches('generic-pool'); agent.start(agentOptsNoopTransport); var replacement = { foo: 'bar', }; - agent.addPatch('express', (exports, agent, { version, enabled }) => { + agent.addPatch('generic-pool', (exports, agent, { version, enabled }) => { t.ok(exports); t.ok(agent); t.ok(version); @@ -2171,8 +2172,8 @@ test('patches', function (t) { return replacement; }); - delete require.cache[require.resolve('express')]; - t.deepEqual(require('express'), replacement); + delete require.cache[require.resolve('generic-pool')]; + t.deepEqual(require('generic-pool'), replacement); agent.destroy(); t.end(); diff --git a/test/cloud-metadata/_lib.js b/test/cloud-metadata/_lib.js index bb0c73e256..a61d9caad3 100644 --- a/test/cloud-metadata/_lib.js +++ b/test/cloud-metadata/_lib.js @@ -5,7 +5,7 @@ */ 'use strict'; -const express = require('express'); +const http = require('http'); const fixtures = require('./_fixtures'); // how many seconds to wait for a "slow" server @@ -211,7 +211,7 @@ function createTestServer(provider, fixtureName) { if (!fixture) { throw new Error(`Unknown ${provider} fixture named ${fixtureName}`); } - const app = express(); + const app = createApp(); return addRoutesToExpressApp(app, provider, fixture); } @@ -229,7 +229,7 @@ function createSlowTestServer(provider, fixtureName) { if (!fixture) { throw new Error(`Unknown ${provider} fixture named ${fixtureName}`); } - const app = express(); + const app = createApp(); return addSlowRoutesToExpressApp(app, provider, fixture); } @@ -243,6 +243,60 @@ function loadFixtureData(provider, fixtureName) { return fixture; } +/** + * This function returns a HTTP server similar enough to Express for these tests, + * but avoids using Express because v5 only works with node >=18. + */ +function createApp() { + const routes = new Map(); + const server = http.createServer((req, res) => { + const url = new URL(req.url, 'http://localhost'); + const path = url.pathname.replace(/\/$/, ''); + const route = `${req.method.toUpperCase()} ${path}`; + const handler = routes.get(route); + + if (typeof handler === 'function') { + // make express like req & res + const expReq = { + headers: req.headers, + header: (name) => req.headers[name.toLowerCase()], + query: {}, + }; + url.searchParams.forEach((val, key) => { + expReq.query[key] = val; + }); + + const expRes = { + status: (num) => (res.statusCode = num), + set: (key, val) => res.setHeader(key, val), + send: (data) => { + const payload = + typeof data === 'string' ? data : JSON.stringify(data); + res.writeHead(200, { + 'content-type': 'application/json', + 'content-length': payload.length, + }); + res.write(payload); + res.end(); + }, + }; + + return handler(expReq, expRes); + } + + res.writeHead(404, 'Not found'); + res.end(); + }); + + // return express like app object + return { + get: (path, handler) => routes.set(`GET ${path}`, handler), + post: (path, handler) => routes.set(`POST ${path}`, handler), + put: (path, handler) => routes.set(`PUT ${path}`, handler), + listen: (port, cb) => server.listen(port, cb), + }; +} + module.exports = { createTestServer, createSlowTestServer, diff --git a/test/config.test.js b/test/config.test.js index 9eef1d4c96..c412847866 100644 --- a/test/config.test.js +++ b/test/config.test.js @@ -297,19 +297,19 @@ test('custom transport', function (t) { }); test('addPatch', function (t) { - const before = require('express'); + const before = require('generic-pool'); const patch = require('./_patch'); - delete require.cache[require.resolve('express')]; + delete require.cache[require.resolve('generic-pool')]; const agent = new Agent(); agent.start( Object.assign({}, agentOptsNoopTransport, { - addPatch: 'express=./test/_patch.js', + addPatch: 'generic-pool=./test/_patch.js', }), ); - t.deepEqual(require('express'), patch(before)); + t.deepEqual(require('generic-pool'), patch(before)); agent.destroy(); t.end(); diff --git a/test/instrumentation/modules/apollo-server-express.test.js b/test/instrumentation/modules/apollo-server-express.test.js index fda75f81ed..5fb712b71f 100644 --- a/test/instrumentation/modules/apollo-server-express.test.js +++ b/test/instrumentation/modules/apollo-server-express.test.js @@ -14,6 +14,12 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { process.exit(0); } +const isExpressIncompat = require('../../_is_express_incompat')(); +if (isExpressIncompat) { + console.log(`# SKIP dependency issue: ${isExpressIncompat}`); + process.exit(0); +} + var agent = require('../../..').start({ serviceName: 'test', secretToken: 'test', diff --git a/test/instrumentation/modules/aws-sdk/dynamodb.test.js b/test/instrumentation/modules/aws-sdk/dynamodb.test.js index 12cdc75c8d..6fb3ee59ce 100644 --- a/test/instrumentation/modules/aws-sdk/dynamodb.test.js +++ b/test/instrumentation/modules/aws-sdk/dynamodb.test.js @@ -24,11 +24,10 @@ const agent = require('../../../..').start({ const tape = require('tape'); process.env.AWS_SDK_JS_SUPPRESS_MAINTENANCE_MODE_MESSAGE = 1; const AWS = require('aws-sdk'); -const express = require('express'); -const bodyParser = require('body-parser'); const fixtures = require('./fixtures/dynamodb'); const mockClient = require('../../../_mock_http_client'); +const mockExpressApp = require('../../../_mock_express_app'); const { getRegionFromRequest, @@ -53,8 +52,8 @@ function initializeAwsSdk() { } function createMockServer(fixture) { - const app = express(); - app.use(bodyParser.urlencoded({ extended: false })); + const app = mockExpressApp(); + // app.use(bodyParser.urlencoded({ extended: false })); app.post('/', (req, res) => { res.status(fixture.httpStatusCode); res.setHeader('Content-Type', 'application/javascript'); diff --git a/test/instrumentation/modules/aws-sdk/sns.test.js b/test/instrumentation/modules/aws-sdk/sns.test.js index 806b866e76..adec5d1039 100644 --- a/test/instrumentation/modules/aws-sdk/sns.test.js +++ b/test/instrumentation/modules/aws-sdk/sns.test.js @@ -26,7 +26,6 @@ const agent = require('../../../..').start({ }); const tape = require('tape'); -const express = require('express'); const bodyParser = require('body-parser'); process.env.AWS_SDK_JS_SUPPRESS_MAINTENANCE_MODE_MESSAGE = 1; @@ -40,6 +39,7 @@ const { } = require('../../../../lib/instrumentation/modules/aws-sdk/sns'); const fixtures = require('./fixtures/sns'); const mockClient = require('../../../_mock_http_client'); +const mockExpressApp = require('../../../_mock_express_app'); initializeAwsSdk(); @@ -54,19 +54,21 @@ function initializeAwsSdk() { } function createMockServer(fixture) { - const app = express(); + const app = mockExpressApp(); app._receivedReqs = []; - app.use(bodyParser.urlencoded({ extended: false })); + const encodeMiddleware = bodyParser.urlencoded({ extended: false }); app.post('/', (req, res) => { - app._receivedReqs.push({ - method: req.method, - url: req.url, - headers: req.headers, - body: req.body, + encodeMiddleware(req, res, () => { + app._receivedReqs.push({ + method: req.method, + url: req.url, + headers: req.headers, + body: req.body, + }); + res.status(fixture.httpStatusCode); + res.setHeader('Content-Type', 'text/xml'); + res.send(fixture.response); }); - res.status(fixture.httpStatusCode); - res.setHeader('Content-Type', 'text/xml'); - res.send(fixture.response); }); return app; } diff --git a/test/instrumentation/modules/express-queue.test.js b/test/instrumentation/modules/express-queue.test.js index 7255744234..64771b756a 100644 --- a/test/instrumentation/modules/express-queue.test.js +++ b/test/instrumentation/modules/express-queue.test.js @@ -14,6 +14,12 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { process.exit(0); } +const isExpressIncompat = require('../../_is_express_incompat')(); +if (isExpressIncompat) { + console.log(`# SKIP ${isExpressIncompat}`); + process.exit(0); +} + var agent = require('../../..').start({ serviceName: 'test', secretToken: 'test', diff --git a/test/instrumentation/modules/express/basic.test.js b/test/instrumentation/modules/express/basic.test.js index c0b70d6750..f308d66892 100644 --- a/test/instrumentation/modules/express/basic.test.js +++ b/test/instrumentation/modules/express/basic.test.js @@ -14,6 +14,12 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { process.exit(0); } +const isExpressIncompat = require('../../../_is_express_incompat')(); +if (isExpressIncompat) { + console.log(`# SKIP ${isExpressIncompat}`); + process.exit(0); +} + var agent = require('../../../..').start({ serviceName: 'test', secretToken: 'test', @@ -512,7 +518,8 @@ test('expose app.use handle properties', function (t) { }); const handle = function (req, res) { - const stack = req.app._router.stack; + const router = req.app._router || req.app.router; // https://expressjs.com/en/guide/migrating-5.html#app.router + const stack = router.stack; const handle = stack[stack.length - 1].handle; t.ok(Array.isArray(handle.stack), 'expose stack array on handle'); diff --git a/test/instrumentation/modules/express/capture-exceptions-off.test.js b/test/instrumentation/modules/express/capture-exceptions-off.test.js index dbeb07fe3f..c1a4f7db89 100644 --- a/test/instrumentation/modules/express/capture-exceptions-off.test.js +++ b/test/instrumentation/modules/express/capture-exceptions-off.test.js @@ -14,6 +14,12 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { process.exit(0); } +const isExpressIncompat = require('../../../_is_express_incompat')(); +if (isExpressIncompat) { + console.log(`# SKIP ${isExpressIncompat}`); + process.exit(0); +} + const agent = require('../../../..').start({ captureExceptions: false, metricsInterval: 0, diff --git a/test/instrumentation/modules/express/capture-exceptions-on.test.js b/test/instrumentation/modules/express/capture-exceptions-on.test.js index 9c59511bec..8b8cd90f2d 100644 --- a/test/instrumentation/modules/express/capture-exceptions-on.test.js +++ b/test/instrumentation/modules/express/capture-exceptions-on.test.js @@ -14,6 +14,12 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { process.exit(0); } +const isExpressIncompat = require('../../../_is_express_incompat')(); +if (isExpressIncompat) { + console.log(`# SKIP ${isExpressIncompat}`); + process.exit(0); +} + const agent = require('../../../..').start({ captureExceptions: true, metricsInterval: 0, diff --git a/test/instrumentation/modules/express/express-fixtures.test.js b/test/instrumentation/modules/express/express-fixtures.test.js index 1903e7bc45..25361a6ffc 100644 --- a/test/instrumentation/modules/express/express-fixtures.test.js +++ b/test/instrumentation/modules/express/express-fixtures.test.js @@ -10,7 +10,10 @@ const os = require('os'); const test = require('tape'); const { runTestFixtures, sortApmEvents } = require('../../../_utils'); -const { NODE_VER_RANGE_IITM } = require('../../../testconsts'); +const { + NODE_VER_RANGE_IITM, + NODE_VER_RANGE_IITM_GE18, +} = require('../../../testconsts'); const testFixtures = [ { @@ -25,46 +28,66 @@ const testFixtures = [ }, versionRanges: { node: NODE_VER_RANGE_IITM, + express: '^4.0.0', }, testOpts: { // The `express.static()` path config doesn't work on windows. Meh windows. skip: os.platform() === 'win32', }, verbose: true, - checkApmServer: (t, apmServer) => { - t.equal( - apmServer.events.length, - 3, - 'expected number of APM server events', - ); - const metadata = apmServer.events[0].metadata; - t.ok(metadata, 'metadata'); - t.equal( - metadata.service.framework.name, - 'express', - 'metadata.service.framework.name', - ); - - const events = sortApmEvents(apmServer.events); - let trans = events[0].transaction; - t.equal(trans.name, 'GET static file', 'transaction.name'); - - trans = events[1].transaction; - t.equal(trans.name, 'POST /hello/:name', 'transaction.name'); - t.equal( - trans.context.request.method, - 'POST', - 'transaction.context.request.method', - ); - t.equal( - trans.context.request.body, - JSON.stringify({ foo: 'bar' }), - 'transaction.context.request.body', - ); + checkApmServer, + }, + { + name: 'express@5 ESM', + script: '../fixtures/use-express.mjs', + cwd: __dirname, + env: { + NODE_OPTIONS: + '--experimental-loader=../../../../loader.mjs --require=../../../../start.js', + NODE_NO_WARNINGS: '1', // skip warnings about --experimental-loader + ELASTIC_APM_CAPTURE_BODY: 'all', }, + versionRanges: { + node: NODE_VER_RANGE_IITM_GE18, + express: '>=5', + }, + testOpts: { + // The `express.static()` path config doesn't work on windows. Meh windows. + skip: os.platform() === 'win32', + }, + verbose: true, + checkApmServer, }, ]; +function checkApmServer(t, apmServer) { + t.equal(apmServer.events.length, 3, 'expected number of APM server events'); + const metadata = apmServer.events[0].metadata; + t.ok(metadata, 'metadata'); + t.equal( + metadata.service.framework.name, + 'express', + 'metadata.service.framework.name', + ); + + const events = sortApmEvents(apmServer.events); + let trans = events[0].transaction; + t.equal(trans.name, 'GET static file', 'transaction.name'); + + trans = events[1].transaction; + t.equal(trans.name, 'POST /hello/:name', 'transaction.name'); + t.equal( + trans.context.request.method, + 'POST', + 'transaction.context.request.method', + ); + t.equal( + trans.context.request.body, + JSON.stringify({ foo: 'bar' }), + 'transaction.context.request.body', + ); +} + test('express fixtures', (suite) => { runTestFixtures(suite, testFixtures); suite.end(); diff --git a/test/instrumentation/modules/express/set-framework.test.js b/test/instrumentation/modules/express/set-framework.test.js index cff01bfbd7..4f83307eb2 100644 --- a/test/instrumentation/modules/express/set-framework.test.js +++ b/test/instrumentation/modules/express/set-framework.test.js @@ -14,6 +14,12 @@ if (process.env.GITHUB_ACTIONS === 'true' && process.platform === 'win32') { process.exit(0); } +const isExpressIncompat = require('../../../_is_express_incompat')(); +if (isExpressIncompat) { + console.log(`# SKIP ${isExpressIncompat}`); + process.exit(0); +} + const agent = require('../../../..').start({ captureExceptions: true, metricsInterval: 0, diff --git a/test/instrumentation/modules/finalhandler.test.js b/test/instrumentation/modules/finalhandler.test.js index 05eed1dc64..a2822aa967 100644 --- a/test/instrumentation/modules/finalhandler.test.js +++ b/test/instrumentation/modules/finalhandler.test.js @@ -27,6 +27,12 @@ if ( process.exit(); } +const isExpressIncompat = require('../../_is_express_incompat')(); +if (isExpressIncompat) { + console.log(`# SKIP dependency issue: ${isExpressIncompat}`); + process.exit(0); +} + var agent = require('../../..').start({ serviceName: 'test', secretToken: 'test', diff --git a/test/instrumentation/modules/http/disabling.test.js b/test/instrumentation/modules/http/disabling.test.js index 8873bf9cc6..6c9832a00b 100644 --- a/test/instrumentation/modules/http/disabling.test.js +++ b/test/instrumentation/modules/http/disabling.test.js @@ -157,9 +157,8 @@ if (cluster.isMaster) { ), ); - const express = require('express'); - - const app = express(); + const mockExpressApp = require('../../../_mock_express_app'); + const app = mockExpressApp(); app.get('/', (req, res) => { res.end('hello'); diff --git a/test/instrumentation/modules/http/request.test.js b/test/instrumentation/modules/http/request.test.js index 0ce44a492f..28c218e42f 100644 --- a/test/instrumentation/modules/http/request.test.js +++ b/test/instrumentation/modules/http/request.test.js @@ -19,9 +19,9 @@ const agent = require('../../../..').start({ var http = require('http'); var test = require('tape'); -var express = require('express'); var mockClient = require('../../../_mock_http_client'); +var mockExpressApp = require('../../../_mock_express_app'); var findObjInArray = require('../../../_utils').findObjInArray; test('request', function (t) { @@ -37,14 +37,13 @@ test('request', function (t) { t.strictEqual(root.outcome, 'success'); const span = findObjInArray(data.spans, 'transaction_id', root.id); t.strictEqual(span.outcome, 'success'); - t.strictEqual(span.name, 'GET localhost:' + server.address().port); + t.strictEqual(span.name, 'GET localhost:' + app._server.address().port); - server.close(); + app._server.close(); t.end(); }); - var app = express(); - var server = http.createServer(app); + var app = mockExpressApp(); app.get('/test', (req, res) => { res.end('hello'); @@ -56,7 +55,7 @@ test('request', function (t) { }); }); - sendRequest(server); + sendRequest(app._server); }); test('Outcome', function (t) { @@ -69,14 +68,13 @@ test('Outcome', function (t) { t.strictEqual(root.outcome, 'failure'); const span = findObjInArray(data.spans, 'transaction_id', root.id); t.strictEqual(span.outcome, 'failure'); - t.strictEqual(span.name, 'GET localhost:' + server.address().port); + t.strictEqual(span.name, 'GET localhost:' + app._server.address().port); - server.close(); + app._server.close(); t.end(); }); - var app = express(); - var server = http.createServer(app); + var app = mockExpressApp(); app.get('/test', (req, res) => { res.statusCode = 500; @@ -90,7 +88,7 @@ test('Outcome', function (t) { }); }); - sendRequest(server); + sendRequest(app._server); }); function resetAgent(cb) { diff --git a/test/instrumentation/modules/pg/pg.test.js b/test/instrumentation/modules/pg/pg.test.js index 8365ec2c3c..1b39641230 100644 --- a/test/instrumentation/modules/pg/pg.test.js +++ b/test/instrumentation/modules/pg/pg.test.js @@ -23,9 +23,10 @@ var agent = require('../../../..').start({ spanCompressionEnabled: false, }); +const { safeGetPackageVersion } = require('../../../_utils'); var semver = require('semver'); var once = require('once'); -var pgVersion = require('pg/package.json').version; +var pgVersion = safeGetPackageVersion('pg'); var test = require('tape'); var pg = require('pg'); diff --git a/test/lambda/github-issue-2709.test.js b/test/lambda/github-issue-2709.test.js index 72afb9c213..8fbdf3dd28 100644 --- a/test/lambda/github-issue-2709.test.js +++ b/test/lambda/github-issue-2709.test.js @@ -6,6 +6,12 @@ 'use strict'; +const isExpressIncompat = require('../_is_express_incompat')(); +if (isExpressIncompat) { + console.log(`# SKIP dependency issue: ${isExpressIncompat}`); + process.exit(0); +} + const tape = require('tape'); const path = require('path'); diff --git a/test/lambda/wrap-bundled-handler.test.js b/test/lambda/wrap-bundled-handler.test.js index 6bdade3a62..c34e1953b9 100644 --- a/test/lambda/wrap-bundled-handler.test.js +++ b/test/lambda/wrap-bundled-handler.test.js @@ -6,6 +6,12 @@ 'use strict'; +const isExpressIncompat = require('../_is_express_incompat')(); +if (isExpressIncompat) { + console.log(`# SKIP dependency issue: ${isExpressIncompat}`); + process.exit(0); +} + // Test the automatic wrapping of a Lambda handler module created by // esbuild foo.ts --platform=node --bundle // as is done by a Serverless Framework project using TypeScript. diff --git a/test/lambda/wrapper.test.js b/test/lambda/wrapper.test.js index d901e83ab6..0ef32e78d7 100644 --- a/test/lambda/wrapper.test.js +++ b/test/lambda/wrapper.test.js @@ -6,6 +6,12 @@ 'use strict'; +const isExpressIncompat = require('../_is_express_incompat')(); +if (isExpressIncompat) { + console.log(`# SKIP dependency issue: ${isExpressIncompat}`); + process.exit(0); +} + const path = require('path'); const tape = require('tape'); diff --git a/test/sanitize-field-names/express.test.js b/test/sanitize-field-names/express.test.js index ae4a136ac0..7d75faf57e 100644 --- a/test/sanitize-field-names/express.test.js +++ b/test/sanitize-field-names/express.test.js @@ -5,6 +5,13 @@ */ 'use strict'; + +const isExpressIncompat = require('../_is_express_incompat')(); +if (isExpressIncompat) { + console.log(`# SKIP: ${isExpressIncompat}`); + process.exit(0); +} + const { createAgentConfig } = require('./_shared'); const agent = require('../..').start(createAgentConfig()); const { diff --git a/test/testconsts.js b/test/testconsts.js index 8209609b40..c670018011 100644 --- a/test/testconsts.js +++ b/test/testconsts.js @@ -22,6 +22,7 @@ const os = require('os'); const NODE_VER_RANGE_IITM = '^12.20.0 || ^14.13.1 || ^16.0.0 || ^18.1.0 || >=20.2.0'; const NODE_VER_RANGE_IITM_GE14 = '^14.13.1 || ^16.0.0 || ^18.1.0 || >=20.2.0'; // NODE_VER_RANGE_IITM minus node v12 +const NODE_VER_RANGE_IITM_GE18 = '^18.1.0 || >=20.2.0'; // NODE_VER_RANGE_IITM minus node v12, v14 & v16 // This can be passed as tape test options for tests that are timing sensitive, // to *skip* those tests on Windows CI. @@ -35,5 +36,6 @@ const TIMING_SENSITIVE_TEST_OPTS = { module.exports = { NODE_VER_RANGE_IITM, NODE_VER_RANGE_IITM_GE14, + NODE_VER_RANGE_IITM_GE18, TIMING_SENSITIVE_TEST_OPTS, }; From 4513fdbcc631a62598612c2f2932684bcccdfc28 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 May 2025 09:44:16 +0200 Subject: [PATCH 389/396] chore(deps): bump actions/attest-build-provenance from 2.2.3 to 2.3.0 (#4595) --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a91c425809..ff2f927300 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -44,7 +44,7 @@ jobs: - run: make -C .ci dist - name: Attest Lambda layer zip - uses: actions/attest-build-provenance@c074443f1aee8d4aeeae555aebba3282517141b2 # v2.2.3 + uses: actions/attest-build-provenance@db473fddc028af60658334401dc6fa3ffd8669fd # v2.3.0 with: subject-path: "${{ github.workspace }}/build/aws/elastic-apm-node-lambda-layer-*.zip" @@ -75,7 +75,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image - uses: actions/attest-build-provenance@c074443f1aee8d4aeeae555aebba3282517141b2 # v2.2.3 + uses: actions/attest-build-provenance@db473fddc028af60658334401dc6fa3ffd8669fd # v2.3.0 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push.outputs.digest }} @@ -109,7 +109,7 @@ jobs: AGENT_DIR=/build/dist/nodejs - name: Attest Docker image (wolfi) - uses: actions/attest-build-provenance@c074443f1aee8d4aeeae555aebba3282517141b2 # v2.2.3 + uses: actions/attest-build-provenance@db473fddc028af60658334401dc6fa3ffd8669fd # v2.3.0 with: subject-name: "${{ env.DOCKER_IMAGE_NAME }}" subject-digest: ${{ steps.docker-push-wolfi.outputs.digest }} From 9c72dd2d105cc456104551f39643a3f40c759734 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 May 2025 09:47:19 +0200 Subject: [PATCH 390/396] chore(deps-dev): bump the babel group with 2 updates (#4596) - Updates `@babel/core` from 7.26.0 to 7.27.1 - Updates `@babel/preset-env` from 7.26.0 to 7.27.1 --- package-lock.json | 2234 ++++++++++++++++++++++----------------------- 1 file changed, 1116 insertions(+), 1118 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5f845324bb..2fe388c609 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2705,44 +2705,47 @@ "dev": true }, "node_modules/@babel/code-frame": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.0.tgz", - "integrity": "sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", + "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.0.tgz", - "integrity": "sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.1.tgz", + "integrity": "sha512-Q+E+rd/yBzNQhXkG+zQnF58e4zoZfBedaxwzPmicKsiK3nt8iJYrSrDbjwFFDGC4f+rPafqRaPH6TsDoSvMf7A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", - "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.1.tgz", + "integrity": "sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.0", - "@babel/generator": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.0", - "@babel/parser": "^7.26.0", - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.1", + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helpers": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -2773,13 +2776,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.0.tgz", - "integrity": "sha512-/AIkAmInnWwgEAJGQr9vY0c66Mj6kjkE2ZPB1PurTRaRAh3U+J45sAQMjQDJdh4WbR3l0x5xkimXBKyBXXAu2w==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.1.tgz", + "integrity": "sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.0", - "@babel/types": "^7.26.0", + "@babel/parser": "^7.27.1", + "@babel/types": "^7.27.1", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -2803,38 +2807,27 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz", - "integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz", + "integrity": "sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", - "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.1.tgz", + "integrity": "sha512-2YaDd/Rd9E598B5+WIc8wJPmWETiiJXFYVE60oX8FDohv7rAUU3CQj+A1MgeEmcsk2+dQuEjIe/GDvig0SqL4g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", + "@babel/compat-data": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -2868,17 +2861,18 @@ "dev": true }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", - "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz", + "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/traverse": "^7.25.9", + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.27.1", "semver": "^6.3.1" }, "engines": { @@ -2893,18 +2887,20 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz", - "integrity": "sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", + "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "regexpu-core": "^6.1.1", + "@babel/helper-annotate-as-pure": "^7.27.1", + "regexpu-core": "^6.2.0", "semver": "^6.3.1" }, "engines": { @@ -2924,10 +2920,11 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", - "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz", + "integrity": "sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -2940,40 +2937,43 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", - "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", + "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz", + "integrity": "sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2983,35 +2983,38 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", - "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.25.9" + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", - "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-wrap-function": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3021,14 +3024,15 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", - "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3037,93 +3041,87 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz", - "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", - "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", - "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz", + "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", - "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz", + "integrity": "sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.0" + "@babel/template": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.1.tgz", - "integrity": "sha512-reoQYNiAJreZNsJzyrDNzFQ+IQ5JFiIzAHJg9bn94S3l+4++J7RsIhNMoB+lgP/9tpmiAQqspv+xfdxTSzREOw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.1.tgz", + "integrity": "sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.26.0" + "@babel/types": "^7.27.1" }, "bin": { "parser": "bin/babel-parser.js" @@ -3133,13 +3131,14 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", - "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz", + "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3149,12 +3148,13 @@ } }, "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", - "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3164,12 +3164,13 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", - "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3179,14 +3180,15 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", - "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3196,13 +3198,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", - "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz", + "integrity": "sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3224,12 +3227,13 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", - "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", + "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3239,12 +3243,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", - "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3270,12 +3275,13 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", - "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3285,14 +3291,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", - "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.27.1.tgz", + "integrity": "sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-remap-async-to-generator": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3302,14 +3309,15 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", - "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", + "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-remap-async-to-generator": "^7.25.9" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3319,12 +3327,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz", - "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3334,12 +3343,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", - "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.1.tgz", + "integrity": "sha512-QEcFlMl9nGTgh1rn2nIeU5bkfb9BAjaQcWbiP4LvKxUot52ABcTkpcyJ7f2Q2U2RuQ84BNLgts3jRme2dTx6Fw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3349,13 +3359,14 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", - "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3365,13 +3376,14 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", - "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz", + "integrity": "sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3381,16 +3393,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", - "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.1.tgz", + "integrity": "sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", - "@babel/traverse": "^7.25.9", + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.27.1", "globals": "^11.1.0" }, "engines": { @@ -3401,13 +3414,14 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", - "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", + "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/template": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3417,12 +3431,13 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", - "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.1.tgz", + "integrity": "sha512-ttDCqhfvpE9emVkXbPD8vyxxh4TWYACVybGkDj+oReOGwnp066ITEivDlLwe0b1R0+evJ13IXQuLNB5w1fhC5Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3432,13 +3447,14 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", - "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", + "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3448,12 +3464,13 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", - "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3463,13 +3480,14 @@ } }, "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", - "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3479,12 +3497,13 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", - "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3494,13 +3513,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz", - "integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", + "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3510,12 +3529,13 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", - "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3525,13 +3545,14 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", - "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3541,14 +3562,15 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", - "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3558,12 +3580,13 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", - "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", + "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3573,12 +3596,13 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", - "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3588,12 +3612,13 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", - "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", + "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3603,12 +3628,13 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", - "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3618,13 +3644,14 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", - "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3634,14 +3661,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz", - "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-simple-access": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3651,15 +3678,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", - "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", + "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3669,13 +3697,14 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", - "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3685,13 +3714,14 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", - "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3701,12 +3731,13 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", - "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3716,12 +3747,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz", - "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3731,12 +3763,13 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", - "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", + "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3746,14 +3779,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", - "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.1.tgz", + "integrity": "sha512-/sSliVc9gHE20/7D5qsdGlq7RG5NCDTWsAhyqzGuq174EtWJoGzIu1BQ7G56eDsTcy1jseBZwv50olSdXOlGuA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9" + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-parameters": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3763,13 +3797,14 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", - "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3779,12 +3814,13 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", - "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", + "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3794,13 +3830,14 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", - "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", + "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3810,12 +3847,13 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", - "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.1.tgz", + "integrity": "sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3825,13 +3863,14 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", - "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", + "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3841,14 +3880,15 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", - "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", + "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3858,12 +3898,13 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", - "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3873,13 +3914,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", - "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.1.tgz", + "integrity": "sha512-B19lbbL7PMrKr52BNPjCqg1IyNUIjTcxKj8uX9zHO+PmWN93s19NDr/f69mIkEp2x9nmDJ08a7lgHaTTzvW7mw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "regenerator-transform": "^0.15.2" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3889,13 +3930,14 @@ } }, "node_modules/@babel/plugin-transform-regexp-modifiers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", - "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", + "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3905,12 +3947,13 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", - "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3920,12 +3963,13 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", - "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3935,13 +3979,14 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", - "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", + "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3951,12 +3996,13 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", - "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3966,12 +4012,13 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", - "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3981,12 +4028,13 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", - "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -3996,12 +4044,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", - "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -4011,13 +4060,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", - "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", + "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -4027,13 +4077,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", - "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -4043,13 +4094,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", - "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", + "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -4059,79 +4111,80 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", - "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.27.1.tgz", + "integrity": "sha512-TZ5USxFpLgKDpdEt8YWBR7p6g+bZo6sHaXLqP2BY/U0acaoI8FTVflcYCr/v94twM1C5IWFdZ/hscq9WjUeLXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.1", + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.27.1", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.26.0", - "@babel/plugin-syntax-import-attributes": "^7.26.0", + "@babel/plugin-syntax-import-assertions": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.25.9", - "@babel/plugin-transform-async-generator-functions": "^7.25.9", - "@babel/plugin-transform-async-to-generator": "^7.25.9", - "@babel/plugin-transform-block-scoped-functions": "^7.25.9", - "@babel/plugin-transform-block-scoping": "^7.25.9", - "@babel/plugin-transform-class-properties": "^7.25.9", - "@babel/plugin-transform-class-static-block": "^7.26.0", - "@babel/plugin-transform-classes": "^7.25.9", - "@babel/plugin-transform-computed-properties": "^7.25.9", - "@babel/plugin-transform-destructuring": "^7.25.9", - "@babel/plugin-transform-dotall-regex": "^7.25.9", - "@babel/plugin-transform-duplicate-keys": "^7.25.9", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-dynamic-import": "^7.25.9", - "@babel/plugin-transform-exponentiation-operator": "^7.25.9", - "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-for-of": "^7.25.9", - "@babel/plugin-transform-function-name": "^7.25.9", - "@babel/plugin-transform-json-strings": "^7.25.9", - "@babel/plugin-transform-literals": "^7.25.9", - "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", - "@babel/plugin-transform-member-expression-literals": "^7.25.9", - "@babel/plugin-transform-modules-amd": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.25.9", - "@babel/plugin-transform-modules-systemjs": "^7.25.9", - "@babel/plugin-transform-modules-umd": "^7.25.9", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-new-target": "^7.25.9", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", - "@babel/plugin-transform-numeric-separator": "^7.25.9", - "@babel/plugin-transform-object-rest-spread": "^7.25.9", - "@babel/plugin-transform-object-super": "^7.25.9", - "@babel/plugin-transform-optional-catch-binding": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9", - "@babel/plugin-transform-private-methods": "^7.25.9", - "@babel/plugin-transform-private-property-in-object": "^7.25.9", - "@babel/plugin-transform-property-literals": "^7.25.9", - "@babel/plugin-transform-regenerator": "^7.25.9", - "@babel/plugin-transform-regexp-modifiers": "^7.26.0", - "@babel/plugin-transform-reserved-words": "^7.25.9", - "@babel/plugin-transform-shorthand-properties": "^7.25.9", - "@babel/plugin-transform-spread": "^7.25.9", - "@babel/plugin-transform-sticky-regex": "^7.25.9", - "@babel/plugin-transform-template-literals": "^7.25.9", - "@babel/plugin-transform-typeof-symbol": "^7.25.9", - "@babel/plugin-transform-unicode-escapes": "^7.25.9", - "@babel/plugin-transform-unicode-property-regex": "^7.25.9", - "@babel/plugin-transform-unicode-regex": "^7.25.9", - "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.27.1", + "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.27.1", + "@babel/plugin-transform-class-properties": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.27.1", + "@babel/plugin-transform-classes": "^7.27.1", + "@babel/plugin-transform-computed-properties": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.27.1", + "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-exponentiation-operator": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.27.1", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", + "@babel/plugin-transform-numeric-separator": "^7.27.1", + "@babel/plugin-transform-object-rest-spread": "^7.27.1", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1", + "@babel/plugin-transform-parameters": "^7.27.1", + "@babel/plugin-transform-private-methods": "^7.27.1", + "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.27.1", + "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-corejs3": "^0.11.0", "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.38.1", + "core-js-compat": "^3.40.0", "semver": "^6.3.1" }, "engines": { @@ -4164,43 +4217,33 @@ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.1.tgz", + "integrity": "sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", - "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.1.tgz", + "integrity": "sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/generator": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/template": "^7.25.9", - "@babel/types": "^7.25.9", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/template": "^7.27.1", + "@babel/types": "^7.27.1", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -4209,13 +4252,14 @@ } }, "node_modules/@babel/types": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", - "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz", + "integrity": "sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -7400,13 +7444,14 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", - "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", + "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2", - "core-js-compat": "^3.38.0" + "@babel/helper-define-polyfill-provider": "^0.6.3", + "core-js-compat": "^3.40.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -7714,9 +7759,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "version": "4.24.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.5.tgz", + "integrity": "sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==", "dev": true, "funding": [ { @@ -7732,11 +7777,12 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.1" + "caniuse-lite": "^1.0.30001716", + "electron-to-chromium": "^1.5.149", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" @@ -7882,9 +7928,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001673", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001673.tgz", - "integrity": "sha512-WTrjUCSMp3LYX0nE12ECkV0a+e6LC85E0Auz75555/qr78Oc8YWhEPNfDd6SHdtlCMSzqtuXY0uyEMNRcsKpKw==", + "version": "1.0.30001716", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001716.tgz", + "integrity": "sha512-49/c1+x3Kwz7ZIWt+4DvK3aMJy9oYXXG6/97JKsnjdCk/6n9vVyWL8NAwVt95Lwt9eigI10Hl782kDfZUUlRXw==", "dev": true, "funding": [ { @@ -7899,7 +7945,8 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/cassandra-driver": { "version": "4.8.0", @@ -8393,12 +8440,13 @@ "dev": true }, "node_modules/core-js-compat": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", - "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", + "version": "3.42.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.42.0.tgz", + "integrity": "sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ==", "dev": true, + "license": "MIT", "dependencies": { - "browserslist": "^4.23.3" + "browserslist": "^4.24.4" }, "funding": { "type": "opencollective", @@ -9002,10 +9050,11 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.47", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.47.tgz", - "integrity": "sha512-zS5Yer0MOYw4rtK2iq43cJagHZ8sXN0jDHDKzB+86gSBSAI4v07S97mcq+Gs2vclAxSh1j7vOAHxSVgduiiuVQ==", - "dev": true + "version": "1.5.149", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.149.tgz", + "integrity": "sha512-UyiO82eb9dVOx8YO3ajDf9jz2kKyt98DEITRdeLPstOEuTlLzDA4Gyq5K9he71TQziU5jUVu2OAu5N48HmQiyQ==", + "dev": true, + "license": "ISC" }, "node_modules/enabled": { "version": "2.0.0", @@ -13215,10 +13264,11 @@ } }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "dev": true + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" }, "node_modules/normalize-package-data": { "version": "2.5.0", @@ -14486,13 +14536,15 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regenerate-unicode-properties": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", "dev": true, + "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -14500,21 +14552,6 @@ "node": ">=4" } }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, "node_modules/regexp.prototype.flags": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", @@ -14533,15 +14570,16 @@ } }, "node_modules/regexpu-core": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz", - "integrity": "sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", "dev": true, + "license": "MIT", "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.2.0", "regjsgen": "^0.8.0", - "regjsparser": "^0.11.0", + "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" }, @@ -14553,13 +14591,15 @@ "version": "0.8.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.2.tgz", - "integrity": "sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "jsesc": "~3.0.2" }, @@ -16393,6 +16433,7 @@ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -16402,6 +16443,7 @@ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, + "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -16415,6 +16457,7 @@ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -16424,6 +16467,7 @@ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -16443,9 +16487,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "dev": true, "funding": [ { @@ -16461,9 +16505,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -19004,38 +19049,38 @@ } }, "@babel/code-frame": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.0.tgz", - "integrity": "sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.25.9", + "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "picocolors": "^1.1.1" } }, "@babel/compat-data": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.0.tgz", - "integrity": "sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.1.tgz", + "integrity": "sha512-Q+E+rd/yBzNQhXkG+zQnF58e4zoZfBedaxwzPmicKsiK3nt8iJYrSrDbjwFFDGC4f+rPafqRaPH6TsDoSvMf7A==", "dev": true }, "@babel/core": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", - "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.1.tgz", + "integrity": "sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==", "dev": true, "requires": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.0", - "@babel/generator": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.0", - "@babel/parser": "^7.26.0", - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.1", + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helpers": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -19058,13 +19103,13 @@ } }, "@babel/generator": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.0.tgz", - "integrity": "sha512-/AIkAmInnWwgEAJGQr9vY0c66Mj6kjkE2ZPB1PurTRaRAh3U+J45sAQMjQDJdh4WbR3l0x5xkimXBKyBXXAu2w==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.1.tgz", + "integrity": "sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==", "dev": true, "requires": { - "@babel/parser": "^7.26.0", - "@babel/types": "^7.26.0", + "@babel/parser": "^7.27.1", + "@babel/types": "^7.27.1", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -19084,32 +19129,22 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", - "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", - "dev": true, - "requires": { - "@babel/types": "^7.25.9" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz", - "integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz", + "integrity": "sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==", "dev": true, "requires": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/types": "^7.27.1" } }, "@babel/helper-compilation-targets": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", - "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.1.tgz", + "integrity": "sha512-2YaDd/Rd9E598B5+WIc8wJPmWETiiJXFYVE60oX8FDohv7rAUU3CQj+A1MgeEmcsk2+dQuEjIe/GDvig0SqL4g==", "dev": true, "requires": { - "@babel/compat-data": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", + "@babel/compat-data": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -19139,17 +19174,17 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", - "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz", + "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/traverse": "^7.25.9", + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.27.1", "semver": "^6.3.1" }, "dependencies": { @@ -19162,13 +19197,13 @@ } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz", - "integrity": "sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", + "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "regexpu-core": "^6.1.1", + "@babel/helper-annotate-as-pure": "^7.27.1", + "regexpu-core": "^6.2.0", "semver": "^6.3.1" }, "dependencies": { @@ -19181,9 +19216,9 @@ } }, "@babel/helper-define-polyfill-provider": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", - "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz", + "integrity": "sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.22.6", @@ -19194,188 +19229,178 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", - "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", + "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", "dev": true, "requires": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" } }, "@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", "dev": true, "requires": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" } }, "@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz", + "integrity": "sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" } }, "@babel/helper-optimise-call-expression": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", - "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", "dev": true, "requires": { - "@babel/types": "^7.25.9" + "@babel/types": "^7.27.1" } }, "@babel/helper-plugin-utils": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", - "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-wrap-function": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" } }, "@babel/helper-replace-supers": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", - "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.25.9", - "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/traverse": "^7.25.9" - } - }, - "@babel/helper-simple-access": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz", - "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", + "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", "dev": true, "requires": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.27.1" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", - "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", "dev": true, "requires": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" } }, "@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", - "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz", + "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==", "dev": true, "requires": { - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" } }, "@babel/helpers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", - "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz", + "integrity": "sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==", "dev": true, "requires": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.0" + "@babel/template": "^7.27.1", + "@babel/types": "^7.27.1" } }, "@babel/parser": { - "version": "7.26.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.1.tgz", - "integrity": "sha512-reoQYNiAJreZNsJzyrDNzFQ+IQ5JFiIzAHJg9bn94S3l+4++J7RsIhNMoB+lgP/9tpmiAQqspv+xfdxTSzREOw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.1.tgz", + "integrity": "sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ==", "dev": true, "requires": { - "@babel/types": "^7.26.0" + "@babel/types": "^7.27.1" } }, "@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", - "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz", + "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" } }, "@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", - "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", - "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", - "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" } }, "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", - "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz", + "integrity": "sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" } }, "@babel/plugin-proposal-private-property-in-object": { @@ -19385,21 +19410,21 @@ "dev": true }, "@babel/plugin-syntax-import-assertions": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", - "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", + "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-syntax-import-attributes": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", - "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-syntax-unicode-sets-regex": { @@ -19413,568 +19438,565 @@ } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", - "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-async-generator-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", - "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.27.1.tgz", + "integrity": "sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-remap-async-to-generator": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.27.1" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", - "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", + "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-remap-async-to-generator": "^7.25.9" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-remap-async-to-generator": "^7.27.1" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz", - "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", - "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.1.tgz", + "integrity": "sha512-QEcFlMl9nGTgh1rn2nIeU5bkfb9BAjaQcWbiP4LvKxUot52ABcTkpcyJ7f2Q2U2RuQ84BNLgts3jRme2dTx6Fw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-class-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", - "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-class-static-block": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", - "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz", + "integrity": "sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-classes": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", - "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.1.tgz", + "integrity": "sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", - "@babel/traverse": "^7.25.9", + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.27.1", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", - "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", + "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/template": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" } }, "@babel/plugin-transform-destructuring": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", - "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.1.tgz", + "integrity": "sha512-ttDCqhfvpE9emVkXbPD8vyxxh4TWYACVybGkDj+oReOGwnp066ITEivDlLwe0b1R0+evJ13IXQuLNB5w1fhC5Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", - "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", + "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", - "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", - "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-dynamic-import": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", - "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz", - "integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", + "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-export-namespace-from": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", - "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-for-of": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", - "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" } }, "@babel/plugin-transform-function-name": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", - "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" } }, "@babel/plugin-transform-json-strings": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", - "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", + "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", - "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-logical-assignment-operators": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", - "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", + "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", - "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", - "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz", - "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-simple-access": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", - "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", + "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.1" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", - "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", - "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-new-target": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", - "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz", - "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-numeric-separator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", - "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", + "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-object-rest-spread": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", - "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.1.tgz", + "integrity": "sha512-/sSliVc9gHE20/7D5qsdGlq7RG5NCDTWsAhyqzGuq174EtWJoGzIu1BQ7G56eDsTcy1jseBZwv50olSdXOlGuA==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9" + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-parameters": "^7.27.1" } }, "@babel/plugin-transform-object-super": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", - "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" } }, "@babel/plugin-transform-optional-catch-binding": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", - "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", + "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-optional-chaining": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", - "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", + "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" } }, "@babel/plugin-transform-parameters": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", - "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.1.tgz", + "integrity": "sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-private-methods": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", - "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", + "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-private-property-in-object": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", - "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", + "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-property-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", - "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-regenerator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", - "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.1.tgz", + "integrity": "sha512-B19lbbL7PMrKr52BNPjCqg1IyNUIjTcxKj8uX9zHO+PmWN93s19NDr/f69mIkEp2x9nmDJ08a7lgHaTTzvW7mw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "regenerator-transform": "^0.15.2" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-regexp-modifiers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", - "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", + "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", - "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", - "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-spread": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", - "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", + "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", - "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-template-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", - "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", - "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", - "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-unicode-property-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", - "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", + "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", - "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/plugin-transform-unicode-sets-regex": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", - "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", + "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" } }, "@babel/preset-env": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", - "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.27.1.tgz", + "integrity": "sha512-TZ5USxFpLgKDpdEt8YWBR7p6g+bZo6sHaXLqP2BY/U0acaoI8FTVflcYCr/v94twM1C5IWFdZ/hscq9WjUeLXA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.27.1", + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.27.1", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.26.0", - "@babel/plugin-syntax-import-attributes": "^7.26.0", + "@babel/plugin-syntax-import-assertions": "^7.27.1", + "@babel/plugin-syntax-import-attributes": "^7.27.1", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.25.9", - "@babel/plugin-transform-async-generator-functions": "^7.25.9", - "@babel/plugin-transform-async-to-generator": "^7.25.9", - "@babel/plugin-transform-block-scoped-functions": "^7.25.9", - "@babel/plugin-transform-block-scoping": "^7.25.9", - "@babel/plugin-transform-class-properties": "^7.25.9", - "@babel/plugin-transform-class-static-block": "^7.26.0", - "@babel/plugin-transform-classes": "^7.25.9", - "@babel/plugin-transform-computed-properties": "^7.25.9", - "@babel/plugin-transform-destructuring": "^7.25.9", - "@babel/plugin-transform-dotall-regex": "^7.25.9", - "@babel/plugin-transform-duplicate-keys": "^7.25.9", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-dynamic-import": "^7.25.9", - "@babel/plugin-transform-exponentiation-operator": "^7.25.9", - "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-for-of": "^7.25.9", - "@babel/plugin-transform-function-name": "^7.25.9", - "@babel/plugin-transform-json-strings": "^7.25.9", - "@babel/plugin-transform-literals": "^7.25.9", - "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", - "@babel/plugin-transform-member-expression-literals": "^7.25.9", - "@babel/plugin-transform-modules-amd": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.25.9", - "@babel/plugin-transform-modules-systemjs": "^7.25.9", - "@babel/plugin-transform-modules-umd": "^7.25.9", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-new-target": "^7.25.9", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", - "@babel/plugin-transform-numeric-separator": "^7.25.9", - "@babel/plugin-transform-object-rest-spread": "^7.25.9", - "@babel/plugin-transform-object-super": "^7.25.9", - "@babel/plugin-transform-optional-catch-binding": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9", - "@babel/plugin-transform-private-methods": "^7.25.9", - "@babel/plugin-transform-private-property-in-object": "^7.25.9", - "@babel/plugin-transform-property-literals": "^7.25.9", - "@babel/plugin-transform-regenerator": "^7.25.9", - "@babel/plugin-transform-regexp-modifiers": "^7.26.0", - "@babel/plugin-transform-reserved-words": "^7.25.9", - "@babel/plugin-transform-shorthand-properties": "^7.25.9", - "@babel/plugin-transform-spread": "^7.25.9", - "@babel/plugin-transform-sticky-regex": "^7.25.9", - "@babel/plugin-transform-template-literals": "^7.25.9", - "@babel/plugin-transform-typeof-symbol": "^7.25.9", - "@babel/plugin-transform-unicode-escapes": "^7.25.9", - "@babel/plugin-transform-unicode-property-regex": "^7.25.9", - "@babel/plugin-transform-unicode-regex": "^7.25.9", - "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.27.1", + "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.27.1", + "@babel/plugin-transform-class-properties": "^7.27.1", + "@babel/plugin-transform-class-static-block": "^7.27.1", + "@babel/plugin-transform-classes": "^7.27.1", + "@babel/plugin-transform-computed-properties": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.27.1", + "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-exponentiation-operator": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.27.1", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", + "@babel/plugin-transform-numeric-separator": "^7.27.1", + "@babel/plugin-transform-object-rest-spread": "^7.27.1", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1", + "@babel/plugin-transform-parameters": "^7.27.1", + "@babel/plugin-transform-private-methods": "^7.27.1", + "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.27.1", + "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-corejs3": "^0.11.0", "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.38.1", + "core-js-compat": "^3.40.0", "semver": "^6.3.1" }, "dependencies": { @@ -19997,49 +20019,40 @@ "esutils": "^2.0.2" } }, - "@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.14.0" - } - }, "@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.1.tgz", + "integrity": "sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg==", "dev": true, "requires": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/types": "^7.27.1" } }, "@babel/traverse": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", - "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.1.tgz", + "integrity": "sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==", "dev": true, "requires": { - "@babel/code-frame": "^7.25.9", - "@babel/generator": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/template": "^7.25.9", - "@babel/types": "^7.25.9", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.1", + "@babel/parser": "^7.27.1", + "@babel/template": "^7.27.1", + "@babel/types": "^7.27.1", "debug": "^4.3.1", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", - "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz", + "integrity": "sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" } }, "@colors/colors": { @@ -22718,13 +22731,13 @@ } }, "babel-plugin-polyfill-corejs3": { - "version": "0.10.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", - "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", + "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.6.2", - "core-js-compat": "^3.38.0" + "@babel/helper-define-polyfill-provider": "^0.6.3", + "core-js-compat": "^3.40.0" } }, "babel-plugin-polyfill-regenerator": { @@ -22951,15 +22964,15 @@ } }, "browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "version": "4.24.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.5.tgz", + "integrity": "sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.1" + "caniuse-lite": "^1.0.30001716", + "electron-to-chromium": "^1.5.149", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" } }, "bson": { @@ -23065,9 +23078,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001673", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001673.tgz", - "integrity": "sha512-WTrjUCSMp3LYX0nE12ECkV0a+e6LC85E0Auz75555/qr78Oc8YWhEPNfDd6SHdtlCMSzqtuXY0uyEMNRcsKpKw==", + "version": "1.0.30001716", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001716.tgz", + "integrity": "sha512-49/c1+x3Kwz7ZIWt+4DvK3aMJy9oYXXG6/97JKsnjdCk/6n9vVyWL8NAwVt95Lwt9eigI10Hl782kDfZUUlRXw==", "dev": true }, "cassandra-driver": { @@ -23460,12 +23473,12 @@ "dev": true }, "core-js-compat": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", - "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", + "version": "3.42.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.42.0.tgz", + "integrity": "sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ==", "dev": true, "requires": { - "browserslist": "^4.23.3" + "browserslist": "^4.24.4" } }, "core-util-is": { @@ -23915,9 +23928,9 @@ } }, "electron-to-chromium": { - "version": "1.5.47", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.47.tgz", - "integrity": "sha512-zS5Yer0MOYw4rtK2iq43cJagHZ8sXN0jDHDKzB+86gSBSAI4v07S97mcq+Gs2vclAxSh1j7vOAHxSVgduiiuVQ==", + "version": "1.5.149", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.149.tgz", + "integrity": "sha512-UyiO82eb9dVOx8YO3ajDf9jz2kKyt98DEITRdeLPstOEuTlLzDA4Gyq5K9he71TQziU5jUVu2OAu5N48HmQiyQ==", "dev": true }, "enabled": { @@ -27063,9 +27076,9 @@ } }, "node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true }, "normalize-package-data": { @@ -28030,21 +28043,6 @@ "regenerate": "^1.4.2" } }, - "regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true - }, - "regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, "regexp.prototype.flags": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", @@ -28057,15 +28055,15 @@ } }, "regexpu-core": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz", - "integrity": "sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", "dev": true, "requires": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.2.0", "regjsgen": "^0.8.0", - "regjsparser": "^0.11.0", + "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" } @@ -28077,9 +28075,9 @@ "dev": true }, "regjsparser": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.2.tgz", - "integrity": "sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "dev": true, "requires": { "jsesc": "~3.0.2" @@ -29537,13 +29535,13 @@ "dev": true }, "update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "dev": true, "requires": { "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "picocolors": "^1.1.1" } }, "uri-js": { From 24aea49b41b0c2cde662706837ab1379c1d27a8d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 May 2025 09:48:14 +0200 Subject: [PATCH 391/396] chore(deps): bump module-details-from-path from 1.0.3 to 1.0.4 (#4599) --- package-lock.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2fe388c609..cee0e076a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12912,9 +12912,10 @@ "dev": true }, "node_modules/module-details-from-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", - "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz", + "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==", + "license": "MIT" }, "node_modules/mongodb": { "version": "6.16.0", @@ -26799,9 +26800,9 @@ } }, "module-details-from-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", - "integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz", + "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==" }, "mongodb": { "version": "6.16.0", From cd8ca0478c091ba6c848e7f86866f6b244b35956 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 May 2025 09:54:15 +0200 Subject: [PATCH 392/396] chore(deps-dev): bump the eslint group with 2 updates (#4597) - Updates `eslint` from 9.25.1 to 9.26.0 - Updates `eslint-plugin-prettier` from 5.2.6 to 5.3.1 --- package-lock.json | 310 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 288 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index cee0e076a4..57a8a610a8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4500,9 +4500,9 @@ "license": "MIT" }, "node_modules/@eslint/js": { - "version": "9.25.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.1.tgz", - "integrity": "sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==", + "version": "9.26.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.26.0.tgz", + "integrity": "sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ==", "dev": true, "license": "MIT", "engines": { @@ -5379,6 +5379,94 @@ "node": ">= 0.4" } }, + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.0.tgz", + "integrity": "sha512-k/1pb70eD638anoi0e8wUGAlbMJXyvdV4p62Ko+EZ7eBe1xMx8Uhak1R5DgfoofsK5IBBnRwsYGTaLZl+6/+RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.3", + "eventsource": "^3.0.2", + "express": "^5.0.1", + "express-rate-limit": "^7.5.0", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.23.8", + "zod-to-json-schema": "^3.24.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@modelcontextprotocol/sdk/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@modelcontextprotocol/sdk/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@modelcontextprotocol/sdk/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@modelcontextprotocol/sdk/node_modules/raw-body": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@modelcontextprotocol/sdk/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/@mongodb-js/saslprep": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz", @@ -9291,9 +9379,9 @@ } }, "node_modules/eslint": { - "version": "9.25.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.1.tgz", - "integrity": "sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==", + "version": "9.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.26.0.tgz", + "integrity": "sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9303,11 +9391,12 @@ "@eslint/config-helpers": "^0.2.1", "@eslint/core": "^0.13.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.25.1", + "@eslint/js": "9.26.0", "@eslint/plugin-kit": "^0.2.8", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", + "@modelcontextprotocol/sdk": "^1.8.0", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", @@ -9331,7 +9420,8 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3" + "optionator": "^0.9.3", + "zod": "^3.24.2" }, "bin": { "eslint": "bin/eslint.js" @@ -9582,9 +9672,9 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.2.6", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.6.tgz", - "integrity": "sha512-mUcf7QG2Tjk7H055Jk0lGBjbgDnfrvqjhXh9t2xLMSCjZVcw9Rb1V6sVNXO0th3jgeO7zllWPTNRil3JW94TnQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.3.1.tgz", + "integrity": "sha512-vad9VWgEm9xaVXRNmb4aeOt0PWDc61IAdzghkbYQ2wavgax148iKoX1rNJcgkBGCipzLzOnHYVgL7xudM9yccQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9851,6 +9941,29 @@ "node": ">=0.4.x" } }, + "node_modules/eventsource": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.6.tgz", + "integrity": "sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eventsource-parser": "^3.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/eventsource-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.1.tgz", + "integrity": "sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/ewma": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ewma/-/ewma-2.0.1.tgz", @@ -9943,6 +10056,22 @@ "node": ">=6" } }, + "node_modules/express-rate-limit": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.0.tgz", + "integrity": "sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": "^4.11 || 5 || ^5.0.0-beta.1" + } + }, "node_modules/express/node_modules/accepts": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", @@ -13971,6 +14100,16 @@ "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==" }, + "node_modules/pkce-challenge": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz", + "integrity": "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.20.0" + } + }, "node_modules/pkg-up": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", @@ -16922,6 +17061,26 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zod": { + "version": "3.24.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.4.tgz", + "integrity": "sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.24.5", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz", + "integrity": "sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==", + "dev": true, + "license": "ISC", + "peerDependencies": { + "zod": "^3.24.1" + } } }, "dependencies": { @@ -20222,9 +20381,9 @@ } }, "@eslint/js": { - "version": "9.25.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.1.tgz", - "integrity": "sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==", + "version": "9.26.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.26.0.tgz", + "integrity": "sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ==", "dev": true }, "@eslint/object-schema": { @@ -21046,6 +21205,72 @@ "call-bind": "^1.0.7" } }, + "@modelcontextprotocol/sdk": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.0.tgz", + "integrity": "sha512-k/1pb70eD638anoi0e8wUGAlbMJXyvdV4p62Ko+EZ7eBe1xMx8Uhak1R5DgfoofsK5IBBnRwsYGTaLZl+6/+RQ==", + "dev": true, + "requires": { + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.3", + "eventsource": "^3.0.2", + "express": "^5.0.1", + "express-rate-limit": "^7.5.0", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.23.8", + "zod-to-json-schema": "^3.24.1" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "raw-body": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, "@mongodb-js/saslprep": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz", @@ -24126,9 +24351,9 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "eslint": { - "version": "9.25.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.1.tgz", - "integrity": "sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==", + "version": "9.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.26.0.tgz", + "integrity": "sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", @@ -24137,11 +24362,12 @@ "@eslint/config-helpers": "^0.2.1", "@eslint/core": "^0.13.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.25.1", + "@eslint/js": "9.26.0", "@eslint/plugin-kit": "^0.2.8", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", + "@modelcontextprotocol/sdk": "^1.8.0", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", @@ -24165,7 +24391,8 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3" + "optionator": "^0.9.3", + "zod": "^3.24.2" }, "dependencies": { "ajv": { @@ -24407,9 +24634,9 @@ } }, "eslint-plugin-prettier": { - "version": "5.2.6", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.6.tgz", - "integrity": "sha512-mUcf7QG2Tjk7H055Jk0lGBjbgDnfrvqjhXh9t2xLMSCjZVcw9Rb1V6sVNXO0th3jgeO7zllWPTNRil3JW94TnQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.3.1.tgz", + "integrity": "sha512-vad9VWgEm9xaVXRNmb4aeOt0PWDc61IAdzghkbYQ2wavgax148iKoX1rNJcgkBGCipzLzOnHYVgL7xudM9yccQ==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0", @@ -24505,6 +24732,21 @@ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", "dev": true }, + "eventsource": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.6.tgz", + "integrity": "sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==", + "dev": true, + "requires": { + "eventsource-parser": "^3.0.1" + } + }, + "eventsource-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.1.tgz", + "integrity": "sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==", + "dev": true + }, "ewma": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ewma/-/ewma-2.0.1.tgz", @@ -24769,6 +25011,12 @@ "mini-queue": "0.0.14" } }, + "express-rate-limit": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.0.tgz", + "integrity": "sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==", + "dev": true + }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -27592,6 +27840,12 @@ "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==" }, + "pkce-challenge": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz", + "integrity": "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==", + "dev": true + }, "pkg-up": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", @@ -29861,6 +30115,18 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true + }, + "zod": { + "version": "3.24.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.4.tgz", + "integrity": "sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==", + "dev": true + }, + "zod-to-json-schema": { + "version": "3.24.5", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz", + "integrity": "sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==", + "dev": true } } } From db106a611692f3abdb4a4867371865639c675e4a Mon Sep 17 00:00:00 2001 From: "elastic-observability-automation[bot]" <180520183+elastic-observability-automation[bot]@users.noreply.github.com> Date: Tue, 6 May 2025 10:04:14 +0200 Subject: [PATCH 393/396] chore: deps(updatecli): Bump updatecli version to v0.99.0 (#4601) --- .tool-versions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tool-versions b/.tool-versions index e337dddcab..0b4ee7806c 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -updatecli v0.98.0 \ No newline at end of file +updatecli v0.99.0 \ No newline at end of file From 7b8cc5d1f1e5b30c02c1961fec9d63ac50458c71 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 May 2025 10:05:09 +0200 Subject: [PATCH 394/396] chore(deps-dev): bump pg from 8.14.1 to 8.15.6 (#4591) --- package-lock.json | 80 ++++++++++++++++++++++++----------------------- 1 file changed, 41 insertions(+), 39 deletions(-) diff --git a/package-lock.json b/package-lock.json index 57a8a610a8..8c33c0d300 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13822,15 +13822,15 @@ } }, "node_modules/pg": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.14.1.tgz", - "integrity": "sha512-0TdbqfjwIun9Fm/r89oB7RFQ0bLgduAhiIqIXOsyKoiC/L54DbuAAzIEN/9Op0f1Po9X7iCPXGoa/Ah+2aI8Xw==", + "version": "8.15.6", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.15.6.tgz", + "integrity": "sha512-yvao7YI3GdmmrslNVsZgx9PfntfWrnXwtR+K/DjI0I/sTKif4Z623um+sjVZ1hk5670B+ODjvHDAckKdjmPTsg==", "dev": true, "license": "MIT", "dependencies": { - "pg-connection-string": "^2.7.0", - "pg-pool": "^3.8.0", - "pg-protocol": "^1.8.0", + "pg-connection-string": "^2.8.5", + "pg-pool": "^3.9.6", + "pg-protocol": "^1.9.5", "pg-types": "^2.1.0", "pgpass": "1.x" }, @@ -13838,7 +13838,7 @@ "node": ">= 8.0.0" }, "optionalDependencies": { - "pg-cloudflare": "^1.1.1" + "pg-cloudflare": "^1.2.5" }, "peerDependencies": { "pg-native": ">=3.0.1" @@ -13850,10 +13850,11 @@ } }, "node_modules/pg-cloudflare": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", - "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.5.tgz", + "integrity": "sha512-OOX22Vt0vOSRrdoUPKJ8Wi2OpE/o/h9T8X1s4qSkCedbNah9ei2W2765be8iMVxQUsvgT7zIAT2eIa9fs5+vtg==", "dev": true, + "license": "MIT", "optional": true }, "node_modules/pg-connection-string": { @@ -13872,9 +13873,9 @@ } }, "node_modules/pg-pool": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.8.0.tgz", - "integrity": "sha512-VBw3jiVm6ZOdLBTIcXLNdSotb6Iy3uOCwDGFAksZCXmi10nyRvnP2v3jl4d+IsLYRyXf6o9hIm/ZtUzlByNUdw==", + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.9.6.tgz", + "integrity": "sha512-rFen0G7adh1YmgvrmE5IPIqbb+IgEzENUm+tzm6MLLDSlPRoZVhzU1WdML9PV2W5GOdRA9qBKURlbt1OsXOsPw==", "dev": true, "license": "MIT", "peerDependencies": { @@ -13882,9 +13883,9 @@ } }, "node_modules/pg-protocol": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.8.0.tgz", - "integrity": "sha512-jvuYlEkL03NRvOoyoRktBK7+qU5kOvlAwvmrH8sr3wbLrOdVWsRxQfz8mMy9sZFsqJ1hEWNfdWKI4SAmoL+j7g==", + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.9.5.tgz", + "integrity": "sha512-DYTWtWpfd5FOro3UnAfwvhD8jh59r2ig8bPtc9H8Ds7MscE/9NYruUQWFAOuraRl29jwcT2kyMFQ3MxeaVjUhg==", "dev": true, "license": "MIT" }, @@ -13905,10 +13906,11 @@ } }, "node_modules/pg/node_modules/pg-connection-string": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.7.0.tgz", - "integrity": "sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==", - "dev": true + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.8.5.tgz", + "integrity": "sha512-Ni8FuZ8yAF+sWZzojvtLE2b03cqjO5jNULcHFfM9ZZ0/JXrgom5pBREbtnAw7oxsxJqHw9Nz/XWORUEL3/IFow==", + "dev": true, + "license": "MIT" }, "node_modules/pgpass": { "version": "1.0.5", @@ -27646,31 +27648,31 @@ "dev": true }, "pg": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.14.1.tgz", - "integrity": "sha512-0TdbqfjwIun9Fm/r89oB7RFQ0bLgduAhiIqIXOsyKoiC/L54DbuAAzIEN/9Op0f1Po9X7iCPXGoa/Ah+2aI8Xw==", + "version": "8.15.6", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.15.6.tgz", + "integrity": "sha512-yvao7YI3GdmmrslNVsZgx9PfntfWrnXwtR+K/DjI0I/sTKif4Z623um+sjVZ1hk5670B+ODjvHDAckKdjmPTsg==", "dev": true, "requires": { - "pg-cloudflare": "^1.1.1", - "pg-connection-string": "^2.7.0", - "pg-pool": "^3.8.0", - "pg-protocol": "^1.8.0", + "pg-cloudflare": "^1.2.5", + "pg-connection-string": "^2.8.5", + "pg-pool": "^3.9.6", + "pg-protocol": "^1.9.5", "pg-types": "^2.1.0", "pgpass": "1.x" }, "dependencies": { "pg-connection-string": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.7.0.tgz", - "integrity": "sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==", + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.8.5.tgz", + "integrity": "sha512-Ni8FuZ8yAF+sWZzojvtLE2b03cqjO5jNULcHFfM9ZZ0/JXrgom5pBREbtnAw7oxsxJqHw9Nz/XWORUEL3/IFow==", "dev": true } } }, "pg-cloudflare": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", - "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.5.tgz", + "integrity": "sha512-OOX22Vt0vOSRrdoUPKJ8Wi2OpE/o/h9T8X1s4qSkCedbNah9ei2W2765be8iMVxQUsvgT7zIAT2eIa9fs5+vtg==", "dev": true, "optional": true }, @@ -27687,15 +27689,15 @@ "dev": true }, "pg-pool": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.8.0.tgz", - "integrity": "sha512-VBw3jiVm6ZOdLBTIcXLNdSotb6Iy3uOCwDGFAksZCXmi10nyRvnP2v3jl4d+IsLYRyXf6o9hIm/ZtUzlByNUdw==", + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.9.6.tgz", + "integrity": "sha512-rFen0G7adh1YmgvrmE5IPIqbb+IgEzENUm+tzm6MLLDSlPRoZVhzU1WdML9PV2W5GOdRA9qBKURlbt1OsXOsPw==", "dev": true }, "pg-protocol": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.8.0.tgz", - "integrity": "sha512-jvuYlEkL03NRvOoyoRktBK7+qU5kOvlAwvmrH8sr3wbLrOdVWsRxQfz8mMy9sZFsqJ1hEWNfdWKI4SAmoL+j7g==", + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.9.5.tgz", + "integrity": "sha512-DYTWtWpfd5FOro3UnAfwvhD8jh59r2ig8bPtc9H8Ds7MscE/9NYruUQWFAOuraRl29jwcT2kyMFQ3MxeaVjUhg==", "dev": true }, "pg-types": { From 848e4601d74e0200ed5359776f6935619004d659 Mon Sep 17 00:00:00 2001 From: Trent Mick Date: Tue, 6 May 2025 08:22:42 -0700 Subject: [PATCH 395/396] release 4.13.0 (#4602) --- docs/release-notes/index.md | 8 +++----- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/docs/release-notes/index.md b/docs/release-notes/index.md index 87a4c61df1..fb12413954 100644 --- a/docs/release-notes/index.md +++ b/docs/release-notes/index.md @@ -20,15 +20,13 @@ To check for security updates, go to [Security announcements for the Elastic sta % ### Fixes [next-fixes] -## Next [next] -**Release date:** Month day, year +## 4.13.0 [4-13-0] +**Release date:** May 6, 2025 -### Features and enhancements [next-features-enhancements] +### Features and enhancements [4-13-0-features-enhancements] * Add support for `express` v5. ([#4581](https://github.com/elastic/apm-agent-nodejs/pull/4581)) -### Fixes [next-fixes] - ## 4.12.0 [4-12-0] **Release date:** April 24, 2025 diff --git a/package-lock.json b/package-lock.json index 8c33c0d300..c912db48fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "elastic-apm-node", - "version": "4.12.0", + "version": "4.13.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "elastic-apm-node", - "version": "4.12.0", + "version": "4.13.0", "license": "BSD-2-Clause", "dependencies": { "@elastic/ecs-pino-format": "^1.5.0", diff --git a/package.json b/package.json index 8be21b8d5c..d4b015eb2d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "elastic-apm-node", - "version": "4.12.0", + "version": "4.13.0", "description": "The official Elastic APM agent for Node.js", "type": "commonjs", "main": "index.js", From fd0dc907143b9c5b3d15a99b6e2541d990dd9c5b Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Wed, 7 May 2025 10:47:47 +0200 Subject: [PATCH 396/396] github-action: add supported GitHub commands (#4603) --- .github/workflows/github-commands-comment.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .github/workflows/github-commands-comment.yml diff --git a/.github/workflows/github-commands-comment.yml b/.github/workflows/github-commands-comment.yml new file mode 100644 index 0000000000..8b5f48d34d --- /dev/null +++ b/.github/workflows/github-commands-comment.yml @@ -0,0 +1,18 @@ +--- +name: github-commands-comment + +on: + pull_request_target: + types: + - opened + +permissions: + contents: read + +jobs: + comment: + runs-on: ubuntu-latest + permissions: + pull-requests: write + steps: + - uses: elastic/oblt-actions/elastic/github-commands@v1

CC{*pdz?Yy+=lm+sv^n4HX#_z(M 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 e`Jrv--XX{tECd-Zx$u%j*#84c>`Wm5 literal 0 HcmV?d00001 diff --git a/docs/images/dynamic-config.svg b/docs/reference/images/dynamic-config.svg similarity index 100% rename from docs/images/dynamic-config.svg rename to docs/reference/images/dynamic-config.svg diff --git a/docs/images/nextjs-my-app-screenshot.png b/docs/reference/images/nextjs-my-app-screenshot.png similarity index 100% rename from docs/images/nextjs-my-app-screenshot.png rename to docs/reference/images/nextjs-my-app-screenshot.png diff --git a/docs/images/node_release_schedule.svg b/docs/reference/images/node_release_schedule.svg similarity index 100% rename from docs/images/node_release_schedule.svg rename to docs/reference/images/node_release_schedule.svg diff --git a/docs/reference/images/nodejs-lambda-env-vars.png b/docs/reference/images/nodejs-lambda-env-vars.png new file mode 100644 index 0000000000000000000000000000000000000000..79476738ddbfd4bfc8f3f0cd9e7914fe2aaa5eda GIT binary patch literal 151095 zcmeFZWmH_v(kP5OA;Bd`5;RzFmjn{r-F1+l!Ceyw9^40lySo$Ioxz47xVzij$xF|us6a!3)ws9( zJb;74fLMx&DN2cnQ7JmunORx`;NT=f;uBF7Rdxvd###$Me@^godS@5lgdkZCkDn7* z@R?eao{buwfb4Y`V*{b8cty!}(boU~gRvOX9AVEgk?AusJ z{gs#F;f=!0)+5Ij!uSuqmrC442;W}Cg=PmlB%y~$$xdQ+_)`@4Kijr%z>T&uHRUyA z{|SRhxG6LMMWg>gA26`?+bj6k7VCOp*z?gS>OU7c(bIsV$IA zES%u$Cn$Y>)LEjEJh@5BV3LAtoJcP%oayV}SMsQt3q~$x!aU?*ViDbQ^8I*dY%JY# zVX2)zjlws+6!P(%Nw_~X!5lU~5;ZX#mVQtfK5y?U8~Z;6D5N=%HZ2GJdw_u zfQDo|rh(8Wsplt&i#_g2r?)ph4BH1<-kvTyQv2>|bR-+ONv{iY3Ep3U6L8MDo-eMg|j28(J&-evd z4i(B1B!9Ti9f_wz(h{jB8LZmWggNGt$!&8HYaH|M$_`ZX0@DK#JGLLlq14Nk;b0l@ zwcQ*WHEh2v^ki8Vhe<*YycG)!xLl)2Gd5JwT%46t23sJn?@|z@_ftQF!45d)aa5BE zI5K-UqGLEpw9krP{fH$$H+Fo%>hFAQ04HOJj4#Gu?Z>Q$-fW2T+^@?XD`f>gEl|cD z+xCZ^8Hn86DJX~ zXxO;31+sPo#XGVI$8D~2mW3~E?}9)1sdQVeV144|B^;$B@|XFM`?I?N(15GUS4OH4 zY}Hx2X1ms8AK0Ma_7WIrzG`z!asAYb2^cok!`fBeqp^y!LUuxQTz>+-esRx(5RoZU zLEC^g_ZjIOzY+ZRBt`i-2@5J+>Lr?U+-1BFaqKLWlUs^_&NC9)uaD%C72x9A^pG1$w*hYIuQ4WNfB32>teN7W5jM0c08bBQ|@2~Io zUVny6fUJV-`UMRc_~Yf53k**JZG2n$^Vi{ustlX>3es3Ku~h-eZws?^a|FM)sHm!P zDm$s9<YU)IMSOgJkx#2~R(s6D93LqeD}Nt6t$D3r;VwdLeSxSJ z)tQ)|f?qcsH{FCk%1KF&5lj#6Y4UU`-+QvRvxmGFa$dKS4kDWdjbBZSO+!k2Klpa| z*{%Sn-ppCs&#us@r0)z3o2kEHeG`o3j4g(BhUH4;LL5n)Ox8nM%2~wY@llq|j3l4L zj@y=lf}QP6vQbrc&g^=0VF1GrXO~m4W%CXyhhw!{^^BRE*~4baru7-Znf4hSAt$C? zm~Pm|Fo6VdnFK(>#*?8`^@8|nwIH?l8EmWRg&u9g)~+VU*G5H)sz0Z93$JVnxZAjI zxNEt=b)lkfPtql}7k`p*>)@m*-A^T|uRR@;~LUkI|IJE|r5M$_U=b-g+#3emjj3~Os<)MnH`Pgk#-#hC@MjJAxSY*Fv1nz%%AR(lq} z6Ofv*=uod>o3W&~lzZ5>-Vp+R06rfB1NHP}%kj%8Tbo+2 zTltn}mdCuqz1@WGyl%aiy*a#bZrU!Z&+zWJuDy?4uMBn}q<)xaPw3IN(Nr^!IIOsggRT58q$;`0*BAs?giB*wyoi64Y} zSCS&Hd-Ee?Mb$A#WxjAxCAi^nsdPz0 zkaF2<84eO_(0e3vCd(+Zr*I_;i4*?zGhGSDMt@ACim_}OWO_Jw|BWEJRzxO&JVP%- zY*cE1?}aL!89M7QD5KrpC%<1?m1%d-c?=vQK>Y;oD3&UQFUE`kku0ukOKaUb5tM!u zZx9dt^mZv=4O5K>gGk@NwANxIt1TciAcJs?$dRa?nN7FKSn5g{lG~j4Vn{i$mYGLi zzow=BO~Y{q#$ad(L3>G!j#k}il-fzLcIbI1Mwmw%=3`l%W}&98mv3#~t{!BqoyZGP z+52gvjte5~Mx!BfAU!10Ub0cvdK>tFLm<*Wn_If4c~s@Ig|dqBGsu&ym4|{}g_)6l zZ=TacWzB4JGiJosI=OyBx>4n(tTe9FU8ni=55|=GWb4I>0~x@F4e;ysqT7R}MUXYL zBCvjKRz4%$x%u2B{_yrbd!-MxInb3yJyk97=*8gx8 zV;Q0nD$8`k?DX?#p@ufX(vf0v-Z-!A&7XcJ2UKX{Zw-hHO;(Edb;B@Aq<8}q22~EtdPE6WQUami?1mzdW7iZ}E207$y zhwoc=&i_8$lXfTsOg^o|RV= zOA2j}3%{#OsL^E?Pt+-8gdmI8J2&N1)eXxV4zT%5yY{0tWMk5~Ng(s?_H27A%CkYJ z+$Z+_GPiyk`QW{K##;lqb}?w7f2Mybt9kprH;o4uyXHO4jIXt?&B^T+#M`G`IPT5# z-G}=Rmo5harLK2S``c_AUWe=XyR@rUl+wZoRicweQfI#B2_J%7r~I}D*@B0 za?eU*N`#ut$gzv;tf&W*;RJ+@^&5$>n=i*aBpEl*=`{#fxcUl`F9?csPD-V(G@5q{ z+wmpr2H<2w&WjW^zv^l_+jN=)vPb6{?^3FO6aAgoFbK&odbZ1o8=A5 zo0q~ER8&-g4yI=O%HkjX0S>zpdTHV0WY5pa>gwvs;>y8d=U~pt#>dCU`i7mAot+uh zg4xmC*2&0?+1ByZ-#htdKjHvK69-FsCrdk9s$cyY8QVEK3B7#zYoLF9{*EWW&GO$P z**gAXTCfSS{(8d7#`1>scVJGIX8#+oUr+uH_P2TceK^5io$)JLx&f>;#Vu`Mq=um; z%+AiqE%>)_{^QZVG5tHJnj^qL%+3Y|=_LGbX8i;BuMhtx;NQm7`uCXJyu5!M@-I*R z0{LqW{K^1FJ8S1(G*q*-bP{G4Wc^+B|Af-|H<&ORC+9za{#yG#AvAvr@z>h_38CO% z38RD2FVuwD{xQN|>;BPRko6bu{~`;27qq|C!X!-?Ly+}fQY(y+xBCsYTtwld#NVpA z!S91n)9^QLI!?AcL_CfpB|VB(A@*X+;G#(?CO?+sk!~?Ov`06J=xW)jiY|}Q1GmUtsqEL0^i{BAA0GjY$`9@je*D?e5dW|# z!ZQX@Ls@YObr+03oUUI7@#r5mh4cT4PxXfOB@Uy&mp{Q9HZ@U0tgSz6>L)6W@st=Z zIygT4-5;>&R}-o?L5@@<$g~QnEVo%yim7m0Qa1duVdC(kHL$KKqj;0q1Y=490lvNY1;E zKjWr&GMqn~l1sGPF=c2V&DpvyN=C9aQUKc0RY&&eQ29_ggXhH| z1JC^psktsHA+!F=sD~>phS#qXc=320PjlAR3tsiPZyF)NBe|eikB!7H9(jmXRo810 zyb8jJA7T}vr1}KciF~Ctg2jR8?%7^_khSP@fZu1g~r3dDdBu zP3r7nk)ILvoac5l9l%o`XudF`q02-(yZa?aABAfq|;N2-u;9}>=>>U6mIwSr*8avNb4q2kA?HVm`bi!mvYF_ z+!z;8-~`q2MqJ_P!7!y@GryamZ?e-5Bn3T_56f=az~P9d#jFkdv!70C{bq(ejO!zQqnBllzNo1mFAq1&yx0mHuZ?# zMKRnKl;$onSTtjmD{)o!vnJUZ^S7EA9;SyIB=h7m7+6~@Y=1N;mo3KDvJB;Df^e~Pf4hc_x?c3D?{{>A#GMhjWXMs50-^IYogg?A3FjTdOCEDytbJpYGvs745!;h zc@anGj?czupLSfipB>&&4k2%)YwbyI4L>MtvK}vcO(5TcOJ^4PSyD80b#W{5n*EE5P9gh8a*fM7xvyCoyp> zbfEQd7`d{9#ANuM0=0#XI%fn8z0)7ciwt*@n$lF}ShFG&tp7ESy_zh zCvQf)>Pwj4d???#hmdiuFs8{=?ES5~BzxhH)?~k-svidDLE<_Z+cagzQ6tnytIiAX zdH-3nzvu%px9tK`hS%knYQIN61;g;J${|#H`d#R zQc_Ybz+TXS!0NFWBKKJ>55yV4lT(bypABC8nVQn^Mz%8VS-g-(M$urXt7*fhgD)sY zIpi+MJ0A+`=SWPHFNL%)+PyoI8Qqfx?4R|#Wy4Tvx<_@qH*k?PR%Q=G>7|ZJqkiwW zTnc1mkc+vE`qWGE^@)Fc@hlQj&oem)8Vz@QhU*)#TCKBV}XD0))gbE7u?VoYS znt=-nWm6yZVi8TA@PKKt*|qq8Da?gj07UpF$VNx*PQm*cZTqUH)#K{iE1!uCBvcG4 zsU2m6CM3kgd2G(?r1QIcb2(VJHODSKVM!MlcyNVIHI>Q8OI4Nat)^T*(3QA+i}>9R z@~ftQ0Z#b9a+R9!?fRJ?;?j39Pd?}phisx0_`Ti!LT+ZJ;%wOvyNK6iRq;nJkSr%U zdIYA^_@PZr14wTz^kcH3ni>rO0fC%6hr!V6q;*{0yJ40029FNVz$h&q-ThnGtL)~g zwSGSP!ozO(CTAyxalkoJ}vm#OL=&Q0A@yI`TRtwf*E zX%`i75!9>2`c1mq>RG#*RI77O`m4eTvd#c!OjR}MLr?zsx>cTl%!Bpt=6Ymm@ z@sPK#UH4_y$|wUk>%)qQWI+-=xUmI&<(DRzeKl<~+@3Ix7!8>BW4`zS-etm^kmaiHaSrbw4!*&&WT= zWT1mSbJevltE8`QG`f?dJ!XZC!0$E;U(1E(q-`?x(=cMkrMIVtd;92X`xnEQ=@UmP@mtDG($=betpD9w4o0}^QQ_u(r6Bq}M58x}2gxq$f*pdsf5-hX@ z8p(Wl@*IsZ3WrtnKIyRGlx7JAR@TJ&3Wv*z%mZaji!=| z)6U?Gfg&!ev|-$o%_hhENcNr2=(U&5lqEvDE>V7u*AF}E<))8OnD3)t%Cd6%X1d6k zae@;{m(Ke(CME`f+qP$L=5*APa^RGJG5yeLf8&yzP4|iLHr&qm_w*9&R&^h}I^Ddn z>*c8+7U;2w0-tlrPm^>1Wh}H&ag>zzqRqkA>r<@jaj}tCHPEw3135!|!vu^m*|#4^ z@8;vuTi@$DJ7d1_+Fo|}CUsK2_0^?4ckA0|_WMA$Cqkw*&v||l<9$_2=aaJ26n@wb z1D5h%CcPRlH+G%q=*~6ExaSdahJv>Y?_3VndFVWu-_za? z*XPR@om4MZbA)qBW^Ui{i4s$5oSkrcXb}&ird_Ip0DfAUh)sDU!6%m(R2}_t$Pp5u3X3Sw1(ZR?UVg*I`7Xq2af;$1*@>GrF$^U!j_F=jT4OjSl)0GNecMfH9;!Ma z8aP{(n z)6_G13e%#|*O3pym74VL+gR$^BcURAUa_mgRyeBGI&{bo!B-o3Hsp1Y83XKic9%-k z*E!+BQ%Lg2C}i=Er=|E~(02a`kzoatU!)2j)<^givGi zFC}OAZxU#pp0Q?W@$6^$@4@zsXQm`~MzgvTexG|2?D9sQj`W%(*4bzeS+*yeMrj{; z*p$ORxoxx2iCiaAHLsqus)XNc_SfHX-CO9XPK&gF8zD0Ae$@oDF-I5Vuu={BNQ2o|||5QDzx+c95G!i!w@;5m({|`R{rc)8~4<3vV7RYdYFq z1rKqIweM^BB=Fgt-zByW1M%h}VqE&xSsgbYEz$+7X3HES^Ihr-K}zjhTb7G;HiBW- z<>1|>(TNp~gUKBeM{uK0*M}`TnZSBZ&HWCJ+c@0B-rFm#Z1DCyCDA~QT`|XdIbz?q^Zkht-TaXR zJGsQ{lrMCwtdNw}+8ceRL8-oh$GgZ1BG=^`9eaA>-<<&8ASh81SDOwfkA-ByBble4 zq-MTl1Cn^Zy6xUIfqKuPi&xO?;rMyH(lLOfzRJ+zr*iQLqBWSNIdNf^tf3b94{5;skw=!|cFo>C!_-9PmDA(2xG5D=w zmVBPf%~72d&hMSNNWHwzo2?B`w^U45Dn$*ffRt#zi3hTuinM89w0RA4ln%;PBbsz06~-~8 z?`p{zL)m~GNue#)c>Nqb915pxv4Z|=KCyAn=msw}%D~S|s~n}k6wL0FOD{-yl~oFd zAuoFzA&D`_8Pa=zF}Yz=eY&ro4l8FjE0a&E{<<7Diq}$ zH-mCk!X);4(p?Wii><*g_tZ=S?6lJybVMsu8wd2)E{i$eimSa}%=J3M$S3#AWOvOb z5RFq(e>u<T8_EVy_1Xgvx>kE`dJttruQm=(y-W@bey;R!+!Q}k*VP{Lf zN`vUQ3?z3(#8jmZdN{cPX2vq>)DJS(FB6=5$dr#lrHv(jd@{Gt`oLNOK13m zgag&I{j_sji9UAIEUzz|CvMD#3LYf*40AP(lSG7Hq$%z%nk9xAAYk%R`f3zMK4!~-ofcPWdCu$qOYS) zbk%ZM@#t2nx3P`mT}z+`iXCfN*-`ETLYGk~(9r@a@@K9d&RE;gN%7YVd0|v66>a?nBEDS^S z&ZYFR*NaO(uT~F$+m^qgy9D+Mjp0;p4Vs;Ows(wIJc&K-@mktnGR94{=> zMH=>Clqx?0q(87KrsQX&P3E*mT}9P8Y#N z-Y7h=&(gH?`9wl;k=v#uUjS4#5>uNeLn}aV+wu57ZGPvXRr@hw3fSs(q%XApc4x9N zmSb4-3?of&hu8h^i$+?!*ZIJf!?03t2!)JqU6M%@-#e!!Zx&w6MwFD>`Sp*390gjT zC{MQO8XMhbA>*oBY~Xoo_; z;ApV6?w;+XVJjr8&6_Qg{Gf@>azzvG{F@bfvg~C|ZYNvH19h32xk9V2c%T#R9l5o0 zhHBMyn4fc;jppkCvlj;`bl=aYIKW7tkBLHMxS*=o9sYv&;@UxGM~PPc~C;I20Nf3`u<78;?cPTFDtO3~3uT)u(JFm+Z}GgzprEOnM>B}A*DUtomSFfDsLC=BluB6Rx!-1t+05zHs1%OM7NfoDpR6e zV5dnXCiYAFmnQ1u$p7>Li06x{qV}4WLY~@Bb6sb?0NjMe1DT#Ql?ab`%=ffArnv8= zUnv5lPAFI3exUuN*W() zxW#WB$S!wXhH47Gfj4rQcxXOh_5Ed;-dvy?naP^WEpG_2GWeX`(*8z0VNsfkr+!mOxH!bn7PBawK zJ*nM~vZ>b^$i$6}OLwOy%m)*oX{*5ZujO3DwPS)6YV>m%&4(@%AGed~&Uor&yqb66 zaMBCTwp+Le4p92_jHk4viZOvz2u?231_1VTT{8qu-A?MV)a^rn7~gZe4EhsVIQs8r zaK$>W4%!%4Oe93#-A-u8Y=&&6{6OlvmU)*CA9MCYO}>@@3y?6glAEw4^l`@S5%hi3 ziCj`>`?-|RF_wa!_lHm)w^vl#^lNi_C2J=$?v^vJ7jm<&nwa^H7blBX<*YqEK^zdw90QvXOnuIr7P)*n= zq))FL8i8%zEZO@vH1JMP5na_bxqx+)jD*ETIGIW5*H{)FVwxFWJ{)edphhkz(5AoX zEZQ}10#6>fL%nZ(N11N*GV7G5oaN;suRIR=yKrg)3O`yEmsuJl9pxNmQl&%Fs^uLK z0_BB2WyKecr6Vgfe-PNnSu1T%O<8DPt4l3zCreGPxyv~+A2}HYHVchmg#Wbb?D~QB z8_Q*fyg#|CUsjyh9phDEPL8;*TIpJ+&sV`7Q*V2s)|0)XQ*jlG#U9E`4&w|XAmwAp zO%Ww^Ezwy^b9LwT=gQ#c)C=v+50i8{7g8F{+f(k3SlE}G%dQ!smkFi7_&s+MA+3G> zgxl`i=DDpX6t#w-fG;8g2d)nSD^;B9fh<{NA+MYS3LKJk*g&&_GQzsPY}@) z*(E;Q(6Kzj1DE}6Z)M+t#^g2D&DcHzf|!%dh5TY4-)LR;p7-ih^Jr((&`wlx#l483 zZ~L;G+{OXg_wPBraOSA4C;6!x)CEqnZSlTkTTp)&{!^AMeseJVAX+4Vj!7}sOJ-{NWNEWZWJ z((afxP_V|jkgMz%cZxj&AGpwFW-mqIVtr9$yhh`^|7B)PAb7A^18KUEap^6acE2+Rck=JLK3zId^R4Pl?i87C})<-*azaSKVqD#7;fIxVeTD$8! z{OIk2O!F5fBHt^Sy{Z-*yKtfDyVgqt?)EB4C^I$um%f}r1d zxUBu%JgG<_VE>nwk5-8k*bI9hPv5y|7KMAguiM!Bb+mX9>B#RE#}*pX%x;cF)apU{ zLS$9wvn_kxB!AZYCK+BvD1en z3Csozu8^y5H6LdtcVi?F^Y-)Az-MgFg%P@fp40`*?Q@=`km@%NRfVC*klQqA6cuw` zR2P){>lE^lXn z9q}I&MqpcPl>Pmcw-4$3*v4Kb8$4;B$dfJ)T;JL?c$$6u(Jwu9vCi7glDM(CAdQF$ z6Agv~SrEs~4Kh$2oZl;nw=cYrx-;t3S~evceLHDM_grLoD#A*o4Dmu+q4~#vi+AD# zmM!V_@qJkN056{IrxNs8(Ef|KO@i%e4OT{~ZZKDoS;z!d6ztS>TB6%7&=eSc(fl2S zt1%3v38emdkc{ZMrW~Dn%9{BwE7|sZrrO+<&uEn`OHYg|XAbh|0N`=8OY*H&()<2> zqDsbX!gO3pxyX%9LHWzG-x)S(p3ab%@TaiI-1oGR9F&(^dQF)f$yFQjggDR3Lh!OL z9dznEI6iN;knAky%hZ;YRXGQ9IHwb=hKbW&-r3;Og2(O;(2Jv={qF4U@&O!cH%kD#rK9Tuq-YO>e{_2j34N&cVWDXEFa1@ z+={ki``}vLF>T3#P`5Jc3ufd2J2YQ3ZM6j>=2;oaI^vJCT~9LF4T{*cYv_AF*i2-m zs}+O#m)tSetH<(@kQ$on-*T8Z9qNLa6FnF98_za2+aX4^g?raspj@%E7+s<)J%L%N-FLa}luFP&>V^mnE+w1W z>aM11I;f%-HtX{(6(8PaOU!2jT@TDIex0hT6bK1GP^bdbb#i#PqvM^B#KXKQ&t02} zCwJbnSNF`E2odl9^N{0@MpW=f!1BYDbMDaD0>YB%k#JL4H7Piv1&KMtG-hDNUe@zV zR|ngIp7@|&niv@=84@X6I&ih#*?H{YM5eU0=4s?dl7E!NG??Nqu=9bxYq2jc%rmh7 zU9l@TEdauAKHWtw+9oL7Mb#7w9^D`#I~*ZKx$P38i@Ngu66Saoe@3X&N?8J7{Fa(Z zH>81N7Cd=qyu^B>{4#~S2NDtH3+xStUKK(I5>@iJ&6Fmn&f6j9L^tW^y0c7#orCMF zZ3&cS2mRlsruRAy!A*lO_m4^q8ORWxJ*9Fpgf1iTps}%&`%BYPjBvhwGW#shiWR6d zu_w&;vZM!c5Tg&d3-cZ^n7Z@x@qP%Kw$ep(J72mVs?`|KZ}mjc`%ta$(carT3@Ttb zFk05LG_>bxBSZwI>2kUw8~g!zN6%%6`Jd55U$OiP4yC1&Ksh zr}xlY57)ghR8`EZJQvFJ&KVS;c$uV0S?{Nk@9K>nJnY&}T?A@dtuD!0Ul=Arfc#QV zgxqR`2Ja|dj&~;Z(9_V&H+4>Y8?jr=tJQUSoOhTdX^*y?G9UD$^m=)ydguYPUTVXZ=&oo~lWg1Lw;(UQuI_ehH|DX%`CG8cohaZ|r%xUvD8?1@99*h$(sQ$rZ- zvz>0PVg&c+@@#-dK_*kAXDoVkvregT?L8{VKGQQXoZD|;aUgM_Y1ma46D#vWf|y?n zsbPo3vAQ^OR1_7}^%5M-SQZI%1OH^m$j9?uIjBqC`L>UAcH$MQrfpNfiTO3J{j`t6 zQg?Q4>ke&gMTMm8?cD*;%HEfZ)GJeq?>zS{3Z=IoU#0;0!KfMZ;X{%Yhh2rPNf}~n zY-|Zjt~{@8i$wzNfwmfA=n`NwjS{dl$9DKSNQ`Mb*O88~e?I-~Mo*%_71HPJlY_^-GDmBO&9|^V32d{wwA2mY)mLy-)iEh z;qWNu(NTeH;^JDSFLK!tBGSsX23yr1A^^Wx)%^rtcf;8{H0jcxx}8a7gnIVff7Mml zBz}n2z4HaFwks7oPnmm_+sXfOf&o{^(#PlTH9sZ-g_`CAXYZzWAX0M4=7JneAMU~L zESt_#>L9hmfkw0|B9WxyS%tS`u>D8uMt@gdN=M3~xUZXQA|(-v%LkJYY%yGb6lGMBL?!{HyR=ni6i7fB#5 zzIpT?A<);50T0R{^zmO75%UfT3UCDwWp%BNpo#pgzpMZoMWJVMAYl$6XP7K`^mbWN zw|P^JZN}Z7$H$cdkESi3O260d5>5mU31EM*$UIN91SS}B2uKdL(S^j1(9zDeq_R|# zYQC;3v0T9wFpIJS4OQ!YLH|0L*o;4N0;J?;E|W9#i}xf6axL#r#hcz^Ar-YnO}K_U zfGcG)P6Fq^xQ&Yy!DN#(;VjkXi2xuReCgDRBX;OS);!zls;s?^P?*_9!)a*P`uUXn zDO07}fU=cf9LRq`C`w;u$zuqc-Kn2y>~@n?bDhLI#~tZ@-q7d9xzYUn<6**nNU4_= zqDcCEyilPQgsb84Tty*f(e|O(T|APy1dYaILUasooH`jqQ1Mz>e^avhWo9p-YkmyX);lbl*0Vjy`l}#0mjx=Zu>&E zvbs90Z~FlS-$)H55fLLM(E~NdNNi3mf%o9~ULl0P8m1?tY@647_;$L{Cu^44EEv^0jLRfUKJArvF23OUsh-;o4mL;E&F{0sUAL0H(#i<=gkl{_}jugI&5M*x5r0}vXWzcFc$H^1V7;F< zy|8=*i;j|tFI3pBj2b|grkTqEHm!eO%e6?T4~t6MD*qOaXP3|rehDL(TWFi-NVTl) zko>0L-cF$jwHFe%-RP5k+pJFH{D;l%OtL}{kI3-y1a|ajCeQIj%0ioMW%-x=FBhAS zTLwNh$aPrc>~m#hC#_4aZF}Kl!(4UXgW-BwVjoZW<4j>}G`F>pE7S4JNA?O|5lg!! z`-rHh>VUn6wzfMcHdPWngG@JYt?dN+S3GKRmd~CFF>!e34@>?Ol$$JD3^0QIT zW$4k8)rD)lsR9|G4diXXjyVs2nbC6_8Z;w$y-N687nAlLq|eA5TQ4S$5FSRHn|u^3 zEN-rRDe6Zz-Xh)}T(?;SjGuRgZqQaow^KK@30&tl_Hnt5KrZIUT}9}L^z7^6-$)&kIe9}_^?iJ_7 z#KqB@r?Obxce0MPAAgh!>+eRF(CI|E#OkAP{Je9zDKOEtb&%!Hj3a#iSx9@!)AtPV z`pp?)`yIL>c3A_ovoC;Uu}Dn@!6aaC|8ekaOhD}M635ZR)qG-~gtQ>H+z@bm+*;a^ z1Q=4++}b5F@L3z)ROqo)AQra%Dnt*9(~G7wQ-i2ZqTklkJ#=3RcLnqEB&B^JM)UNC ziTy!Q`u=3DV@J_>;m5myk0XSc{%oF;!pQqi2_i*rjS{5>vc^iOF!GgAWnJIFoV~UB zKo5xIZ6#=6R>Ehmkooqf+=NC2F2vH08k?BRT3K_N=5pD+=obAsk6&S_2rE-C7>OA*&S}U*f=pVjj%h~$zz4s4s5t+I0yK0u* zpor&eCA|kz9rmt<;iCm0Ru@BARJ`z2*7BCix*4^RwWy`74E#4`AjwCEJ3T1j0Shh6 zbgrNg|9BG`8d|dFa8>Ir2LimhDqQaC)kif;72PJ`@U76ltedWBd$tLwUQh3IBJw%}2I(hR<8%Cv2#1(LM#zdfpPXx1`=Ynl! z)XzP$QOc+D&$pLn76`BEc73ML(^VIzk5);aQWU|qcm>p!sK43bF~J{VC9M^{rQrd) zmAc0`N@$-4Q5d%xHACB8?bd2$w0aDP$NucnQ&v&g81rqKyp3MggN*;I9u=Iyv!5E@ zNEQ)9I+r+=qLW1%=(SLcXiu|WavK;Pwugn0C?hC55uk|X9G@P`(*t}54_t7O)a|NV z#(5WwwTbTuveD{D!t8Oe-NLBcp`si<7AxZ3($?CH1A?84G~(U~i!*06f_wg?LdLi% z;>K$&sq4-DNmWM!%R8OD_clnW`4rBira5K6thaKh8c3$QC&O!`Qe>_nRwb5!I}#~- z`BZw=$W~kz9URo(7sm}_3o!BE1?WM`&s&8ntE=an53gELQO(p-0Ri4zfxrZq32PnL z+Sx_=^o_CG3SaiTVNLT;P=X-{umIkmj{P~oGU82M0ENsFTASLT9({ktd!30Gz`cHC zHXsxWydpAivyE*hYg)7(JpR%yQ2aIwI_uOo{ax(NgPG%TyKB!ITeBR+Dv4nZLg9BN*k-V{rITj5uaPi-cTI>uJ zu5_z^K030w}e`UIu2Wcm{@%eQuUSYAoN`%{*wb?4Pb=lHMb za=m1DCI4-fNQCZFURZ8QC|4AEN1@%gxTrwovZF>bhC^Z!?@@z%ScrndSe40Kz3vK@ z8Q&Cn%*Ll%p%{;GzL+`BIBFce50g<%+6%fD>Z0}UJ|!=cMKWZMm9R0&!=jvXN8;_I zPsdG!if3gxA{d%VnaA#36*ag9liXUVF9aH9^YEImVuoWMZ2?UuV+DHjJ+%wb?_VcX z`aaH06Hea7Y|$KiJ9~&t`y>>s4Se{9gxw!fzW8F>1&Qx*6obSfu7h?eV)F7}M$g*v zl^6<630LfAl&4sn;Esl{WjLt&4tue5wXUwuz>Ru+{-OI)^58DUlgIRdbsn#|<-?xz zpD;h3jtP&#g7f4H)TpwHTfIQrN1wBc$(I~cmMW;Ej^w=7+so>gk_uvF&mLHQ`P_ym zhp(_llBDLj5V9|E9*?`<=B4H?48nFJ>p%gh(jME)#)ZIozjsk!J*mTi%j!wr>@6(x zVx|b9cku$ZxuN`IpC8)nV&t+1iy6m@qCCo258rbQZ`buy8^_AKm=8Aetv^8*2#|!u zi6oKyE>6TAy?cFgL#?rwWQjo$psf6Bv!}JkBWY_3%*oH!(cSTEIREhKTy>&cP2c$eFSTC}oNd|ERrUi?;;7ZyFOdRF6x7-sA1a!FWxbOUqx zOQoQPj&~%xY@+z*9WJX3u3Ju($_Y8hP64mMDwjNSE`)@HA;QTeTUo;J;39yGrDY_5 z=uFJ5f-?UiFJ`oT=K0mZ=F-esnSzbWk(n)b?@iT{YxM$fa4Do>poWZ&T)?Sf*}MAl z2K|=Q!xI@5k<{J#guD?oOIr)GQV2Z&08rN;AZ<|7na8^66~K%=hp@j{s5;eHxe*QRd44ezqPDjS~se3Hk8I z6pC41A=4Z!!Q!lzmW2yaH|KYOh$89Y(o?yi9CqL0?)n2uERR&jLcp4xtU6nyAQ}g+qE;hGghT5>4&tLZ5m^T@bEmHb#hPxomR7SXT3V-Mee;j zQCNUniR~M%S8{r}-$DK!%=KnA3ENHQ&9c(cp%#hC3(Tq}Z7S2X-XmP;j`iAgEiJm- zNwzK*&7!d2Y68jJEqMt??~H^5Z6T9a!8HdXn|E94j&1lvM5#w%Hl=l3+j)iW+hc7P z;%vNmmVv2^=>pC*P2UFlCG9>=IkQkQ_+mOA(sTSSJ#AVBmTKg|#x`|`yCQJ{rfD}X zO*}IlO0^}HXI3TLKp6pMEourv#b6l`EMuE>f_EZL=Zs)j!WX{zAH$(sfI|Y4J34l^`G5sjvb2m%VWxcXYWgGNY1uiiY<%|XX3kGoh zLhoRd6k2^#8T}6uJWWPmo7^m_&$;f4%603^S8ntUgvH_>&dtp6hFHyO;d)>to>vmd z$V!`;;#O$>TPm}|eOE(qX!1*uarfHt0E`NZzQUI+^`q<%xubJcKrW2f*2c7;K zo#6cWVYzXIh+hZ(Ia)^<{8+uZFhp9sLh^2NNi1zi>7qXWlvDKLqht{Ds$RsfGV8+5Z*+G{#@--nFk_`z>95 z!}#wotwXCCQxo_b*8Wa*pQ`_2_sma2lmEi8|4-1`I~o|fe}B&SH{yROQI-5+cX3x| z?{Cok?X*5i!`Q7THTmRE*{%7Dtm?smzs;QZ3o8Gb2UzNs83z;Bj-(3y=hj$%O4ov4 zoQtPE_zk+hoz~}HWc@#NL2Mu&<^1!10sLRRIH-hGu_ykyHufp}g&!`Lg&56BVL8{c z2<;e6)g{I`D=WubU_;r`jqe3e>xOB(f?xaEyME2vbEs^NP+|>xFxs;4{pKT-QC^Y z0t9!5;O_43?(P=c-M*q{`h0U{I^8|*?{i(x52%MKs`iq-?j?79u^Qz12#>2RB7kc6 z=MmZem_H}(A{ciJHQ}ON(Ba>8#r|fmX}Z5&pXwj~9xeX4oqGBMV{e37uoNuc{+_md ztpSW@%=KZ;`R_eDuGSlXQec*6AmrDw{$Cz{i~{g5HaPBA*nfWKzklnm0JyMESEJ?H ze@~2@Hc)^YUg}A0;{X3w`pg9MK=?&A%S|KS%T@KIk`N`+smmxa>&Ia=?tTY<3!ua3Lwl1?P>d zd_k>WgMkt8q|VN6p`f{qIMhe`YZUew`)6tmsK1DO{rNm4Rya(px>1`Pl?*|&goK3f z896x6Lm}>ifa}r;a&oX-(#miMU((vzzg+VgUgPm!<@^WEmN|ohTwLh??OaYau#1X{ z%*@F<@~M%@CAAxsl|w%d=s!X||8fjh=?%B*bLFll^|pXP4aQx5ZlVA5M!Opx@W{c) zqa$MX)|F$yJ`P;Y&NnKs)Z{~d6=QG~fuuFNqeryHVJTz2RfI9h(*6WI8r(3*+6@|d z$O6)EPnapspG59c^dya4y3uu`r+yYb)e=jFcBUh*_Z-+$Bizw;b$ zb}#U6>7%CiUs%Ea+%h*1m5UG~8G`;E;Qh}xe|!bpgO_D(;AwyRSHl1OIecEyjS|G; zZ~s!M|6y62voFBi&d&$>Z|7-zUx2$r=HJE#rHH_?9>73g`22p8f3di5kT1YJO#tKX z3Qm&f{!0Rl2;qcn|{^Q3@2Bw6Dluf5D*e72a5Ef^)|csMqGc5 zG23M|UPu+L08#}nUJgM+L&I7#!i6fRHwcJ`y1lEOG`lz2SwJDD!D48wj1+J!8((~u zr%YmtPvL9TuNtGsZ z+)g(8pE6(<)vwSP@b}774%XZg8+6YZP3OsBIj(F*ZRKTT6fUWn&azz|=1`_jfEKGw zU_2a#nIrlW6!H_k{qp?}-Zb|}adsyT&#y_Se_^Y1ksf;A$8h~E{er?P#5j0qXvPx_ zMd=!dAb^VIKp@a)ukK2_)K7TPQ$V>C$qfM%VQ8bKYi(y>2i{3 zlipA~RgrR4#Jl5r`N%c{-10ZT#C~*zH+rw-I0Pav)9E(tj%|6$Lenv*UfLV4-!~$h zyk>wg>QM<0c4Ug~%UNx%X?q_%J-mTRc6v;ld{v#omQF<<>)rZS?rDhl#}bhtQ{<00 zJ(=b6gkieZQuXRV?2428iToyeEmeJu7+bedU^uD{Azk|z~f&~2WrGZ7*wMkvI>HJBnGd2 zbKzDLLt`ECRe25%R2vuok`|W`adJvfu~?3$(K+E16cf9`>?kaRraA8Ml|vCufe6Bd z`>L^DjhSNy%*qazI|-Oz|5jsGRGn|wbAPo<5z1y0`hjzz zK;J$fAPu%7p)mJv^Dq~Q`E7esXhAg zVVzn*A)zQURptSI_>RpuJXomS^3#rkITrG)m_130e z)fBp7lU@-L60*=rlhc65ldCRgOY?Y{wsT^eW9sP=c|6N8zj6Ffw`3^qb+M|BN8hT| z1^kAWSwZ#VP$ili1~9XL%jRrT5i`TgmTf$vC#Wl%Wpgm97Q&D{FB+i=2?-hesI*Zb zXk}HsFm*OY6uC8{JCJ;;0qQ!~j9L2J>mdk?1)Lq-r^anu1Qt^7iwO%ytFhG&`~k!V(9_XG zk;(7+3?FX-Hh3!}>9P#oCcMMBEkQKUs;TN)9G#f~xI^MOzqxLG7p5vDQar{+*NKayKH@ z#rtrb7JgA;YIw>_t%Dqi0 z^dINIB!QwQO-`y^1ij;Y4egdYmFzpa*#UqTLf#w|9o>SNQ}yz7oaiv2PHjHDR`ZEONON)}#y zHtKYv!l2qucKfPwrBbDj$}O51Q;)Oq>f-b}-4t5-y>-_sp$c4dPr4?~4Qilqbf_Ys z$!rw#1Ox^egD(txJ%iL^uQ2S(9$S)VrXblTG!kbO%#l+i9WLUFWk+uLhcSdBDZdREME5ZJY=#nyL}$%QPS& z(nPVU@-D!&s4oZ2?YMDx&1TDdHh50u?4@&8GU}RY579oCaEwe&FkS8FPAvAN)XF0*D710-GBK{0K3E^wh?r zlw$>tboXcr=M-%?7IzFWB3-lGTiC_6Kd=yIvmesyVygngGVI$B-z{tO-=+UN9X%ko z`<5Vv#qy?H#S#%O?yRm-SAd5$zic9J21sEA}mZpbo~8C#^(*O3AP~ym5w_cnW#82N__ z_BxAWLPNM2T%2}H*M$>>W`zfqLzz}RY_LkNkfj%}(Ae1BWetT6@9yhD{@NnDR!h$C0=04~98fc>|nh}-fo&O+Jdgcl7+3H=A ziu2Gh+kMl#4cEm=PHGL!C75zE)83@kCVNMwFtD$tNx3>*SISv`+g%r?r99N_evDUW zzH>@2_z@7JJ0P#%Mol=ob*21lG*zTfCj`vWU`>~%xR0=&{-9qBb0;MwOSb)Kg$`%k zky=tVtcf)f#1Al+GLh{^gcxt59lkA4U0`5Fmq0(aM;!(K@D~x{3n+vqDCK|CZDR38 z?5Cu`*eBXmjmERPg>u{d5Dlc~&TzbM09y>-m#LEG(-2yhc!+X~cU?by@L)M)mYuFa z$?pB^5;I@J+N}mw{6MR{`!3Ad2Fol8YRY%WA;tc5VQnnO!r6^Z{oHta_3rA22&#J~ z5iuXp3vrXuG7P|K^cRljx8Y!&UIs82?i(Pr3i(IgwD;Dej(xd&)4OVrhK4HmByJ8F=&LV!V6V_W(7}6 zv%H`UfIhq_2gX{&JmwOQU2tR79E#Zjcbcf({Zihd{xuYW^Z(-6%5K{3fC2>xnOtOT zU$HKe@ESVq#%>#yOTFcxelWfY04lpjeBP>b1>af>KJxN_x%d31^j+_C`v*`mvO zP4V;tReyc>HT0M9R=fs-9}=ZBMlInfl;P9GLy!#0!L|v4{1p+iycNAZwY!Aly8CM$@w zB(;a3+ddv$dAsp9)G{1UOWh#DmFDD(lBHdw*eC%jsR-#D&^!{7h*)_nowV~eWJkEM z{r!-2=gZGviK2^)$7G^2RL~@X0Ri;GN5gXIOZPVoYo%6LZD79jGab>AOoYX|{TM>u<*B7C2DJInq5aT>7#ZAz1T) zcC=Z%GaDnl2sT{uSxZAv1*AIOM~|beML|IqVO2{i(1sSHjW{STytGB<6kRq@(|Owb zFT{XIA3iY77!}!Fx>O3A?g-WtPrcSM({`S#UpBsHDKu8he#t%l#d;jffjG+mELps@ z1KFZ;ax-*C^$ky#jMur1SKSR~%YLa2dp0_e1qC?JDT<{QmaVK$kkG^sykj2N_IlyG zfw7ZwCIvCU``vnb7x8Bo)>Mwu@;m(rU%Xj<EJiwr7bGcisYIsz zS0_X+r{gAXj}=yH5z2WQKYm1p*0 z7SIQD1tK$4aEZ?pui&PJ-u2_TSDPpj=wF#w-Tb6xay-lI8po54gEExLsTKn7-uHi0 zn0><|_pv%Y5GA82E>jrA^}VU0*(`bE32KAGX+$fAFm8BgpEF)IkyuKEC(rUFoJiXO zLc4vklx9&#>X(nRezSCw`Ul(|^#?tew}@Updk;`@@Zn;??D9@@p4I9;bp?J19xzfw zfxs66v2<-#t+SGKe09-8#lNoDi=97-DFPlHNdWa=Vsu7WxqILU)pb-?769oQPatdn za>04u>~!cf*J#@iy>+!<7M;XYt~`+R@ihYOuRs1QAP_>RpyYGWxf`Qt#Nvn?A~&LY zlf`SO--ro)>P(jPBS@9(Q*Id>4?oq(eV?#w}e12(}2PP;XQB-o-VyP_;qKT(119rQ_PIeirX}w%K=0 zH3VEwT=2!*^P&|G&$G)}b62HW`x)d^I!1^V(S%P+sZP`Sk$o*vHVAFz$|m7&uFOJ_zVd-+726Q3#kEy~@ia<_oVcaVBh6t=BMNWo;`+kb8VG_E z8;(j8;JZy0nmddn_hW`wzfwd3l`;wKfjuuLcpKZ^M&pI~eH>05kn8mZhzY-|#XO*~g}3bCHih!mSWjvM^uC-xHn{JrO30n}5cpOgjC(FD zmg_o&VT_*+6-Zc9K78*fF?WBM%aA>sue^YpEs;)>9Uod zp}UJ+uVVC1->h_n2fnp1?wYb=+-5aS*T^UN8s@20MVK*?;*_Y3&*ZAfmg^27*xY;f z8K5N2HhIUH*32$8B+}7VkwGM@93;AkNgph9suS+Zg7=&sUL$4=JYr$;!s^}UN0arH ze<-+EhedRY&W|>ScXoK?FWBvNpV3#$c7#M6wxSe5MLRXwjG;NWPB0+DLM!BaNnn*P zL$Z|)=~-$qhA`Bj?mUql3_}G5KRQ>j!+J;mMMHu>ML3=&OV&qv<%`2fDH!uno>bP^ z>{A#5#a4fOhY*xrHeVH~mo{{V+i*e!=aGTTiuQzR!?n^Q2-zMJcs47;Dt9`e#nXeM zW8*!oCUtGmauHzb71}*wu#!QpJ2fUtgj4x)Wki-Kzbzu`O1lRNEQ4yjOBSYV+SlMV zDBTZKC0{u5c4j2HxW(D7IAAqJ#xn)8mQ*Qp2WL;Sh0r+GP|!wq-oR3aR7KGKiMuZ2 zd!;>X2Rx1MhBI@JqgLZIwr^K6)(#@2Cm2!C>pe5ohTa0uZwixZ*_i3yy@ZH8Psr!W zb)$`Eiu)`-*zFvPKJkLV+SbXdxj1@I>R+cco!N}UW*w^93wb^`R-vv%LDJi-wsI-f z85JEYH;8|8zlo96ucaMIWQgc%85#9@M&yzb;vb9#db1#iusksS#8;_(`A>4uM%oOM>7ylD(t2O^XL z$m?zDdk{ErT}IBE?gbkdituaB;H>s0Nglf>7FRHwZ_>o5t2;J>2Mik+?E5*MO~Qls zV6W~k6z@hTr64DnwD(MdZBw4Z{{Ko+=ZeAO(FD~Vho6p#G= zp}!xZ3me-RnevHN=h@N}>Df8g1{%D@PC8Ys!D@9yYVKeX~CTqERwly@Vr`@BaNe8=&+6_T^>?QkF3@ZgDN{=BRUk_+$A1kF^Y$O^3`_A4d{#V zSncbYPoYO=kyVOovLMdJkeP)Px5MHR|0#fH8@sCr#!__eqCxV2)&Mvs)-;J(Wb&CPJVeIUkA@*#oYvL>k*{g70l_E&9uVu#iNmRzhNdR{DV`4A+;sHGxAN+fjS8 zfX1}jB%a>h^Qu^@^WE}n;0KCNz-C8KGhMvaBy=RF9vDL<&&Q6<-d{o#5`;!8P{D%k zWP$;aCgOXhyXjq{9=nzrTFn~dAd`+PA)c%>MPMBB^RsZR6GN+pKXo zT^0Er^`d&^@#wDA^=z#aJ_a0g-3MO~#5s`qa3t(wQ{$}@$6>&x{8n(MV6SAFiz1d* zugOFymnw-`VQJ&@>5kWD?&WWfZV%ypnR>P>qquNJozZi*9X#J_+CYb$&0!|7t*1%E znFukZPSbs(<)in?d7+0#?m4sV8EoQNHvERj@{Qc`f<_|wnZ_FOV}jH(WwKP zo^<+L7qr#Qw*l&6a;lb_LKixhOmVi8!83;%Kb>W-t{B{Y6a7>>=iCZ4x^-0YAHm?F z8tn;PHY#wG#<_b$9HKX(u6=AvYK`>n!d+Hpop`E6G({hby4}bRc9V!aJHM`0h_gp^ z8U3*BpUgEj9Y7wEnJr@ufOvgP{~koS+5}pAzq5v9q{hc_5Jl};%Rot;hfSDySK)2* z{D96W3tKj;RP*K2=Q^9+^5`6q-3X~l|8v+)qdmt(%AmO-)>kQCETvA!`S5-fgnD+0 zt*-k9&d+&az?4z5JFKnqrV?T@+jR1yR_HCM%gMl)jF#VGMKDPdrkcjXJ%i&jxo!tJ z%i~u+a`t|*i9#e2@8=@W%azEkR7)h`d8=Gp8{Z|o?b_eb?LPB_=>O$J*IaKa06%+_ zBiq&@0}Ph#Wc;-!x7=kry7$BKnyJW>fEblpeP##4;gUUPlR-TNp;Y$1TZaM{ zct8tz)2_Uxu=?c_7*adL(t8Hod6C1Z-}o&9Po(#6TwLs<8) zu>4QWd{-p6y*>rgcitOBTUx%vU=%d_kU}cFJ?K?33oo?CmvC*{WEQ-~SkA;X z6I^P%MJjjRr=Dd+fW}&yDqb(mU4OCrMoS1C0v{P9I)75?BTT5{!BH-JN0#CQ3+s5T zg*F81sSa#B-Q3Li^0KOA8U~N)QmuKn@G-lqD?{qTK3JYiUb?sww+QFK>hj}TXS$~A zbMbwPWb6Pga?S(Ri>A=3pL05XxZ8dF4SOpvghS5EE}gOEj{6K`b&}pr$?=jOdLcZTO0Vf(kx?rbCox^}!0k279Ujb8c$KoegT;z@5E}gE ztbk4>uCPYqPf_hBlUQ>+o7R=9D-;`}QfGB%N_vGziD>C!y(0x8eHn()f7+DZ{_beL zN!czR*jPjh`bjePp=Biu%un2(ABkpjD2z_9))~M_&v!;jd`h3#0yJA1d8w~xHqKe+ zVUDff^Z;|^cK$I?*y)=k93A9<6NKb9Yj(cY!M~Y0q+Cf91#Da2E=3OXQpc`g^26f6 zkqij^{!sdHkCWJy_?uNMjc3REA#)og@r{6U^pxfKyGN@9EU2D{^Mgs#9l z6>@3|I>UaOxjN&}s(~uwJExjbIV%8StbRlM9Yyl9II-VX(izQiilwj;q`rR!-tv%? z)%6iOezIM)=s3!)q}c?5GJ7PB00;V9_Ot!Ls2KK7tCs6+C&!xl6xP$p3ikbcnR?#0 zs@GoUS|#jf*V*o@XPa`~ed<9Mg=C}68WK+ZlPg=H1j4#w>0NiscFIl4TML%zPEmor zP4`!Qql_!jSweYGRN~8Tx%igqYx;$$t|qZt8fOx>I1eocrlSJ#r0Yg59fZ&s>s13| z*&lu)#;1kEyINo@=#IpQ-Zd@?AMK7J2P%E0(dtAw>j*`}>cTsmuMTf6xtd{{=wO=K1ZE3lFX?7Ezhld?Kqg-R(nBte=^1sR4rOcsBm)x z_Z!-6S1irL1pHGucrkC$k;%s*84eg;{0iH9vC#5IU)HnU&8k z7cXNI{H=eXf}=y>cuc$Ju}IH}m1wn?vGY7x^ITw+53x1&+S{)==PR|~CCY@O)lSrV z(n8dB7t`f((U5|Y`CxiOmxh~jRPD1D)dxIo>wWip)jlgawPXJ=>Er^oBT(bQdgm>= zt?r%(%$bqtJSCwq6CLQyhVBl-?JY36aV;K=75IbeaagAp*_dJV` z6T&`z3PP5ft!c9zFmqVF2VNYt`G%kqLI>{M(Vbo6!`%Y@?P^oaD|P&}J;KIBT=d~<)o zN||;JX+;gW{4EIDJiTGR%lA#n@ao{CsNt{WmBcM>u2YmE46jMNC!%;^&q6HPW>+VQU;%kk7+c_Mgm(a|4dT!TVRJwzWzg}7pT z`5El7gIKNn(1Tz&nVE&$$Mz@_wJ+!F2xn{SwyNnIvGL&L8~Dck&6F*)7Di1quWxpx zvgQYd@!++2MytUuSWe?6?@DM#@+IQ(q_XJ*U*~|2d=HC!&OeFlu0CF*(AAow{gD?a z{mWFFzDGyEs6Qx;tOyN|(UEiq)F3*${Cnzemaz zSOwactaKZGm;f-yyW@TOhBPb2bHg4oB^k=m63`^CqsNSKH!>_a;65x z#VfMCt>T|YUKkq4kb$kjqDA8`G*6Z`8e|yRafRt^!3}UJSYJeJm0+1SKc)b2P#@1E zh^OS|bX0fUw~21N5RwOKYNe|1v1@oe!Kt{34E*Xf@NbKDXvGcMv`Y^;n_Wl`B9@GC z-IAnHH@@MXN4$av`@@e1?d!wS+X|{E`3GHWG)lEbBmx7;^q9DVursA*moB4FlV`PC zc`0F1#q@M2AWJZc8L3xnnG;S5-*}pw{gy}60@80&6`A{09emep4bH<| zV!8YCYiFs>?L!khx!eJ-?P1l`+OAeE9?S_#b7JZ2%GQeSHC&jq7en@qksWG$b^FsL zunkEXQ2yeNtYNXZ$Bz)(DksZ?3^7ZUOtW_%Cllx#g-Yihx9_zs%a|%wJ}xS&`B{&sW4Oh$ipmwM85fCVH1af!Zb0-I+=Fx~p>@1( zADlD2PI0~B9gh6NwFeGzeua2I85>`>*IWsD?&C*7Y*8MZUIGWXK()rptr$*B;LMBY zdgK1NcBRJyU&VIJbXwGPw$A!A?$z4{mgQ^CR%C7yug?r-2O-_iSv>dEQneNzxq6dM zSDrVCbv$#yX1wqPBLoWMD6-6-x!9)$lUdZ~E1M_q9!IiL`t>TtvHAKkyS9;1sP335 z(QLU_Prc5*NtbfIeyJ$EcXG|mxJJutSi^u^h(qNJvoi02VV03hS*)wvNrC0Sro>=m zChHpeHofQYflN+j)pq?Jhp?BC^lMa&>EdR?r;uuQ@8^~2cjwPY|V@Crt)P!fJ=Ua z2Ht61V-oPlobRyRT-%>%w_VxUsD&v``cMUcXXIuS3LLa8zrR=?haqB2kZ#h4D zH@-I<^U*n&$>wM2d$hZ1*x~z0$Eg-|9NVDuMc+?0vrC6Zm%TNrRmK2GzZ9_LC$pP- z9^XpJ)X`zx&V6N$k~DyW(x0S_TY?(~-%lg46nlz>ALdDC5R=@}M zy)J<*lH}hWj4w)$#D_lfO{;pNzyAG|FSR9a!X;3lK?Seri58B6tDV3Pdj-x}yWY(g zj7m9_u&ik+B?s|!Z&^vXUp5H+qDoFBwa(!*JyTLG16RjjtT9jI(Y2mGW|#D(PAbp# zws2=Kc_;iG)NHfbQa$_b8vc*L?V&`0q6B(;`QfAp22~{{%k@m1z9c~uC{LKT^-a(z z9|@msijWC4uzZl{jb&o9hm`Mq?BnSi^Dms%m`J2DOZ(AgxpgsWWx|h}Z-q$Z>%02p z%5@+p@Nd*>dWz_1y*;05R?aSNq{_J8++NlQvZo{Z<1~dX^>nb)^D0gdVLN}tcKT6K z6?D%tK=~|q!`P_sVnS{n^6^I^Hc=gP&wovsHBw_(>#_Be^S?uvb|ST}&stx{{zmQ&arY!)k(C8V?qHxIm} z0-c?93Kbz5OY{dMUojNh|EKYaH5&3jDNc9-Rm*A-UYFaKQe_LE|SX>%Wwr# z$-w!D?s5DS4HZ>)IU*rZsr|u^jP6yd-q5cu zo~B%}FF5(tdrIi{M;Wr;9yQf?_q?hU{|1N9jLF8m?BM!iF^hG2GGCU5RF0VH(!78S zPOba&cxfi32d!lz?eJzhXO{mD_eC}FB8@_~{_ zKIIeoWXsU8(>9misR<%G)yL^NoU#Kf!gYMXiW+{Lw}Zs<(||59AWuR z1(W&86kBzPln{eoVME~f8vJatbq)V(w8?k&d`Q}It30yk5Tn}f?|^Dnp@IK1r@Lam|5Ac*FChWH|XK+DNv*XUZO4 zZ@>)P6s=H}Sf1~U7#_dcGY63m`&GE?U?eV)Fc z2XeuyhImK)LwYdZFWo5qs_?6{!HPUMUa{?Dw^6c6$uce8BnEAC2ykEO1F(O{gOT17 za%({FI93h3Hgp+Q>NTxj9gXAJW`BVYQEC_!t=?e7juUH^aB7W4nm7fx;`%0h2a&c9 zVzt@Qwu06)xgzESyi#YM-NE8+l*>fc?RoDhfCIgk<$cx!e23eV{G<@<3-@{!*~jGFEFpHjIof2#n_Wkd)4U5dmjl# zGV^PH6(Av6Xs~aQJ`;_#TWxJCz3#*5D1{2y0QodG@)01#Thgn-HjL1k>jas+#lt{Zc>Q0M zzJcT9AZWCiGbt&e?YHM^EueI|mQL327T8nubywleJpWX&)9;*p5d>h^8jYp^hpE+i zry##MDn$b0#+w#5Gu4bh3=r? zWp=MQhUP7Znp8ZWk(ZF&e!n>cE7NR=If6=Ejj0&m&`xaOY{tGX(q66=34%4fB2t5r z{qa_u0?y=czNrUv%lWvGL^P4^OyImGj8c_3RW?sLC&mx^CwcO5i}?0%BGpFot(XOt zP5GF1a|E`y{WXU2tYPAXnyp&B%N&WafMFg|BoZmza*KSi!U7Jn%h&Qdrje!=nbRvh z?GNo}zeK&boMHg6#EB@^<3{ecBi?;Fw{L)Ej*zD)o* zT&|cAG&^n#+3SpN=CLc*n64ZNp+*u^}Cwtpb-FALNvW%HqV zIyiwB7gt_3J+Hx<_;pgL3_gzCIs{-5oI5tl5sDV7XSYaIQ&(|a+&6uE+e{MrP!hP= zAJ4<^RH68!P`=0_EHE%ve(SV}eZ3TF^{^?}7thv^B!h$0F+n%aALtH-Dn#;xg;?$X zTg4R@9u81KJJSV+gI%Dv0PG{r!8bTOTcepuqOM&RKqayE0T34pGJ86F zo1YurclMen>Q<*OLa+~^%a!4fQKQsD+=a&BwPiW4+t&|bj@m*{HL1rO7OiF9`Jger zWcT=WVk~XHK#5$cW}B~;KuVKsJQDv@p%VG(aK(HmF@C)(FhS9n`5OO3-W<|Dl^kGHYPW9O zCPE6dj|aLZ!eb~B9Ep17t^BU+2Ydorz{sD0FzcSx;LRd#JK6rS(gL+l|F|yMW}bdZ z{(R7C63i~4|Y-H}{i!V`lIKA<7Uuozvio>YC>A=1|oclrTF}{4UiqdMNG|3)p z!O7=nvpnLbv!2Oei#tc40R}5jz04{ahz~oIYD7a2GnNTbOhRD7xpmxTC2 z(7mUy?ZkVA^VRKRfz9L!9K}x2mtr0$8t+XQ>%L6-^>(PrVx$*?vZXjnzI00f_86Hj zOB%pP>%JD{1(>svH&yImk-+`Qs&v(OL27{~LIT0=|SD;4hVpE##`hm2ps_8xh?cUyK zbyd*wseVl&jXNtYr=|$&7jP4h-`qUs0fGhkpl$vs4t*|WYiYu%Q|cdp%$ z7q{IaYZ(C(>kg{EPXue{+L_Y~#2Y9NT{=LkI3nw3Lgf8B2^6&JLkFDj(YqD~fg1h> z;vL&Jl+ahCy73RrJmwjceLX5K{R zZhE8qJ@14ad}jm6jwq^{Pb;z3jaTkXi0?(SDDigy=On4_Ax;4%wAJ-b+c%B6L9^$&(-XDwZ zy(=uyM@^!YEs&{3L7QaNdcWXH&0=?Cxp>st#&fpq++h=!H7@i;S}ec;==LK}q|qNQ z7KdksPazyVl9js=yxK+GU5 zF-$l0+Y490m&Q0(*4i#m!}&_X&2V65>Z;LqFZqlw)b`4kQ*-?AR%vBU<>cdHr+UuM zJjGbR+dmFd(RUD|;h&oAHRp6SsA_os(<9(&B6tim-5>80zo3Z?nAQm)7jUl0Tuson zR1PYbkl>aSaC79XfoSNct!!n#cdJ}NB9nQ-@-6po$2@8*TFti=lss{u;M7DPZf6wo zKjzN@lF=g&%2murXypm7d4tz~woFJFv!R`sNN@b9hB5cJ;-26;3ZlPMk`FO^yexN# z8k_ETRNm`*Gu*UP>39L2N9wBA*!mB?&u8+KAE8ozy`4={QcNn%r8{2{xs140-(lb5#ag7>lf2fgb&Bv)_ z8UMn~Rexan%p^3&E3cbKeC(5N6)?)UuD*4v3)J`rwPq*kZH@Yuij=^}_4}m6HRXX; z576x$p$+A0=L7y9>0*snsZJ;IsdSY z;SHqX=R#66MvWZ2xKhGX-P3tqJ01yMAT-Lko}J#af1(7>MxQLn8P*&zCS&Cky|eXd zoPM7A@l_V?zNquI2dNua2tdAuv#uezmo2z#9Gnp$F{hX>=M?$Vv zn2RLqzN-pujj;FBV0sOt=yZ>lo64{NORyYkQ%~hNFC2_cmMG$*(bwO@riR?<9<|kjd`WG;4 z%pT6xNhgOY+t#Le2}wwOh4{V*IT3=%MtXmBgaV#@MvRh8jn;^P#qRReE}y*#$Q^L8 z6st7=|9w-!mBo*9HiBp9z5)t`vKMG<-J^lQVke&|R*MYWvw!0w^X6(YeEccBhW>-GPWWkJ)DWGjU&#>A< z3(uJsQKoRsH}JVKB454;AIOYV#4!Di;Qn*l4JRC}+ee&tKZk_}mqgmFE^EXPUriZa z0$aHY#yH;%HW%?gCReIvP2b3&c8|dPL9N33d%_{?3xtl;Da~3NUKmPfr(m~Z33V+j z)u$Wj5Y6?hv|zZ7RVsFL)^9QeO1#fqJy%RsB*pVV+VbfR)Q>xpAsQ37Hpp6AVix`skuisYP%! zHBL;HC=(UZ)KUK$>H%oa!x`j#)@BM?&A)Zi3vhxlFCL;%n#>Q@S*bY|28bpy7#BYj zG>)JaNE8Qcj>Pu-)&DeTJh_#^ zQvoW=2I$7BG1YYY_455)Q%*P#St{&3#AS?^tX2ZC4T-7DVPa?eCUrJ zyQe>DNbLmwXx5LlC06&zqxrMhgSZpM1i#9MuvXfhgq}FCVc#L5zx}kho?yJIM-587 z>KF|Djc)=k)xC^ZF);SQq)5!Ef8qrU5eEsH@F(31|Lx_skVYVu%KdS1c;5K%urEUq z#-%`j4uR`}z}m%$B&~26-l>PwjbDv7{7CS(@3Phqf)jJ%Jif<#{&6ED+(Q{eaLKIo z;ol7DuYV1L1Jo%JE(Bpg;BP@L#vb`B+5F^8J@*0%daI zAj{w&jDPokzw(Q}AIAp+G#}q5qm$v6wg2D$^xrOBOUS7iWURCJAIkR^o(A{hi(mPO zNl+dB-})8$*O1yOcpGp3T6X{H7C1p5JOOz?tPz(5|F>rrLr9=*prbMVr{(|o5dm;O z9)jTf0jBtWTW|kyMGH}ncGQ{P+Sh->cl@hlI01HcO%d)dLMC|s<(VGFAbqOlZP5Re z+bZEli^F+(AeZ=kIT1*MEaN+OE#Z3lh~rLLpSL_eMFM#cc~Ai$ZwB-XY<}zDbRI1R zvShn0vnCQM(;pJ=+sXxT6+li;lVGb42T@o(F)U4miCxJUW`Sy?q}|ax1%D`3Y!Xw2 zaGKW}eA|4PHk?xM&7k1N@0=B82JmHF_>=m@7?61Iav>{)U*rTM38OdrZb=#8?Oq?z z{O?EO1Oq>rkpaUk2mj4nJbeT;+R_PVj0V3f-NdH2^N~hTMSix&k5O{H+>=$T){0hX zbPzO}$;aOD{!~_}OwND|VREM*XtGcyZ8TFzs92!`QI{<-GPKbnE)a^MHg?HiKCi&M zv_QGZ@YSdz$GMqYe~^w}`YzNwWx% z?q-pK(nv~ocQ0C`I~U#Ey9+=ZXHDg2^@naEm)4Xn-{rYTB$G0DaikK1>)v^bmmB$ekNE9#-4kGy z3h4IB{}#gVhcIt=k9iXKEn^GS07$Mh`Z;(Sl-PHtd!e!6+kF!N)?n?09n7-o9JB;# zylG|ikq8X$UP?dQK0hV7p|i%_KIAD)BuY<7R4xo?TUhT~UOXL47GR~prJ++V)vYXelguAO{N|ag6DY$* z8XnK8ThafpLu7JaEMGOVpt=;xm|;|I@0u#ncy?C?^Yr-2dAQpAjvm$j-<|uXz%MY^ zFY&s+4Ze=>A?1I>gp83gYi2_XPci+Ax4Uc%du@uu|5Kt?*)t!V^2_5?S$JC$5Y#-K*j6wCTAc%bL{IQ7DimF zh6#}8#on}FZ2gklJ&SNkA%@F$@WBoFBo1~iL)0TFA@PIOlIiBjFb%YFZKcQ`0a;_7 z`^KAt^P@)>Zspn(!N5izWR3a|&h-L+$iLAVIQ>VjK2zA5Z?HM;3?c?WL@ef;RTl3Q zl7$Jk*d!fv#D#MR&JIjM$R+9jpal6n4Q8n3N*a zTsCB*oySI*8}j5G-(t(i0CU*NFPYSRz5>NY!1gr+>uXUVB1wX-y)WDJiCx43;iIMl3MUw@< zkpR_H7GR390#(3>cl5Gv8n|E5JMN5!H8h&+>s0_0j0y?Yo;ru^sI|U0=>pYyDIi!J z#EU2ymKpzIOsEy>GWUFY7Dqflj{SpjK<_f}Q#%V#@2{QDogkSyC4Mofy4f3}@=2|9 zWhz9|exvW|l;o+z=d)kn8@sb9+bdAdtK{0zmqc0mJ|1ohGTh103s}y=f^SB=%4`9e~828f#U=uy6+hWzsh>scS_g)96cJ$5%N$)a05KV)Z z(r%77?WU{E!zqE9Q-x7a(WP3H0Qp255V7M2&e&U>Ozvv(ONZ{>Th5fkd*ki=;07+s z-|lX&6>FWxL=qhvN}eCS0Jzw(7tXb@AqAca#9CeGj#O$Xh8N7N(uI>nwFN2smN`3M zXU!10`e5S&&;l}++ul~9uHi|+1Qv#nWAvw7LhG(OsRs{x%~3Y?tDg-NwYDY6QE_keZ=~yf?vT_kOa8Z z0rj^0*{~acqG&g#*M;2p&`&63$^t;!o&4eze!o`>2a=Z~(154{Ts}J^*mJ(4$LLhH zDV8^;!IZoUZ9C@ zkJ&eGGcck_Mn`0F`^3hJxI0z-D=||Rnt#qvy7xB6W}f+s@jiRnHWjW=ufJ&~-zo7< zl`q<~->u4NA#xw$uRWv4-E7+kEJ89g7-(vY_>HG`A{|PTxy(cE$h`rJ)xBXs5g+vW3FG(6^o~ovvR^eYtis4qt*(Qaq&ni<_6=1YUislnS_td23Q%?$44QeNLZWc33P-LPQVu0ANbNvN|K!TF^ zbBL#M`GyqFI(1ur%hi-xzKzg57qFhqDoJNnD;^m_f2NqM2D_ykt+H)T`ymx8zsQ>wspk2 z|CIaH`u=o-B5|Q9pNqX;8fwvz+<1l=Xt&w#3~`Ou8*4c`U;=5z-SI+dZ%R+#4`ZXO zBr2TTVfra$`d*~HI(?zIdTnxst3w;?XmUuB(P{gw8JR*He5>CUHi{~ zIzJuEOyxDB3J(+~+B)UifN(o#Z0;)foTDEgpPbi!PYd@xxHXiE^j!x>U!x`|q5A$Hz!o{$Fn66Qy9k}TW05FlG&C%hw zujp9P7FFP;#of{lPktmfUl$&KIzLw^H*NCi?xnt$V!UJ0zuq520o6_5K+5;d;@NM3 zShVQjrQ_%!py>AGEZERp3aBrSvYs!3P0PBl6&j!3d5o)9Xyd+{!u5+MMUAgr!rMmt z;Fy$^ai>0Xtu?k(MIiyC8B|H^-{N8dlu!ZvhU1Rap%(cG6h#0@G4X?{VG9XO4E1z< z>KM|0@>Uqc}eqt!T|SEw*0rwhn+V~$23<RUis^b7F@0Woa5?8AOY?cs|wI|Tf+HQ~6r-&>9cr9UZc<(Yj=xy^uQmTNta zJ!KA&iF%sv81lAwk=9esYr(=q{y1aqEbdyMW(*||)PfK*8BDQWXXn7oEK`Ubb7_}HtwCa<>YEUNbf8Q}O8=D*9WIC-D1Jt9GR`t}amL7mZN5y(kN66B`qRURmF z5g&F17dXCP@D_8cy7N(>LOj@Wdt~R?wtwuuwEJzS`H1npUx@w2%ZF#x>`#PGG)O)o zUBdxJd9jUVH}+>z(N1sqRNW!BAlx#qVt!&8JequenYgk%+}S0{?|kklXFFF_CZ>~U z-^E)mI^q_$klwiqCs9ld$*7oip9(>=3^TL))Xl`OPSjKls{qA>4~gjmIU=Hz@3&tn z8uUNn(g^p_AoaKKdBF{TT%t}I><<5Jj=XOgbJG`+$zHvb**+hy1zRmWc zhCNKeU{)(p&X{&Wc6AaT!bc}31MoWu2Wv#&6K-Kw6pe;K>! z+I8-_4Hc$1HQa_cvwelkt+EJ6Aw<_1#^_4696by186G*K!Bi>m+G83_5_E(#Tcy#S zW!?$7wB(B`N{3MwcJT8GI~O3$n7@tqR6@3KTXs;23%_b>rh_Lo4XLV%gBsX2@@5Wi z{TALCrcqrCoVkXHogIWb#qhti!S5F5%WaT9K`~*?Gt-?*yF2o~F z0S>qp6tvcXKz-cB)G}0+(vsBc-Q8`&vpb^Ldf#`t4WTy)OEyRi8x>dohM|Jl5xP80 z0I<;BMk8*eQxlBLznYQ?vVyq|+_&#~gD0zz$a0t>=_RWeQ4FoD+l7}>!fv--{x};9 zwr3g_-q(puH2xL5%)tuiaUyZWM|p!ug|Mmy+29bm1)x)VjIAeyU|M)4FGKVuR**G1 zp68Hms4(;>3HL%_T<;w8*l`G82 zT&VrqI?Z=O(kGeuvXnO zUX4<)PI4H@m7W?NZ4Ee!ROpVzGO3E6wn2|K&;-%d_w_!{GW*1%TOtqfR~PJpe32wU z8iA~|O}Lgw?k=hy=gOL?x461cciBGrt!fs1B$!Wu>|mSXOtva*{^*bu{2Howncfs30#T&;TGQGj52MJKYhLAo8Uq zjK@AsJB6?!&5A9DvPUGyjwf@ol|_t){IT)w&pX6@R3$Xkh)%IQ1zSY1r z(XD^z_(F)=N#pV$@Jp-)+BJ$I4llHvl?~@ae;DT)*H4-nR0u8NsC2u3DALJByW`37 z{d`OD@CI70mtJ&C9lE`yuR^K)hIqQID}(YcCFsZffpqc2$*uybG3LfOy4fi+bn z$-V^xa4e(yo%J9R%y=h|_c+Vf5$N*ScC|CQwzWasMX`O|0qZR&pQ%%t7Kxo09ihzH z_%7{kQ&s#8>Etrp3Z9Z^9-nBB@7M-v(>nCDn3o+!4|;BkXgwcdA#X3g-#Payj%dj_ zO58K`XYLL@B}aY~uf_5tnvDc{j}*>Tg8MRYK0Q@u*xDv+bs7~GVZp7OcueejChGUy z#foj=#V{*-gf)*#BRhIz!2DAEJt(2Zz>aD$(g%0y{&oqn8D&XVHMY;@k4O7cYiot~ zI3(Gp!aw8g?3m{x8cFX~S#ua$#+1UC{6E!^r0ej~*vPjXbC{4+J|5UV=3M8M2VZWh z%RWL8<|P?H4>B1zjT>{?GB?4e@I?Nhfyo{MW!f8x17-T#*1l)Vg$*2F-5=84;Elg# z8I&gNl^{Qmr4pDcZqiKP4!PaY;-EM-a43bae<;JOBLke6&h=mXXpUQq!BC7sgXU;*!$FUJHA2?Z}yQU8$Pz-S%3L zXy0Hk-wcEALIMGiAzlPO}Wj#7M8$F`}7Ui7QXN$}fiFd|{^# zH*&08MmS*iJ-qLUHP*h=c!Z$H_nOb!#6A?%X84zcoX@2Kt*eJM?X2|Qv%I!q_ey@! z?AeuODU$40+%+6N`$~|a?_FjRS^!}prF~_H5_I29@G5WOCm@s7-5w4bMo~NZ=o2^S z^J1>T*AhmBOQAt6PFz5exRCA&@D-=Ov~l{&-=91>fzfpoe}xwaI2Po^wN5$BIg4oe zIpK>fp*6Dm&u=4kM1|6@j?qXBB06TPFw>VUW8+Xfkgn_&+a{rFHdx`qj~CDt(Jzoh zg79_SjMD}`BPgb7YrFJ?#8={dDE*V!h}FAtw4j5KUPbAUa(`@Ap}VT};*P4W#Yf9e zXz_gvX!{p7*=&4Ss}1lK6K?0X7cNeYB$7SQUl1Vg1;kzN-q;i#7?I*wWa~mCrXra@ zubHvM2QDk=N}C=ZX|GxG#js(BQ;`06Ivt+agU#OG^l1sVWI2?se`v}&Q_x8C2uYVc zVRp6N39&etc8#E#-9;*l-@&Y+_B?d#Xk*DUgXYAX9SFR^t26XQO9`fx^!6D;+M zItAUSJUU`KhBCc6j_aAhMnh*~>n7@EQ?e99UDl@H&nxZXGc9o>rMx!yVf`rrL7lJM zRKd^MJks&lqLbupFsteYtHBPy2IkMe+5w`#83nrLALDQ-Pv=|cJY?V=r=X9_&awwnJn2SjexNCE4 zC^fF{>3~_qurqUyxUBwdw1NKvlWR0+fcI8nov_Pnuu$qloOp`%G~Pz3rC=A#cP4`g zr5Ia&O`q$9Fn~Z&+SZ4MV{qSH@I1cD5gRIq`ExElaaXzQn%Dy267~`7%uMxqz#qk- z4-F;uXb#2CW(RAXzM}_!1|5ta<(1>lSr)cGyTuluaMd)n!(>a@sMe~+WSdkUzUpQ; zXj|02#O%+uA#8<*9Rx>^H4dNep87W53Y}|PC*yk9Sf7}ZdLLZ%6H>$O2MOK6G@`rM ztI$xcKNqX;rBkY4R-|~s*<~p|+tE3Y!Y=|L_Z#9UYP-hrLm6<3o-rK?vSH!|;<$A{ z!k^$S6uF&~=?huY;eH;L1(gKr+Gq>Er(O!dCtAT-b;N)=Vb0A|S*71C2@zz7O+C5W zHFU)v!`cyXx#yS5sS+y_sGcSb5y>sZzQ&_u>mf+}JewN182;G{SR7D zyEAA>xG?C8vYX&}-UBVunubbO!tH!Pqqe=FEEAy|t5kp#Hl+Fb2ANJIWiez~7{w>L zUOnDHuDxDlw$Judkm%sIP|>p}hItpT$wi9#y-9CtnNhm~{zkYjU9dsy2vw2YWin7~ zE$nnQeiov|X=x;+1)@1_G{S*VVICRauTP_WVZh7%*D?W63X%+Gd+I;gsZ4Qfh^Hs9 zB=zWTa1B~p{Jd;`_Sc;H7j<^oTRuOqp-qhX$z+T_1e;r{wE*O7wnzOdek>GXcFj6t zv{@?`%hoEuT%RRQpd zMJvo6Ums-B=G)JS*3bNEQT)j(5?erqLw>AD`?0Ln)aLllEWcO9wzjT`Z83s6wa{Z% zcc$VY63Gi{JZ?)Pm^E^mHagZt`42J4{Nj*vecI>h?LRDg0JLM{3U|3>GgOoYC*=@n z^gy&{$~YAhMY&u5#0Nz*_+$=ch2rfP$^|SfV zc_e_L2W_`1)f*}=8Kuu`Buuchp>|T+e^v7qx1fQ&c9XVup^=OK=bO#z!{d6Z>84O# zow1}DlEL%t{6_t;rS-M#XArY+s*4)Py04N!4&LERle$8(Q?nELEDQLG?b56XZ z7U}Tsa~hyo^(=;g{YM6>azTN1ZygLxO?wM8(u>Yj?bw#(`knA6NbR3Pi%wGvl~DB5 z_%+>#oPPGKoJ{df&{&X*%P%pzpGo~k+2f07AFUG`j6P@LZtTUL%LU2fmc(8T+sKVi!rv&#ffu<{Ciy%3MH!UH0* zOwW@eN9QMaClk2(PLEmw6-D_2aDsK1ddRj=)cokRR%isSxPZUSFYS()&nNw9yxJ#; z!vZ-eqGN9^I#8e(ZYnu%x4Q?m@do+*L8n%rr+u%C1$4TG0|y){jlQh#KZ@$18GJ-t z`5L%*_UV>1f|ugkh-ZE<&M$K*k>?5H`~(dXi+ck_AN1ax%E5iUAY><97_pyud~%}V zG7I5jS0OviYDK47Z5xDNV5%{*nwj$MHzD13$YpLH*f81OXW@u1eqHa|-hCk$E=C!| zsqJiVB#04CeB@O9Iy>E(F8uhpQsHZ^u4{1Cj43Mylwwu0d!W*%38(f{AL%%G-u*$Z zjk_SqM8m3Eyy9Bh>H9L1mJPqYdixYu#1rXoO(`;@&=~xmI4P$Edx>j!&RzU{R$Z3SQ3BK0OL1xXz#l#zEfp~1 zJD^u5sc1XEtjBU`9=Q;7_b=6t2vNbu5&Hh@Hq&7=rs-2mTxs}4(=Bg*a=VO}Hh;#g z!P)qm3RGP^R(zZJ-uflbq_d$?L2ts%G|WhI!PuP@ny;$U>47MwrVTJ9coM?SzRJ$_ zz*e%(q!B+YsVE_{L+Zk=a%yxRXV2B@tg%UFnR;_-fy5um{M!zWC zT>31A#8Jg{Wu#v3=N7-ynuk``?0Niqm8?Y(oXfF+`+z&RX@*|`sra9aAz14!%`?}0 zzr<)xX^8T=wa;V-#ZTkC2&X`b^!o#M`b5#6;dN^lmUhFsaod`;Z-Qy z?0P1NOG7C%8GhiBXOt>_$(Ns~P-gW)uXS@v-lyoZ<(V|L>+4e+K%2=##P9~w_VHQc zh1FRxt=SoQx#1aPs6RP}>w`-VKoxIdiSk&k9XXvL4Z&_$!D)PlqA$}CqqjsCUcsG#EB zeC=ZIgYr^};57u_)Moyh6p@8%^87_He7SZ*{%21B*IJ}`^08frGJUx5iddV}|v-;!AG`YLov#UUWjn1nKWBJaA6bOf~zA8eC`b1}@Dl(6I#rWrXIacj)c61}a zoi+)}-3Pv>SL1F$+K$|KL)I5h=Lb+|0V9jE9l^~#9fAgc!pH}Ujef1HMy{gR@CB-e zHN2hF&CI8c>43Z%*XLn}}cGTEL11Azi30TizRy46k+`%6t-4iWF`VCe?g=>GU#AjVc}GK1k0LQx58 z*FQ}DcsEfP_j5sHetbKbr=~=D;k-`sK>+r_=8(v&&SW0GCP&PhHcS;Z@5R&XW?vfs ztWRP$hSSw}aTLI;x>Xdi^WEE=&&z&w29*G+e$sUD-SE<6#MH{)MUOds4Pf>ZWzgmge&-5K;>T?iY@P>ylFYw_#1_o*j=7ec+L zU$1Bm>V})4qzrl8I)0tA#P0jzkv@rQOYa}E1-lGF{t-_PE-5Rpa&Q+iPx&{AvIu;v zr+|iEi!dwi2^C_Z7QV|{qR)_ZOZLTwdif*PPXn@t7Mrm8_jRU zfYt%|dvx%A+DE7u7jfZMFu^EeG!>q?pu}OBzKPabtM&UdpGk_i3REBD1d*Pu^(V~t zg62ZCu%M=Udj7s*9#wV1+{>>%&RjZO-R9~!)IIhX_%xRyab~Wap7{VL>3eC-`dU@0bOPc(T0NN3NR@bok2!mjUw+qc6;A*P_2G^K z{0^684;vnxF>NfJJL$Jlr09i+E&2M8_`mapl5#NWHfj(gug88}H|iNBs&E@{lX3PG zz$sW8q^f4kq0BY2IG1uM7v)9QhW;=n>8VH}jjx)k&%h|z_na-lGyQ7w7QeGK_NHDN z&k#i2HRJN2-Hz?E65ocbqq_*M$*j^~+v9>#@nQRuH5ulg>THfzeS})jC*X6mZ`Aim zRIGsdA{zKI<1Y8hx2lgwn~Xo*@kAaqv!SO7s+es2qgEJz`aRf1YXtaB-bH zn?zGJ8g8vULq%to650;3`>S}^<=XjD7CdZ{bsTjp{CCBHqJC2)FUw|)kUE`%@p-|r z$l~%GKx~dI!Gne=inw)2@^OC}ex2kU+#*f+hq1>~GhW_GR336A{r7_h~qYb=}s zW9XA0$Nfh@Ds_ADe%(QQSy9JV;xF+$uL{%uP3qf+mmz{PY*!Y4f=-vWIXaCIfU~mv z4bHlfBzo)NTFh_S|J{5b@D*WCg>OC$%1V6+UMq`|FIrvCXSy|{18^i;G|2xx>99Yu zlXay%^ZPPy*p5p%CA6!vd2DkqwU!l~YccJ%Sgl#lEAe@!rxzjp=L!l`lukfF+`t56 z39(*8DztEUVP|=FW#vP1&hRq_!8>jLyo;CGWXSXoOr2n;Axb8c`i1xe5FrEMXi1hf zI}H?yLDdK1xw?9d(1mOtkPXQK&2=2lV`^37Epy8DDHGY7BvI`XHd zrV3EDF?0*UJwA;y2>v}kNbsG;PAMd9ti72!|9jHK%Pn+XBbXLhpD+_)0Fx!k6w z2J`&uM1vYpyPMBrhm!5V)?&Q$q=HccNra9FQBr!433ZBj2nIyU4=4Nct3BlJm79YJ zhN}+bJs|Qgt7cBk8j(Lt)VxxKXTOJ=F<7U}sl}RcWE`@q8DergQ+0X$#EMC^!atCa zLCJPQ*GJI(;`Ntulyy84ojOnccz(H*H`*L>nvvfjuFlL`*#FQ1NNK%_VYMDVBo1;5 z&r|x+reQIkDnHMwn3R(H*!4CZvN!hT=D~9%+Empw%0vu$=3}^AR_glRx`gQ2hsC(6 zEv)TDPZ4ETykM_p?A!ymyWW-xmu~Ot0qW2=cOF$I?<-{oQ(N>c!<~RS z!13L2Zsyw60>XhzNY_Pb!3!Mkl)qmUN`bD=sa$W=p}rdKbZ8cHx6weeYlCbxcf?;E z@EfZzA_8l!;3uldFudzaOMcr|%}-@Z1q<{Ze0An9-2?zQ(}n#Od`;0)aWk=;yijF3 z9xP9#CgHh`Yo5^{GP5bsdl3I zLF}L13hWFhGNhydum_}#Xs!5z8K2g*&Kj@q^zbOOnhj$f15de_^4pX>>LjUW zE(w-l>qZ*F={&F+dpER_L{?N&3EmDZjb1KB*Tc$8C6%D@rcy=GbD}AsLO+0A*MEB!pUUTZ4a!-@4mwYXf;r%M47NO?b4fm#p)R-Tt zEq2O1<)Cap`s04ByAgb)&lc{CIcRpH`vKw+!_Tu&JEI>~9<#(oxO2{!<7uDweCuhg zHtnUaX&CO?5OhWM&f(Glz7I!mzFeY z_;&ys)SSZ~V~jW9@3B?Mt4`PbvjOLc-TA`gA_C{?$NpFj%iQKN*1#f72}imvha6Qo zyW_Q>!B5MNvUg(E1rb47XHBS^WF_=K{e9$9PJP(xliR%w*XL22;nga-9Lu*4J~=~^ z)xPNEJ9~e7)DG%W{FvjC^P{rFl^c6qbMU#~XEH&*3(qSwS<2Iix?}#E$mtj35Q4$p zId>8rk}NlOVkwdB;~VDD-54n9;j4dR>_#YIN^XoDp_bJG#pe+brIGiI{avzT9@C$2 z^ge#~xrakcY7W!^!;-CH+2c7bW@$Xo1)TThirZNSQffu*HoDU>49jqvZ_cSX+wj(b z+&{b24pXy7=ORsS6Q7~us;n}puB3Z|aHnXmbi4FU9Grjb{O%~~5t!7Xs2E)|#pA}{ z`V&?xlJ<5Bd(S7#yQguDr4BQ3Qc6s67CiMP3SU`NEvVwW zU&8YfyD&Fh7DrnPBSoivqN!Fk$Nte0ou?f4CzH)Fl}x*=iwkNig22E%1)QI{-a9|; z=QGg-5&B5HI?q`WE}yN{+Xv|WnLRk_)feR84G=iND4eDWeKA6C!dbVk)>j!gjb1X$ zK8#L)lEMQKx-C*%X{*Ld42wvJvd+k1fu~#e>dHuD$3^F&JQ_ zBjEm2qKF$bDM6KEd#KK;0EK5H6LB@}x@gika+5&M3J*uP6#8tHK)n2W$ zuZ-L|M%FG+(Cfb`{*kBw8(bMW##sY5 zY(u_s++t3WAjR)KoAAK(G7Y*?klpKQqo6@y?+ zxQ_$m$T-}db=8FobAy_1CwE$S6%^>I_s|TMX7h2o$I^lNyYs_J`M)jh-VSRf7jd83 z$7j0)dLG4ha>-V?>AK;DGd#8XWt+}@Xc@%US3#zDWo^}?QxZA{T$S&#Y{d4-Fn8%f z+_LX>Cn4pTf$lCAni#qRm4v^ObNK|^oG2LByM5}VgOpAs@S%4R(@0548TSF@2MW}HR-`&TBED| zuBq(l!jb#AhrdXJBe<&2>$khDrD5HrTkdg!y^#i#f64cVIF@>JjooV z-v*bh#`MsOeTBEN%U=U~i0I$Q-9d+_4@0|1uYFur_wj@z*)JT~2ijxu=B1dt>Ol9< z{nSiskVJ40WX&F@#2u|VMXtx*`yq^-`8Xa4BZ{8ueylC}d4zf-P*sulBM(5A$QF_C zg0WOI!=r=1c29JtLe*lUfQ2JCjE|!`>2U}(I9Far4iaZRd$eh9Seo zDBCiy3>!Is>ZY<1V%hQJ3 z$f^XJOV|gS>yf#kC3`>ExlpV8Ama2^cZ?rinOAB{en$MiBP7T4_tpJK0kqbs>N?Q z99;`qr~00LsHH6>yJ`}4w>&MNxT!SsdXV8MlD;|$wM0zgcu@`O=d#1*s0GiE5nh86 z-OIio7Zs(hPrt<(<`8&#p50RLTnb5yF@)|N>LTVT2M!7Cacln2_)OFc z^Zit0f@>Zd$t2nP3tkm->)B=@B*6OqSq7&qRE4QkccRSXQ7@82jE< zxRDKf7SfoVQA~CNS!hw*5~(BESM75$hiLcAR8!0?25==Uf&mP-(;Y4O08dV+sB(?* z%!~bE7I5XHrk|ID8|0Kuor|ZN?y`My^Z@h}%9`(<*m(@?k&%s zzPAx68eV#2Jse((TX_>S$c_Je`&2egWxBz-Q~(qmmdgo-{aW?l6bG|>uH8uij@v!Q zxTRs(Ae^7d@_BE~+DoRZ^N;+hFVL5naf%X*t#MK6x~$_)O( z88$)E)o}NEG~qGVk;uE+H+t=l5oDa6W5p~eF$XVDGDQU7%O+wfVtV0^skFqdvp1!7 zGTPkS^lJD^=?Aeh1XR9xX^8OZNbE+Zi5LI=SeYxAyV*VFOE$i(X7(8D}=DhVw8&l$r)FBNK0MKNOS72*Vbsr zHSEyYZ{*~fkGXeo2+dVQHCjZZ!x684NWJ5$Oo>??bn@e3ACWN_+s+cvkT!Tf^N@fB zY$R85u(gPDR-fe)x!jqw`}97(=)GT!xc~Nt4 zHn}qd@ez(VcNUrQCP6R+@i4xg9T9oHbs{b@5Km-Rya)78m`)=t2G38#!GT_zMe0Kb zgPfzxd++Xl*pNR|fKMIhI!;S9r;!S!$vSyl_Lv@29mCTDy_jE&(=`4di?5ETen|y7 z;_*GFX*7X&6-$W!dLw*i&0yabmIS>DvrGjw;?;WO#&Dl6EX<^hRr+RU*=*1kzxi)4 z2W=1-kuX5Voq{bgtwt#W)XZ^pC_U?;ugrk*jw{Mr(KJB+kV_#p{^0V z*5eMO&n=^)Rx`7l!24qY7Q4Hv%vmZE+5DNv$OGPS&+`$t)U}&o3CZ@99KzS)iQ~w< zv5$Hx)%zL>{DeWmZ(k9?ghJ1}UcWN&TyQ$-zem`^_d$AS%(&-F`H{>WHU9o0>V3Pg z3$B($Q~L8HmM!zw$}XD|uf@DtxU3#so#abhUDwkd=6*fde8$@KgOWo;@2Z+$-@X23 zCV0c83Oc!7+W$@l@>C@+3u%Jio*V0*Qww}zltuR8+wXf99-LNcnZ(tPeS%TTHOLQP z*q+(ur+4Kv3q5`L^4l36WaO4krDY;>5obKBjfFqi&1O_&kIPY*mtCesne2H0$FPV- z!nUL1_w~&?I1h|sG<_xw=l4%CR1t02F2zH{-lCdb$W{9HGCiZANurI-^{Y~v_8_T>l1OsFOqQ=)da24% z;`lI@=ofBRKkbUj%C+)mskqZW?KWvD7`D%HMsmbZu6qE$b4}7sve5JPyfRuV$7!^icMGwY~*@Npub?#B_IWV*BaaSUjBzRv^? z9Rj*^Pa|v+K5%8Ge!2n9Q(2!T3SMouD_R1Q9Ej)eVWtLFUgs)G`}fxFAvnKp`S~-} znCL_eUz7FzF zH);~fyzRY9^}2H&sn5WB`1jF7)A#_|f*m?;w$Ow5(IT^NCmc4fzy7|x>H1sRyOyw6 z=CDSL*&J2b1fDz7+R+mt=F<|&m5+t7FDWVd9tR;OW_FK^TpMbcc>g`&QSyx%CRb5uiC29gl(K#(9_6!QI%~xL$4)xkH}ib+WSngu}ITwO5z zWB&dTcK3wa z=67zhHHB{}%V%aym2zW6)2Bu;gn1kWH@t`Irvr+K!mbmaBFD5WBzBcur zE;GoaxLhf;amjrh`ludOqP3R7jyFq7C}cEPs@wE^yhODx*^^=X$}AuE*Uh32g9f}o zy-;r-$I;i{kX`^csm0QylT05J{g%=!lamF0sd9Vm7)0)qVgEWj>L)4#<$dg*f0)`o zH8-Q9j~yZDstz)f$oY+lH5q4G>PPSXI6coN=94AP$VyR9iwz{4KgUqdH+0L_E}El& z3f|{O?b-pNow1vDuN0bZ7HcbvwqNnNETwJrzW^G!#Cl1?Y~xf$jT1PxUvRZ;pQ$KD zu_O!hRubw)7SGn8(Kx|?>9|~$@aTHX{&5VF?Ql4$xiN4z?OZZF(wclaD69g93G_ZH z|6^GGQ$I0$m-Zv9zh5F?Thqy@W^cMd9Y}kyP;gtumQV@Q4NS<%Fv(RK!{@MBn>q*Y zot~}Y$spVuGs%aZgonqak|1_cPQfI}%zhXbc%8w$^OO_Pi4V-?@Z$wdQd*)l?# zZlR;^+EWO7e3}M@bec?(Ev6yz4n29%(K}HyWzC%ClhFx=kCCz-AQNC38JR$;e>+4^ zmTnFbtJ3pnK78xSowEczzx8yJW+N~7d$9j!aQL@R0VJ1R@Q}xdo2t2fQWY0?_Xmx$ zzC&)t*F$-m{iuZUGu7s`KxdT0i|E&(Cl72!ykh{kb3LB>I|8GqWW3GU8Z&y!;Ix^taB+Q(DZcCEn< zrmpN9jaxYE=Q|TIEXn-6)27KRss&FmQg;sUX!zd%HOZHHo~KPObZX`_h0Rinb1R3d zEEePjg|6jf}O~%jQ(n?b;18R*8i`eC#?~iO-jZUjLzou*Zu*m0vcw>mobXIvOl-`?_JvGgavrX|9imi zZSpTO@_#1!udeieCi?${i6Y)>-y=&%=$PQ#fBeT-_vbM&qVyg|=bEe}+Fy$=_k1cC zl`J?qqor`*A-{Ix2rX~2R=Y$c-+$Yh|0OyaOL&ukdOJNc;{N3afBIGV{-fCtb}p57 z8GH99fJ3m)3B8ho?TEG8hsK37tz9KSe=g+ZuqZj{p!TO$`a*k@fk539>>i!R}`X7h%^BXW<|F;1C#fbm>`v2Ji z=y(zlnZWeBjKv?OL$n8&HkFD6ZQQ>&&1wF?!epZR$nsYsg;E9J*wIBi>JtAP-2eKC zkq%gCZ!y33{Z&_r{Vs^NgxuG6D6DGZ+&=c}jApp1G${VXxEF-x^NNI&!~DQw zy2998qoG4Kw!Vv@`P3%~xWL%$^mP5Y!u^TLX4c(b8(<*vEtA@czBlx?^5nTaN9lf9(zPu0g9$f7VA;+vDxhl}E}847t=-lz-IZCV#nnEn zBPueINyyzH<`xkarCJE>2E5mC=n&km{L7Ct%Z^B{3}zfOm-{QCnr*+0=c~x_JAPy} zO%ZR~;7$dX!ihv~Wpyp_rn5Q0?+j{!Bp4?Tb)?}KOCmFj% z#9`gVewP`?T3>0iZE3AJlm)OrBm}s=1DS$8b|CX}QoYYNG6~+D$9pOupv5Wrx+`sV z$>C^8EH_+_PgvGyy?`sK-aZ$=b3>DtUz@`D3KR$Jlosp(yzgpCrZJHB-sbPO^G!4v zNIrz;%dhvwWSOnLeg!WY%a-4bT^O79s9NorxQF(arcr4F%}$yl`ic$>U1`^*?8|}W zTvZ28!LLMRzki(NQ2<|E2Nw58SL2mP-^k#JEL8gnyb;lWh$9TD07>U09?tJ#y1LBi z0S(bDYZQRA1O+LeoXyWeD~VU6UH<{-?Y)b-c=`X>d(W_@)~#)Hi3%bjDk{=Z5Kx+Q z=_o4Fn}C!MkzPaZML-1<0qG?)Y0`V>0YqvbbOHntI)oBBp>rl{@3r>Y@AiB5`g6{8 zetf?SA(Aeo@@rwO_V+320I!4OCA|4({tD(-6XW z!k-`JJYh@7)ykPB3mI+jZ3uB+v=^3cE3n&>LRXpvNdkjpxq()GoUT~=GEbJV1CM@y zQ*f`+{AwseEMH&a3_vhv{mfKCQzkt;DDw3ho@{S458`asdxy03IYqa=2zNsTQ4)nF zK+go{fUx0w&_cmI%Pj=tbCP{%q|}5%z0+!c9|KRj+e*j(^yl&*>C^7mIWOwwjAv$9 zg8=rM0Qz@6{EuVr8K>%|)%vsXiXWQelNXZWqGHAxjVE*rPL3vx0E8+)r^b18g}A)j za&&w+@nAr49}};}s$a8%JoI|PJGEr7{*m-kjz%rattf55{2c-~1&x*$^96zD>E>#z zoQ}@uCMF}S+ZK*?#hi{%-PCCCkq{}>rf{84Q1yKo0`mcM0Xok3`cp%&YDg$3)}Wt> zAyVM+f?tVB+(bB$^n`dvXA6i+SsEpBl&kfl{#{f!F!szdb^W$ zRi+{C>A%D9{|t6gnTYH~jJjT!<$Sw{RODoJj~&}TKr>o5z9`TYoP*ce-Xf>twdjlm zBWNkH&aPOGH5uVIt#o9VVP{i0YSF#d7GoJD!0Z#w9jJ-FeQ{2-S2Q~koO3&ix&cw!Xce1%=70E5~+M==x zc)2zTLiEM85YHu%Q5uUeZgM}G|2Y%bA(DRVb0&OB3m_h8yko=9%q-)iMWggwgrV}u@9QZqeIC?h zmF?n{PAN|Hu>N!^dvi`3yLUA+Qz+`B?LEcdmZs^Swi(3lC+ci@h>^vu3yGCM=WpFf z=l5E&PQ?tCKIiv;TgUWE)YV(*3Z0eN z@o@qeq|?d3&tE*^FU|)NbuE`o@to2WzSMI2efu*#sb`ch^P!~*p%kdT&cQa`0x*AOrV3yX9sbSf(V)4fE=gyH@FJxDMC17X(&$w zYYl(?P&0Ry<6jRcI}cHJf)EV+_>mE&gqeS(;d2ErcF<8#vzA^we3ZaR{HuJ*Po0W= z07&~Yv&#bY9p~=%!$HU!k{G7gl@(6+l@2o*p%SmThkD6L^sjHU-@d8F%FD}(jfsfZ zETYW44vOjEbp`hb1_1={WKG$`MxUm#vUL0(oq7u|YVMeSTJ zg~=df*{2IY)ROlzGS*clzR{^9CrvUDU5b+PyRQ(7c;9f+jdBI;;^DQBNE$(Puem=+ z-rtDkl-{g2`fN6}oy4Pk$Bz~Joy}lM5XCwvD6Xpn&483;%--k}+kKS~*3Z)FPMEsdV(lJg3!2?c zEQ)4pQ@O@J5JKEux7&&as5;lV49XYn-v?xMQ_Pna1lPB>q0}yxsKQ&YT;i_95I$3v zlrL(;t?z9{L{y_@I+jK0fc-0FD{j%b{AR^SWnpO#REcGw>7tUmT=~<0WkLO4w(RV8 z?l=rde}~^ltGzJ}=*!r#Bq&n$acN{5i>vXntBRWQ+Gj!NoCpt_;btVjRbnqi{u9$s z-M!H1^rkB)?fhI2!^AzUBCU$tg1jdJZ4``_1Q}DPrdJoA;@z+|JHyJtB$Fdb3PjYY z4*;bfCxM>IpEr>_ULn&daj2jbH~M(Z#@o?g9j04BXGFPuL%(fhnUO{*SF0eQ<8}w^ zd#eUZQrh(k*Mdm>>JN82&WDLVz@QjbM+CJ`QXnoRlgOnm!_%W_g?N5fc)m`VGBBcx z`9Lf~IZ4#v8KH19kYA;O-`>WB2!ioC^uFG6VB03j$h{-_&C{+-Id$5z)OlG;FF7XR zVS0~fH$L*u4)OH)L0%r-%94$)8G9S0sB@jRgt9inF6{uUa2+X{rhM8GmHFP zw)(bK08Qh2$2s?K&%Lh*8CVgyQn^3Rvp0I2p5ZzgZoVA&bc_3IdCQg`#13?vo*Uo& zBJ8=ShK!w<`zlq7+oolT(IqBTmkU=#{2qo$?LYyihsk)tB}7cy~-!aKD*C1 zxGA%5ZSPnOWOeh+Ax=98Qi_pMVu(kA7Esm)LwU951Td(|uB2Lri>=1^aa{6p{fJ!K z!cpjEOyr;JjJ&RNtcJ&Nx2tz-5sQ*=$m(s+1T4( zIWSeB3rAMu(O)E~s$$RB_=Tm)L9K#am3?c9R>LfS|K4m5AiP}G;#yray>NVefWeNh zZ&-LiNFJf{=~=AiSh@RWky*5Iq9g*p%&79&(=^#Xw9O>~fTW@<&Vl6dmDt$5)<@>j zQX+F1Gu|c``eO;+`84}#z#%vb6!Eu6gcDJ+S>&wbA z#Ei81KPCToumBm1EaQ+E$~n6Sy2>#?tu^0GXvoG*VD}fwzXXnXz&-zoC-kHMYwrW8>fAlK~1 zI2MA7*`~0soDgYUO)rf1ndo-yq|Q#}1UT{tz{SaZESul=FcV$SK{|EiK`BJpLKvwA zW=Qe+FIune4@gkFL?P)Xq$HPaJQqxgcW~+m1Ny=tK1JsNQl7RB^JR2ov#}Fs?=#O{ zdWbLne&t7HD{pK-SciRc;L9&jH%G(aYLa_yrM1I#TD?*qlY!jLQ1>&u>U$fdH^t-g zK$Pa+ID{nOqv53HHW9(TJK0VF?_CAYUudCobYiRo+Aq08;4bXr_~cm&URUVWxZv0U z0mvEkjQ|ERcb(;!oVEGyd{PA^&*m)#OisA!6Uq1^9#8XvviBx(*+1$QIB;+W ziC;jZe*R=pwT*YkZ&Evtbtv1lniVD>S=L*hosQu?YBY>$4XeYp{PIFAmQ?sBWUEdX z`|9%qAj8jKHa$VPK2^JQbM>C|caNbIVZL#q6I=#BNL{zyZ-sd%< z_P7^s_2!!#P!-fEsHfAAewff~{l|&w7kBM(shKO`^A#YSfk_RRAxr#t`Av}(a|t3a ztXefj&!X6_DuaLCeE@!ZSXX;Lf@j4Oegnrs^`~F>3*5?HE**b0L{9$U>&Z@Bb}|bH zO0AikwEk(0_SirPbam0qEQS*DNkFx=Hmio<1;Lkm}rp>6g-AjoepqG4#lgH>}5Sw;bA=?o;k& ziTAKBN&Jp+!noy$mRRr_S7$T|qLwI7e98+fV7(`y0}xncntYzehZtui+X||x9m@Wh ze7%)R1%{#bZw2A`nn^$M%9#b9h4G~(h++NHm|@?*kMcm;6Z7G-Pjn_CMl9@>ZS+TS z+Lu`i^*Z0Tr zn{g)_o23fKSOsoTZ7nf{=Qe;I1eg`g4FFD2uNK0>L=^zbN0Jl+=e&{IarAENCY$l92iiJ57cnS7P(qO`ft$}2^VD-}o7$1ckJr(` zG^{V6`Qz1c=k`DItP++-Bkn1)q=@+5o6PA+ebOG>K?) zT{-hMy9!p>XN#GK)d#lvKNgco^bBpJoLJv1N{Ubi3A}vHxDj=O^2WH7;>Uv-T?HH+_Bjy?tQ39j-q-T@k)gidQ3Yx zB4QeiqEC|JEXp|d8RIlweD|a=PN&RdR;~?*9Ib3BW@kJ53l!M?0*VIRKbK^oX$A~1 z2oZK17Vooc%m40p<(|koCMa;f6a8*R={ zv7h-!>AFkX4lzWJoo7imJ7#_NKW?|r%*+MLuEhdV{Lq`_gTz8b@wuA0?e8~cyiE32 zop9q%oaW<_#9XU22L^;Ygt5nyVm9x}W`VT#mY2!DLjIC_;geod-%feG=X|kVklO7D z3XP=u_q0d7yWi`+z_q2A?)kqJXq^9O#S^QHj8%7n4X^pcvC?GdM?DY|6U&|d1l+?b zstmqAJo#UpP|hWms7}r5-|yfzqD&^cc^q@5LiSZS$FguLqsR7xGqj0IMZv~=E1?f} zYSx{+z=43so;Ub-m0>bZXd{Wj>rjS-aT)!u1T09=(=ux4z2L5=4o(-vZ<%!bQz^Uhtdql z9#6)FA4|Herxtmw*6g_WqIa*vZ>F4%9;?RRG@F-z=$5%89UV%6tJfM7-EWy`HB4>; zy$w152W)~Xy|vkzxYpV8*@v|7E#dQ$M2b!Luh>Fq#mmJ}>WY}#q94vc4pn`kj%W_V zgzGpC$q7>pR;FN;8=X&Bexa(E%RSQqhU-I*<_xA>RCIY#(jXgva1O;vS zM>Ou){-#_DE0_Z!Qt!DMO7TR+!pk@Rv|rwPk9u`Z>^B!quZ||3$P&nPFm*Z_!l@&4 z`aoc#@3YgbUS>)Tt`=davl;1aD9>a#ZPQy5E9+)yUoH|~(}Ik%3+@TTr5Ck<$*wCKfh4)TVISjkOpstDdXjY}7G>M&v1% zUu+|1ys;T|a{Sac=w>P3hd-V&=?9muJlU-;R)l>#wx%6N)3sBL`3+@1|@(sZ-7cJ^+&BK*=7;C_{6SgwM zj3N;N)j9!z+7aS>+`+%x_-o2u!c%hE;hv#_rt^mj5BV>i!SPBc(1VVSXr-?c!+?Sp zUwbH&L-Y0li$;#mv4=x*MeKqoR!jyQ{jkGf`HS{KZn}**S{vk3B7Qi?oF(U)7!|dM zMkRf7>xs=%`}b0af1b2&U;LqFRQf-w8KGy1$j^G|7p7Tatrr`P9_An!PpnY6_cbFT z@83;xGP)fAMjaAx^aR4ah;w*My)2M5u1S`bmO@P;Eahw#(y)BW@|PQcxrPBGb3heR zG~k*?5#vtB(ftS=kKp(J1nTBw8|w%hkW(#8EhL2#=!!pF2x0@sifCAYo}8s6-Xvnv zgVh=h1G$K-weZqvZtgv$h^Jf{}D;C#}WZw^%Z8LTODTpn`H744}ke1%?HvwQRWG$+e~K2n-q^f%<-Rh_WO_b&%|sU ziH^^IKaC#W9sxjEuj2`d2@Z{*zqgwaP8S?Z>M%{({FEX6+Amz{zx|z0225#-i5b6N6!6(g_w80S zW94@&hn~`Z`?soxUtP|pCx9a5)46EY-`B9SNLpUr*&-_DA&yp9UP}u`)>mxkUA;cu z*I!_@uu0b3{zuUIf4C_2i)XCrxg>?(Gr*rk(!d$Zho3qeKZgg}&<^ElM*?DF^Uqi@ zWc#nK=3no<)d7S7ui;|bzca?Eie!V|zp7^)sx17s3s@%d`cR*beR2@?*PZ*-ZvOMV zYwEx^g>&BgRnGe75&D<^ALR_(V&?(<-y{YB&wCfpM38noz59m+{>2&p>KdhWsF)sQ z{l9w)ei@~bzx~G&N#~OdD#``#aQ937;T8YQ(x%k`W0~HB@v;B%*ZVpP2x`Ztt!~ee-WF6!39zl0U!dzg!Yu1crQYMc6R-ZK*zu5EAeE!*g z*>}Ian{Qg<_Uej4{^nE8P9OqGCh#dlznwkG?qq{`8fHd2q$=g?Fw!7Wh3*@Q) zTFL+AmEVsu+kGsB{M)vxc9#46-*5O|*7WSW`M<05zc0}5zx~H5t+%cKK^WFYN>j*o z{ANJ?=X`~YM<3f?$p1YX4$}0?c)j|%%BOx~zP8kObTd3~c`%0yU|zqTsilDQJJaBI z!J5O=AJR0C*B{a}@NGWeyGkb&8UITF_m8__g8WsX)~?2-2M7A`Cs>7%Q#<8D32pqD z0P+XR7vOI=fxVtbg4u(EgU^I(fh(vrg_whysy9>L;x2~-2lDQ{8~qhb`X7ttS9Obh zK;glCR@Rq*Tw_Ak!C_8c7?)Sn5J?NEmDS4Ek6wOlaZ?ef_me#I`sBs84=#0gTmaKf$c+{3?>1q@b<)KA9H|NbkLHcvPm73*Y}Vw8 z-gLVolhbIg_P35Cc6-16FE<}dPif^u{9cAvyH=%hrW!#X?5yH@iLnPg8YV{o@|q}M7y+_W#e;Q?N@cWAK_+A^IikcU@Mr;1WD?Kc z+?6}z2e+!N_i%|-Q^wXK_;A62SLq|LKHz)&rrq{tnWOU;$So#SU0h-^GBRF@Wlwx% z`w|XF32RY(r;GVw&jpFm-y=l;7|Dxwj-yg)%x4~%ROksjCbIxH4Ulj3bwf4=hlNJH z0!!szLp@8o5+qar5gQK&9f@3DZZ8$OtjKdv84#$yK^=P383u zNcI^eU5x1!{a3#VTV-*pA=@}(miTrKRH~P zugTLYa-OKP9<}^5USNM}xa71Cu-Fbex2P0=jMvL~P&v#h7hwI51dL#m&~l`<>{=yv zwje-&Zf5Hh#ukD^$7X0Q0YA4*NZ-?2G^ijvkSHMU?s@ zZ%VV)@Yz`?^;@9~$hPKajZNY>;Y`<-mCHY)kizU)bMCIQOBN;ef6KqA*dJSLgH0;_jN% z8`ou2(E{=19r168<(BdMG9g-f%N)M0X5ag~)WV*aRaX;E0$XTrrekWnqEIRU8Vq+1 z-@DwkJ^%*eS*t33p?QFRJlLFgvfHYM0riar47Rd3KL&JiW*<|ss!d0Dok#vw`YSz3 z8MI7owCw_@F?*7lo^R0#?VUF|*%&_5UC9F0wu2mHU>mF3pBa+uGygoEAL8ff)h`?Q zJ4?ESJ>AooWLapCby|B^Iqp_5f$GB4d#;wsEhJ0GZ>QmYC=`{H)rQb|rU+O@EyYl6 zOVRY&BNzEIT#J~kDLJ4z#(3(j;t3SBeO(*Lwv>F0h|y|qS^<4tPQJp^3HzS&_(I}w zKx}~oef<8t?a{`n-0+iFkD7mq+_Gr-T6AcZz67t;9Et{Xg&|iS)s(AM2^g#Tip&f~ zW&+9%+i35@T?83VgQ?kEUuqWTf)6X}1tL=)=~-|;LyM-S?#IPKnv6oTyXXbygJ z=XZ6XU3;xG!3t={jSgX^C}P5h|GoA_P6;XHL_@v53ey~{8`7^8x&93{r~R z)$96z?X+=d7qZBZkgscYx3?D`0@FOp_jgy16s&N534&HPMa?@5-u(*8{!b7iDnWX@ z=T2nQtG;PGAR?RB7As4O8_Y2x>6;7p*O(Bkm@xU|v>OFr^CQg@H7;M{%ND8+Qxs41 zX&&=eZi{SQGV4gY3{$o+1zJ+QiKP-{3H-JsPjA-6>VE#EqK;uDa0pZ=E%Ir5dl1SG zFcF-iHICvkwsQR)-Iw6lXe#jSuy;AmsAeZQ4<+ID2qEIrKCuL6h0s?v5*U3?x5F*4v)vT| zh=88KWjawWB}YbPdle4VoxK}hm@pL>X)!VUa{IJn+I+b5+OEP=@u4|qzbH9TITUAnH#o&OL ztp=ijT(fOkqw-)p=d518KyL!&pwYJ7d_-=8g?r-_`?JD41Pf;Bl~a8W#z{R+s(SpS zQ!2bGG-Qv7;#h$XL-a5Uez?z-iaq>u2`C>NR<>5a!rt6|iYNUy>Ndy)w*&QL$pVdI*~gmA}T z-!T++9@RA}TyczUe0{#>{^?h!gbkPxxoTI5S+?MEBwrKiwMA0A7l|3LWTG0^vhzHs zF}HTgJ4_oBT3y~ybuI@va!n*Gggy{%bHcKCqM!!}EASjUH>(#pQfOPOf2b#V*b7{?UTDFMhDb|r1haR@yqcAxImE}J)T$Ij`U?i3+ZP&u^LzBx?GSx zHy?)!tS%f|?PWuW-yPgajDg^U96XoZR-sE=SnU>;Q*`D-x6i;#w^Ng zHMKco-IhEhZ4@e-P~?(5qVBDk&I0kg@m}lj2dDy8M{f-tH>=icz4}51RKWw3kN~3v z-|F(69s5S=BKHQXPDT0w7_5jRiB7a`#{jLb-NUe2a7fuOQ9$ar~2D0_wB`9yGoVL&$zxI~@7b5o~wt=n8Rgmo+I zMmJ$;R0;5=o_L~i_T=RXk z?E!FaoX4TK$eaJ$m{gNwWXTAR>=G^xs<&Y_OzaAMz=XELS#c9{hMB{-ySN+h$9{DRbgg zU%6~Z3Z}m>$@j&8Dk@RTHF?W5IAubnJL!Hn2_0JMm0;(ua+=Fb*HC`EVy>$ZK${`1 z&#t#4ay9ctHV=b}%UUDd+doi&O_#lnu{_q2MO`35D4>9xuhL}joV^Pm#XqL+ z{3lX;EmK;bq}6M0L&}>DP_)4gF{4H_!t&8lp_0uEp9RttZj;mU^?EOcFt2&92ZO%J zo>x30&t!LSw=5i63?Lg3Ch*ia1h)v7cw1_WaCiB0Q5`q-^ijdc!8Ez@SgD|yP|76P zQbMz-5S7GyJ-Er4tOlH?rL^DtU1K5;nYuNPjx^p$sIYYe%41fDHHW@`<=0SsQq=4Y z@a%jV=NRY4|LR3rZ?W}y~}6Z&LolxNe$}@ohUbf z@zk&9zsga6E(F2cs~mR;thKfB=XXRc7u8$mz8_!mh)y|O#%>~t8aj%QGYiif+B>83 zo;A#k*XwEHdf`cjm zc;9tH!uCgUns&+=qJ4i@Hscb=wV7*on=+K~?gI3fq?Ykvdf63y$B8ecZTs|vxDlVW z_PJQlja=R^-&^;`q&y0lQ-3v)ZLQ^eYnqfn}WanW3_@ z3(205goSZE25#RU_RVupsZbY+g@xQ6LGMtUU>Gg0zPftuVS@MGSNlx_q@mVCc31qV zZPf`4cEe7L(!fnF>qKBeV!TAgvwArcJ?>@Ldc(^%ps3(nqD@jtVkkWt(R(*wqM|fl zxj0PPopNubtYKd4APY)=2+GYH-AMMeYhEfZj5tY7JAGW zbKJ8Dl=h4eWETcMlCPA2ef3t5aX0WXH}!bKLWsS_-Bxb_YX6iD*^~>CgYmlqA;o^Y zqsSGm`$@NtHxuiPfvzwP7h6UGuA5%w`}o2lc`hGn5-lXc_+z+8TNrgKTPei^;iQ!~ zNpWSR>0YOki=?^FY?J3KoTROz-vlwCW%d|5Oe^XpeI4XydQCdD>f(G4m`Nkci+aOE zpz&wo$;=V5_rZ!_lHiilS{l)uU~vnYkvuhs<lVy?w>NN8Oo2F!2Il~i zI_JxYJ)NBqvTYJLM__u9#%z}t9wg8cd0M;ow0cIRQr<2+gHZi#=8mXSG1O^#<2t#; zN^@ApDbOx^xPEe6YRt=!FHfrg)^mA=OtQWI zR$ZWQ2TEu%Vx(ivP7>{hatF)F?JlVJh89*GojxVLKS~J=A)XQ6-*!9X7igq}zKSck zfCaA!25bQ-ll}RNf{!BJza!=^d|j=sPAk+!aCH=LM)Yo?vBR8Pieqah6oI?tgqr@yUz)rbAn; zq!+BrSk-Q<-ZLy8RLfm8QVAa66|frndHk-A(_XNzT1EKrx#yV7Cr+gKa*Rqa)GDAX z@1}BPMQq)LdV~X}xpH}yVCbc5X<0(944%QHY^N0+2SXYF{h=E;8R5!#FsDt;w{ijN zE}HJ=GnxB@h*rqj$y6fFMru#s7Kd0vkH94FV|TNJKBKgyMMdsg94`nilhF;wAUxbm zaeZ#w+qvj<&NtdSl%-Fv-%?IGhy)7861@*62wTVN-Jb3{y`!3nog*d9sQJ92dhTUm z>-HVL>Kq7+X60L%vYT&Df)QqQ&|(0n_`(>K#P}Yr61+gVl|J>f;=PqB5U{(Cm@oAy zlr|#*T(525&4t<$Epps;AI{g&sQkn&3~Pug%Wz*c9^m9+ZH2b zP+F5=!zp~^X00B1lm!00#_X`3ZIm7a-b65H(cV~BR*U~&DHc)stqM-uz(Rl3Tx9V= zN=~L+f|S*^JKx;r4t$7embhD9Xk^mpjXFPuCg-k`5m^TQ(R&e2nu1BI| zh5(qMQ)yeTn8G{Y`PkY3%wd@^c*#?rVzKMNl)6Eos0QkmHi%7h8PI{qjI$yiuikWD z!kJk+VtokpA$KIZ@PVC2>oc#gJ-rW@WqO3vMoQeyzw=LF-lF1+;zx?>!4KyVK}6F} zzXX)-UGJTX+cr}SXxJpv{gP#yPi8S$Ojy zMVzcQi*HvAZ{bN6DncLd+a!2P%qxk^-KuN(fV8TeADf5#Rx{)fNi@@2GP|uE=DzH< zg~SQ%BRKYaTxl8CoCAt%XfJn;xJXb9?2d2koVaxgLYBo=%`vrW5K*&nU54+=Mc3=h z#s>J6B&$O4XnR(c5ijNX$z@AD4}o?4t?^K(#yC`?Lu4^zydG9IBWBxbf#0~>_F{{s zx9~w!B`({dy%vJDFU+wqHZ!X}9(3@YmGI$b9dKB*`7UXpwD!6@lsaH^X@`M_@w~Vh;Ze+8gs7QME8KYnnxm6QB5C9;$CgVF2{tB;_!?rYruvL8=*ESP zhpej493og=MsR+#sxoNdY zXH9kTw=h+4TsYS#Gb5+mXEy3+KNZkWas+df_fz9y((9KQI~ub?I@49WpNbpbl1+AU zZw!#9Uf3(Lu0WIzn8ZJ^@BFU(K76|p5yu{H;}Ti8EMZGWC0BS(@MSw8M3S6fM^=dN7=1AnpJ}n<;+05~22Ml=)sEbp^M@aoL8bS>QLM9e)V?on ztMJ*DSp*dgsaU5K zKCfHuvDv|vmoh=fTWZy_jnttPaI*=eG>oRP8FK8H)6TT{Vo){mc7E$r3*x@@Fsn!# zp1scbQZZq>G=GkCivV@xd70O0_w;C7i?IrSKzmq>xVY5bHS9+cGU4I_cAj5=Lj_LO z+oUQqb*-iCCn{_jr}l@yr@O9t&I>h1Z&QZex{SdIEpO1-eHql3L}uGnw2C~t^YTy) zctH!h_b{)YW0P&C$5OkRGmK@Tn*l_A(v$JQjkdM;S4nO^N*ue~wQLu^C9WV&yKNdB zuWhuH2l-{>6;`p>JZE9Ji?SwOS!*~w>B7t$*J{z()XX4j2QHl3yV6zafatmr={gqq z_G+1?rV!fNC~m@{Qu3EmN;y2D%Hx-E)QZU9(%CodW#WHY-gZmd0Ay3Ss`X*_gdLqOPPynu z!ngu`WVe4yTQfcBPIIT6=W4YlR!H#v)v&SQPx&YOG;c3{@!rLxXSeedK=AMdxcgjX zz*WionyH$3vLgmV1v}+&pXD#{-HcqmB?Y_!dChS=gn|1e4=PX-k5+!(VPy^;f!lVxbynOUHOu0Lcq0yA;|iMS z6Kuq*%(Cw}m8QcRw*?SkHn>{+w4lUe&BaOob8V0n>8p?J4=0cu13%jm))h!#b8I{( zH?`qQ`3FJRxh++9kDTw}RLS={@OE{4V0))&upZlfron!;>YPG6hVSHFc@nsDoi9pz z>HU4F`zs{aR|^rcb=`q%SW9P#lSqo{`^HKnl;+0hGEl2q$Dt@BcdD61KH4O2xX?qb z3Q?5BXkPl;g1^D$?k*dusfaTBOFSZQZ}pmQjdiTgbl}0g)dD_C&$;CmVah^h0q6Ct z*Rc7-uqTh|n&1S5xei%^VGZu-FdI?1je?dTuF~y&z+OZX?CQoVWfM{nc_{=R#<8AD zfx7cu0P+1x?vOm!${(=uW&4#KM>O52`UsL|Ad8pK7NMd)N2&o@mb;Y^jnZsAjJL$T zS@lS`p}4ZS8a@#AYYF#ZsJXY==PS)Z;B%?gL6I|Ky{&Jf-43xzw3q2R*;@PNu z{NV$l2Ap}dT*w_y=YmN8YR{N}J@JTOL)Y66ebl8YA|0pvzK#F zzBPv9_OzkycPo;yc={EuH~7rEU~u)ZDDmv!{v_oU7VPAru7-P&Q_W)RLAZG~E*|4p zS7$6=|FeWGG2%UViP<1VBl!pS#B5q+)RVyNaM^k`m1O8_Z`x7m75i45SIX{}BYRk7 zL^mw48sl#FqjSXBtu|HT+4SCTQc~~B(nUb0M>yT5DPy9%x#A0|tmRUEs4MbKUb_BC zyVFo*;oWw)@|_`n6S~_L9rD^8%qk<-+Jr2oO+-4|VPho-7Ynecyu@DWcB?5|F7*C|kM=hpY$MN5pde|#FLASf_l6Ja|lMDiOC{j^*bNb96x-=wA>eNgj2 zQEJdVHQ04lfjFuE{&6Pv#w7&b;GO=B{R&`}H zgj%WZJ{FX3Q>BhJREDT}M2Zv!4KjEl_QQ_1Qsj2cq)wmDS1^C(u6bFptD8qCM(LRq zh+hxXw6v|ANrs+&qv94qv$f`zPv@;HcW17AUTR>ib;Wo?T6k#^ZaKRl618$L`=OOu zSl*SpW9wvK$;yE*6D}A@rKd|>&~vQ94hAE>ghMICHl|y7byLn3nrTn=n-&f*RG z1@789>c`?U+mTzj7h?@vTEZ!fY^&$cI$U~IbxWE>T^7&X*gaYhv5XGi{EW?<+s_Yv zm8FjyDs^c5Kn2y~61GsEf8d{j7gv2JhA#%~;53v~Obct~$ChLc zSH+rHM}=_fGE!Q{!>rrp{sTM0zk)_bHAMEo$B_2TpsEd4dJ`Kg2 zLDg;Qa4|V|(A&kCN+Nwm?A}M$TUofZgx=ILv5uNQ|Efag>93^d=9;`WG|ZpJYqiYC zEm6A?(4mJp%34wYAL&;hJ>W#796!c=PtPZz*!DY?_+s@v+$#n`(VvGX9k@hJG}s91 zrY6%RZ43yTK+J%$NDf5(ikB9GrsKA2J5ql7V6O%R&pPOgl>*n}3M79+cJfL!tieBN z{zxT^e!8A;r}?rmTZ+?BqvIMbJEgD?W|d-|Sa3|I>f!RyOR>1=U|Guy>f%t*X2AF| z%eG{hUUK8^)84w^-*{3M2bk0P+C!gVp;3mV6VGGyV?ZOrFeWd%fiS@P8}o)jcXL}GMRl?%-<920 z6#HD@L5TawY_CW#gRws5;hSgUBtJUOJzn$dN4x=g*qEYcv&XbkuEDlYL%}mrO4JD9 z33-K|=t1X6h2TVE_5p1q--i#K>0aBpG#%D%$U75W~Y%@~KyNQ0*< zjZ~qf9MsWGtf;n+^5eH$J=>Y`copl-T%fQ#yo*V-a(`$nHFyy_n=+>FEUj!m zRI5N--5=;u(-kRc-02q2y+1NjY?)nb!#F`VNxWe%#CJb5^O(h0%7l93l1bt<3CZj4 zItnDO{{}Y(8n(%dmD=bzEJ7BVHQ-Ax;wT>4{(K!5`mUK z+d0h?-LIKe-oa1AslRJ5RQ2G+MonsNuAo*=?hQo7I`26~CyRXe;uP`m(ucAi>MtID zPcCN+?C*rssaXt6Jk#JDDw^*|nPrr`lQms|=+OQopQSZG%_IXFV}V{8`uKAwG?#47 zSi>VK+vx$b&W@nd=WJDYDv5{`V?r?RI_;7K6`S(*vM%J1X&`F-H6wG!OIM3TQJFm= zFyHz*wI0;yXDw22R{m)rNP9DrN^J6n^O2N`bcTr(uO)q{ip{Hqe6+Em#SN57*i~Mu zc-Zk2Tbe>s9o23MZ_k@6BQzHKb1?;&ih0W+jOU8F_tFS6iSnnk1gB!=s}jXyMwRph z%@iN~SA9F>xM>R-LcRBg6r(I;T9~n7B5+^@REAB);Fqw~e z4EIkn-|7}F*qa79Ir6$I)ICXq;cE^OmUB}^bLl`owKP*CmdQXm{69ULm%%6vWsaSl zN3!9s-v+njX-IlMjhU^JJpDl&3pMW&xF_T z+H{>!OI%5oYf-&cSO@m>H~7d%B89qm0TgTSK=$GPMgwEEujqpYcmU9h*&TTNPHFB6-|PjKn3z;?Oo*=}Iy!d?Pfd=?%2 z>Yv7ZnN)&ChEBFC%tCZ4YR0VEmKFR+XPPnWB&9yp^RbOhdGFJng4<&#wOpr9I4Rt##SmA>B<({k8Is;--8_*?IPY=I;s+RCH(RJ^)xk3O)Zlod$5;6tf=4*VW9ltW z`}CR{I?=I?K7Ld*>Hu>xEUZZvHiA&sT6Q0NWcWNWw%!`IwBO@t@L-J6>>g#C-Qb5? z;6lE0i^sKi)#EbV?LM#)k6fAThK9Pe5A(&F z6lV%-9J;9BZY~b%mS}GL`9u8B0w?&=qo8j*`8uC`k9US~k%^HZwQDEJLOn4w%Uym= z+H_STTHmhO93_+IX~U=IhU7U4ULXH}T{I?YR`J;!So#9d*SW`klUr+?YV@JSwUW{v z%%KmvNttFpOb-%GoTcCnYyTl^UNNMlMEPp;t+_3W)=R?(it@gX%i5ng>+Ez%7ihIX zk#1i94`1&U)l?sK{fa0k(iEjg?*h`1UIe6<&^ts0L`vwr1d%3!)IjJ+??hUV7DQ>G z_ZH~{44pve<>Yz4?>$#%oV$!%>@oJ(d+fE={LQ)kQwVe6$2`I^U^8TNb$q=1#w=vu ztF*Oc<;MZu2($7{CHnOuG6%@4NG%7vEnDB>U8Jco%C+9!2V-x_^~`U6+HQZzXH(v% zo}^yBo82xhH6+(-N}NJrC!}b1^F zKFU_9RQ)6i`;8Qyv%G3*Q!xIpH|td5XY`^3n^_IAL2zV(33D;1|owb+~Y}7M-0` z-;4?2sz$>2c&Ch@JQurlKg8byQRGGBKv4c2JE&p5(+slEDxrj-I=R1ECRB~6;B=sG zD2jwoZqHdZo2@Q}S~T)oDFN9%{FY&zH|F*hSCA^)r2K5aD}H|drR@~=qIsqnVr{xS>BjTA=5<5WU8Px9dUQD{ zt8eG?t3zdJjzW=tpUtkLlpT@mru|#7!APEtzfPp6W4FZ>rQfebj;Yk`O93-qWn*$e zA%d0&ocUTI)|i{*NhzYD9{bcl6|x!yzz?&55AB00a%?B99g%OVDX@a-6)=Ok9C|O5*VoEa~!$C-eIWO}^y(*U6&V zA0@Pk^k%suPYkECZVuL|03`|9UzGbzflyrqW+#+So}-c(%XW^%oSyM03g@o;4jk++aXb)VHTwH z$zO$?s_M%uY>Tq-E>9C5@_}NRk zmEvld<`K`tw2;&GhAoh*Q(WNg_PikdF{^0$zF*A#{UfJvX=bkJkvb>lhRTk98YS}c zZ*f?=td@5Y)xV5y<#h0xxA%}L#f;$|dqlC#oB-&bo8}w`#gp8Br$-y*Tjdwwopz|R zWDTDmA{Egpb=E$o@Ebc0xp0l&QdgfHHO@v`18q9Ac@$vXc^*`@A500ykh8;IY>STH zXNmn0wn(lXOUp{dYRyG3#M2d{^66Zh}p)vu1aXyG$k1^9Lhdb8qhYkzw~%+yyy>Z2pQlNdhUMH>N- zyB>5RMs3ACG%2WrH4BiHrF^hYF*Xfpt@~i!mu6PwUKk@A%>*{Wopsz=@75iW%OM6u z!bQuzD8vm+LFPw_UH%lr2rv82^KhFyntOAe>@QVZjb0uppW>S5>l%y)9rp*S1-no# z&-1?z>eWa|tKMrrZ4HQI!lbx~FDL zdNX6aZooCjSi&aM2dsDk3zb_G<%vS}?OWj(;VN@p<6lEEfAO}2#P&B(;z zEFn}jGj{1YG;iAlyCH(bxqHxjYfZLq zE=a+(;+ON@U-HHy75=?H&==g&*w&*{vOO9|cr3!i7uudpL86_p8ZH_Re}?r84A89T z$c=Hvp*c7GiBwz$NIs5g0o-3}(Usg~RIm@3_sM6XWDOUWmGFFxW+BI@rv02**w(J0 z5(!MId=_1*oBcr$zKaf()B7~irw-)J*vX=3v>B+HyI!{RU_a1iQ@)V}1zx;5rq(#0 zO&MC;$$qlf_Jev)YJ%+`uzX2GL=FeP+c=k75F)}u!yI!w^Dw~1(~qp+A6h~LxjzqB z)bL=;ek-^%;cHsbJP6?0&O=l@%V^*v4iBJY4)plwPGQs9eyBlscU>8D713#Ax82FQ z-esCChCh#em7CQO$@4}YC8TKQm8o4=$NvJ_zk%4>&9J}7Y#kDc{NW^rwf&mokZFb% zcQkdQcmMog&eiMvHy+1$-^*WAdz_2cxa9psz`B;m2Ze@c|9JGe*aJ1hk2gd?loxa_ z-#>Z!rmT}4SrnI>M;`nV==+#6_d<0g;cPq>w5~o8#R>Gl7RO>I!wRcPu@5=d!V`wX z8IzN2l(vvxH(Q93qXaXGs%{iTO`V$bHq5N~ky79J`%7lKa*!!=@E%xoF${7HKOJ?- zf%xE7Ao+Q&eWK!T@5){0Eh?JM32dv}V!cq;hM~%;wEZs~8&muvR-v*))~H#1YJ(RF zVp1@E!H_eZoEN3ilu)M3=gjLcK)Mqb-*;lVy%0!rI!g~p5kM9%k*7q*9X}bT_?fmE z&{AU2(xCHh?)2we^`+F6jT3EG;E^1xcK6JqdO4FIEP<$Aqm_BMbm3=o`L$D7O5E_{ zes_T@)QvCt`jLnF8A<3=)=_BKg~g~3BPF@~7)8|u%-%lahl*t-QxU6O|H&Wbn>6$% zb?Et5uNv$Q@#71x*tIeQ%Vi&>DbO(U2Z!C&X!C4nUB0FKXRqgpH6aiI41vTKKQ)Hm zkC{X`kq)>=#YvsH(O{r9Rm(<}jW)z5FOdK^{~2+I|1A4{<>qV}x@bTnW08ChU%c{u z#KhHb7fnICoJ&&_FY_7R$P+tG5tC-``xG#H3XBU*aW~tr6^i)6i+)}%qh(=I`&vt6 zf4#qPy(~|1tYO}9DSJpNux-z=9RkmlbOb#R&L>3JJ*^0}+%A!Bx}=x)(v$dyDGh2$ zG(gPo$4uf%tjyhNn1^s28U_wl622tFlXC0@8cwbyCP`k8YE)!q>j3JlMMqOE(9Li= zZv{OCd@P8-P+ATM6Y5DzbaDU$F)#mBRan0mw6XS^+X#%0jp*Y7^DCpqZ@mSEJAU02 zH+Knxm?-RmZZ8-#H)9ou@y&v=%+U_XJK`YxvwVZIyIx7#(dxmq>>gX$B?jsDcxkeTWPTKfXCoQy2~x*>C8yskZph&+GQ%S*=YrLVe@W z_U#Sk)`+iT1sCEZAGk~~_38xO0q=VIBPE>R<`mSV(|FQ4Jt+9=f+T@p4L{hjS(*o8 zpc`jqs)#X*BsKU_{TR^{cRVge7-|Dn!5tP-04T=$nRWV@9|Gks`I`IaO&#IV$U!#G zgI@B%@OOFA7>L-}&1af3O&2Ke{M%n{vxO*xP?K)l3dO>a;LjH`I}6UR)YY~KluOFD zqoP!27u>h@(|Nf8vadg!x|7rxEJDuMnYGw@^A0duEzUK4tEIUo84L=m2g(;F^T-Uw z$MDIYe@xuN&cbnSp|?Rk6FN;sE@OnkV;?#wc5+rlkN(_y^mtPMe%$-~%KTe~%QrCw zzRQ^Vc6|oA&n>oZDDFL{g1C@B(XE5l(@9_Rc>>Nr95_L*>08^3{a% zHTeMV#tDHSJ6td7-m7^03or)%i4xJtonTHg|M)tBzsrojAoi>L*cysKtvkCjFZ8Oo(a^sATnlzs-Qz=U)XeU)k&RVnu==P!{<)}tU7X?ld^`d_LnsgNZx3+(3nCtymNrPh7 zHhSDXJ^e)4x*Y-c)QabuQ9gh36}nnM?0BxzR#c~rG_``4(S$#Yz!N9N%%Db?jxGwZ zQvsSkhddR0XDf}OWi6Dha09?Mb4qtrWHEJZS0#f+mEk+Og*K{_xaqnZvBz=Jfi$Ggpf6 ze3M_5lg|`rDwW5WXk~OIU6M!hcuHNf<;AzS0mfe2jLjegQCxD{hIHiY<7cM*eZZ-F z?O1N$v(Hc==SyPdRWM1^F>|po(PiSiq;;#)Qa9l4iD7F^(Rp5>)T+qx+RH1K%h|r4 zl!RZVt96EJc!lV6GteLfBoqAgTD}upqN_o>A<2;@UzPgZbwF(gi`N1uOGS-OuUbM zO_P4-<98`*+8TZ<7v3g4LPuE$Y70ruJXW5YcPEisSg&;Bo#eP*oMdE`@BQ%^K{0(b zlX9*sxqFwNe=!rbOaa2xpP7B|sWiBeF#Jmu?a_M5(08@~NRrKuWrmzkFxP-KY@P0l$a1?R?JoaqN#L4%&8@;>A>^vQqaqx;PWmLqe!%SW(SsX87RKO6ZnO z-rL`kp*tC^84+*!!ag}Ko$8_52eBo5>rV?P6Jf z%KS?Q9~z3#ZNiN6kA-af+E3XEr8Nc5Jmklj4coPeash!`Ag|3Sl0#ilSz;%QeN z^CrI`Kt`J3#y9$<7UEVS=Rc}6A=A1KWUL5xHD%I7igMIY5+Sd5b;hNXoRhzGM z+%m;Rm>Rly%9Pc3s_9|@!8-GL7GU0m2;W`M6R9ZX#NZMTC5Mq5r!o+Gvu@7?*pU7e zLPDCOW;Q*9nuif;_<<@RV@r3BnJaX@fX?LLWI+pS9~rhZEoMZ6!?{WQi8Rre0i0Ap z@cD14Ut6iN(A!?}FOtE?qQI=h$xu>;j*Uy7{01F!47cuWGN7N`i1~HsWi~4rP=q(y zrfEsmt0Fg<_4uTAbT0_G-?CV&-TF7U8`m&cIM}8en4CT1@#TW}|A?2ev6OEURkfD< zjAJ|Z6fF(#TXiA5nw)IaaK+5%1W?mLh4gjYNXZUghlkH*7wuIG#&X73X1^}TMnCMX z#Ns;P4Qb+@eYj!JZmnf;42{ML?Um3SAo;R@wKgp+;Sus4MSImx_V)!bUlax4EZ^~N za-=)xYWDWJe)W;t?=wpS47+ zb7Q6B>V9K=_H_NTp8}Hmd{gq5yLsI7@7J9-trN*jvgdD=FO4l-5SSlSlKPnF_)VD-LLHl%sy|x@5bQF7zgUR(agT? zDoZb8obOfUe|%3G;1bi?^&}ShzWxpolycfEgWI=}jGac(pC6(DXU zvgBiG>e6VNe`Q8629-OA?WEXAfvc}~i=nc}RM1`HjH>iM)L`eIm|-_A zR?KMK`&s-R6(U0Aip3I^26+^jL*`q_j; z@-s?m&i8Y@`=~To47C>CSud^c@O14KetK9eOXV6>NVr?+N%l45q)O1JbswRH!y^Me z0N4CV2+HI??@^SYsM=Adc2`$=@~o>8pXn&Kc`6163j*X*bRCcz7CWIK=cyMQ% zwc}^y-r&~# z&>VF8&CT3LJ>@uTLKnmpME2xE!F+D(e%grO@I$VskPFC!XHvMrMrEH}kIR>;*1gtB z=G%i-$2+%!Bf&KepGi}e$S(8d|>WC71qT81?W0 zx-0!Z*dBOuln1qI7Jw3NXQ4Rq<}_RkkMaqla+m$49RRRt3oqOpM)e<)@;#yu<1X>f zoET?VvP9{s%=`&x#%jB=31XRAjhL6I*OIkuzXrKAPMyJrQwY31@ck}AtUQoG_Y1NI z$lJcp$fY0c*qyc{6Eg%GPqW)mMQPOq_?-{54!R-Bs$GUp(vz%My1?~=l0X*;;G_6S zR+#e9l+@YxUJp-gBLJpIFm`5d1~Xtzr5${f03!#nZX1cQS7}0i#gzUKE-@oVvGpec zBF+?ic=Ijo@83Vv3h6c_@7l1mFGEy2wi@fFneaCkbwnjUA&>!sR6GS)!6XGmiE%Q zCG!T>d93gqW<#mObs)AFk(SoB_&KV#6Iz!lVxMVpmNpv|&AJ^q&5;Fb1bcQcuP30Ol(&LL$yla35ojP6pe+fr?p_Z5jE{- zujlejO&8P-7axx7IAuGk3mV8taQqXrbMAC6E$8B?VRL|?KwVpt%qk^kOBQWW!;_N12FfNuNvdjj43q9w}Wya=w z%e%{09=-}2QgEy5Zjdy%&+{gMzSk>NKI-76`&wi2-+Hi$ggpcm>u{94ELpZYFR4F& znBP$jB(3lh!RY)2qIVvEl_p*`R4Ok?CEoWcx|LQ*`%(IEQrv3dN;)>7m~{6|E@1(j zFxneXiOa9={0&=^ZmKQ!{05pZ&!d|B>J{!C!@ik6?BE?ILAS`sJ|apHA^Yv0*gKNuMjDT-TVY2)Y3k!k${O`+$cgw*PHMG!S?SKwzw(H6PMT~)3Wmc;EgoOh0I`3Q>Fj}UsM`n zs8bqz7tNeAURC#Ji$=M6HSv+}n-_jpwY^4JbDBKt`Ow+vN6hnXOJ5(}85PcxM6}>g zP3Qt*u-z>~9zA;%DHdcoq%z4gyP*|Gv^z=R7@MRWr^vipR~M2q0;eWrU;?lA9;K;i zyE*}WCs8OzR=w2&CyhKR?3nFmcRBakn;8bE%*~^lM?zfZ=bc_yE2FQ`u=eXVE5#4K z@5Ld2etPH2h6(O?sX7ZMBq#cJ;>yjmYNmgWuO>ittV+7Of_y+HQ_Sw%Jhi#+_aoEG zQ1_*;ApBD0wc)J-ErCkcvuPc3xfD6^*^d)jm#2%b4gx){JbI0`5kb3FC5!=`kElWQ zs*nw7FMLFlT*@(icgB1FH3rWNEAK z^I^FqRIqL0h@b{snGC=+?s&TEj3?{QE8Dz0@l-F5Cn*)xGwpb)yZY2XG17)|O~+{6BpM5IdnBT4o8a<5EXP-~VpE0JDNVfR8bW~~{wRpu|sf^8~cHPx8U^1XN_L+&P zd;V)?;3IBDG0>3i&Wi`R^AV%m-07cU4xd=2JmZ*nnhHF7z_VM9HTAW(xM3~)X*d2h zx_s3h?q5s_DyCT=br*i1W^v7E&RpgbN^6(y6rN&OBJ^TYmYLMW{W~db$x+t@=Nk)O z4XQj>!hq*`ucy(we=9DXlZBg;H5oZO7}a!lp~uuGscLeJG`-PbcT$rW=QZT#DM8Y1 znGNRrSB2WrKjkL{kGq{Op%a9eQmLZ(jxMm*AHz*Zr5$eLqDgm)IFB&4h9GwkFCj-F z=7d0_M|~2^v{C1nMKDiGC&-oeFkjJejW+n2_c#gac;PCeV=bof`9gWvdG9eKe?*-;1J2~ncENCd zJ@Y_AjMcM_xG7G;z#H{JuWFr2aJT3u?tV%S@+ApS-b+9kJc40V?~(UpgA04+p4wtw z*jt&h_bdBiluq4lC!x zrj2w-49hKuCg$fpw>oi-b+i3U4&U{#5fzS-S8P7tuvH?Qd8hk&pYL}mV?jsu_b^u^ z<$iuiX2!P!JtqK{f!XE9*y;%Fh2doVR3W^h^m@;=;a4kMm+3(ZxrtaA1Y5@mlmI^CL@R9Us9< zmCS?pn=L~6xx>WcYrVE8I7Q-n!3;bc}j{P|wX;S^QF(%Z39 z4)U8+f_*Z0uWQ0w7cEmo`h!kQ)=}o$v(l&WQxuo8Hh}^41;}0T@5iIcp$y|!jZ1Ba zz}p%b3dlPaKm6#ki*)!rfE5qJ7{h{98kavmI$0-!p8Y}unQZ2s;>1R~XZ{u710A-r z)eamorN1j-u2B^fQ}Vw7&+JH zZ)vmR1#)*rsA;Pn{5T#L9J0I(#{Q%l|9Z!|QuJHbM&9j}JGJd{-K40D@PKOcmqGH& z=-{1SPGR?{`%Gwp_dZWy2l$~Tb$4gRC{Yy*c9y(3o?CR~X3ZkMZ!S+=heV#Yi}DVv z3z#IX_%C-7R~9Bn)wG;%Sf)r5m3ADXy~ejxtuLTv!H4+hGAEv6Y!A(t9?e`vdy(Oz zBnWBJ@DspXBk0BIRlw3EygXiJ(R8bMYs>klD;+ESr=NyBKcoE7=^d_)FT)+ntFq@9 zJQn;BLmb|eVvzBGFl_GI9jdpQtFmj0o6nzx@)pf9T6cU>j=X;1%bN zlY-i@$lYWkgmayaxkRY2jC>O@CVvZ7*A9Q)p#|>Ae_J8DuW$&u@<%wG&|Dbh2S3&l zo{EM3OjJ5t31G|=6zoO4&fZ$F&phGa*Az6}rl}n-)e|A3ZogJKkFcj(#Wu@S{+cO!>>32T$f-nkFn4rlm zBA?%zdIrT%?MS8HY=q2(aP5Kh#6uoCtCURBiX7}nTSqyoJ-4bPR(0&1*J+-i^IZwI zIj^MrJAkAPw@c1$hM>yfU)x-gh`-qijjn3)0mYM8hx>_lOnkbj=DGhzyAhBECk&wup zK%jr6E`scMs1d)#p%B;m`m2ymU`oR+#J4+5TZW@!D8=Tt9jqpHt4Ocqp?!)T8WqTy zcj2CCHCmO-mcz@3(th$7AX1mQ3%@E1n-}2$`72{&d2hHl0piK8ZxjK#-l{KR<8Uoc z(|iZ+jsxKm=jH7auZlaBu9I4n$*32(pG<&%&E(y8uanA4g{8caUn#w`G^vtDkznb31)`_XVIGS4TTISg(go^6Y)Y=leR zW!eFYzqG`iq>vm75G|ZOs#yT}0KQW-O5=>!(mEJiy)>stmPqn zcdG8!9kui%E(*D~-y3eI^~+)`k})26Z=^e(FO9O(!8%U;aucp?{vLs5kxhHeK_~U7Pspg^!vWV zJ6dIU+h4s)D@=QnDH+=vB#i@}h6hSVExM`8*eq;5FZrc1V>oXSVT~g=4RfI1=Hq&u zslgM$yGDCiPa|!`?Q=?Kqeg`eM&prpig1AZxTsOUkW!R%Nz05#!_fClquxIRzRW=* z0Bk$L2GH9OP-3`{lmd!8>s?Y>9FYSC)Kz-+K|K4RZNJ5VXe7ngXSN0Z6aM%g7AX4d z*V4_&>D7IaekOP-U%%qA0AZEc!N0-;6Vii(2x@D)B(aZ|%$L}VDH;}&TsozgzGe|5jZYyWgy7?K<-h;ZqP5q7R=wrE@;K4H@AF2jBt zxK?NY`ur}HUoebMwcGG*8HJznI{v)TviuvcxiBStg1c7#@{rHDrZ&)L)7sC$172n^ z!o@S_H1838ijEOJJ0E4fk^F;N|9ct>{BUYwmhZP+GxyD0T$V*dX2(k&LS;*o&LkWJ zlUo9Y9BMh7X1BTk#K(;tR9!woKH~=kqny(zLDPL3x5Bn-WCHjqMc;|8S(0iuVw;4o zjknsY(AYWsO~7@d=>|cfKy{WI+%cE-kCWMdA)To=LHZWDadRI@;nTK{Hu-h)KDM2uwKKw$tHTAG`wcH4psCYk9o+xk z?9x~MhYbZpt%`!>HTXK(cKQE2EBAL@x1z4KpZ}{Fm|sHUNP>phpo)rn`6b{_tS>~i{WWBG`SoC8^%ipF!T6p#j*k}Ci7DhI`P49%}$AO9sF;Uo7;GCBG@z(v0Esg*sf6~K2 zQ;Oq0m;i&ZjYu(5H?DXsm~_t|?D?8Nh!F{bLO3I;MWpzqhYNQQM%!CSPzo6Vi_OJE zYQrev3opuungZ>sUKqdaW^~t8bn7TaK*mhr6QuxkjEAEZg>`O-u@TW0ON{BrC|j zSUBTm&>H+D#)zc>R_99VRsK}MsTFH6FDuR})f9DU`8>nQYbaCM4ko^8&rwq`_byvN z0?w$|oQaF{;8p(2tl=R@l1KMY9_Qa&>Y(@{rtt^LL}$>FeFo-^}d3N139@ zTVx1tUSwSh*Z0ZOo`Kt-c-7LyrVz+HrrRw7BQ8qa-nwXI`Q2j6z$L4MR}eK zu6th0LMo{)RBm={WCrbh_-~fPt5SP<@+N6=Gg;*?qvb_SQX#`A`zwExMWM~m9R-&4 z7(V`6D?s6lz2W0OQO>?@xogt{TH{t?fe(TNpr8psQ1|n`{ibiEsUE;9Sr5APEA>bV zg>kK{ZHq+j^z5ye9Pb>>8NObnO;z?aGtE5n25d`ivp)7a9!Y;MoD3(W#r(zHbjy8W z5Ztd_Trv>6Np|%Xo5@p6KpD48;?3r5+s!4_sOus!dQ@^g_+O`BnX@N}NZ$bSaYoT$ z+v<36qLoZYioh}3u+KMa_Dl;+QnYI$Z2Ulyr91URIw;i5mNld9FAE*UaWghAt_ciL zdto_g?$M(P8%Y`yPz?V2kSkq17jVXT~}+a~t}@Fut-B?R@DRie(;c zpBr|*0|O={p5DB1uu<==E<Kp`Ra}fw<^0|47p{-=qkUnoJNliz!*}U zqfsn@8fr}7k0Z)K84{w0k@yBXcQxVaIw|*9oeCePH_M!4JvTNnHy;yIba^Q>KxCOz z>r|gMr_Vjt^KUsk*ykyUmuv9brFPY72j8d537T+Xs_SwyM)kJ2XH2Ka1cxbY_p6Kh zG-z+rh^asmOVCud&vtc_vCAK}_gQ>gfcRJZ_*lUdk~=4H2)q*OV5)F=9wNn<^!lwX z%P(;+wmoz0e@;|piAvxtw$!meJ7DRiN210tmLdZ&YjWr5ZrjAkd1R`;^*gEZ z-JD89NQp_&);RP3FWdp&Q|<5#>4;zcf71|0Vs~k*@hHt>^L;5jue@k_xi!ZJ=htv5}=<6QG%3}L&PlC-u z{`i=ZNquQpIFb1uL}qaKt+J*(p0*phRJ=eJBdT{*d3htV&st&3_TkNpSt?IQ`qCoY zMe2HT@tK>Z0{FNv&xjsW7w}$~b!R;#9!72LJ!W9{HW;0{q$lTn3&TPQ3l}P!zOS0} zD2JXYQ#c%U11D3MG(N*`RD2FViFLmi>i!}C&a!c2xzxMC3G#5M9#^NRB%X^k_M+mUuhRZDi z6yTED@LD3p%o;SHu&(5|clqGfhzEg$beAxKn9O=o64CI_!eQNFU1bOFL zhK;8a==M3de%Q;hCfwhG|JTd23W9cEOlBsN z(&Ei&Qm{S|Mt~s|kZ$J^p41xsm3|=)0BZZ^-msw1m)|B7p$iHy_1fqN>bfPSm8#Vp?`^UmV!Z*@)|b~ z9sxCdyEgu__cQc%3^-l+K#Ow`;|n1ZJc-o zQwcqzY3b*F%38W@OYerH>=(DkR~EVzb?KG&o)!VN1uN0ABD0@H!?SbCrFyj#lJ%}_ zRj81lVot*grN7&A4a}YgD0uB=@V+x7CC>XdUySsZL{@&L5W?K+rWP?iG6+sp!IyiM zgzv^j8notXZz+zZnBoQm?@&P(2b;V|QENTt(=%Aup+xUXgK*8N7%qZ}I9>7@+OL0T zG$eo}v68P!v>ms;k%B92j=Rrk(w9uqGSa`sHF;+U%JDSRA*BPCgCsY6T0Opj?auXG7WdD8UZ4$2TNbO*e!U90i8*4= zvGZ3=ck(Twkzt_PYGll`eHB~Iz=tl*5YW|;~Nge{&0ibY()&KuKQamb$)`C%NcjCN*2(7R=L#D zItUeYmr6g>HINc6#ezxAA!@w|EWV3NIIhUXMi4lzjJohoF0%(vv;$`rP-Z?Y)X9Kl zidwdm%Y{Bxb}1z+BYQ8znU^l(-1teE62>B+#zx9^U1-em#JHtS(CYaap;fSA*M1M=cQE;LTGAXN$OUqY0Hy<43;GQFsbK_i6bWc}zrx9>>PuuBome=uDDS z=`)$Qo)rrggx!NNe#@3LUjB~$L}>w`+pF`xe*|va)$@KA^{#8R;yZ-}C#vFSY}}e{ z5z$^Pb{sOWC~$GQsWUT<{C_|9AD$4vEzY|IGmSN-89zAVqipj+fVg+XcT93ddAU0- zudk0g9Ry6zFeSf8RF!CG z)+B~V{>a^&eASnPyt8fZ;)6XSm+4DqS~3+EjqfqSG}fNxK7F0cj9)N%fgi*Yi1)Dh zL8`bom1blLw<(Q{w}yBlvS%N8Sn~ilS8sd|6{$EAaunrM$`~@P3=Phj!J)yHA3lr& zF!^ zW=P#ePb{TUsD{Fyz2(xefb+>5n(2H+0t!}Y7Lv1!S*fA~ejcoDot`Qr8ZliT+E&(g zcu&8^(N}fY47Z}EQJ&cvmd;fO3*C{JzQbNd!;qk<#$?CpPe(V_ez{aN5kt-Q!m!y6 zS=9>Hn31V*t&WC?*0Da#PCN~1ZD9LbX-Ngd|5`Ey;>{r(Cc8hceWm1$-U#+2p3kh^ z_7})PLvWRwbFU{OoK6>fF+n#!w=dkgKznKNS|=~!o6Z59ueV8Mqk=$>%_jS$N(12SoUY5n3kdGGl<0?8xOPTPPj zCf6!zdzzkL9ulu!-x18s*(w+41ZL0S2m(!s;Ohi2&c5z0N3PwI`YX&q<=}~AVE0f` zSK^3GwBt##?`N|3iva^>cc&HGVk2PeGY^bg@Q1f#tM)?C;}wR6zu%is%vgFwmzx^q zG4W$mLf7)z<6Oz^70Z5YIG)(j0aW;8YKI3ch_?wzJfO2Wmff7;B+2en6zSqzVFiCl zAI+zkJm{B2QWpFnZqcggHC7EQ(auQbLh^ls*cm;)l^W@J2Ihq^2F~?tiU0*iF-?@A z;iHR1k<22A<2<>-+U8OK@DtDP4i+KuUrhV;)N1lcNeKDE9~K$=+0|AOI`^gBqz3GL zyDb2~HRTU&5a*du34y}A_D}P~r-(TqX^TuQlj8h;HR<}3e6O;?o?#5l(pVRD*`o!q z(R$aVgW<5cab=l5+)wf1)lx)t%6H@om&-fJz#yyFU=2Z>z0em8sr9iXF-ZZR_tJN$K2UA?twTR}DD1!=z{+n~0wj2kEmy9t9NH zDdH229Yrj#gv-BYo54^ai6@+)|71$S30|M8a*6yVupWi*JTfxe&CGAW)-$CLoJJ%} zF=}4dRLh{x00CUyjcvi2;v`o^O2Ok@Qovf6cSc@1jv^Qd30}2tSC>iC{``?BKPltG zWynV%1|R$m8Gp>Hf)4%o!Uj&}q>0Aj<620!Z_p|+{wV;8S`y3Fa>uR=O6E%b!0L;% ztnIUX3%Mfx^ZqrPWR!Tzsrb6Lzru8HekG*6QEdw=P#?k7#&hd)f4ZLDFIx-W1 ztSn34J@2C3%Nq(nRX5SiszQ%bSx*)7(nS_(pkUxj`^cPOKKZhsVJ~X+%?zPuMDY!D(?kSkKy(PGWi{&%6XL3KdXMK=w*zTcTA-O7~XvEpPCWn zOYJAWp2#j$9tczGcylsQ_vLb|i-(mC_ed!0UsHA~r)r-%g~;1z>jV8IeZ(=FS}^Y> zn2{HdKmR&}Z((zYqL|)t2=`5vE8I(c_*$5bgjP5|>#X7Zee>MfAAF(4su%vb5Z!Z5 zI`4jJA0qlct)g7w*qaRj6z`0^RzQRvOxr65`*(4v#o@z-dY~nBt{U5ok!XUE zcm>`6v1$pqvAEAzpBhCofhQAFt?_`ll7ji5Q#Yf2M5^gx`kRE`M$CEcH}NuY@JQ4% zAayK$IZ4jDruw(vPjuWYir=Hj{*my7p5-%Z9pba^jTh0NZ(S^#Sxd(~_)9^{s4ZP; zw_><+%fPs8ps9suU%mpz#8UHV(3H$#vkC5ErX3#G&1Yl7 z-*M%MVLdt(Pd}#0It%~nSek9NEA+dwyyhYs=ptH&-pKNaIX>toa3xybJ0JF|Y@D`g zSKFA&zH=0ED)V-h7kn~kSSjOT&xqq8nl%-KJ7WxfDc{0TuEsgw9tXpd`!v?l6*0or z(hd=RyAm+i&C&5h^9w=go2vt$i+z3;-@KLBr0H$8b8nuz!IQ=gb6%6o=6wY4nA9v8 zd9NWS7OCL%yj}_foE;uoQD6#b2t-vlmw*PRfqpq#uVB{Y7FQ~Q71Z!&@QTQu&E1fWb{*^ChQ9kWHUT zBMIq>uJ9FX+Dy`saO4WYyPbfQ9bQvT=u{w3cn*5K6<~5cJ_k(Na*}KP@I^jwG=J*9 zcpD^mxih-rsKYnDZoFRiJXmC0LlO!+{8okEMfabdL6;)VyB#C;uAN~3{WGJn3=nm7 z{KODOnsqmsa~+KByDEcGIzWO7v4hGeUlTaYAxRkE4MioH4*scxxBW53d5&ta+i zi4w+WKpjNd-++VoY?Zh2=;Jp#wS#O-rBnAm_Kri>ZJ#%s`rg%+8PE#HV%3DMo6$9%@iQ5FqKquomb6v7p6haGM@j72qec)ouzY@C83XV*6@A?^hdzlUs-F!8g-%`3R*=IH_?=`5ruF^UK`$Hon}~7J{93=|;Q;nHrD47#(ms#J zejRa?xt)H7oyk%J<-@rlZ(0GP+)}`1h33R9me9i(hdbgX8*{Xud-X5MJdcUDQ=5V6 z6le~1roijKd1uSOhqZqKhL$=KcQjR7in0)u{=9mn&qm(Sw@E7pYCHj`@xdVF^&4|6 zTs?#JI?T`h2b3(&#ohrfZ}VL#Hd;9rKO@$SJMRp={;^8?)y6U9H5aU@hOEXWv3s%g z|6%Se!`h6pwc#R#(juiT?xn@0xI-z$in~LRAcf!-T#CE96?b=ccM0z95C{%mI`5hH z%)E0(dVYP^_56Y4*;(7xUUIK{!{|)-6@O+!*_eE%xzYJ|$@g?am?h=w)-*V>^{I%W z)!ds6PYtQ&)Dn6FNmg2JeD|+qQWR6}sv(v8Pd9U;w4rKJsJ1b*=fRtUKWaq2PfT!> zJ}F!K3Fd)J^iX3A+0xc_S&Wj^wUklEeuKp)N#;6Z^wZ_u>Z=lYG4AV}op1TkvP(d? z+-=ceI4@v6k?fS$w}ED5>}u z>Bi+)rG?d!?bW~{2)wk1t4Pcb?irU1&Ok-D-7<&^BeMQ#H>y>Ou89)tEb6Q`B7&>d>@4<}gwjroG9Wrej4DUy@QkKK)Tvnd&sxjFVAAA;=P&1! zOBU6o?{S)UeWrItxmlWv-khBElE^F&$7qmH%aBEF{)UOmN5+Z3IJ5WxN&-)6Z~f-9 zZvZe*!ElB5`=THAds`}-W+PAO{|c8~E(n{#V6+k4kN+oX`kg`O`y(tUKpi%V0QD2N zwbBM60K8i+EC}?hk#(koP!}IBas?y``v|Ys9twki2PCd3iwvT-#TFo&ZW>$*=L3y~ zir$~S1J5Z_EzPRua*`B{+_r7@UL9J;giZupnw^iBYFEnl<15|wB$@Z07gezs)B4gW zin6<(0y$y|$p?fVbs(otK$}a7dQN`O)_tXN_>@Tbnf)Bq_LfvuKi7q`f^d$Ff z{PIy>M#9P|kiMumPSX~GTcB*y{LUv4H7@wY7-rL#_=PL5lvTkztUkN|Mr)Elj3vXz zcK7LkiItS8@yL{G9d6qXFiO9J5VaA{+ZU+4pQ|;(LghNx-{4iy&*`pRM%TT?nV>eQmVf|E<)`uG+tNS#iSHfV%gaw)07~ zv)wGF=uW@t#8pZ4Ox_6R!zS;U$UPc|YOCHW3Sc!=%a;Knz=Ci|-TKRbZm>G+4N*H- z;bdwnN8Xp6@HZ}3v{i3P4-b$xz#_XZ;ka>>-t zB2wXt>ZXtTHQ7fKIN^5q{Cf)@n+!kJLc; z?6j_Yz_^gH zIoo{wh;>UsI|0gQl!WEg=lzYZ>*jrH2>E?YSbp+|76dI4HKP=<4X0*1_tJJVSE}+T zF7OC368%8&=UAN+8+^7dZ7L!RVb~xhO{+u3AN@#`3c-?71q+IIC>CO;8EE;4RLS^8 z{wVFiz)D9a+`DI?04o-2dj+2d#JR=6?z@Zd{osw>&6j%>=OT6+6RW89ac>-?JP@s; zA0?wzgrtmon|Q_1pO^e)TF1mkozIK)0efYv{RUwz?5Z?+NT5%*GOHm`-0vX&L^lUP z=SRX*z`3Atf{4+`hg%gfu^lv{F(vSFG2 zun&fh8OI;+n_{w|Dnw(w12|a{8u_+B4M5CF3?*Jih55(Uq0EO<>7!YO$=QnO+e5pT zZU^e>`(($6BeUicftcTPI;^}>SSDSkF(%#{*!p8IsME_jg=Y+J+El&_tVJ_9H&D1; zyAgD4xbrc4U2`G@NVT6EQ74!X6@Q74k(|fb}4JqvGYJSOYvWX9$i~@Bt25wjEy6DuQ*G zJ0d>mn%$gp;gzQ`rwo2ndT>>_p^zIzXZwgvarNm#Qe4 z-!q;xbdyI*=F2>2I*N;I8Hie+!a9^OfcElZA-7#N3~-3Iz8ExU8go6tRO$zLI5_Kt z9NCDpJzJy%hOa&mI~Uy^kUwcOk08BG7fyY;$CJYW{H2U5-stspu510vhau%I)qz+W z_x4{w%CF|zBFzhIUiw4r9<*vUUB+hLpVqcMG&`MU_!WpAwhWvlKTlJjZyaKtW*($V z2`#@gG?;n3EbT2sCUzOCadn!|z7CODz;7D5Ct_{mW-cbf`t23A4Ut(sAz&zDJl(AA zy8~Z+tWkB!0Ls)3O-QJinO=3km^f_)GHqeV3Dlsr&3=UfKj7U53dt77{Ot3=v=T3& zer7rQxFx7$cRa4m+{cz5OZre^ui^_wH-Pn~>eZfYJ=*-L2YFw zx$Gd~D*9;L&(xIL73YJdE2rDM{ae48C*CGE!f+c$H7i^)LtOiPLU$A~u@!*iokE6* zSFBrXrI%eM+BJaC=KD;|SYR{i*H9Pj&$*sdL2pA1^duKZY|rGS8Iz64k+5kSI}`(0{2=eqlX!7>7{4+0OVtF|wk!Ufnt2 zw;9LuE*5m;I1zPky2HAcMLE3$0yYB@IrqO2XD6TF_BkL1>{Ru~Sk-RxqA>@6u?BKr zw?TfO3~|jd0$6qoXe3W^>P=|u3qas=dBq2?_uqv=d8xl z*$M!ZL7|3dnM6mHve_vTHw_NxAh$vb{bbhNg2p)vo_HG35Y4*|B$@WzmDR?31Fj#2 z*;}cf*jfhqeD_xo(uP+_tRty6wxuaa@bZpC6YK*bo@S17;CIL2GRKqT#YF_9v?qO) z-vbmV(WjFCYZI^OT`OQ~Af_H(3%1 z@~yR2Cl5cFBgvL!=N$0O@g$(Hn#3G1Zxtk_b>o`ZOC@PbUK30`r{jvI_?mM;eq$W} zxx@FG6tBen$BBFnodho*M^#OR$BHn*cX7LPV*DwcHh%MUkQ~^?7L>%Mo}XqZJG;qV zKH*SzWZO?mi5}w;208c{%4$_{tdEwaItiTu15&_KE0g^eg~+4g`NtqV$%ZH^9K z5!^DLZ==-%=i#)#aW|QTnHd>@hqNrwxB80iJ_hS?STeeAO5DRSYhE^|B<_6r8l&Rd zmmNT9*K+=2x?klot;9KMlPc~&YXwK#VJ{Pvn@h2knSt24D|bTXKo<0Jd^Cf<|H1Pp zT5Pb!AiAg2mLV}27IwOLQ?P78kUwt(V{vYcMB0jRslGCB_N7Fp)_H6vmnKqV+@hv) zB}H%D6ffPh5p%Ac{}_|~S!!4ONbXuRHVtiCgI<)&w*6#MZSZv-A<+LgnZdxiDz+b@ zN5{u%w^LibJHaF-qG}gI4HAmwFv}8+ijbeb4nJ>0{DKpI#e0BJ#KTRM8~fQ?VS!Td z0@Bplhddv;Bi=*eFSKdZ_xwgQ4Y2S}eFRsn(-nwQ9tMQ^pryI4C+Ife+(`KPit+w_AFb4V>2sV#%hpU_KTGCETng7veyJ~Xf|*+Pmz@~E_V&1WIBwZgX(npcCp2duT zR((MNeN3~xv9@fvF$09(+y`wlhjD(LJEsDPr$0tWZ_yT)MGv2;J4icxg+Y+!Z?5sY z7SS2MVxHq3_CVeZ>iLNcWv0hY>i~r zvk*r126!>p@2^ge)M9`%XR=f4YUp8ldy%741hq5F!00^} zearymg=g`0lZebh?*u>YfVqi616E?_bL`r)W+x?AuMo z=Kxz*uPMCQ@h%$L_a*Q1`TMdmG;GzIR%+?YK{;KLWiP!0pt2TRCvmW3<(LZul*ilw zR-b&FdoBu7-WyP7Gjs+EFq%K}CaqpXjf( z!og(lBsaTcCJTAviM)^tg@P>#DSTkLQS!Y?EA(=IVlWYiC!!8l;}sCVL@sQ49MO1} z>RgDxZ#|Yrr1!}|I|27CI9SdhjOw?KtN*i27)K|T{;2H1zB{OD=r~9dG|iT9bzBWj z%s6_i@bdp_TJwLR_6){{OMA(^uP66chM2#Cjs7Yt>}3!#TuogQq@>Ztr*>A)fVNfB zt((I-;izVbyO;dU-+b}^b<97pzvv2N()YGeMfs}?+a`$SO^=ED0yW5I#(OZjNUr(! zqhdFiVZ2ShOUgs$uY_^b45k3T+LA@TM}=?{E#Gf*gw97iH)Fg2`K%{0l~&nKvAlLP zBrAi_))qWouUbS-(%JD^t#@H6t=4F?019#L^m@qYS>AV({Z^CzGo2}n+4DW3p5BoE z_m>&}Ep7oi{o3H}v*mF#6;9HW4RqCJu+9yk~eks zr;;*A$ZiXOGu({sYxK|h@O!Ro*x;F%3`@*YEgAlYsr!oz+e(PPNqDu3ou+vH;X5K8 z&lZ|O2?Saazl*XV&}xRZef9s#sGSyl{=QiG3tKMWpLOK#yY)Z(mF@#8Yczp-)BnG1 z0Y+)V#I!v(9x4~~zik2=)|75oQtz_!ITfiob zK>g>d@gJt;Z-2|to)ktlkV#K8~Z9nIf zLfrWuuMg#koc_0?3Gb5rxF>qGUw9E%r-sR1vB&aw0#T}MWyud{V@q*QP1s0nL# zgVF-(e!_0D{*T7vA9^}!iD-D!6>k#uki8y%4@r8%3M-fyesla^v?6~f@hR%p z@3At$Ci-KkRF(HA0zZPja{p!YL2o>tTrb8!70Ysae<*FwOHV6(0M+3iit;y;t{(u~ zl6VqToyz~aaq?`7|GkuYQ1?ImEA9F>zxWR`@+tQBeklLSWA^-SSNT6o$v?dKe;W