diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 351b0e1045..5dda6d135a 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -31,3 +31,4 @@ If possible, provide a recipe for reproducing the error. Add any other context about the problem here. --> +**Tip**: [React](https://github.blog/news-insights/product-news/add-reactions-to-pull-requests-issues-and-comments/) with πŸ‘ to help prioritize this issue. Please use comments to provide useful context, avoiding `+1` or `me too`, to help us triage it. Learn more [here](https://opentelemetry.io/community/end-user/issue-participation/). diff --git a/.github/ISSUE_TEMPLATE/discussion.md b/.github/ISSUE_TEMPLATE/discussion.md index 8faca079ff..2f80f07483 100644 --- a/.github/ISSUE_TEMPLATE/discussion.md +++ b/.github/ISSUE_TEMPLATE/discussion.md @@ -11,3 +11,5 @@ labels: discussion - [ ] This only affects the JavaScript OpenTelemetry library - [ ] This may affect other libraries, but I would like to get opinions here first +**Tip**: [React](https://github.blog/news-insights/product-news/add-reactions-to-pull-requests-issues-and-comments/) with πŸ‘ to help prioritize this issue. Please use comments to provide useful context, avoiding `+1` or `me too`, to help us triage it. Learn more [here](https://opentelemetry.io/community/end-user/issue-participation/). + diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 6e40eb7142..b1f5d112dc 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -31,3 +31,5 @@ A clear and concise description of any alternative solutions or features you've Add any other context or screenshots about the feature request here. --> +**Tip**: [React](https://github.blog/news-insights/product-news/add-reactions-to-pull-requests-issues-and-comments/) with πŸ‘ to help prioritize this issue. Please use comments to provide useful context, avoiding `+1` or `me too`, to help us triage it. Learn more [here](https://opentelemetry.io/community/end-user/issue-participation/). + diff --git a/.github/ISSUE_TEMPLATE/instrumentation_request.md b/.github/ISSUE_TEMPLATE/instrumentation_request.md index 867ac0b35b..f0108a5f69 100644 --- a/.github/ISSUE_TEMPLATE/instrumentation_request.md +++ b/.github/ISSUE_TEMPLATE/instrumentation_request.md @@ -34,3 +34,5 @@ Any code-owners listed MUST fulfill all criteria laid out in the checklist below + +**Tip**: [React](https://github.blog/news-insights/product-news/add-reactions-to-pull-requests-issues-and-comments/) with πŸ‘ to help prioritize this issue. Please use comments to provide useful context, avoiding `+1` or `me too`, to help us triage it. Learn more [here](https://opentelemetry.io/community/end-user/issue-participation/). diff --git a/.github/ISSUE_TEMPLATE/ownership_request.md b/.github/ISSUE_TEMPLATE/ownership_request.md index 9473c8fa4e..602913fbdd 100644 --- a/.github/ISSUE_TEMPLATE/ownership_request.md +++ b/.github/ISSUE_TEMPLATE/ownership_request.md @@ -38,3 +38,5 @@ Examples: + +**Tip**: [React](https://github.blog/news-insights/product-news/add-reactions-to-pull-requests-issues-and-comments/) with πŸ‘ to help prioritize this issue. Please use comments to provide useful context, avoiding `+1` or `me too`, to help us triage it. Learn more [here](https://opentelemetry.io/community/end-user/issue-participation/). diff --git a/.github.amrom.workers.devponent-label-map.yml b/.github.amrom.workers.devponent-label-map.yml index 1cf350f8ec..b25b55e78c 100644 --- a/.github.amrom.workers.devponent-label-map.yml +++ b/.github.amrom.workers.devponent-label-map.yml @@ -193,6 +193,11 @@ pkg:instrumentation-oracledb: - any-glob-to-any-file: - packages/instrumentation-oracledb/** - packages/contrib-test-utils/** +pkg:instrumentation-openai: + - changed-files: + - any-glob-to-any-file: + - packages/instrumentation-openai/** + - packages/contrib-test-utils/** pkg:instrumentation-pg: - changed-files: - any-glob-to-any-file: @@ -253,10 +258,6 @@ pkg:propagation-utils: - any-glob-to-any-file: - packages/propagation-utils/** - packages/contrib-test-utils/** -pkg:propagator-grpc-census-binary: - - changed-files: - - any-glob-to-any-file: - - propagators/opentelemetry-propagator-grpc-census-binary/** pkg:propagator-instana: - changed-files: - any-glob-to-any-file: diff --git a/.github.amrom.workers.devponent_owners.yml b/.github.amrom.workers.devponent_owners.yml index 802de7ccb6..00ee2fc160 100644 --- a/.github.amrom.workers.devponent_owners.yml +++ b/.github.amrom.workers.devponent_owners.yml @@ -11,7 +11,9 @@ components: - abhee11 packages/resource-detector-gcp: - aabmass - - punya + - psx95 + - DylanRussell + - dashpole packages/resource-detector-github: [] # Unmaintained packages/resource-detector-instana: @@ -128,6 +130,9 @@ components: - sharadraju packages/instrumentation-runtime-node: - d4nyll + packages/instrumentation-openai: + - trentm + - seemk packages/instrumentation-pg: - maryliag packages/instrumentation-pino: diff --git a/.github/workflows/close-stale.yml b/.github/workflows/close-stale.yml index f598902d27..fa044b95a3 100644 --- a/.github/workflows/close-stale.yml +++ b/.github/workflows/close-stale.yml @@ -3,8 +3,14 @@ on: schedule: - cron: '30 6 * * *' +permissions: + contents: read + jobs: stale: + permissions: + issues: write # required for closing stale issues + pull-requests: write # required for closing stale PRs runs-on: ubuntu-latest steps: - uses: actions/stale@v9 diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 33a35892f4..42dc87536b 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -6,13 +6,18 @@ on: branches: [ main ] pull_request: +permissions: + contents: read + jobs: CodeQL-Build: + permissions: + security-events: write # for github/codeql-action/analyze to upload SARIF results runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v5 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/component-owners.yml b/.github/workflows/component-owners.yml index fabd1202e1..c92173f548 100644 --- a/.github/workflows/component-owners.yml +++ b/.github/workflows/component-owners.yml @@ -2,8 +2,13 @@ name: 'Component Owners' on: pull_request_target: +permissions: + contents: read + jobs: run_self: + permissions: + pull-requests: write # required for assigning reviewers to PRs runs-on: ubuntu-latest name: Auto Assign Owners steps: diff --git a/.github/workflows/fossa.yml b/.github/workflows/fossa.yml index 3beaa09b77..68b91a878a 100644 --- a/.github/workflows/fossa.yml +++ b/.github/workflows/fossa.yml @@ -12,7 +12,7 @@ jobs: fossa: runs-on: ubuntu-latest steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - uses: fossas/fossa-action@93a52ecf7c3ac7eb40f5de77fd69b1a19524de94 # v1.5.0 with: diff --git a/.github/workflows/label-prs.yml b/.github/workflows/label-prs.yml index 397c26fbad..90b8cace23 100644 --- a/.github/workflows/label-prs.yml +++ b/.github/workflows/label-prs.yml @@ -2,6 +2,9 @@ name: "Label PR" on: - pull_request_target +permissions: + contents: read + jobs: labeler: name: 'Add component labels' @@ -10,7 +13,7 @@ jobs: pull-requests: write runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: actions/labeler@v5 with: configuration-path: '.github.amrom.workers.devponent-label-map.yml' diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 4d9a1bda84..51b4260026 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -6,11 +6,14 @@ on: - main pull_request: +permissions: + contents: read + jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: actions/setup-node@v4 with: node-version: 18 diff --git a/.github/workflows/ossf-scorecard.yml b/.github/workflows/ossf-scorecard.yml index c65ad2438b..cbed244e81 100644 --- a/.github/workflows/ossf-scorecard.yml +++ b/.github/workflows/ossf-scorecard.yml @@ -19,7 +19,7 @@ jobs: # Needed for GitHub OIDC token if publish_results is true id-token: write steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false diff --git a/.github/workflows/peer-api.yaml b/.github/workflows/peer-api.yaml index 94e51f64fe..e990808746 100644 --- a/.github/workflows/peer-api.yaml +++ b/.github/workflows/peer-api.yaml @@ -6,6 +6,9 @@ on: - main pull_request: +permissions: + contents: read + jobs: peer-api-check: runs-on: ubuntu-latest @@ -13,7 +16,7 @@ jobs: image: node:20 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Install script dependencies run: npm ci diff --git a/.github/workflows/pr-title.yml b/.github/workflows/pr-title.yml index 4298282b9c..c4f2cc71e2 100644 --- a/.github/workflows/pr-title.yml +++ b/.github/workflows/pr-title.yml @@ -7,11 +7,14 @@ on: - edited - synchronize +permissions: + contents: read + jobs: main: name: Validate PR title runs-on: ubuntu-latest steps: - - uses: amannn/action-semantic-pull-request@v5 + - uses: amannn/action-semantic-pull-request@v6 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release-please-validate.yaml b/.github/workflows/release-please-validate.yaml index 7666f2d525..0b138cbb49 100644 --- a/.github/workflows/release-please-validate.yaml +++ b/.github/workflows/release-please-validate.yaml @@ -6,6 +6,9 @@ on: - main pull_request: +permissions: + contents: read + jobs: rp-validate: runs-on: ubuntu-latest @@ -13,7 +16,7 @@ jobs: image: node:20 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Install glob run: npm install glob diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index e75e676201..a3c8595017 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -3,16 +3,20 @@ on: branches: - main +permissions: + contents: read + name: Run Release Please jobs: release-please: runs-on: ubuntu-latest permissions: + contents: write # required for pushing changes id-token: write steps: # The logic below handles the npm publication: - name: Checkout Repository - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 @@ -39,7 +43,7 @@ jobs: - name: Checkout release PR # only checkout if a PR has been created, otherwise this will fail if: ${{ steps.release.outputs.pr }} - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: ref: release-please--branches--main # use a token so that workflows on the PR run when we push later @@ -61,7 +65,7 @@ jobs: - name: Checkout Repository # only checkout if a release has been created if: ${{ steps.release.outputs.releases_created }} - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 diff --git a/.github/workflows/survey-on-merged-pr.yml b/.github/workflows/survey-on-merged-pr.yml new file mode 100644 index 0000000000..d81e381376 --- /dev/null +++ b/.github/workflows/survey-on-merged-pr.yml @@ -0,0 +1,44 @@ +name: Survey on Merged PR by Non-Member + +on: + pull_request_target: + types: [closed] + +permissions: + contents: read + +env: + PR_NUM: ${{ github.event.pull_request.number }} + SURVEY_URL: https://docs.google.com/forms/d/e/1FAIpQLSf2FfCsW-DimeWzdQgfl0KDzT2UEAqu69_f7F2BVPSxVae1cQ/viewform?entry.1540511742=open-telemetry/opentelemetry-js-contrib + +jobs: + comment-on-pr: + name: Add survey to PR if author is not a member + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + if: github.event.pull_request.merged == true + steps: + - uses: actions/checkout@v5 + - name: Check if user is a member of the org + id: check-membership + run: | + USERNAME=$(jq -r '.pull_request.user.login' "$GITHUB_EVENT_PATH") + ORG="${{ github.repository_owner }}" + STATUS=$(gh api "orgs/$ORG/members/$USERNAME" --silent && echo "true" || echo "false") + if [[ "$STATUS" == "true" ]]; then + echo "MEMBER_FOUND=true" >> $GITHUB_ENV + else + echo "MEMBER_FOUND=false" >> $GITHUB_ENV + fi + env: + GH_TOKEN: ${{ secrets.OPENTELEMETRYBOT_GITHUB_TOKEN }} + + - name: Add comment to PR if author is not a member + if: env.MEMBER_FOUND == 'false' + run: | + USERNAME=$(jq -r '.pull_request.user.login' "$GITHUB_EVENT_PATH") + gh pr comment ${PR_NUM} --repo open-telemetry/opentelemetry-js-contrib --body "Thank you for your contribution @${USERNAME}! πŸŽ‰ We would like to hear from you about your experience contributing to OpenTelemetry by taking a few minutes to fill out this [survey](${SURVEY_URL})." + env: + GH_TOKEN: ${{ secrets.OPENTELEMETRYBOT_GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/test-all-versions.pr.yml b/.github/workflows/test-all-versions.pr.yml deleted file mode 100644 index 9f1309ad19..0000000000 --- a/.github/workflows/test-all-versions.pr.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: TAV for PR -on: - pull_request: - types: - - opened - - synchronize - - reopened - - labeled - - unlabeled - -jobs: - parse-labels: - runs-on: ubuntu-latest - container: - image: node:20 - env: - PR_LABELS: ${{ toJSON(github.event.pull_request.labels.*.name) }} - outputs: - args: ${{ steps.npm-workspace-args.outputs.args }} - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Parse labels into npm workspace arguments - id: npm-workspace-args - run: | - OUTPUT=`node scripts/pr-labels-to-npm-workspace-args.mjs "$PR_LABELS"` - echo "args=$OUTPUT" >> $GITHUB_OUTPUT - - tav: - uses: ./.github/workflows/test-all-versions.yml - needs: parse-labels - with: - npm-workspace-args: ${{ needs.parse-labels.outputs.args }} - if: ${{ needs.parse-labels.outputs.args != '' }} diff --git a/.github/workflows/test-all-versions.push.yml b/.github/workflows/test-all-versions.push.yml deleted file mode 100644 index 4a741f7f46..0000000000 --- a/.github/workflows/test-all-versions.push.yml +++ /dev/null @@ -1,13 +0,0 @@ -name: TAV for Push -on: - push: - branches: - - "main" - - "release/**" - - "release-please/**" - -jobs: - tav: - uses: ./.github/workflows/test-all-versions.yml - with: - npm-workspace-args: "" diff --git a/.github/workflows/test-all-versions.yml b/.github/workflows/test-all-versions.yml index 83a261dbfb..9f25a8b5d3 100644 --- a/.github/workflows/test-all-versions.yml +++ b/.github/workflows/test-all-versions.yml @@ -12,6 +12,9 @@ on: required: true type: string +permissions: + contents: read + jobs: build-and-cache: strategy: @@ -22,7 +25,7 @@ jobs: NODE_OPTIONS: --max-old-space-size=4096 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 # Use the same Node.js version used for `release-please` workflow. @@ -48,7 +51,7 @@ jobs: strategy: fail-fast: false matrix: - node: ["18", "20", "22"] + node: ["18", "20", "22", "24"] runs-on: ubuntu-latest services: mongo: @@ -157,7 +160,7 @@ jobs: NPM_CONFIG_UNSAFE_PERM: true steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 - uses: actions/setup-node@v4 @@ -166,7 +169,7 @@ jobs: - name: Install run: npm ci - name: Download Build Artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: tav-build-cache-${{ github.run_number }} path: .nx diff --git a/.github/workflows/unit-test.yml b/.github/workflows/test.yml similarity index 52% rename from .github/workflows/unit-test.yml rename to .github/workflows/test.yml index d1c9a94655..0b9346c05d 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/test.yml @@ -1,11 +1,15 @@ -name: Unit Tests +name: Test Packages on: push: branches: [main] pull_request: + branches: [main] + +permissions: + contents: read jobs: - build-and-cache: + compile: strategy: fail-fast: false runs-on: ubuntu-latest @@ -14,7 +18,7 @@ jobs: NODE_OPTIONS: --max-old-space-size=4096 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 # Use the same Node.js version used for `release-please` workflow. @@ -23,19 +27,33 @@ jobs: node-version: 18 - name: Install run: npm ci - - name: Build - run: npm run compile + # Note: when pushing to main we want to test only what changed in + # last commit. Otherwise we want to test all changes from origin/main. + # So we set the right values for base and head commits depending + # on the type of event (PR or push) + # ref: https://nx.dev/ci/features/affected#configure-affected-on-ci + - name: Set base and head commits + run: | + if [ "${{github.event_name}}" == "push" ]; then + echo "NX_BASE=origin/main~1" >> "$GITHUB_ENV" + echo "NX_HEAD=origin/main" >> "$GITHUB_ENV" + else + echo "NX_BASE=origin/main" >> "$GITHUB_ENV" + echo "NX_HEAD=HEAD" >> "$GITHUB_ENV" + fi + - name: Compile (Delta) + run: npm run compile:ci:affected - name: Upload Build Artifacts uses: actions/upload-artifact@v4 with: - name: tests-build-cache-${{ github.run_number }} + name: compile-cache-${{ github.run_number }} path: .nx include-hidden-files: true if-no-files-found: error retention-days: 1 unit-test: - needs: build-and-cache + needs: compile strategy: fail-fast: false matrix: @@ -45,13 +63,11 @@ jobs: - "20.6.0" - "20" - "22" - include: - - node: 18 - code-coverage: true + - "24" runs-on: ubuntu-latest services: memcached: - image: memcached:1.6.38-alpine + image: memcached:1.6.39-alpine ports: - 11211:11211 mongo: @@ -121,7 +137,7 @@ jobs: --health-timeout 5s --health-retries 5 cassandra: - image: bitnami/cassandra:3 + image: cassandra:3 ports: - 9042:9042 rabbitmq: @@ -168,9 +184,10 @@ jobs: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres NPM_CONFIG_UNSAFE_PERM: true + NODE_OPTIONS: --max-old-space-size=4096 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 - uses: actions/setup-node@v4 @@ -179,58 +196,97 @@ jobs: - name: Install run: npm ci - name: Download Build Artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: - name: tests-build-cache-${{ github.run_number }} + name: compile-cache-${{ github.run_number }} path: .nx - - name: Build - run: npm run compile - - name: Unit tests (Full) - if: matrix.code-coverage - run: npm run test - - name: Unit tests (Delta) - if: ${{ !matrix.code-coverage }} - run: npm run test:ci:changed - - name: Report Coverage - if: ${{ matrix.code-coverage && !cancelled()}} - uses: codecov/codecov-action@v5 - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + # Note: see comment in the compile job + - name: Set base and head commits + run: | + if [ "${{github.event_name}}" == "push" ]; then + echo "NX_BASE=origin/main~1" >> "$GITHUB_ENV" + echo "NX_HEAD=origin/main" >> "$GITHUB_ENV" + else + echo "NX_BASE=origin/main" >> "$GITHUB_ENV" + echo "NX_HEAD=HEAD" >> "$GITHUB_ENV" + fi + - name: Compile (Delta) + run: npm run compile:ci:affected + - name: Unit tests (Browser - Delta) + if: ${{ matrix.node == '22' }} + run: npm run test:browser:ci:affected + - name: Unit tests (Nodejs - Delta) + run: npm run test:ci:affected + - name: Test All Versions (Delta) + run: npm run test-all-versions:ci:affected + - name: Upload Test Artifacts + uses: actions/upload-artifact@v4 with: - verbose: true + name: tests-coverage-cache-${{ github.run_number }}-${{ matrix.node }} + include-hidden-files: true + if-no-files-found: error + retention-days: 1 + path: | + !node_modules + packages/*/.nyc_output/** + LICENSE - browser-test: - needs: build-and-cache - strategy: - fail-fast: false - matrix: - node: ["22"] + test-coverage-report: runs-on: ubuntu-latest - env: - NPM_CONFIG_UNSAFE_PERM: true - NODE_OPTIONS: --max-old-space-size=4096 + needs: unit-test steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 - uses: actions/setup-node@v4 with: - node-version: ${{ matrix.node }} + node-version: 18 - name: Install run: npm ci - - name: Download Build Artifacts - uses: actions/download-artifact@v4 + # NOTE: keep this in sync with the node versions from `unit-test` job + - name: Download Test Artifacts (18) + uses: actions/download-artifact@v5 with: - name: tests-build-cache-${{ github.run_number }} - path: .nx - - name: Build - run: npm run compile - - name: Unit tests - run: npm run test:browser - - name: Report Coverage - uses: codecov/codecov-action@v5 - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + name: tests-coverage-cache-${{ github.run_number }}-18 + path: . + - name: Download Test Artifacts (18.19.0) + uses: actions/download-artifact@v5 + with: + name: tests-coverage-cache-${{ github.run_number }}-18.19.0 + path: . + - name: Download Test Artifacts (20) + uses: actions/download-artifact@v5 + with: + name: tests-coverage-cache-${{ github.run_number }}-20 + path: . + - name: Download Test Artifacts (20.6.0) + uses: actions/download-artifact@v5 with: - verbose: true + name: tests-coverage-cache-${{ github.run_number }}-20.6.0 + path: . + - name: Download Test Artifacts (22) + uses: actions/download-artifact@v5 + with: + name: tests-coverage-cache-${{ github.run_number }}-22 + path: . + - name: Download Test Artifacts (24) + uses: actions/download-artifact@v5 + with: + name: tests-coverage-cache-${{ github.run_number }}-24 + path: . + # Note: see comment in the compile job + - name: Set base and head commits + run: | + if [ "${{github.event_name}}" == "push" ]; then + echo "NX_BASE=origin/main~1" >> "$GITHUB_ENV" + echo "NX_HEAD=origin/main" >> "$GITHUB_ENV" + else + echo "NX_BASE=origin/main" >> "$GITHUB_ENV" + echo "NX_HEAD=HEAD" >> "$GITHUB_ENV" + fi + - name: Merge coverage (Delta) + run: npm run test-merge-coverage:ci:affected + - name: Report Coverage with Flags + run: node ./scripts/codecov-upload-flags.mjs ${{ github.event.pull_request.head.sha }} ${{ github.event.pull_request.head.label }} + diff --git a/.github/workflows/update-otel-deps.yaml b/.github/workflows/update-otel-deps.yaml index f882a64d26..4f799814c6 100644 --- a/.github/workflows/update-otel-deps.yaml +++ b/.github/workflows/update-otel-deps.yaml @@ -3,16 +3,21 @@ name: Create or Update OpenTelemetry Update PR on: workflow_dispatch: +permissions: + contents: read + jobs: create-or-update-deps-pr: runs-on: ubuntu-latest + permissions: + contents: write # required for pushing changes steps: - name: Fork run: gh repo fork open-telemetry/opentelemetry-js-contrib env: GITHUB_TOKEN: ${{ secrets.OPENTELEMETRYBOT_GITHUB_TOKEN }} - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: repository: opentelemetrybot/opentelemetry-js-contrib ref: main diff --git a/.release-please-manifest.json b/.release-please-manifest.json index e020ab99e4..1900415135 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,68 +1,69 @@ { - "packages/resource-detector-alibaba-cloud": "0.31.3", - "packages/resource-detector-aws": "2.3.0", - "packages/resource-detector-azure": "0.10.0", - "packages/resource-detector-container": "0.7.3", - "packages/resource-detector-gcp": "0.37.0", + "packages/resource-detector-alibaba-cloud": "0.31.4", + "packages/resource-detector-aws": "2.4.0", + "packages/resource-detector-azure": "0.11.0", + "packages/resource-detector-container": "0.7.4", + "packages/resource-detector-gcp": "0.38.0", "packages/resource-detector-github": "0.31.0", - "packages/resource-detector-instana": "0.22.0", - "packages/auto-configuration-propagators": "0.4.1", - "packages/auto-instrumentations-node": "0.62.0", - "packages/auto-instrumentations-web": "0.49.0", + "packages/resource-detector-instana": "0.23.0", + "packages/auto-configuration-propagators": "0.4.2", + "packages/auto-instrumentations-node": "0.63.0", + "packages/auto-instrumentations-web": "0.50.0", "packages/baggage-span-processor": "0.4.0", - "packages/baggage-log-record-processor": "0.4.0", + "packages/baggage-log-record-processor": "0.5.0", "packages/host-metrics": "0.36.0", - "packages/id-generator-aws-xray": "2.0.0", - "packages/propagation-utils": "0.31.3", + "packages/id-generator-aws-xray": "2.0.1", + "packages/propagation-utils": "0.31.4", "packages/redis-common": "0.38.0", "packages/sql-common": "0.41.0", - "packages/contrib-test-utils": "0.49.0", - "packages/winston-transport": "0.14.0", - "packages/instrumentation-amqplib": "0.50.0", - "packages/instrumentation-cucumber": "0.18.0", - "packages/instrumentation-dataloader": "0.21.0", - "packages/instrumentation-fs": "0.23.0", - "packages/instrumentation-kafkajs": "0.12.0", - "packages/instrumentation-lru-memoizer": "0.48.0", - "packages/instrumentation-mongoose": "0.50.0", - "packages/instrumentation-runtime-node": "0.17.0", - "packages/instrumentation-socket.io": "0.50.0", - "packages/instrumentation-tedious": "0.22.0", - "packages/instrumentation-typeorm": "0.4.0", - "packages/instrumentation-undici": "0.14.0", - "packages/instrumentation-aws-lambda": "0.54.0", - "packages/instrumentation-aws-sdk": "0.56.0", - "packages/instrumentation-bunyan": "0.49.0", - "packages/instrumentation-cassandra-driver": "0.49.0", - "packages/instrumentation-connect": "0.47.0", - "packages/instrumentation-dns": "0.47.0", - "packages/instrumentation-express": "0.52.0", - "packages/instrumentation-fastify": "0.48.0", - "packages/instrumentation-generic-pool": "0.47.0", - "packages/instrumentation-graphql": "0.51.0", - "packages/instrumentation-hapi": "0.50.0", - "packages/instrumentation-ioredis": "0.51.0", - "packages/instrumentation-knex": "0.48.0", - "packages/instrumentation-koa": "0.51.0", - "packages/instrumentation-memcached": "0.47.0", - "packages/instrumentation-mongodb": "0.56.0", - "packages/instrumentation-mysql": "0.49.0", - "packages/instrumentation-mysql2": "0.49.0", - "packages/instrumentation-nestjs-core": "0.49.0", - "packages/instrumentation-net": "0.47.0", - "packages/instrumentation-oracledb": "0.29.0", - "packages/instrumentation-pg": "0.55.0", - "packages/instrumentation-pino": "0.50.0", - "packages/instrumentation-redis": "0.51.0", - "packages/instrumentation-restify": "0.49.0", - "packages/instrumentation-router": "0.48.0", - "packages/instrumentation-winston": "0.48.0", - "packages/instrumentation-document-load": "0.48.0", - "packages/instrumentation-long-task": "0.48.0", - "packages/instrumentation-user-interaction": "0.48.0", - "packages/plugin-react-load": "0.35.0", - "packages/propagator-instana": "0.4.0", - "packages/propagator-ot-trace": "0.28.0", - "packages/propagator-aws-xray": "2.1.0", - "packages/propagator-aws-xray-lambda": "0.55.0" + "packages/contrib-test-utils": "0.50.0", + "packages/winston-transport": "0.15.0", + "packages/instrumentation-amqplib": "0.51.0", + "packages/instrumentation-cucumber": "0.20.0", + "packages/instrumentation-dataloader": "0.22.0", + "packages/instrumentation-fs": "0.24.0", + "packages/instrumentation-kafkajs": "0.14.0", + "packages/instrumentation-lru-memoizer": "0.49.0", + "packages/instrumentation-mongoose": "0.51.0", + "packages/instrumentation-runtime-node": "0.18.0", + "packages/instrumentation-socket.io": "0.51.0", + "packages/instrumentation-tedious": "0.23.0", + "packages/instrumentation-typeorm": "0.5.0", + "packages/instrumentation-undici": "0.15.0", + "packages/instrumentation-aws-lambda": "0.55.0", + "packages/instrumentation-aws-sdk": "0.59.0", + "packages/instrumentation-bunyan": "0.50.0", + "packages/instrumentation-cassandra-driver": "0.50.0", + "packages/instrumentation-connect": "0.48.0", + "packages/instrumentation-dns": "0.48.0", + "packages/instrumentation-express": "0.53.0", + "packages/instrumentation-fastify": "0.49.0", + "packages/instrumentation-generic-pool": "0.48.0", + "packages/instrumentation-graphql": "0.52.0", + "packages/instrumentation-hapi": "0.51.0", + "packages/instrumentation-ioredis": "0.52.0", + "packages/instrumentation-knex": "0.49.0", + "packages/instrumentation-koa": "0.52.0", + "packages/instrumentation-memcached": "0.48.0", + "packages/instrumentation-mongodb": "0.57.0", + "packages/instrumentation-mysql": "0.50.0", + "packages/instrumentation-mysql2": "0.51.0", + "packages/instrumentation-nestjs-core": "0.50.0", + "packages/instrumentation-net": "0.48.0", + "packages/instrumentation-openai": "0.2.0", + "packages/instrumentation-oracledb": "0.30.0", + "packages/instrumentation-pg": "0.57.0", + "packages/instrumentation-pino": "0.51.0", + "packages/instrumentation-redis": "0.53.0", + "packages/instrumentation-restify": "0.50.0", + "packages/instrumentation-router": "0.49.0", + "packages/instrumentation-winston": "0.49.0", + "packages/instrumentation-document-load": "0.49.0", + "packages/instrumentation-long-task": "0.49.0", + "packages/instrumentation-user-interaction": "0.49.0", + "packages/plugin-react-load": "0.36.0", + "packages/propagator-instana": "0.4.1", + "packages/propagator-ot-trace": "0.28.1", + "packages/propagator-aws-xray": "2.1.1", + "packages/propagator-aws-xray-lambda": "0.55.1" } diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 34e7a82b9f..4281855a74 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -117,7 +117,7 @@ The required steps to start development on a pacakge are: - `npm ci` from root folder to install dependencies ([see npm-ci docs](https://docs.npmjs.com/cli/v10/commands/npm-ci)) - `cd` into the pacakge you want to apply changes. -- `npm run setup:dev` compiles the TypeScript files for this package and its dependencies within the repository. +- `npm run compile:with-dependencies` compiles the TypeScript files for this package and its dependencies within the repository. Then you can proceed to do apply the changes and use the scripts below for development workflow @@ -146,23 +146,21 @@ npm test However, some instrumentations require test-services to be running (e.g. the `instrumentation-mongodb` package requires a MongoDB server). Use the `test-services`-related npm scripts to start all required services in Docker and then run the tests with the appropriate configuration to use those services: ```sh -npm run test-services:start # starts services in Docker -npm run test:with-services-config # runs 'npm test' with envvars from test/test-services.env -npm run test-services:stop # stops services in Docker +npm run test-services:start # starts services in Docker +npm run test:with-services-env # runs 'npm test' with envvars from test/test-services.env +npm run test-services:stop # stops services in Docker ``` -If you only want to test a single package (e.g. the `instrumentation-mongodb`) you can `cd` into it and run the tests after you started the services. +If you only want to test a single package that dfepends on a service (e.g. the `instrumentation-mongodb`) you can `cd` into it and +use the same scripts for testing. In this case the script will only start the services needed to test the package. ```sh -npm run test-services:start # starts services in Docker -cd packages/instrumentation-mongodb # get into the instrumenation folder -RUN_MONGODB_TESTS=1 npm test # run the test with the proper config (check each package) -cd ../../.. # go back to root folder -npm run test-services:stop # stops services in Docker +cd packages/instrumentation-mongodb # get into the instrumenation folder +npm run test-services:start # start the MongoDB service in Docker +npm run test:with-services-env # runs 'npm test' with envvars from test/test-services.env +npm run test-services:stop # stop MongoDB service in Docker ``` -NOTE: scripts for each package will be added to avoid extra consumption of resources and improve the development experience. - ### Benchmarks When two or more approaches must be compared, please write a benchmark in the benchmark/index.js module so that we can keep track of the most efficient algorithm. diff --git a/codecov.yml b/codecov.yml index 1beb17b8de..98f28acca7 100644 --- a/codecov.yml +++ b/codecov.yml @@ -1,8 +1,9 @@ codecov: notify: - require_ci_to_pass: no + after_n_builds: 1 + require_ci_to_pass: no comment: - layout: "header, changes, diff, files" + layout: "header, changes, diff, flags, files" behavior: default coverage: status: @@ -13,3 +14,11 @@ coverage: default: target: auto threshold: 1% +# Codecov action does not read this file to do the split of coverage +# by flag. So there is no reason to have explicit flag definition. +# We use automatinc flag management. +# ref: https://about.codecov.io/blog/introducing-improved-flag-management-with-automatic-flags/ +# note: Uploads are made per package(flag) in ./scripts/codecov-upload-flags.mjs +flag_management: + default_rules: + carryforward: true diff --git a/eslint.config.js b/eslint.config.js index 0cde1b40db..a85da46290 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -88,6 +88,12 @@ module.exports = { parserOptions: { sourceType: 'module', } + }, + { + files: ["test/**/*.js", "test/**/*.mjs"], + rules: { + "no-unused-vars": "off", + } } ] }; diff --git a/examples/.eslintrc b/examples/.eslintrc deleted file mode 100644 index 5feabb97f5..0000000000 --- a/examples/.eslintrc +++ /dev/null @@ -1,16 +0,0 @@ -{ - "env": { - "node": true - }, - "extends": "airbnb-base", - "parserOptions": { - "sourceType": "script" - }, - "rules": { - "strict": ["error", "global"], - "no-use-before-define": ["error", "nofunc"], - "no-console": "off", - "import/no-unresolved": "off", - "no-unused-vars": ["error", { "argsIgnorePattern": "^_" }] - } -} diff --git a/examples/connect/client.js b/examples/connect/client.js index ea0fb965e9..fa959ac0b5 100644 --- a/examples/connect/client.js +++ b/examples/connect/client.js @@ -16,7 +16,6 @@ 'use strict'; -// eslint-disable-next-line import/order const tracing = require('./tracing')('example-connect-client'); const { tracer } = tracing; diff --git a/examples/connect/server.js b/examples/connect/server.js index 2f19b0b771..6c55a61259 100644 --- a/examples/connect/server.js +++ b/examples/connect/server.js @@ -16,7 +16,6 @@ 'use strict'; -// eslint-disable-next-line const tracing = require('./tracing')('example-connect-server'); // Require in rest of modules @@ -27,7 +26,6 @@ const axios = require('axios'); const app = connect(); const PORT = 8080; -// eslint-disable-next-line prefer-arrow-callback app.use(function middleware1(req, res, next) { next(); }); diff --git a/examples/dns/client.js b/examples/dns/client.js index a2d61cd60b..e1465659b1 100644 --- a/examples/dns/client.js +++ b/examples/dns/client.js @@ -18,7 +18,6 @@ const api = require('@opentelemetry/api'); const tracer = require('./tracer')('example-dns'); -// eslint-disable-next-line import/order const dns = require('dns').promises; /** A function which makes a dns lookup and handles response. */ diff --git a/examples/express/src/client.ts b/examples/express/src/client.ts index b23ed83f62..6f1d3a05a9 100644 --- a/examples/express/src/client.ts +++ b/examples/express/src/client.ts @@ -14,14 +14,14 @@ * limitations under the License. */ -// eslint-disable-next-line import/order, import/extensions import { setupTracing } from './tracer'; +// Initialize tracing before importing other moduless +const tracer = setupTracing('example-express-client'); + import * as api from '@opentelemetry/api'; import * as axios from 'axios'; -const tracer = setupTracing('example-express-client'); - async function makeRequest() { const span = tracer.startSpan('client.makeRequest()', { kind: api.SpanKind.CLIENT, diff --git a/examples/express/src/server.ts b/examples/express/src/server.ts index 424d79790e..e1b735facd 100644 --- a/examples/express/src/server.ts +++ b/examples/express/src/server.ts @@ -14,16 +14,16 @@ * limitations under the License. */ -// eslint-disable-next-line import/order, import/extensions import { setupTracing } from './tracer'; +// Initialize tracing before importing other modules +setupTracing('example-express-server'); + // Require in rest of modules import * as express from 'express'; import * as axios from 'axios'; import { RequestHandler } from 'express'; -setupTracing('example-express-server'); - // Setup express const app = express(); const PORT = 8080; diff --git a/examples/express/src/tracer.ts b/examples/express/src/tracer.ts index 92e7a39ecd..617a45cf47 100644 --- a/examples/express/src/tracer.ts +++ b/examples/express/src/tracer.ts @@ -36,7 +36,6 @@ import { import { ExpressInstrumentation } from '@opentelemetry/instrumentation-express'; import { HttpInstrumentation } from '@opentelemetry/instrumentation-http'; -// eslint-disable-next-line import/prefer-default-export export const setupTracing = (serviceName: string) => { const exporter = new OTLPTraceExporter({}); const provider = new NodeTracerProvider({ diff --git a/examples/fastify/server.js b/examples/fastify/server.js index 085070b5fb..afad11a43a 100644 --- a/examples/fastify/server.js +++ b/examples/fastify/server.js @@ -16,7 +16,6 @@ 'use strict'; -// eslint-disable-next-line const api = require('@opentelemetry/api'); const tracer = api.trace.getTracer('fastify-server'); const Fastify = require('fastify'); @@ -32,7 +31,6 @@ async function subsystem(fastify) { span.setAttribute('order', 2); }); - // eslint-disable-next-line prefer-arrow-callback fastify.addHook('onRequest', async function onRequestHook() { const span = api.trace.getSpan(api.context.active()); span.setAttribute('order', 3); diff --git a/examples/graphql/schema.js b/examples/graphql/schema.js index bbb10f80e9..673b94e826 100644 --- a/examples/graphql/schema.js +++ b/examples/graphql/schema.js @@ -14,6 +14,8 @@ * limitations under the License. */ +/* eslint-disable no-unused-vars */ + 'use strict'; const https = require('https'); diff --git a/examples/grpc-census-prop/.npmrc b/examples/grpc-census-prop/.npmrc deleted file mode 100644 index 43c97e719a..0000000000 --- a/examples/grpc-census-prop/.npmrc +++ /dev/null @@ -1 +0,0 @@ -package-lock=false diff --git a/examples/grpc-census-prop/README.md b/examples/grpc-census-prop/README.md deleted file mode 100644 index 205056471a..0000000000 --- a/examples/grpc-census-prop/README.md +++ /dev/null @@ -1,131 +0,0 @@ -# Introduction - -This example uses the same gRPC [defs.proto](./protos/defs.proto) as the -[grpc_dynamic_codegen](../grpc_dynamic_codegen) -example in which a server takes a payload containing bytes and capitalizes them. -In this case we are demonstrating the use of the -[propagator-grpc-census-binary](../../propagators/opentelemetry-propagator-grpc-census-binary) -propagator. The propagator can be useful when communicating with another service -that is already instrumented using OpenCensus. - -If both sides of gRPC communication are using OpenTelemetry instrumentation then -the `propagator-grpc-census-binary` propagator isn't required. Context will be -propagated using the `traceparent` header (thanks to the -[HttpTraceContextPropagator](https://github.com/open-telemetry/opentelemetry-js/blob/main/packages/opentelemetry-core/src/trace/W3CTraceContextPropagator.ts) -propagator from opentelemetry-core). If there is a mix of OpenCensus and OpenTelemetry -instrumentation then the `propagator-grpc-census-binary` propagator allows OpenTelemetry -to propagate context through the `grpc-trace-bin` binary header. - -The same source code is used to run various versions of the client and server. Environment -variables (set up through `scripts` in [package.json](./package.json)) determine the various -combinations. This table shows what to expect: - -| Combination | Client Instrumentation | Server Instrumentation | Propagation Header | -| :---------- | :--------------------- | :--------------------- | :----------------- | -| 1 | OpenTelemetry (default propagator) | OpenTelemetry (default propagator) | `traceparent` | -| 2 | OpenCensus | OpenTelemetry (**binary propagator**) | `grpc-trace-bin` | -| 3 | OpenCensus | OpenCensus | `grpc-trace-bin` | -| 4 | OpenTelemetry (**binary propagator**) | OpenCensus | `grpc-trace-bin` | - -If context propagation is working correctly we should see consistent values -for `traceId` in the output of both the client and server. (Note: the example -uses simple Console Exporters rather than Jaeger or Zipkin). The servers also -output the contents of `grpc.Metadata` which allows us to see the values of -`traceparent` or `grpc-trace-bin` where applicable. - -## Installation - -```sh -# from this directory -npm install -``` - -## Running the Client and Server combinations - -### Combination 1 - -OpenTelemetry (with default propagator) used on both client and server. -Propagation through `traceparent` header. - -- Run the server - - ```sh - # from this directory - npm run server:otel:defprop - ``` - -- Run the client - - ```sh - # from this directory - npm run client:otel:defprop - ``` - -### Combination 2 - -OpenTelemetry (with **binary propagator**) used on server, OpenCensus used -on client. Propagation through `grpc-trace-bin` header. - -- Run the server - - ```sh - # from this directory - npm run server:otel:binprop - ``` - -- Run the client - - ```sh - # from this directory - npm run client:census - ``` - -See [combination2](./combination2.md) for example output - -### Combination 3 - -OpenCensus used on both client and server. Propagation through `grpc-trace-bin` header. - -- Run the server - - ```sh - # from this directory - npm run server:census - ``` - -- Run the client - - ```sh - # from this directory - npm run client:census - ``` - -### Combination 4 - -OpenCensus used on server, OpenTelemetry (with **binary propagator**) used on -client. Propagation through `grpc-trace-bin` header. - -- Run the server - - ```sh - # from this directory - npm run server:census - ``` - -- Run the client - - ```sh - # from this directory - npm run client:otel:binprop - ``` - -See [combination4](./combination4.md) for example output - -## Useful links - -- For more information on OpenTelemetry, visit: -- For more information on OpenTelemetry for Node.js, visit: - -## LICENSE - -Apache License 2.0 diff --git a/examples/grpc-census-prop/capitalize_client.js b/examples/grpc-census-prop/capitalize_client.js deleted file mode 100644 index e04947a045..0000000000 --- a/examples/grpc-census-prop/capitalize_client.js +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -const api = require('@opentelemetry/api'); -/* eslint-disable global-require */ -const binaryPropagator = process.env.BINARY_PROPAGATOR === 'true'; -const censusTracer = process.env.CENSUS_TRACER === 'true'; -let tracer; -if (censusTracer) { - tracer = require('./tracer_census')(); -} else { - tracer = require('./tracer')( - 'example-grpc-capitalize-client', - binaryPropagator - ); -} - -const path = require('path'); -const grpc = require('grpc'); - -const PROTO_PATH = path.join(__dirname, 'protos/defs.proto'); - -// Even though grpc.load is deprecated in favor of @grpc/proto-loader, it -// appears @opencensus/instrumentation-grpc only gets to set the -// grpc-trace-bin header if we use grpc.load -const { Fetch } = grpc.load(PROTO_PATH).rpc; - -/** - * Creates a gRPC client, makes a gRPC call and waits before shutting down - */ -function main() { - const client = new Fetch( - 'localhost:50051', - grpc.credentials.createInsecure() - ); - const data = process.argv[2] || 'opentelemetry'; - console.log('> ', data); - - if (censusTracer) { - capitalizeWithCensusTracing(client, data); - } else { - capitalizeWithOTelTracing(client, data); - } - - // The process must live for at least the interval past any traces that - // must be exported, or some risk being lost if they are recorded after the - // last export. - console.log( - 'Sleeping 5 seconds before shutdown to ensure all records are flushed.' - ); - setTimeout(() => { - console.log('Completed.'); - }, 5000); -} - -/** - * Makes the gRPC call wrapped in an OpenCensus-style span - */ -function capitalizeWithCensusTracing(client, data) { - tracer.startRootSpan({ name: 'tutorialsClient.capitalize' }, rootSpan => { - client.capitalize({ data: Buffer.from(data) }, (err, response) => { - if (err) { - console.log('could not get grpc response'); - rootSpan.end(); - return; - } - console.log('< ', response.data.toString('utf8')); - - rootSpan.end(); - }); - }); -} - -/** - * Makes the gRPC call wrapped in an OpenTelemetry-style span - */ -function capitalizeWithOTelTracing(client, data) { - const span = tracer.startSpan('tutorialsClient.capitalize'); - api.context.with(api.trace.setSpan(api.ROOT_CONTEXT, span), () => { - client.capitalize({ data: Buffer.from(data) }, (err, response) => { - if (err) { - console.log('could not get grpc response'); - return; - } - console.log('< ', response.data.toString('utf8')); - // display traceid in the terminal - console.log(`traceid: ${span.spanContext().traceId}`); - span.end(); - }); - }); -} - -main(); diff --git a/examples/grpc-census-prop/capitalize_server.js b/examples/grpc-census-prop/capitalize_server.js deleted file mode 100644 index f992994dd7..0000000000 --- a/examples/grpc-census-prop/capitalize_server.js +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -/* eslint-disable global-require */ -const binaryPropagator = process.env.BINARY_PROPAGATOR === 'true'; -const censusTracer = process.env.CENSUS_TRACER === 'true'; - -let tracer; -let SpanKind; -if (censusTracer) { - tracer = require('./tracer_census')(); - ({ SpanKind } = require('@opencensus/core')); -} else { - tracer = require('./tracer')( - 'example-grpc-capitalize-server', - binaryPropagator - ); - ({ SpanKind } = require('@opentelemetry/api')); -} - -const path = require('path'); -const grpc = require('grpc'); -const protoLoader = require('@grpc/proto-loader'); - -const PROTO_PATH = path.join(__dirname, 'protos/defs.proto'); -const PROTO_OPTIONS = { - keepCase: true, - enums: String, - defaults: true, - oneofs: true, -}; -const definition = protoLoader.loadSync(PROTO_PATH, PROTO_OPTIONS); -const rpcProto = grpc.loadPackageDefinition(definition).rpc; - -/** - * Implements the Capitalize RPC method. - */ -function capitalize(call, callback) { - if (call.metadata) { - // output the gRPC metadata to see headers e.g. traceparent or grpc-trace-bin - console.dir(call.metadata, { depth: null }); - } - - let capitalized; - if (censusTracer) { - capitalized = capitalizeWithCensusTracing(call); - } else { - capitalized = capitalizeWithOTelTracing(call); - } - - callback(null, { data: Buffer.from(capitalized) }); -} - -/** - * Capitalize wrapped with Census tracing - */ -function capitalizeWithCensusTracing(call) { - const currentSpan = tracer.currentRootSpan; - // display traceid in the terminal - console.log(`traceid: ${currentSpan.traceId}`); - - const span = tracer.startChildSpan({ - name: 'tutorials.FetchImpl.capitalize', - kind: SpanKind.SERVER, - }); - - const data = call.request.data.toString('utf8'); - const capitalized = data.toUpperCase(); - for (let i = 0; i < 100000000; i += 1) { - // empty - } - span.end(); - return capitalized; -} - -/** - * Capitalize wrapped with OpenTelemetry tracing - */ -function capitalizeWithOTelTracing(call) { - const currentSpan = tracer.getCurrentSpan(); - // display traceid in the terminal - console.log(`traceid: ${currentSpan.spanContext().traceId}`); - - const span = tracer.startSpan('tutorials.FetchImpl.capitalize', { - kind: SpanKind.SERVER, - }); - - const data = call.request.data.toString('utf8'); - const capitalized = data.toUpperCase(); - for (let i = 0; i < 100000000; i += 1) { - // empty - } - span.end(); - return capitalized; -} - -/** - * Starts an RPC server that receives requests for the Fetch service at the - * sample server port. - */ -function main() { - const server = new grpc.Server(); - server.addService(rpcProto.Fetch.service, { capitalize }); - server.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure()); - server.start(); -} - -main(); diff --git a/examples/grpc-census-prop/combination2.md b/examples/grpc-census-prop/combination2.md deleted file mode 100644 index cd8b11d7a1..0000000000 --- a/examples/grpc-census-prop/combination2.md +++ /dev/null @@ -1,95 +0,0 @@ -# Example Output from Combination 2 - -OpenTelemetry (with **binary propagator**) used on server, OpenCensus used -on client. Propagation through `grpc-trace-bin` header. - -## Client - -Note: traceId **1565fbb4d6f042d8880bedb509bf6f2e** - -```sh -$ npm run client:census - -> grpc-census-prop-example@0.9.0 client:census /opentelemetry-js-contrib/examples/grpc-census-prop -> cross-env CENSUS_TRACER=true node ./capitalize_client.js - -> opentelemetry -Sleeping 5 seconds before shutdown to ensure all records are flushed. -(node:14866) DeprecationWarning: grpc.load: Use the @grpc/proto-loader module with grpc.loadPackageDefinition instead -< OPENTELEMETRY -RootSpan: {traceId: 1565fbb4d6f042d8880bedb509bf6f2e, spanId: a5ccb3c920a18ace, name: tutorialsClient.capitalize } - ChildSpans: - {spanId: c92c3b3f955cdce1, name: grpc.rpc.Fetch/Capitalize} -Completed. -``` - -## Server - -Note: traceId **1565fbb4d6f042d8880bedb509bf6f2e** - -```sh -$ npm run server:otel:binprop - -> grpc-census-prop-example@0.9.0 server:otel:binprop /opentelemetry-js-contrib/examples/grpc-census-prop -> cross-env BINARY_PROPAGATOR=true node ./capitalize_server.js - -PluginLoader#load: trying to load grpc@1.24.2 -Metadata { - _internal_repr: - { 'grpc-trace-bin': - [ Buffer [Uint8Array] [ - 0, - 0, - 21, - 101, - 251, - 180, - 214, - 240, - 66, - 216, - 136, - 11, - 237, - 181, - 9, - 191, - 111, - 46, - 1, - 201, - 44, - 59, - 63, - 149, - 92, - 220, - 225, - 2, - 1 ] ], - 'user-agent': [ 'grpc-node/1.24.2 grpc-c/8.0.0 (linux; chttp2; ganges)' ] }, - flags: 0 } -traceid: 1565fbb4d6f042d8880bedb509bf6f2e -{ traceId: '1565fbb4d6f042d8880bedb509bf6f2e', - parentId: '891bd1ebb5e44ec8', - name: 'tutorials.FetchImpl.capitalize', - id: '61a1c3bce0364fe2', - kind: 1, - timestamp: 1591295467649290, - duration: 101304, - attributes: {}, - status: { code: 0 }, - events: [] } -{ traceId: '1565fbb4d6f042d8880bedb509bf6f2e', - parentId: 'c92c3b3f955cdce1', - name: 'grpc.rpc.Fetch/Capitalize', - id: '891bd1ebb5e44ec8', - kind: 1, - timestamp: 1591295467645184, - duration: 106431, - attributes: - { 'grpc.kind': 1, component: 'grpc', 'grpc.status_code': '0' }, - status: { code: 0 }, - events: - [ { name: 'received', attributes: undefined, time: [Array] } ] } -``` diff --git a/examples/grpc-census-prop/combination4.md b/examples/grpc-census-prop/combination4.md deleted file mode 100644 index 7f622dc7bb..0000000000 --- a/examples/grpc-census-prop/combination4.md +++ /dev/null @@ -1,98 +0,0 @@ -# Example Output from Combination 4 - -OpenCensus used on server, OpenTelemetry (with **binary propagator**) used on -client. Propagation through `grpc-trace-bin` header. - -## Client - -Note: traceId **901c68f681e5a85a125b3dad82e51498** - -```sh -$ npm run client:otel:binprop - -> grpc-census-prop-example@0.9.0 client:otel:binprop /opentelemetry-js-contrib/examples/grpc-census-prop -> cross-env BINARY_PROPAGATOR=true node ./capitalize_client.js - -PluginLoader#load: trying to load grpc@1.24.2 -> opentelemetry -Sleeping 5 seconds before shutdown to ensure all records are flushed. -(node:29834) DeprecationWarning: grpc.load: Use the @grpc/proto-loader module with grpc.loadPackageDefinition instead -{ traceId: '901c68f681e5a85a125b3dad82e51498', - parentId: '070c69c837bbbd1e', - name: 'grpc.rpc.Fetch/Capitalize', - id: 'ecdf319bce919fde', - kind: 2, - timestamp: 1591295728961209, - duration: 159530, - attributes: - { component: 'grpc', - 'grpc.method': '/rpc.Fetch/Capitalize', - 'grpc.kind': 2, - 'grpc.status_code': '0' }, - status: { code: 0 }, - events: [ { name: 'sent', attributes: undefined, time: [Array] } ] } -< OPENTELEMETRY -traceid: 901c68f681e5a85a125b3dad82e51498 -{ traceId: '901c68f681e5a85a125b3dad82e51498', - parentId: undefined, - name: 'tutorialsClient.capitalize', - id: '070c69c837bbbd1e', - kind: 0, - timestamp: 1591295728960326, - duration: 163145, - attributes: {}, - status: { code: 0 }, - events: [] } -Completed. -``` - -## Server - -Note: traceId **901c68f681e5a85a125b3dad82e51498** - -```sh -$ npm run server:census - -> grpc-census-prop-example@0.9.0 server:census /opentelemetry-js-contrib/examples/grpc-census-prop -> cross-env CENSUS_TRACER=true node ./capitalize_server.js - -Metadata { - _internal_repr: - { 'grpc-trace-bin': - [ Buffer [Uint8Array] [ - 0, - 0, - 144, - 28, - 104, - 246, - 129, - 229, - 168, - 90, - 18, - 91, - 61, - 173, - 130, - 229, - 20, - 152, - 1, - 236, - 223, - 49, - 155, - 206, - 145, - 159, - 222, - 2, - 1 ] ], - 'user-agent': [ 'grpc-node/1.24.2 grpc-c/8.0.0 (linux; chttp2; ganges)' ] }, - flags: 0 } -traceid: 901c68f681e5a85a125b3dad82e51498 -RootSpan: {traceId: 901c68f681e5a85a125b3dad82e51498, spanId: 63028b5ce96caec6, name: grpc.rpc.Fetch/Capitalize } - ChildSpans: - {spanId: d70a03f18955e762, name: tutorials.FetchImpl.capitalize} -``` diff --git a/examples/grpc-census-prop/package.json b/examples/grpc-census-prop/package.json deleted file mode 100644 index cc5d9dc855..0000000000 --- a/examples/grpc-census-prop/package.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "grpc-census-prop-example", - "version": "0.23.0", - "description": "Example of using propagator-grpc-census-binary", - "main": "index.js", - "scripts": { - "lint": "eslint . --ext=ts,js,mjs", - "lint:fix": "eslint . --ext=ts,js,mjs --fix", - "server:otel:defprop": "cross-env node ./capitalize_server.js", - "server:otel:binprop": "cross-env BINARY_PROPAGATOR=true node ./capitalize_server.js", - "server:census": "cross-env CENSUS_TRACER=true node ./capitalize_server.js", - "client:otel:defprop": "cross-env node ./capitalize_client.js", - "client:otel:binprop": "cross-env BINARY_PROPAGATOR=true node ./capitalize_client.js", - "client:census": "cross-env CENSUS_TRACER=true node ./capitalize_client.js" - }, - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/open-telemetry/opentelemetry-js.git" - }, - "keywords": [ - "opentelemetry", - "grpc", - "tracing" - ], - "engines": { - "node": ">=8" - }, - "author": "OpenTelemetry Authors", - "license": "Apache-2.0", - "bugs": { - "url": "https://github.com/open-telemetry/opentelemetry-js/issues" - }, - "dependencies": { - "@grpc/proto-loader": "^0.4.0", - "@opencensus/core": "0.0.21", - "@opencensus/instrumentation-grpc": "0.0.21", - "@opencensus/nodejs": "0.0.21", - "@opencensus/propagation-binaryformat": "0.0.21", - "@opentelemetry/api": "^1.0.2", - "@opentelemetry/core": "^0.25.0", - "@opentelemetry/instrumentation": "^0.25.0", - "@opentelemetry/instrumentation-grpc": "^0.25.0", - "@opentelemetry/sdk-trace-node": "^0.25.0", - "@opentelemetry/propagator-grpc-census-binary": "^0.23.0", - "@opentelemetry/sdk-trace-base": "^0.25.0", - "grpc": "^1.24.2" - }, - "homepage": "https://github.com/open-telemetry/opentelemetry-js#readme", - "devDependencies": { - "cross-env": "^6.0.0" - } -} diff --git a/examples/grpc-census-prop/protos/defs.proto b/examples/grpc-census-prop/protos/defs.proto deleted file mode 100644 index cc4a40334c..0000000000 --- a/examples/grpc-census-prop/protos/defs.proto +++ /dev/null @@ -1,19 +0,0 @@ -syntax = "proto3"; - -option java_multiple_files = true; -option java_package = "io.grpc.examples.helloworld"; -option java_outer_classname = "HelloWorldProto"; -option objc_class_prefix = "HLW"; - -package rpc; - -service Fetch { - // Sends a capitalizes payload - rpc Capitalize(Payload) returns (Payload) {} -} - -// The request and response payload containing the id and data. -message Payload { - int32 id = 1; - bytes data = 2; -} diff --git a/examples/grpc-census-prop/tracer.js b/examples/grpc-census-prop/tracer.js deleted file mode 100644 index e78cf16000..0000000000 --- a/examples/grpc-census-prop/tracer.js +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict'; - -const opentelemetry = require('@opentelemetry/api'); -const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); -const { - SimpleSpanProcessor, - ConsoleSpanExporter, -} = require('@opentelemetry/sdk-trace-base'); -const { HttpTraceContextPropagator } = require('@opentelemetry/core'); -const { - GrpcCensusPropagator, -} = require('@opentelemetry/propagator-grpc-census-binary'); -const { registerInstrumentations } = require('@opentelemetry/instrumentation'); -const { GrpcInstrumentation } = require('@opentelemetry/instrumentation-grpc'); - -/** - * Return an OpenTelemetry tracer configured to use the gRPC plugin and with the - * requested propagator - */ -module.exports = (serviceName, binaryPropagator) => { - const provider = new NodeTracerProvider({ - spanProcessors: [ - // It is recommended to use `BatchSpanProcessor` for better performance - // and optimization, especially in production. - new SimpleSpanProcessor(new ConsoleSpanExporter()), - ], - }); - - if (binaryPropagator) { - // Initialize the OpenTelemetry APIs to use the NodeTracerProvider bindings - provider.register({ - propagator: new GrpcCensusPropagator(), - }); - } else { - provider.register({ - propagator: new HttpTraceContextPropagator(), - }); - } - - registerInstrumentations({ - instrumentations: [new GrpcInstrumentation()], - }); - - return opentelemetry.trace.getTracer(serviceName); -}; diff --git a/examples/hapi/client.js b/examples/hapi/client.js index 9037f4104e..92c002d023 100644 --- a/examples/hapi/client.js +++ b/examples/hapi/client.js @@ -16,7 +16,6 @@ 'use strict'; -// eslint-disable-next-line import/order const tracer = require('./tracer')('example-hapi-client'); const api = require('@opentelemetry/api'); diff --git a/examples/hapi/server.js b/examples/hapi/server.js index bb1de52ece..6f5f79ae42 100644 --- a/examples/hapi/server.js +++ b/examples/hapi/server.js @@ -19,7 +19,6 @@ const api = require('@opentelemetry/api'); require('./tracer')('example-hapi-server'); -// eslint-disable-next-line const Hapi = require('@hapi/hapi'); const PORT = 8081; diff --git a/examples/koa/src/client.ts b/examples/koa/src/client.ts index 705a04e720..648ef117ba 100644 --- a/examples/koa/src/client.ts +++ b/examples/koa/src/client.ts @@ -16,7 +16,6 @@ import * as api from '@opentelemetry/api'; import * as axios from 'axios'; -// eslint-disable-next-line import/extensions import { setupTracing } from './tracer'; const tracer = setupTracing('example-koa-client'); diff --git a/examples/koa/src/server.ts b/examples/koa/src/server.ts index 91ff6e552f..5657f058e5 100644 --- a/examples/koa/src/server.ts +++ b/examples/koa/src/server.ts @@ -19,7 +19,6 @@ import * as api from '@opentelemetry/api'; // Adding Koa router (if desired) import * as Router from '@koa/router'; import * as Koa from 'koa'; -// eslint-disable-next-line import/extensions import { setupTracing } from './tracer'; setupTracing('example-koa-server'); diff --git a/examples/koa/src/tracer.ts b/examples/koa/src/tracer.ts index 7816edc706..52d28c4291 100644 --- a/examples/koa/src/tracer.ts +++ b/examples/koa/src/tracer.ts @@ -28,7 +28,6 @@ import { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; const EXPORTER = process.env.EXPORTER || ''; -// eslint-disable-next-line import/prefer-default-export export const setupTracing = (serviceName: string) => { let exporter; if (EXPORTER === 'jaeger') { diff --git a/examples/meta-node/client.js b/examples/meta-node/client.js index 82d8f8dd0f..c2da1a8514 100644 --- a/examples/meta-node/client.js +++ b/examples/meta-node/client.js @@ -16,7 +16,6 @@ 'use strict'; -// eslint-disable-next-line import/order const tracer = require('./tracer')('example-express-client'); const api = require('@opentelemetry/api'); const axios = require('axios').default; diff --git a/examples/meta-node/server.js b/examples/meta-node/server.js index 883fbbfee8..0f299ad2f4 100644 --- a/examples/meta-node/server.js +++ b/examples/meta-node/server.js @@ -16,7 +16,6 @@ 'use strict'; -// eslint-disable-next-line require('./tracer')('example-meta-node'); // Require in rest of modules diff --git a/examples/mongodb/src/client.ts b/examples/mongodb/src/client.ts index 7b87249576..21798b0aec 100644 --- a/examples/mongodb/src/client.ts +++ b/examples/mongodb/src/client.ts @@ -16,7 +16,6 @@ import * as api from '@opentelemetry/api'; import * as http from 'http'; -// eslint-disable-next-line import/extensions import { setupTracing } from './tracer'; const tracer = setupTracing('example-mongodb-http-client'); diff --git a/examples/mongodb/src/server.ts b/examples/mongodb/src/server.ts index a9f406af35..5bb1c9a9aa 100644 --- a/examples/mongodb/src/server.ts +++ b/examples/mongodb/src/server.ts @@ -19,9 +19,7 @@ import * as http from 'http'; import { IncomingMessage, ServerResponse } from 'http'; import * as mongodb from 'mongodb'; import { Collection } from 'mongodb'; -// eslint-disable-next-line import/extensions import { setupTracing } from './tracer'; -// eslint-disable-next-line import/extensions import { accessDB } from './utils'; setupTracing('example-mongodb-server'); diff --git a/examples/mongodb/src/tracer.ts b/examples/mongodb/src/tracer.ts index 77abc673ea..b27d0092be 100644 --- a/examples/mongodb/src/tracer.ts +++ b/examples/mongodb/src/tracer.ts @@ -25,7 +25,6 @@ import { HttpInstrumentation } from '@opentelemetry/instrumentation-http'; import { MongoDBInstrumentation } from '@opentelemetry/instrumentation-mongodb'; import { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; -// eslint-disable-next-line import/prefer-default-export export const setupTracing = (serviceName: string): api.Tracer => { const provider = new NodeTracerProvider({ resource: new Resource({ diff --git a/examples/mongodb/src/utils.ts b/examples/mongodb/src/utils.ts index d2dbde98ec..837405ba7c 100644 --- a/examples/mongodb/src/utils.ts +++ b/examples/mongodb/src/utils.ts @@ -22,7 +22,6 @@ import * as mongodb from 'mongodb'; * @param dbName The mongodb database name. * @param options The mongodb client config options. */ -// eslint-disable-next-line import/prefer-default-export export function accessDB( url: string, dbName: string, diff --git a/examples/mysql/src/client.ts b/examples/mysql/src/client.ts index d317a30c04..6936fd0cb6 100644 --- a/examples/mysql/src/client.ts +++ b/examples/mysql/src/client.ts @@ -16,7 +16,6 @@ import * as api from '@opentelemetry/api'; import * as http from 'http'; -// eslint-disable-next-line import/extensions import { setupTracing } from './tracer'; const tracer = setupTracing('example-mysql-client'); diff --git a/examples/mysql/src/server.ts b/examples/mysql/src/server.ts index 513e45d6fd..1772732521 100644 --- a/examples/mysql/src/server.ts +++ b/examples/mysql/src/server.ts @@ -18,7 +18,6 @@ import * as api from '@opentelemetry/api'; import * as mysql from 'mysql'; import * as http from 'http'; import { MysqlError, PoolConnection } from 'mysql'; -// eslint-disable-next-line import/extensions import { setupTracing } from './tracer'; setupTracing('example-mysql-server'); diff --git a/examples/mysql/src/tracer.ts b/examples/mysql/src/tracer.ts index f90c0c469d..b00fda23dd 100644 --- a/examples/mysql/src/tracer.ts +++ b/examples/mysql/src/tracer.ts @@ -37,7 +37,6 @@ const { const EXPORTER = process.env.EXPORTER || ''; -// eslint-disable-next-line import/prefer-default-export export const setupTracing = (serviceName: string) => { // metrics: const metricExporter = new OTLPMetricExporter(); diff --git a/examples/react-load/preact/.eslintrc.js b/examples/react-load/preact/.eslintrc.js index cc27325c72..08ed1c7809 100644 --- a/examples/react-load/preact/.eslintrc.js +++ b/examples/react-load/preact/.eslintrc.js @@ -22,5 +22,6 @@ module.exports = { ...baseConfig, env: { browser: true, + node: true, }, }; diff --git a/examples/react-load/preact/src/components/Content.js b/examples/react-load/preact/src/components/Content.js index 13357c758f..6af0ee4f7d 100644 --- a/examples/react-load/preact/src/components/Content.js +++ b/examples/react-load/preact/src/components/Content.js @@ -27,7 +27,6 @@ class Content extends BaseOpenTelemetryComponent { }; } - // eslint-disable-next-line class-methods-use-this componentDidMount() { // Example, do something here } diff --git a/examples/react-load/preact/src/components/Home.js b/examples/react-load/preact/src/components/Home.js index 6789351ba8..2a5444aa9f 100644 --- a/examples/react-load/preact/src/components/Home.js +++ b/examples/react-load/preact/src/components/Home.js @@ -20,7 +20,6 @@ import { Link } from 'preact-router/match'; import { BaseOpenTelemetryComponent } from '@opentelemetry/plugin-react-load'; class Home extends BaseOpenTelemetryComponent { - // eslint-disable-next-line class-methods-use-this render() { return (
diff --git a/examples/react-load/react/.eslintrc.js b/examples/react-load/react/.eslintrc.js index cc27325c72..08ed1c7809 100644 --- a/examples/react-load/react/.eslintrc.js +++ b/examples/react-load/react/.eslintrc.js @@ -22,5 +22,6 @@ module.exports = { ...baseConfig, env: { browser: true, + node: true, }, }; diff --git a/examples/redis/src/client.ts b/examples/redis/src/client.ts index 0063f6a460..127eef1e9a 100644 --- a/examples/redis/src/client.ts +++ b/examples/redis/src/client.ts @@ -16,7 +16,6 @@ import * as api from '@opentelemetry/api'; import * as axios from 'axios'; -// eslint-disable-next-line import/extensions import { setupTracing } from './tracer'; const tracer = setupTracing('example-redis-client'); diff --git a/examples/redis/src/server.ts b/examples/redis/src/server.ts index b9d1085cd7..41377b8700 100644 --- a/examples/redis/src/server.ts +++ b/examples/redis/src/server.ts @@ -18,13 +18,10 @@ import * as express from 'express'; import * as axios from 'axios'; import { randomBytes } from 'crypto'; -// eslint-disable-next-line import/extensions import { setupTracing } from './tracer'; -// eslint-disable-next-line import/extensions import * as tracerHandlers from './express-tracer-handlers'; const tracer = setupTracing('example-redis-server'); -// eslint-disable-next-line import/extensions const { redisPromise } = require('./setup-redis'); // Setup express diff --git a/examples/redis/src/setup-redis.ts b/examples/redis/src/setup-redis.ts index b7568f9c84..e302c98332 100644 --- a/examples/redis/src/setup-redis.ts +++ b/examples/redis/src/setup-redis.ts @@ -17,7 +17,6 @@ import { createClient } from 'redis'; const client = createClient('redis://localhost:6379'); -// eslint-disable-next-line import/prefer-default-export export const redisPromise = new Promise((resolve, reject) => { client.once('ready', () => { resolve(client); diff --git a/examples/redis/src/tracer.ts b/examples/redis/src/tracer.ts index e5f3c42c4d..5ea3c0f12a 100644 --- a/examples/redis/src/tracer.ts +++ b/examples/redis/src/tracer.ts @@ -27,7 +27,6 @@ import { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions'; const EXPORTER = process.env.EXPORTER || ''; -// eslint-disable-next-line import/prefer-default-export export const setupTracing = (serviceName: string) => { let exporter; if (EXPORTER.toLowerCase().startsWith('z')) { diff --git a/examples/router/client.js b/examples/router/client.js index b5fb684ee7..5cc5ea84bb 100644 --- a/examples/router/client.js +++ b/examples/router/client.js @@ -18,7 +18,6 @@ // required to initialize the service name for the auto-instrumentation require('./tracer')('example-client'); -// eslint-disable-next-line import/order const http = require('http'); /** A function which makes requests and handles response. */ diff --git a/examples/router/server.js b/examples/router/server.js index f234ce7eb5..4910cc7ca4 100644 --- a/examples/router/server.js +++ b/examples/router/server.js @@ -37,18 +37,15 @@ router.param('name', (req, res, next, name) => { next(); }); -// eslint-disable-next-line prefer-arrow-callback router.get('/hello/:name', function greetingHandler(req, res) { res.setHeader('Content-Type', 'text/plain; charset=utf-8'); res.end(`Hello, ${req.params.name}!`); }); -// eslint-disable-next-line prefer-arrow-callback router.get('/err', function erroringRoute(req, res, next) { next(new Error('Broken!')); }); -// eslint-disable-next-line prefer-arrow-callback, func-names const server = http.createServer(function (req, res) { router(req, res, error => { if (error) { diff --git a/examples/web/.eslintrc.js b/examples/web/.eslintrc.js index 718b15e08e..ca4a364890 100644 --- a/examples/web/.eslintrc.js +++ b/examples/web/.eslintrc.js @@ -22,5 +22,6 @@ module.exports = { ...baseConfig, env: { browser: true, + node: true, }, }; diff --git a/examples/web/examples/document-load/index.js b/examples/web/examples/document-load/index.js index e89ace47a6..ecd5c28cff 100644 --- a/examples/web/examples/document-load/index.js +++ b/examples/web/examples/document-load/index.js @@ -66,7 +66,6 @@ const tracer = provider.getTracer('example-document-load'); const getData = url => new Promise((resolve, reject) => { - // eslint-disable-next-line no-undef const req = new XMLHttpRequest(); req.open('GET', url, true); req.send(); diff --git a/examples/web/examples/meta/index.js b/examples/web/examples/meta/index.js index c780e5163d..2789e29050 100644 --- a/examples/web/examples/meta/index.js +++ b/examples/web/examples/meta/index.js @@ -73,7 +73,6 @@ function btnAddClick() { } function prepareClickEvents() { - // eslint-disable-next-line no-plusplus for (let i = 0; i < 5; i++) { btnAddClick(); } @@ -106,7 +105,7 @@ function onClick(navigate) { } function getData(url) { - return new Promise((resolve, _reject) => { + return new Promise(resolve => { const req = new XMLHttpRequest(); req.open('GET', url, true); req.setRequestHeader('Content-Type', 'application/json'); diff --git a/examples/web/examples/user-interaction/index.js b/examples/web/examples/user-interaction/index.js index 1907a85360..e2fb45fa33 100644 --- a/examples/web/examples/user-interaction/index.js +++ b/examples/web/examples/user-interaction/index.js @@ -74,7 +74,6 @@ function btnAddClick() { } function prepareClickEvents() { - // eslint-disable-next-line no-plusplus for (let i = 0; i < 5; i++) { btnAddClick(); } @@ -107,7 +106,7 @@ function onClick(navigate) { } function getData(url) { - return new Promise((resolve, _reject) => { + return new Promise(resolve => { const req = new XMLHttpRequest(); req.open('GET', url, true); req.setRequestHeader('Content-Type', 'application/json'); diff --git a/incubator/opentelemetry-sampler-aws-xray/package.json b/incubator/opentelemetry-sampler-aws-xray/package.json index fb1d5a0f18..9d7d6c06d9 100644 --- a/incubator/opentelemetry-sampler-aws-xray/package.json +++ b/incubator/opentelemetry-sampler-aws-xray/package.json @@ -28,11 +28,11 @@ ], "repository": "open-telemetry/opentelemetry-js-contrib", "scripts": { - "setup:dev": "nx run-many -t compile -p @opentelemetry/sampler-aws-xray", - "compile": "tsc -p .", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/sampler-aws-xray", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", "tdd": "npm run test -- --watch-extensions ts --watch", "test": "nyc mocha 'test/**/*.test.ts'", diff --git a/incubator/opentelemetry-sampler-aws-xray/src/aws-xray-sampling-client.ts b/incubator/opentelemetry-sampler-aws-xray/src/aws-xray-sampling-client.ts index 75c299295b..63e90c29fb 100644 --- a/incubator/opentelemetry-sampler-aws-xray/src/aws-xray-sampling-client.ts +++ b/incubator/opentelemetry-sampler-aws-xray/src/aws-xray-sampling-client.ts @@ -45,7 +45,7 @@ export class AWSXRaySamplingClient { this.makeSamplingRequest( this.samplingTargetsEndpoint, callback, - this.samplerDiag.debug, + (message: string) => this.samplerDiag.debug(message), JSON.stringify(requestBody) ); } @@ -56,7 +56,7 @@ export class AWSXRaySamplingClient { this.makeSamplingRequest( this.getSamplingRulesEndpoint, callback, - this.samplerDiag.error + (message: string) => this.samplerDiag.error(message) ); } diff --git a/incubator/opentelemetry-sampler-aws-xray/src/fallback-sampler.ts b/incubator/opentelemetry-sampler-aws-xray/src/fallback-sampler.ts index d61dd8fb60..11aabd0ac7 100644 --- a/incubator/opentelemetry-sampler-aws-xray/src/fallback-sampler.ts +++ b/incubator/opentelemetry-sampler-aws-xray/src/fallback-sampler.ts @@ -21,16 +21,20 @@ import { Attributes, Context, Link, SpanKind } from '@opentelemetry/api'; import { Sampler, + SamplingDecision, SamplingResult, TraceIdRatioBasedSampler, } from '@opentelemetry/sdk-trace-base'; +import { RateLimitingSampler } from './rate-limiting-sampler'; // FallbackSampler samples 1 req/sec and additional 5% of requests using TraceIdRatioBasedSampler. export class FallbackSampler implements Sampler { private fixedRateSampler: TraceIdRatioBasedSampler; + private rateLimitingSampler: RateLimitingSampler; - constructor() { - this.fixedRateSampler = new TraceIdRatioBasedSampler(0.05); + constructor(ratio = 0.05, quota = 1) { + this.fixedRateSampler = new TraceIdRatioBasedSampler(ratio); + this.rateLimitingSampler = new RateLimitingSampler(quota); } shouldSample( @@ -41,7 +45,19 @@ export class FallbackSampler implements Sampler { attributes: Attributes, links: Link[] ): SamplingResult { - // TODO: implement and use Rate Limiting Sampler + const samplingResult: SamplingResult = + this.rateLimitingSampler.shouldSample( + context, + traceId, + spanName, + spanKind, + attributes, + links + ); + + if (samplingResult.decision !== SamplingDecision.NOT_RECORD) { + return samplingResult; + } return this.fixedRateSampler.shouldSample(context, traceId); } diff --git a/incubator/opentelemetry-sampler-aws-xray/src/rate-limiter.ts b/incubator/opentelemetry-sampler-aws-xray/src/rate-limiter.ts new file mode 100644 index 0000000000..2c407fce6c --- /dev/null +++ b/incubator/opentelemetry-sampler-aws-xray/src/rate-limiter.ts @@ -0,0 +1,65 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Includes work from: +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +/* + * The RateLimiter keeps track of the current reservoir quota balance available (measured via available time) + * If enough time has elapsed, the RateLimiter will allow quota balance to be consumed/taken (decrease available time) + * A RateLimitingSampler uses this RateLimiter to determine if it should sample or not based on the quota balance available. + */ +export class RateLimiter { + // Quota assigned to client to dictate maximum quota balance that can be consumed per second. + private quota: number; + private MAX_BALANCE_MILLIS: number; + // Used to measure current quota balance. + private walletFloorMillis: number; + + constructor(quota: number, maxBalanceInSeconds = 1) { + this.MAX_BALANCE_MILLIS = maxBalanceInSeconds * 1000.0; + this.quota = quota; + this.walletFloorMillis = Date.now(); + // current "balance" would be `ceiling - floor` + } + + public take(cost = 1): boolean { + if (this.quota === 0) { + return false; + } + + // assume divide by zero not possible + const costInMillis: number = (cost * 1000.0) / this.quota; + + const walletCeilingMillis: number = Date.now(); + let currentBalanceMillis: number = + walletCeilingMillis - this.walletFloorMillis; + currentBalanceMillis = Math.min( + currentBalanceMillis, + this.MAX_BALANCE_MILLIS + ); + const pendingRemainingBalanceMillis: number = + currentBalanceMillis - costInMillis; + if (pendingRemainingBalanceMillis >= 0) { + this.walletFloorMillis = + walletCeilingMillis - pendingRemainingBalanceMillis; + return true; + } + // No changes to the wallet state + return false; + } +} diff --git a/incubator/opentelemetry-sampler-aws-xray/src/rate-limiting-sampler.ts b/incubator/opentelemetry-sampler-aws-xray/src/rate-limiting-sampler.ts new file mode 100644 index 0000000000..c384ced22e --- /dev/null +++ b/incubator/opentelemetry-sampler-aws-xray/src/rate-limiting-sampler.ts @@ -0,0 +1,58 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Includes work from: +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { Attributes, Context, Link, SpanKind } from '@opentelemetry/api'; +import { + Sampler, + SamplingDecision, + SamplingResult, +} from '@opentelemetry/sdk-trace-base'; +import { RateLimiter } from './rate-limiter'; + +export class RateLimitingSampler implements Sampler { + private quota: number; + private reservoir: RateLimiter; + + constructor(quota: number) { + this.quota = quota; + this.reservoir = new RateLimiter(quota); + } + + shouldSample( + context: Context, + traceId: string, + spanName: string, + spanKind: SpanKind, + attributes: Attributes, + links: Link[] + ): SamplingResult { + if (this.reservoir.take(1)) { + return { + decision: SamplingDecision.RECORD_AND_SAMPLED, + attributes: attributes, + }; + } + return { decision: SamplingDecision.NOT_RECORD, attributes: attributes }; + } + + public toString(): string { + return `RateLimitingSampler{rate limiting sampling with sampling config of ${this.quota} req/sec and 0% of additional requests}`; + } +} diff --git a/incubator/opentelemetry-sampler-aws-xray/src/remote-sampler.ts b/incubator/opentelemetry-sampler-aws-xray/src/remote-sampler.ts index 5cc080ee90..d6876bf60e 100644 --- a/incubator/opentelemetry-sampler-aws-xray/src/remote-sampler.ts +++ b/incubator/opentelemetry-sampler-aws-xray/src/remote-sampler.ts @@ -36,11 +36,19 @@ import { FallbackSampler } from './fallback-sampler'; import { AWSXRayRemoteSamplerConfig, GetSamplingRulesResponse, + GetSamplingTargetsBody, + GetSamplingTargetsResponse, SamplingRuleRecord, + SamplingTargetDocument, + TargetMap, } from './types'; -import { RuleCache } from './rule-cache'; +import { + DEFAULT_TARGET_POLLING_INTERVAL_SECONDS, + RuleCache, +} from './rule-cache'; import { SamplingRuleApplier } from './sampling-rule-applier'; +import { PACKAGE_NAME } from './version'; // 5 minute default sampling rules polling interval const DEFAULT_RULES_POLLING_INTERVAL_SECONDS: number = 5 * 60; @@ -94,17 +102,22 @@ export class AWSXRayRemoteSampler implements Sampler { // Not intended for external use, use Parent-based `AWSXRayRemoteSampler` instead. export class _AWSXRayRemoteSampler implements Sampler { private rulePollingIntervalMillis: number; + private targetPollingInterval: number; private awsProxyEndpoint: string; private ruleCache: RuleCache; private fallbackSampler: FallbackSampler; private samplerDiag: DiagLogger; private rulePoller: NodeJS.Timeout | undefined; + private targetPoller: NodeJS.Timeout | undefined; private clientId: string; private rulePollingJitterMillis: number; + private targetPollingJitterMillis: number; private samplingClient: AWSXRaySamplingClient; constructor(samplerConfig: AWSXRayRemoteSamplerConfig) { - this.samplerDiag = diag; + this.samplerDiag = diag.createComponentLogger({ + namespace: PACKAGE_NAME, + }); if ( samplerConfig.pollingInterval == null || @@ -120,6 +133,8 @@ export class _AWSXRayRemoteSampler implements Sampler { } this.rulePollingJitterMillis = Math.random() * 5 * 1000; + this.targetPollingInterval = this.getDefaultTargetPollingInterval(); + this.targetPollingJitterMillis = (Math.random() / 10) * 1000; this.awsProxyEndpoint = samplerConfig.endpoint ? samplerConfig.endpoint @@ -137,7 +152,12 @@ export class _AWSXRayRemoteSampler implements Sampler { // Start the Sampling Rules poller this.startSamplingRulesPoller(); - // TODO: Start the Sampling Targets poller + // Start the Sampling Targets poller where the first poll occurs after the default interval + this.startSamplingTargetsPoller(); + } + + public getDefaultTargetPollingInterval(): number { + return DEFAULT_TARGET_POLLING_INTERVAL_SECONDS; } public shouldSample( @@ -203,6 +223,7 @@ export class _AWSXRayRemoteSampler implements Sampler { public stopPollers() { clearInterval(this.rulePoller); + clearInterval(this.targetPoller); } private startSamplingRulesPoller(): void { @@ -216,6 +237,27 @@ export class _AWSXRayRemoteSampler implements Sampler { this.rulePoller.unref(); } + private startSamplingTargetsPoller(): void { + // Update sampling targets every targetPollingInterval (usually 10 seconds) + this.targetPoller = setInterval( + () => this.getAndUpdateSamplingTargets(), + this.targetPollingInterval * 1000 + this.targetPollingJitterMillis + ); + this.targetPoller.unref(); + } + + private getAndUpdateSamplingTargets(): void { + const requestBody: GetSamplingTargetsBody = { + SamplingStatisticsDocuments: + this.ruleCache.createSamplingStatisticsDocuments(this.clientId), + }; + + this.samplingClient.fetchSamplingTargets( + requestBody, + this.updateSamplingTargets.bind(this) + ); + } + private getAndUpdateSamplingRules(): void { this.samplingClient.fetchSamplingRules(this.updateSamplingRules.bind(this)); } @@ -242,6 +284,41 @@ export class _AWSXRayRemoteSampler implements Sampler { } } + private updateSamplingTargets( + responseObject: GetSamplingTargetsResponse + ): void { + try { + const targetDocuments: TargetMap = {}; + + // Create Target-Name-to-Target-Map from sampling targets response + responseObject.SamplingTargetDocuments.forEach( + (newTarget: SamplingTargetDocument) => { + targetDocuments[newTarget.RuleName] = newTarget; + } + ); + + // Update targets in the cache + const [refreshSamplingRules, nextPollingInterval]: [boolean, number] = + this.ruleCache.updateTargets( + targetDocuments, + responseObject.LastRuleModification + ); + this.targetPollingInterval = nextPollingInterval; + clearInterval(this.targetPoller); + this.startSamplingTargetsPoller(); + + if (refreshSamplingRules) { + this.samplerDiag.debug( + 'Performing out-of-band sampling rule polling to fetch updated rules.' + ); + clearInterval(this.rulePoller); + this.startSamplingRulesPoller(); + } + } catch (error: unknown) { + this.samplerDiag.debug('Error occurred when updating Sampling Targets'); + } + } + private static generateClientId(): string { const hexChars: string[] = [ '0', diff --git a/incubator/opentelemetry-sampler-aws-xray/src/rule-cache.ts b/incubator/opentelemetry-sampler-aws-xray/src/rule-cache.ts index cf762d454c..05960c3f44 100644 --- a/incubator/opentelemetry-sampler-aws-xray/src/rule-cache.ts +++ b/incubator/opentelemetry-sampler-aws-xray/src/rule-cache.ts @@ -18,13 +18,22 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { Attributes } from '@opentelemetry/api'; +import { Attributes, diag } from '@opentelemetry/api'; import { Resource } from '@opentelemetry/resources'; +import { + ISamplingStatistics, + SamplingStatisticsDocument, + SamplingTargetDocument, + TargetMap, +} from './types'; import { SamplingRuleApplier } from './sampling-rule-applier'; // The cache expires 1 hour after the last refresh time. const RULE_CACHE_TTL_MILLIS: number = 60 * 60 * 1000; +// 10 second default sampling targets polling interval +export const DEFAULT_TARGET_POLLING_INTERVAL_SECONDS = 10; + export class RuleCache { private ruleAppliers: SamplingRuleApplier[]; private lastUpdatedEpochMillis: number; @@ -89,4 +98,62 @@ export class RuleCache { this.sortRulesByPriority(); this.lastUpdatedEpochMillis = Date.now(); } + + public createSamplingStatisticsDocuments( + clientId: string + ): SamplingStatisticsDocument[] { + const statisticsDocuments: SamplingStatisticsDocument[] = []; + + this.ruleAppliers.forEach((rule: SamplingRuleApplier) => { + const statistics: ISamplingStatistics = rule.snapshotStatistics(); + const nowInSeconds: number = Math.floor(Date.now() / 1000); + + const samplingStatisticsDoc: SamplingStatisticsDocument = { + ClientID: clientId, + RuleName: rule.samplingRule.RuleName, + Timestamp: nowInSeconds, + RequestCount: statistics.RequestCount, + BorrowCount: statistics.BorrowCount, + SampledCount: statistics.SampleCount, + }; + + statisticsDocuments.push(samplingStatisticsDoc); + }); + return statisticsDocuments; + } + + // Update ruleAppliers based on the targets fetched from X-Ray service + public updateTargets( + targetDocuments: TargetMap, + lastRuleModification: number + ): [boolean, number] { + let minPollingInterval: number | undefined = undefined; + let nextPollingInterval: number = DEFAULT_TARGET_POLLING_INTERVAL_SECONDS; + + for (const [index, rule] of this.ruleAppliers.entries()) { + const target: SamplingTargetDocument = + targetDocuments[rule.samplingRule.RuleName]; + if (target) { + this.ruleAppliers[index] = rule.withTarget(target); + if (typeof target.Interval === 'number') { + if ( + minPollingInterval === undefined || + minPollingInterval > target.Interval + ) { + minPollingInterval = target.Interval; + } + } + } else { + diag.debug('Invalid sampling target: missing rule name'); + } + } + + if (typeof minPollingInterval === 'number') { + nextPollingInterval = minPollingInterval; + } + + const refreshSamplingRules: boolean = + lastRuleModification * 1000 > this.lastUpdatedEpochMillis; + return [refreshSamplingRules, nextPollingInterval]; + } } diff --git a/incubator/opentelemetry-sampler-aws-xray/src/sampling-rule-applier.ts b/incubator/opentelemetry-sampler-aws-xray/src/sampling-rule-applier.ts index a148f2ca98..9a4fd3c1ba 100644 --- a/incubator/opentelemetry-sampler-aws-xray/src/sampling-rule-applier.ts +++ b/incubator/opentelemetry-sampler-aws-xray/src/sampling-rule-applier.ts @@ -54,15 +54,26 @@ import { ATTR_AWS_LAMBDA_INVOKED_ARN, ATTR_CLOUD_RESOURCE_ID, } from './semconv'; -import { ISamplingRule, SamplingTargetDocument } from './types'; +import { RateLimitingSampler } from './rate-limiting-sampler'; +import { + ISamplingRule, + ISamplingStatistics, + SamplingTargetDocument, +} from './types'; import { SamplingRule } from './sampling-rule'; import { Statistics } from './statistics'; import { CLOUD_PLATFORM_MAPPING, attributeMatch, wildcardMatch } from './utils'; +// Max date time in JavaScript +const MAX_DATE_TIME_MILLIS: number = new Date(8_640_000_000_000_000).getTime(); + export class SamplingRuleApplier { public samplingRule: SamplingRule; + private reservoirSampler: RateLimitingSampler; private fixedRateSampler: TraceIdRatioBasedSampler; private statistics: Statistics; + private borrowingEnabled: boolean; + private reservoirExpiryTimeInMillis: number; constructor( samplingRule: ISamplingRule, @@ -74,12 +85,44 @@ export class SamplingRuleApplier { this.fixedRateSampler = new TraceIdRatioBasedSampler( this.samplingRule.FixedRate ); - // TODO: Add Reservoir Sampler (Rate Limiting Sampler) + if (samplingRule.ReservoirSize > 0) { + this.reservoirSampler = new RateLimitingSampler(1); + } else { + this.reservoirSampler = new RateLimitingSampler(0); + } + this.reservoirExpiryTimeInMillis = MAX_DATE_TIME_MILLIS; this.statistics = statistics; this.statistics.resetStatistics(); + this.borrowingEnabled = true; + + if (target) { + this.borrowingEnabled = false; + if (typeof target.ReservoirQuota === 'number') { + this.reservoirSampler = new RateLimitingSampler(target.ReservoirQuota); + } - // TODO: Update Sampling Targets using provided `target` parameter + if (typeof target.ReservoirQuotaTTL === 'number') { + this.reservoirExpiryTimeInMillis = new Date( + target.ReservoirQuotaTTL * 1000 + ).getTime(); + } else { + this.reservoirExpiryTimeInMillis = Date.now(); + } + + if (typeof target.FixedRate === 'number') { + this.fixedRateSampler = new TraceIdRatioBasedSampler(target.FixedRate); + } + } + } + + public withTarget(target: SamplingTargetDocument): SamplingRuleApplier { + const newApplier: SamplingRuleApplier = new SamplingRuleApplier( + this.samplingRule, + this.statistics, + target + ); + return newApplier; } public matches(attributes: Attributes, resource: Resource): boolean { @@ -153,19 +196,45 @@ export class SamplingRuleApplier { attributes: Attributes, links: Link[] ): SamplingResult { - // TODO: Record Sampling Statistics - + let hasBorrowed = false; let result: SamplingResult = { decision: SamplingDecision.NOT_RECORD }; - // TODO: Apply Reservoir Sampling + const nowInMillis: number = Date.now(); + const reservoirExpired: boolean = + nowInMillis >= this.reservoirExpiryTimeInMillis; + + if (!reservoirExpired) { + result = this.reservoirSampler.shouldSample( + context, + traceId, + spanName, + spanKind, + attributes, + links + ); + hasBorrowed = + this.borrowingEnabled && + result.decision !== SamplingDecision.NOT_RECORD; + } if (result.decision === SamplingDecision.NOT_RECORD) { result = this.fixedRateSampler.shouldSample(context, traceId); } + this.statistics.SampleCount += + result.decision !== SamplingDecision.NOT_RECORD ? 1 : 0; + this.statistics.BorrowCount += hasBorrowed ? 1 : 0; + this.statistics.RequestCount += 1; + return result; } + public snapshotStatistics(): ISamplingStatistics { + const statisticsCopy: ISamplingStatistics = { ...this.statistics }; + this.statistics.resetStatistics(); + return statisticsCopy; + } + private getArn( resource: Resource, attributes: Attributes diff --git a/incubator/opentelemetry-sampler-aws-xray/test/fallback-sampler.test.ts b/incubator/opentelemetry-sampler-aws-xray/test/fallback-sampler.test.ts index 06ce23cb55..400bdfb18a 100644 --- a/incubator/opentelemetry-sampler-aws-xray/test/fallback-sampler.test.ts +++ b/incubator/opentelemetry-sampler-aws-xray/test/fallback-sampler.test.ts @@ -18,11 +18,190 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 +import { SpanKind, context } from '@opentelemetry/api'; +import { SamplingDecision } from '@opentelemetry/sdk-trace-base'; import { expect } from 'expect'; +import * as sinon from 'sinon'; import { FallbackSampler } from '../src/fallback-sampler'; +import { testTraceId } from './remote-sampler.test'; + +let clock: sinon.SinonFakeTimers; describe('FallBackSampler', () => { - // TODO: Add tests for Fallback sampler when Rate Limiter is implemented + beforeEach(() => { + clock = sinon.useFakeTimers(Date.now()); + }); + afterEach(() => { + try { + clock.restore(); + } catch { + // do nothing + } + }); + it('testShouldSampleWithQuotaOnly', () => { + // Ensure FallbackSampler's internal TraceIdRatioBasedSampler will always return SamplingDecision.NOT_RECORD + const sampler = new FallbackSampler(0); + + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + {}, + [] + ); + + // 0 seconds passed, 0 quota available + let sampled = 0; + for (let i = 0; i < 30; i++) { + if ( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + {}, + [] + ).decision !== SamplingDecision.NOT_RECORD + ) { + sampled += 1; + } + } + expect(sampled).toEqual(0); + + // 0.4 seconds passed, 0.4 quota available + sampled = 0; + clock.tick(0.4 * 1000); + for (let i = 0; i < 30; i++) { + if ( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + {}, + [] + ).decision !== SamplingDecision.NOT_RECORD + ) { + sampled += 1; + } + } + expect(sampled).toEqual(0); + + // 0.8 seconds passed, 0.8 quota available + sampled = 0; + clock.tick(0.4 * 1000); + for (let i = 0; i < 30; i++) { + if ( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + {}, + [] + ).decision !== SamplingDecision.NOT_RECORD + ) { + sampled += 1; + } + } + expect(sampled).toEqual(0); + + // 1.2 seconds passed, 1 quota consumed, 0 quota available + sampled = 0; + clock.tick(0.4 * 1000); + for (let i = 0; i < 30; i++) { + if ( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + {}, + [] + ).decision !== SamplingDecision.NOT_RECORD + ) { + sampled += 1; + } + } + expect(sampled).toEqual(1); + + // 1.6 seconds passed, 0.4 quota available + sampled = 0; + clock.tick(0.4 * 1000); + for (let i = 0; i < 30; i++) { + if ( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + {}, + [] + ).decision !== SamplingDecision.NOT_RECORD + ) { + sampled += 1; + } + } + expect(sampled).toEqual(0); + + // 2.0 seconds passed, 0.8 quota available + sampled = 0; + clock.tick(0.4 * 1000); + for (let i = 0; i < 30; i++) { + if ( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + {}, + [] + ).decision !== SamplingDecision.NOT_RECORD + ) { + sampled += 1; + } + } + expect(sampled).toEqual(0); + + // 2.4 seconds passed, one more quota consumed, 0 quota available + sampled = 0; + clock.tick(0.4 * 1000); + for (let i = 0; i < 30; i++) { + if ( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + {}, + [] + ).decision !== SamplingDecision.NOT_RECORD + ) { + sampled += 1; + } + } + expect(sampled).toEqual(1); + + // 100 seconds passed, only one quota can be consumed + sampled = 0; + clock.tick(100 * 1000); + for (let i = 0; i < 30; i++) { + if ( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + {}, + [] + ).decision !== SamplingDecision.NOT_RECORD + ) { + sampled += 1; + } + } + expect(sampled).toEqual(1); + }); it('toString()', () => { expect(new FallbackSampler().toString()).toEqual( diff --git a/incubator/opentelemetry-sampler-aws-xray/test/rate-limiter.test.ts b/incubator/opentelemetry-sampler-aws-xray/test/rate-limiter.test.ts new file mode 100644 index 0000000000..3a062dbcb3 --- /dev/null +++ b/incubator/opentelemetry-sampler-aws-xray/test/rate-limiter.test.ts @@ -0,0 +1,62 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Includes work from: +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { expect } from 'expect'; +import * as sinon from 'sinon'; +import { RateLimiter } from '../src/rate-limiter'; + +let clock: sinon.SinonFakeTimers; +describe('RateLimiter', () => { + beforeEach(() => { + clock = sinon.useFakeTimers(Date.now()); + }); + afterEach(() => { + clock.restore(); + }); + it('testTake', () => { + const limiter = new RateLimiter(30, 1); + + let spent = 0; + for (let i = 0; i < 100; i++) { + if (limiter.take(1)) { + spent++; + } + } + expect(spent).toEqual(0); + + spent = 0; + clock.tick(0.5 * 1000); + for (let i = 0; i < 100; i++) { + if (limiter.take(1)) { + spent++; + } + } + expect(spent).toEqual(15); + + spent = 0; + clock.tick(1000 * 1000); + for (let i = 0; i < 100; i++) { + if (limiter.take(1)) { + spent++; + } + } + expect(spent).toEqual(30); + }); +}); diff --git a/incubator/opentelemetry-sampler-aws-xray/test/rate-limiting-sampler.test.ts b/incubator/opentelemetry-sampler-aws-xray/test/rate-limiting-sampler.test.ts new file mode 100644 index 0000000000..73adc55b45 --- /dev/null +++ b/incubator/opentelemetry-sampler-aws-xray/test/rate-limiting-sampler.test.ts @@ -0,0 +1,217 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Includes work from: +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { SpanKind, context } from '@opentelemetry/api'; +import { SamplingDecision } from '@opentelemetry/sdk-trace-base'; +import { expect } from 'expect'; +import * as sinon from 'sinon'; +import { RateLimitingSampler } from '../src/rate-limiting-sampler'; +import { testTraceId } from './remote-sampler.test'; + +let clock: sinon.SinonFakeTimers; + +describe('RateLimitingSampler', () => { + beforeEach(() => { + clock = sinon.useFakeTimers(Date.now()); + }); + afterEach(() => { + clock.restore(); + }); + it('testShouldSample', () => { + const sampler = new RateLimitingSampler(30); + + let sampled = 0; + for (let i = 0; i < 100; i++) { + if ( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + {}, + [] + ).decision !== SamplingDecision.NOT_RECORD + ) { + sampled += 1; + } + } + expect(sampled).toEqual(0); + + clock.tick(0.5 * 1000); // Move forward half a second + + sampled = 0; + for (let i = 0; i < 100; i++) { + if ( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + {}, + [] + ).decision !== SamplingDecision.NOT_RECORD + ) { + sampled += 1; + } + } + expect(sampled).toEqual(15); + + clock.tick(1 * 1000); // Move forward 1 second + + sampled = 0; + for (let i = 0; i < 100; i++) { + if ( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + {}, + [] + ).decision !== SamplingDecision.NOT_RECORD + ) { + sampled += 1; + } + } + expect(sampled).toEqual(30); + + clock.tick(2.5 * 1000); // Move forward 2.5 seconds + + sampled = 0; + for (let i = 0; i < 100; i++) { + if ( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + {}, + [] + ).decision !== SamplingDecision.NOT_RECORD + ) { + sampled += 1; + } + } + expect(sampled).toEqual(30); + + clock.tick(1000 * 1000); // Move forward 1000 seconds + + sampled = 0; + for (let i = 0; i < 100; i++) { + if ( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + {}, + [] + ).decision !== SamplingDecision.NOT_RECORD + ) { + sampled += 1; + } + } + expect(sampled).toEqual(30); + }); + + it('testShouldSampleWithQuotaOfOne', () => { + const sampler = new RateLimitingSampler(1); + + let sampled = 0; + for (let i = 0; i < 50; i++) { + if ( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + {}, + [] + ).decision !== SamplingDecision.NOT_RECORD + ) { + sampled += 1; + } + } + expect(sampled).toEqual(0); + + clock.tick(0.5 * 1000); // Move forward half a second + + sampled = 0; + for (let i = 0; i < 50; i++) { + if ( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + {}, + [] + ).decision !== SamplingDecision.NOT_RECORD + ) { + sampled += 1; + } + } + expect(sampled).toEqual(0); + + clock.tick(0.5 * 1000); + + sampled = 0; + for (let i = 0; i < 50; i++) { + if ( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + {}, + [] + ).decision !== SamplingDecision.NOT_RECORD + ) { + sampled += 1; + } + } + expect(sampled).toEqual(1); + + clock.tick(1000 * 1000); // Move forward 1000 seconds + + sampled = 0; + for (let i = 0; i < 50; i++) { + if ( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + {}, + [] + ).decision !== SamplingDecision.NOT_RECORD + ) { + sampled += 1; + } + } + expect(sampled).toEqual(1); + }); + + it('toString()', () => { + expect(new RateLimitingSampler(123).toString()).toEqual( + 'RateLimitingSampler{rate limiting sampling with sampling config of 123 req/sec and 0% of additional requests}' + ); + }); +}); diff --git a/incubator/opentelemetry-sampler-aws-xray/test/remote-sampler.test.ts b/incubator/opentelemetry-sampler-aws-xray/test/remote-sampler.test.ts index 27fecc0670..48f2e21a09 100644 --- a/incubator/opentelemetry-sampler-aws-xray/test/remote-sampler.test.ts +++ b/incubator/opentelemetry-sampler-aws-xray/test/remote-sampler.test.ts @@ -22,7 +22,16 @@ import { resourceFromAttributes, emptyResource, } from '@opentelemetry/resources'; -import { context, Span, SpanKind, Tracer, trace } from '@opentelemetry/api'; +import { + context, + Span, + SpanKind, + Tracer, + trace, + Attributes, + Link, + Context, +} from '@opentelemetry/api'; import { SamplingDecision } from '@opentelemetry/sdk-trace-base'; import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { @@ -40,19 +49,23 @@ import { AWSXRaySamplingClient } from '../src/aws-xray-sampling-client'; const DATA_DIR_SAMPLING_RULES = __dirname + '/data/test-remote-sampler_sampling-rules-response-sample.json'; +const DATA_DIR_SAMPLING_TARGETS = + __dirname + '/data/test-remote-sampler_sampling-targets-response-sample.json'; const TEST_URL = 'http://localhost:2000'; +export const testTraceId = '0af7651916cd43dd8448eb211c80319c'; describe('AWSXRayRemoteSampler', () => { let sampler: AWSXRayRemoteSampler; afterEach(() => { + sinon.restore(); if (sampler != null) { sampler.stopPollers(); } }); it('testCreateRemoteSamplerWithEmptyResource', () => { - const sampler: AWSXRayRemoteSampler = new AWSXRayRemoteSampler({ + sampler = new AWSXRayRemoteSampler({ resource: emptyResource(), }); @@ -114,7 +127,9 @@ describe('AWSXRayRemoteSampler', () => { nock(TEST_URL) .post('/GetSamplingRules') .reply(200, require(DATA_DIR_SAMPLING_RULES)); - + nock(TEST_URL) + .post('/SamplingTargets') + .reply(200, require(DATA_DIR_SAMPLING_TARGETS)); const resource = resourceFromAttributes({ [ATTR_SERVICE_NAME]: 'test-service-name', [SEMRESATTRS_CLOUD_PLATFORM]: 'test-cloud-platform', @@ -132,7 +147,7 @@ describe('AWSXRayRemoteSampler', () => { expect( sampler.shouldSample( context.active(), - '1234', + testTraceId, 'name', SpanKind.CLIENT, { abc: '1234' }, @@ -140,8 +155,188 @@ describe('AWSXRayRemoteSampler', () => { ).decision ).toEqual(SamplingDecision.NOT_RECORD); - // TODO: Run more tests after updating Sampling Targets - done(); + sampler['internalXraySampler']['getAndUpdateSamplingTargets'](); + + setTimeout(() => { + expect( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + { abc: '1234' }, + [] + ).decision + ).toEqual(SamplingDecision.RECORD_AND_SAMPLED); + expect( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + { abc: '1234' }, + [] + ).decision + ).toEqual(SamplingDecision.RECORD_AND_SAMPLED); + expect( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + { abc: '1234' }, + [] + ).decision + ).toEqual(SamplingDecision.RECORD_AND_SAMPLED); + + done(); + }, 50); + }, 50); + }); + + it('testLargeReservoir', done => { + nock(TEST_URL) + .post('/GetSamplingRules') + .reply(200, require(DATA_DIR_SAMPLING_RULES)); + nock(TEST_URL) + .post('/SamplingTargets') + .reply(200, require(DATA_DIR_SAMPLING_TARGETS)); + const resource = resourceFromAttributes({ + [ATTR_SERVICE_NAME]: 'test-service-name', + [SEMRESATTRS_CLOUD_PLATFORM]: 'test-cloud-platform', + }); + const attributes = { abc: '1234' }; + + sampler = new AWSXRayRemoteSampler({ + resource: resource, + }); + sampler['internalXraySampler']['getAndUpdateSamplingRules'](); + + setTimeout(() => { + expect( + sampler['internalXraySampler']['ruleCache']['ruleAppliers'][0] + .samplingRule.RuleName + ).toEqual('test'); + expect( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + attributes, + [] + ).decision + ).toEqual(SamplingDecision.NOT_RECORD); + sampler['internalXraySampler']['getAndUpdateSamplingTargets'](); + + setTimeout(() => { + const clock = sinon.useFakeTimers(Date.now()); + clock.tick(1500); + let sampled = 0; + for (let i = 0; i < 1005; i++) { + if ( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + attributes, + [] + ).decision !== SamplingDecision.NOT_RECORD + ) { + sampled++; + } + } + clock.restore(); + + expect( + sampler['internalXraySampler']['ruleCache']['ruleAppliers'][0][ + 'reservoirSampler' + ]['quota'] + ).toEqual(1000); + expect(sampled).toEqual(1000); + done(); + }, 50); + }, 50); + }); + + it('testSomeReservoir', done => { + nock(TEST_URL) + .post('/GetSamplingRules') + .reply(200, require(DATA_DIR_SAMPLING_RULES)); + nock(TEST_URL) + .post('/SamplingTargets') + .reply(200, require(DATA_DIR_SAMPLING_TARGETS)); + const resource = resourceFromAttributes({ + [ATTR_SERVICE_NAME]: 'test-service-name', + [SEMRESATTRS_CLOUD_PLATFORM]: 'test-cloud-platform', + }); + const attributes = { + abc: 'non-matching attribute value, use default rule', + }; + + sampler = new AWSXRayRemoteSampler({ + resource: resource, + }); + sinon + .stub(sampler['internalXraySampler']['fallbackSampler'], 'shouldSample') + .callsFake( + ( + context: Context, + traceId: string, + spanName: string, + spanKind: SpanKind, + attributes: Attributes, + links: Link[] + ) => { + return { + decision: SamplingDecision.NOT_RECORD, + attributes: attributes, + }; + } + ); + sampler['internalXraySampler']['getAndUpdateSamplingRules'](); + + setTimeout(() => { + expect( + sampler['internalXraySampler']['ruleCache']['ruleAppliers'][0] + .samplingRule.RuleName + ).toEqual('test'); + expect( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + attributes, + [] + ).decision + ).toEqual(SamplingDecision.RECORD_AND_SAMPLED); + sampler['internalXraySampler']['getAndUpdateSamplingTargets'](); + + setTimeout(() => { + const clock = sinon.useFakeTimers(Date.now()); + clock.tick(1000); + let sampled = 0; + for (let i = 0; i < 1000; i++) { + if ( + sampler.shouldSample( + context.active(), + testTraceId, + 'name', + SpanKind.CLIENT, + attributes, + [] + ).decision !== SamplingDecision.NOT_RECORD + ) { + sampled++; + } + } + clock.restore(); + + expect(sampled).toEqual(100); + done(); + }, 50); }, 50); }); @@ -159,7 +354,85 @@ describe('AWSXRayRemoteSampler', () => { ); }); - // TODO: Run tests for Reservoir Sampling and Sampling Statistics + it('ParentBased AWSXRayRemoteSampler creates expected Statistics from the 1 Span with no Parent, disregarding 2 Child Spans', done => { + const defaultRuleDir = + __dirname + '/data/get-sampling-rules-response-sample-sample-all.json'; + nock(TEST_URL) + .post('/GetSamplingRules') + .reply(200, require(defaultRuleDir)); + + sampler = new AWSXRayRemoteSampler({ + resource: emptyResource(), + }); + const tracerProvider: NodeTracerProvider = new NodeTracerProvider({ + sampler: sampler, + }); + const tracer: Tracer = tracerProvider.getTracer('test'); + + setTimeout(() => { + const span0 = tracer.startSpan('test0'); + const ctx = trace.setSpan(context.active(), span0); + const span1: Span = tracer.startSpan('test1', {}, ctx); + const span2: Span = tracer.startSpan('test2', {}, ctx); + span2.end(); + span1.end(); + span0.end(); + + // span1 and span2 are child spans of root span0 + // For AWSXRayRemoteSampler (ParentBased), expect only span0 to update statistics + expect( + sampler['internalXraySampler']['ruleCache']['ruleAppliers'][0][ + 'statistics' + ].RequestCount + ).toBe(1); + expect( + sampler['internalXraySampler']['ruleCache']['ruleAppliers'][0][ + 'statistics' + ].SampleCount + ).toBe(1); + done(); + }, 50); + }); + + it('Non-ParentBased _AWSXRayRemoteSampler creates expected Statistics based on all 3 Spans, disregarding Parent Span Sampling Decision', done => { + const defaultRuleDir = + __dirname + '/data/get-sampling-rules-response-sample-sample-all.json'; + nock(TEST_URL) + .post('/GetSamplingRules') + .reply(200, require(defaultRuleDir)); + + sampler = new AWSXRayRemoteSampler({ + resource: emptyResource(), + }); + const internalSampler: _AWSXRayRemoteSampler = + sampler['internalXraySampler']; + const tracerProvider: NodeTracerProvider = new NodeTracerProvider({ + sampler: internalSampler, + }); + const tracer: Tracer = tracerProvider.getTracer('test'); + + setTimeout(() => { + const span0 = tracer.startSpan('test0'); + const ctx = trace.setSpan(context.active(), span0); + const span1: Span = tracer.startSpan('test1', {}, ctx); + const span2: Span = tracer.startSpan('test2', {}, ctx); + span2.end(); + span1.end(); + span0.end(); + + // span1 and span2 are child spans of root span0 + // For _AWSXRayRemoteSampler (Non-ParentBased), expect all 3 spans to update statistics + expect( + internalSampler['ruleCache']['ruleAppliers'][0]['statistics'] + .RequestCount + ).toBe(3); + expect( + internalSampler['ruleCache']['ruleAppliers'][0]['statistics'] + .SampleCount + ).toBe(3); + done(); + }, 50); + }); }); describe('_AWSXRayRemoteSampler', () => { diff --git a/incubator/opentelemetry-sampler-aws-xray/test/rule-cache.test.ts b/incubator/opentelemetry-sampler-aws-xray/test/rule-cache.test.ts index ae3cfdc725..952a0f9982 100644 --- a/incubator/opentelemetry-sampler-aws-xray/test/rule-cache.test.ts +++ b/incubator/opentelemetry-sampler-aws-xray/test/rule-cache.test.ts @@ -143,5 +143,116 @@ describe('RuleCache', () => { ); }); - // TODO: Add tests for updating Sampling Targets and getting statistics + it('testUpdateSamplingTargets', () => { + const rule1 = createRule('default', 10000, 1, 0.05); + const rule2 = createRule('test', 20, 10, 0.2); + const cache = new RuleCache(emptyResource()); + cache.updateRules([rule1, rule2]); + + expect(cache['ruleAppliers'][0]['reservoirSampler']['quota']).toEqual(1); + expect(cache['ruleAppliers'][0]['fixedRateSampler']['_ratio']).toEqual( + rule2.samplingRule.FixedRate + ); + + expect(cache['ruleAppliers'][1]['reservoirSampler']['quota']).toEqual(1); + expect(cache['ruleAppliers'][1]['fixedRateSampler']['_ratio']).toEqual( + rule1.samplingRule.FixedRate + ); + + const time = Date.now() / 1000; + const target1 = { + FixedRate: 0.05, + Interval: 15, + ReservoirQuota: 1, + ReservoirQuotaTTL: time + 10, + RuleName: 'default', + }; + const target2 = { + FixedRate: 0.15, + Interval: 12, + ReservoirQuota: 5, + ReservoirQuotaTTL: time + 10, + RuleName: 'test', + }; + const target3 = { + FixedRate: 0.15, + Interval: 3, + ReservoirQuota: 5, + ReservoirQuotaTTL: time + 10, + RuleName: 'associated rule does not exist', + }; + + const targetMap = { + default: target1, + test: target2, + 'associated rule does not exist': target3, + }; + const [refreshSamplingRules, nextPollingInterval] = cache.updateTargets( + targetMap, + time - 10 + ); + expect(refreshSamplingRules).toEqual(false); + expect(nextPollingInterval).toEqual(target2.Interval); + + // Ensure cache is still of length 2 + expect(cache['ruleAppliers'].length).toEqual(2); + + expect(cache['ruleAppliers'][0]['reservoirSampler']['quota']).toEqual( + target2.ReservoirQuota + ); + expect(cache['ruleAppliers'][0]['fixedRateSampler']['_ratio']).toEqual( + target2.FixedRate + ); + expect(cache['ruleAppliers'][1]['reservoirSampler']['quota']).toEqual( + target1.ReservoirQuota + ); + expect(cache['ruleAppliers'][1]['fixedRateSampler']['_ratio']).toEqual( + target1.FixedRate + ); + + const [refreshSamplingRulesAfter, _] = cache.updateTargets( + targetMap, + time + 1 + ); + expect(refreshSamplingRulesAfter).toBe(true); + }); + + it('testGetAllStatistics', () => { + const time = Date.now(); + const clock = sinon.useFakeTimers(time); + + const rule1 = createRule('test', 4, 2, 2.0); + const rule2 = createRule('default', 5, 5, 5.0); + + const cache = new RuleCache(emptyResource()); + cache.updateRules([rule1, rule2]); + + clock.tick(1); // ms + + const clientId = '12345678901234567890abcd'; + const statistics = cache.createSamplingStatisticsDocuments( + '12345678901234567890abcd' + ); + + // 1 ms should not be big enough to expect a timestamp difference + expect(statistics).toEqual([ + { + ClientID: clientId, + RuleName: 'test', + Timestamp: Math.floor(time / 1000), + RequestCount: 0, + BorrowCount: 0, + SampledCount: 0, + }, + { + ClientID: clientId, + RuleName: 'default', + Timestamp: Math.floor(time / 1000), + RequestCount: 0, + BorrowCount: 0, + SampledCount: 0, + }, + ]); + clock.restore(); + }); }); diff --git a/package-lock.json b/package-lock.json index d2bd0e9f95..707cd1f0b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "opentelemetry-contrib", + "name": "opentelemetry-js-contrib", "version": "0.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "opentelemetry-contrib", + "name": "opentelemetry-js-contrib", "version": "0.1.0", "license": "Apache-2.0", "workspaces": [ @@ -16,22 +16,22 @@ "@typescript-eslint/parser": "5.62.0", "cross-env": "^7.0.3", "eslint": "8.7.0", - "eslint-config-airbnb-base": "15.0.0", "eslint-config-prettier": "8.8.0", "eslint-plugin-header": "3.1.1", "eslint-plugin-import": "2.27.5", "eslint-plugin-node": "11.1.0", - "eslint-plugin-prettier": "4.2.1", + "eslint-plugin-prettier": "4.2.5", "glob": "^10.4.5", "lerna": "8.2.3", "lerna-changelog": "2.2.0", "markdownlint-cli2": "0.13.0", "minimatch": "^9.0.3", - "mocha": "^10.7.3", + "mocha": "^11.0.0", "prettier": "2.8.8", "process": "0.11.10", "semver": "^7.6.0", "ts-node": "10.9.2", + "typescript": "5.0.4", "util": "0.12.5" } }, @@ -73,6 +73,23 @@ "tslib": "^2.6.2" } }, + "node_modules/@aws-crypto/ie11-detection": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-2.0.2.tgz", + "integrity": "sha512-5XDMQY98gMAf/WRTic5G++jfmS/VLM0rwpiOpaainKi4L0nqWMSB1SzsrEG5rjFZGYN6ZAefO+/Yta2dFM0kMw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, "node_modules/@aws-crypto/sha1-browser": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", @@ -250,173 +267,135 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-bedrock-runtime/-/client-bedrock-runtime-3.812.0.tgz", - "integrity": "sha512-ipHP7WxDylty67jVYd/WbZSb1nPIfQywvdUrm4P7pbj3d8n5GLANIg8RMtCbQfedzF6VezmQFcwWI4j7WJ57aw==", - "dev": true, - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/credential-provider-node": "3.812.0", - "@aws-sdk/eventstream-handler-node": "3.804.0", - "@aws-sdk/middleware-eventstream": "3.804.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.812.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.812.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.3", - "@smithy/eventstream-serde-browser": "^4.0.2", - "@smithy/eventstream-serde-config-resolver": "^4.1.0", - "@smithy/eventstream-serde-node": "^4.0.2", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.6", - "@smithy/middleware-retry": "^4.1.7", - "@smithy/middleware-serde": "^4.0.5", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.14", - "@smithy/util-defaults-mode-node": "^4.0.14", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", - "@smithy/util-stream": "^4.2.0", - "@smithy/util-utf8": "^4.0.0", - "@types/uuid": "^9.0.1", - "tslib": "^2.6.2", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", + "node_modules/@aws-sdk/abort-controller": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.78.0.tgz", + "integrity": "sha512-iz1YLwM2feJUj/y97yO4XmDeTxs+yZ1XJwQgoawKuc8IDBKUutnJNCHL5jL04WUKU7Nrlq+Hr2fCTScFh2z9zg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">= 12.0.0" } }, - "node_modules/@aws-sdk/client-bedrock-runtime/node_modules/@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", + "node_modules/@aws-sdk/abort-controller/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", "dev": true, "license": "Apache-2.0", - "dependencies": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - }, "engines": { - "node": ">=18.0.0" + "node": ">= 12.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.812.0.tgz", - "integrity": "sha512-LWkP+Vb2f6aNaway06XvFZG3altSXltAClzCz9cTFuOfKG6V2X+0VWsW9cnFRV4+MFFJW3iQAaPMQ1fBO9Rusg==", + "node_modules/@aws-sdk/client-bedrock-runtime": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-bedrock-runtime/-/client-bedrock-runtime-3.858.0.tgz", + "integrity": "sha512-0q/WL3gGDeDpt596XVx6M0q2kgTlWK+ujFy5Uv/e2MBWfranhnhrYq2IIxsa/GdhwoTLZAgO/YFdqmt9B4d8VA==", "dev": true, - "optional": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/credential-provider-node": "3.812.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.812.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.812.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.3", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.6", - "@smithy/middleware-retry": "^4.1.7", - "@smithy/middleware-serde": "^4.0.5", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/credential-provider-node": "3.858.0", + "@aws-sdk/eventstream-handler-node": "3.840.0", + "@aws-sdk/middleware-eventstream": "3.840.0", + "@aws-sdk/middleware-host-header": "3.840.0", + "@aws-sdk/middleware-logger": "3.840.0", + "@aws-sdk/middleware-recursion-detection": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.858.0", + "@aws-sdk/middleware-websocket": "3.844.0", + "@aws-sdk/region-config-resolver": "3.840.0", + "@aws-sdk/token-providers": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-endpoints": "3.848.0", + "@aws-sdk/util-user-agent-browser": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.858.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.2", + "@smithy/eventstream-serde-browser": "^4.0.4", + "@smithy/eventstream-serde-config-resolver": "^4.1.2", + "@smithy/eventstream-serde-node": "^4.0.4", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/hash-node": "^4.0.4", + "@smithy/invalid-dependency": "^4.0.4", + "@smithy/middleware-content-length": "^4.0.4", + "@smithy/middleware-endpoint": "^4.1.17", + "@smithy/middleware-retry": "^4.1.18", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/node-http-handler": "^4.1.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.14", - "@smithy/util-defaults-mode-node": "^4.0.14", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", + "@smithy/util-defaults-mode-browser": "^4.0.25", + "@smithy/util-defaults-mode-node": "^4.0.25", + "@smithy/util-endpoints": "^3.0.6", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.6", + "@smithy/util-stream": "^4.2.3", "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" + "@types/uuid": "^9.0.1", + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", + "node_modules/@aws-sdk/client-cognito-identity": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.858.0.tgz", + "integrity": "sha512-ISODr1Wv2Tv/J7fStSnJzjeb+A2YnAq5/cBq9ntJQpwkXMDS/onku5yRCGEVTLYrQICFee7ibEpzGbAC/X+3Vg==", "dev": true, - "license": "Apache-2.0", "optional": true, "dependencies": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/credential-provider-node": "3.858.0", + "@aws-sdk/middleware-host-header": "3.840.0", + "@aws-sdk/middleware-logger": "3.840.0", + "@aws-sdk/middleware-recursion-detection": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.858.0", + "@aws-sdk/region-config-resolver": "3.840.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-endpoints": "3.848.0", + "@aws-sdk/util-user-agent-browser": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.858.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.2", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/hash-node": "^4.0.4", + "@smithy/invalid-dependency": "^4.0.4", + "@smithy/middleware-content-length": "^4.0.4", + "@smithy/middleware-endpoint": "^4.1.17", + "@smithy/middleware-retry": "^4.1.18", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/node-http-handler": "^4.1.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.25", + "@smithy/util-defaults-mode-node": "^4.0.25", + "@smithy/util-endpoints": "^3.0.6", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.6", + "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" }, "engines": { @@ -424,51 +403,51 @@ } }, "node_modules/@aws-sdk/client-dynamodb": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.812.0.tgz", - "integrity": "sha512-1cmdldrYEYbVzai1OnIX9INS9l6YFyY6Z/kAvSL5qe55CHdKHVeWb5zRGln+Ffy5zespPE/ejtJBb4hTARCZ8Q==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.858.0.tgz", + "integrity": "sha512-QB9levGfBBR11WbCMEUInpED9W4wLtnU4LKgheul2z+TX59xHk5l7G0hd9+sW9wWyInZ+MDLRNDhGfSlpqw80g==", "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/credential-provider-node": "3.812.0", - "@aws-sdk/middleware-endpoint-discovery": "3.808.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.812.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.812.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.3", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.6", - "@smithy/middleware-retry": "^4.1.7", - "@smithy/middleware-serde": "^4.0.5", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/credential-provider-node": "3.858.0", + "@aws-sdk/middleware-endpoint-discovery": "3.840.0", + "@aws-sdk/middleware-host-header": "3.840.0", + "@aws-sdk/middleware-logger": "3.840.0", + "@aws-sdk/middleware-recursion-detection": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.858.0", + "@aws-sdk/region-config-resolver": "3.840.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-endpoints": "3.848.0", + "@aws-sdk/util-user-agent-browser": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.858.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.2", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/hash-node": "^4.0.4", + "@smithy/invalid-dependency": "^4.0.4", + "@smithy/middleware-content-length": "^4.0.4", + "@smithy/middleware-endpoint": "^4.1.17", + "@smithy/middleware-retry": "^4.1.18", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/node-http-handler": "^4.1.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.14", - "@smithy/util-defaults-mode-node": "^4.0.14", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", + "@smithy/util-defaults-mode-browser": "^4.0.25", + "@smithy/util-defaults-mode-node": "^4.0.25", + "@smithy/util-endpoints": "^3.0.6", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.6", "@smithy/util-utf8": "^4.0.0", - "@smithy/util-waiter": "^4.0.3", + "@smithy/util-waiter": "^4.0.6", "@types/uuid": "^9.0.1", "tslib": "^2.6.2", "uuid": "^9.0.1" @@ -477,1079 +456,1222 @@ "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", + "node_modules/@aws-sdk/client-kinesis": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-kinesis/-/client-kinesis-3.858.0.tgz", + "integrity": "sha512-G+YD9vNO0GqkYSfoyL+/IJkGtnvw96mGyPQ5UWh5DbRizW0cZBZP0HEAw46ARkK99Fuevb5WnAcbab1HidGykQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/credential-provider-node": "3.858.0", + "@aws-sdk/middleware-host-header": "3.840.0", + "@aws-sdk/middleware-logger": "3.840.0", + "@aws-sdk/middleware-recursion-detection": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.858.0", + "@aws-sdk/region-config-resolver": "3.840.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-endpoints": "3.848.0", + "@aws-sdk/util-user-agent-browser": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.858.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.2", + "@smithy/eventstream-serde-browser": "^4.0.4", + "@smithy/eventstream-serde-config-resolver": "^4.1.2", + "@smithy/eventstream-serde-node": "^4.0.4", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/hash-node": "^4.0.4", + "@smithy/invalid-dependency": "^4.0.4", + "@smithy/middleware-content-length": "^4.0.4", + "@smithy/middleware-endpoint": "^4.1.17", + "@smithy/middleware-retry": "^4.1.18", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/node-http-handler": "^4.1.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.25", + "@smithy/util-defaults-mode-node": "^4.0.25", + "@smithy/util-endpoints": "^3.0.6", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.6", + "@smithy/util-utf8": "^4.0.0", + "@smithy/util-waiter": "^4.0.6", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", + "node_modules/@aws-sdk/client-lambda": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.858.0.tgz", + "integrity": "sha512-b8buzwDwUrd13tvhlcThNfP4hw86ymNfrhOO3Mr9VZo4e6a+NtxGodDlcRPUjVmiKmi4ibNER/El5ePLNT/r5g==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/credential-provider-node": "3.858.0", + "@aws-sdk/middleware-host-header": "3.840.0", + "@aws-sdk/middleware-logger": "3.840.0", + "@aws-sdk/middleware-recursion-detection": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.858.0", + "@aws-sdk/region-config-resolver": "3.840.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-endpoints": "3.848.0", + "@aws-sdk/util-user-agent-browser": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.858.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.2", + "@smithy/eventstream-serde-browser": "^4.0.4", + "@smithy/eventstream-serde-config-resolver": "^4.1.2", + "@smithy/eventstream-serde-node": "^4.0.4", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/hash-node": "^4.0.4", + "@smithy/invalid-dependency": "^4.0.4", + "@smithy/middleware-content-length": "^4.0.4", + "@smithy/middleware-endpoint": "^4.1.17", + "@smithy/middleware-retry": "^4.1.18", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/node-http-handler": "^4.1.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.25", + "@smithy/util-defaults-mode-node": "^4.0.25", + "@smithy/util-endpoints": "^3.0.6", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.6", + "@smithy/util-stream": "^4.2.3", + "@smithy/util-utf8": "^4.0.0", + "@smithy/util-waiter": "^4.0.6", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/client-kinesis": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-kinesis/-/client-kinesis-3.812.0.tgz", - "integrity": "sha512-6uxG4aYHMa5QfhwshU2MVOW5pkonWA9LNnwaD60nWtBJNshsLX0rhLf2bicAZa6TNUCYrWMmd3Y0ZdhFHCezXA==", + "node_modules/@aws-sdk/client-s3": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.858.0.tgz", + "integrity": "sha512-4BFXHxDyeFgeOgop1hqhf0Xjwi8ryD48W/+MY0Yf1sl5kejVcUjHlsTWi1yjF0d0B88asgU4c40IAnLKIGtzbg==", "dev": true, "dependencies": { + "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/credential-provider-node": "3.812.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.812.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.812.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.3", - "@smithy/eventstream-serde-browser": "^4.0.2", - "@smithy/eventstream-serde-config-resolver": "^4.1.0", - "@smithy/eventstream-serde-node": "^4.0.2", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.6", - "@smithy/middleware-retry": "^4.1.7", - "@smithy/middleware-serde": "^4.0.5", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/credential-provider-node": "3.858.0", + "@aws-sdk/middleware-bucket-endpoint": "3.840.0", + "@aws-sdk/middleware-expect-continue": "3.840.0", + "@aws-sdk/middleware-flexible-checksums": "3.858.0", + "@aws-sdk/middleware-host-header": "3.840.0", + "@aws-sdk/middleware-location-constraint": "3.840.0", + "@aws-sdk/middleware-logger": "3.840.0", + "@aws-sdk/middleware-recursion-detection": "3.840.0", + "@aws-sdk/middleware-sdk-s3": "3.858.0", + "@aws-sdk/middleware-ssec": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.858.0", + "@aws-sdk/region-config-resolver": "3.840.0", + "@aws-sdk/signature-v4-multi-region": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-endpoints": "3.848.0", + "@aws-sdk/util-user-agent-browser": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.858.0", + "@aws-sdk/xml-builder": "3.821.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.2", + "@smithy/eventstream-serde-browser": "^4.0.4", + "@smithy/eventstream-serde-config-resolver": "^4.1.2", + "@smithy/eventstream-serde-node": "^4.0.4", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/hash-blob-browser": "^4.0.4", + "@smithy/hash-node": "^4.0.4", + "@smithy/hash-stream-node": "^4.0.4", + "@smithy/invalid-dependency": "^4.0.4", + "@smithy/md5-js": "^4.0.4", + "@smithy/middleware-content-length": "^4.0.4", + "@smithy/middleware-endpoint": "^4.1.17", + "@smithy/middleware-retry": "^4.1.18", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/node-http-handler": "^4.1.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.14", - "@smithy/util-defaults-mode-node": "^4.0.14", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", + "@smithy/util-defaults-mode-browser": "^4.0.25", + "@smithy/util-defaults-mode-node": "^4.0.25", + "@smithy/util-endpoints": "^3.0.6", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.6", + "@smithy/util-stream": "^4.2.3", "@smithy/util-utf8": "^4.0.0", - "@smithy/util-waiter": "^4.0.3", - "tslib": "^2.6.2" + "@smithy/util-waiter": "^4.0.6", + "@types/uuid": "^9.0.1", + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/client-kinesis/node_modules/@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", + "node_modules/@aws-sdk/client-secrets-manager": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.85.0.tgz", + "integrity": "sha512-KXATnzbQ7Z2+1bDKJXi69k37OMsn11MpIw3Wlkw5dpKYPeY9S+JEjWputfqbyyCLkdQtCWYPcv6YSX9IcAZyjw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/client-sts": "3.85.0", + "@aws-sdk/config-resolver": "3.80.0", + "@aws-sdk/credential-provider-node": "3.85.0", + "@aws-sdk/fetch-http-handler": "3.78.0", + "@aws-sdk/hash-node": "3.78.0", + "@aws-sdk/invalid-dependency": "3.78.0", + "@aws-sdk/middleware-content-length": "3.78.0", + "@aws-sdk/middleware-host-header": "3.78.0", + "@aws-sdk/middleware-logger": "3.78.0", + "@aws-sdk/middleware-retry": "3.80.0", + "@aws-sdk/middleware-serde": "3.78.0", + "@aws-sdk/middleware-signing": "3.78.0", + "@aws-sdk/middleware-stack": "3.78.0", + "@aws-sdk/middleware-user-agent": "3.78.0", + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/node-http-handler": "3.82.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/smithy-client": "3.85.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/url-parser": "3.78.0", + "@aws-sdk/util-base64-browser": "3.58.0", + "@aws-sdk/util-base64-node": "3.55.0", + "@aws-sdk/util-body-length-browser": "3.55.0", + "@aws-sdk/util-body-length-node": "3.55.0", + "@aws-sdk/util-defaults-mode-browser": "3.85.0", + "@aws-sdk/util-defaults-mode-node": "3.85.0", + "@aws-sdk/util-user-agent-browser": "3.78.0", + "@aws-sdk/util-user-agent-node": "3.80.0", + "@aws-sdk/util-utf8-browser": "3.55.0", + "@aws-sdk/util-utf8-node": "3.55.0", + "tslib": "^2.3.1", + "uuid": "^8.3.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=12.0.0" } }, - "node_modules/@aws-sdk/client-kinesis/node_modules/@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-crypto/sha256-browser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz", + "integrity": "sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "@aws-crypto/ie11-detection": "^2.0.0", + "@aws-crypto/sha256-js": "^2.0.0", + "@aws-crypto/supports-web-crypto": "^2.0.0", + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" } }, - "node_modules/@aws-sdk/client-lambda": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.812.0.tgz", - "integrity": "sha512-F1Nj+vst26JBgygFJi6Jl5+nWW72ErU6eSYM9G9t2WdPuSV+VKDIVJaMHVPRiLIogZMj0lH+P5QrECBq0RPe8Q==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-crypto/sha256-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz", + "integrity": "sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/credential-provider-node": "3.812.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.812.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.812.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.3", - "@smithy/eventstream-serde-browser": "^4.0.2", - "@smithy/eventstream-serde-config-resolver": "^4.1.0", - "@smithy/eventstream-serde-node": "^4.0.2", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.6", - "@smithy/middleware-retry": "^4.1.7", - "@smithy/middleware-serde": "^4.0.5", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.14", - "@smithy/util-defaults-mode-node": "^4.0.14", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", - "@smithy/util-stream": "^4.2.0", - "@smithy/util-utf8": "^4.0.0", - "@smithy/util-waiter": "^4.0.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "tslib": "^1.11.1" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-crypto/supports-web-crypto": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz", + "integrity": "sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "tslib": "^1.11.1" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-crypto/util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-2.0.2.tgz", + "integrity": "sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "@aws-sdk/types": "^3.110.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" } }, - "node_modules/@aws-sdk/client-s3": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.812.0.tgz", - "integrity": "sha512-kHgw9JDXNPLa/mHtWpOd5btBVXFSe+wwp1Ed9+bqz9uLkv0iV4joZrdQwnydkO8zlTs60Sc5ez+P2OiZ76i2Qg==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-crypto/util/node_modules/@aws-sdk/types": { + "version": "3.862.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.862.0.tgz", + "integrity": "sha512-Bei+RL0cDxxV+lW2UezLbCYYNeJm6Nzee0TpW0FfyTRBhH9C1XQh4+x+IClriXvgBnRquTMMYsmJfvx8iyLKrg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha1-browser": "5.2.0", - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/credential-provider-node": "3.812.0", - "@aws-sdk/middleware-bucket-endpoint": "3.808.0", - "@aws-sdk/middleware-expect-continue": "3.804.0", - "@aws-sdk/middleware-flexible-checksums": "3.812.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-location-constraint": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-sdk-s3": "3.812.0", - "@aws-sdk/middleware-ssec": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.812.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/signature-v4-multi-region": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.812.0", - "@aws-sdk/xml-builder": "3.804.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.3", - "@smithy/eventstream-serde-browser": "^4.0.2", - "@smithy/eventstream-serde-config-resolver": "^4.1.0", - "@smithy/eventstream-serde-node": "^4.0.2", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-blob-browser": "^4.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/hash-stream-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/md5-js": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.6", - "@smithy/middleware-retry": "^4.1.7", - "@smithy/middleware-serde": "^4.0.5", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.14", - "@smithy/util-defaults-mode-node": "^4.0.14", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", - "@smithy/util-stream": "^4.2.0", - "@smithy/util-utf8": "^4.0.0", - "@smithy/util-waiter": "^4.0.3", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-crypto/util/node_modules/@aws-sdk/types/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.85.0.tgz", + "integrity": "sha512-JMW0NzFpo99oE6O9M/kgLela73p4vmhe/5TIcdrqUvP9XUV9nANl5nSXh3rqLz0ubmliedz9kdYYhwMC3ntoXg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.80.0", + "@aws-sdk/fetch-http-handler": "3.78.0", + "@aws-sdk/hash-node": "3.78.0", + "@aws-sdk/invalid-dependency": "3.78.0", + "@aws-sdk/middleware-content-length": "3.78.0", + "@aws-sdk/middleware-host-header": "3.78.0", + "@aws-sdk/middleware-logger": "3.78.0", + "@aws-sdk/middleware-retry": "3.80.0", + "@aws-sdk/middleware-serde": "3.78.0", + "@aws-sdk/middleware-stack": "3.78.0", + "@aws-sdk/middleware-user-agent": "3.78.0", + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/node-http-handler": "3.82.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/smithy-client": "3.85.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/url-parser": "3.78.0", + "@aws-sdk/util-base64-browser": "3.58.0", + "@aws-sdk/util-base64-node": "3.55.0", + "@aws-sdk/util-body-length-browser": "3.55.0", + "@aws-sdk/util-body-length-node": "3.55.0", + "@aws-sdk/util-defaults-mode-browser": "3.85.0", + "@aws-sdk/util-defaults-mode-node": "3.85.0", + "@aws-sdk/util-user-agent-browser": "3.78.0", + "@aws-sdk/util-user-agent-node": "3.80.0", + "@aws-sdk/util-utf8-browser": "3.55.0", + "@aws-sdk/util-utf8-node": "3.55.0", + "tslib": "^2.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=12.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.78.0.tgz", + "integrity": "sha512-K41VTIzVHm2RyIwtBER8Hte3huUBXdV1WKO+i7olYVgLFmaqcZUNrlyoGDRqZcQ/u4AbxTzBU9jeMIbIfzMOWg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">= 12.0.0" } }, - "node_modules/@aws-sdk/client-sns": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sns/-/client-sns-3.812.0.tgz", - "integrity": "sha512-B8L33piQ+laO2ti+kdPl4tkuf+XtVcFoFXhmtTiXtWKEmdmwwg+wLto1ZPCm5y3LGvd8qKi4MI+rFpxeNTzJdw==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.85.0.tgz", + "integrity": "sha512-KgzLGq+w8OrSLutwdYUw0POeLinGQKcqvQJ9702eoeXCwZMnEHwKqU61bn8QKMX/tuYVCNV4I1enI7MmYPW8Lw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/credential-provider-node": "3.812.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.812.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.812.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.3", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.6", - "@smithy/middleware-retry": "^4.1.7", - "@smithy/middleware-serde": "^4.0.5", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.14", - "@smithy/util-defaults-mode-node": "^4.0.14", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", - "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" + "@aws-sdk/credential-provider-env": "3.78.0", + "@aws-sdk/credential-provider-imds": "3.81.0", + "@aws-sdk/credential-provider-sso": "3.85.0", + "@aws-sdk/credential-provider-web-identity": "3.78.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">= 12.0.0" } }, - "node_modules/@aws-sdk/client-sns/node_modules/@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.85.0.tgz", + "integrity": "sha512-YMxpRJg88mvfmKxy8I5yG3rx+UmF/5a/4twcdAzCfYTAPz+bV6ypIHjFv610/kygHMm29Fof3DRvHXDdBH4mkw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" + "@aws-sdk/credential-provider-env": "3.78.0", + "@aws-sdk/credential-provider-imds": "3.81.0", + "@aws-sdk/credential-provider-ini": "3.85.0", + "@aws-sdk/credential-provider-process": "3.80.0", + "@aws-sdk/credential-provider-sso": "3.85.0", + "@aws-sdk/credential-provider-web-identity": "3.78.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=12.0.0" } }, - "node_modules/@aws-sdk/client-sns/node_modules/@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.80.0.tgz", + "integrity": "sha512-3Ro+kMMyLUJHefOhGc5pOO/ibGcJi8bkj0z/Jtqd5I2Sm1qi7avoztST67/k48KMW1OqPnD/FUqxz5T8B2d+FQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">= 12.0.0" } }, - "node_modules/@aws-sdk/client-sqs": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.812.0.tgz", - "integrity": "sha512-8Fbn1Qu7239snvDL8lU9+/yFaK6UX5loQXcZGra6z/R1fJC9hBCIqLXBmHmr+bq8Atl9XepO3Or7gTpU/Aa9Gw==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.85.0.tgz", + "integrity": "sha512-uE238BgJ/AftPDlBGDlV0XdiNWnUZxFmUmLxgbr19/6jHaCuBr//T6rP+Bc0BjcHkvQCvTdFoCjs17R3Quy3cw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/credential-provider-node": "3.812.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-sdk-sqs": "3.810.0", - "@aws-sdk/middleware-user-agent": "3.812.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.812.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.3", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/md5-js": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.6", - "@smithy/middleware-retry": "^4.1.7", - "@smithy/middleware-serde": "^4.0.5", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.14", - "@smithy/util-defaults-mode-node": "^4.0.14", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", - "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" + "@aws-sdk/client-sso": "3.85.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">= 12.0.0" } }, - "node_modules/@aws-sdk/client-sqs/node_modules/@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.78.0.tgz", + "integrity": "sha512-9/IvqHdJaVqMEABA8xZE3t5YF1S2PepfckVu0Ws9YUglj6oO+2QyVX6aRgMF1xph6781+Yc31TDh8/3eaDja7w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">= 12.0.0" } }, - "node_modules/@aws-sdk/client-sqs/node_modules/@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.78.0.tgz", + "integrity": "sha512-1zL8uaDWGmH50c8B8jjz75e0ePj6/3QeZEhjJgTgL6DTdiqvRt32p3t+XWHW+yDI14fZZUYeTklAaLVxqFrHqQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">= 12.0.0" } }, - "node_modules/@aws-sdk/client-sso": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.812.0.tgz", - "integrity": "sha512-O//smQRj1+RXELB7xX54s5pZB0V69KHXpUZmz8V+8GAYO1FKTHfbpUgK+zyMNb+lFZxG9B69yl8pWPZ/K8bvxA==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-logger": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.78.0.tgz", + "integrity": "sha512-GBhwxNjhCJUIeQQDaGasX/C23Jay77al2vRyGwmxf8no0DdFsa4J1Ik6/2hhIqkqko+WM4SpCnpZrY4MtnxNvA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.812.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.812.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.3", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.6", - "@smithy/middleware-retry": "^4.1.7", - "@smithy/middleware-serde": "^4.0.5", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.14", - "@smithy/util-defaults-mode-node": "^4.0.14", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", - "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">= 12.0.0" } }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.78.0.tgz", + "integrity": "sha512-wdN5uoq8RxxhLhj0EPeuDSRFuXfUwKeEqRzCKMsYAOC0cAm+PryaP2leo0oTGJ9LUK8REK7zyfFcmtC4oOzlkA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">= 12.0.0" } }, - "node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", "dev": true, "license": "Apache-2.0", - "dependencies": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - }, "engines": { - "node": ">=18.0.0" + "node": ">= 12.0.0" } }, - "node_modules/@aws-sdk/core": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.812.0.tgz", - "integrity": "sha512-myWA9oHMBVDObKrxG+puAkIGs8igcWInQ1PWCRTS/zN4BkhUMFjjh/JPV/4Vzvtvj5E36iujq2WtlrDLl1PpOw==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.78.0.tgz", + "integrity": "sha512-diGO/Bf4ggBOEnfD7lrrXaaXOwOXGz0bAJ0HhpizwEMlBld5zfDlWXjNpslh+8+u3EHRjPJQ16KGT6mp/Dm+aw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/core": "^3.3.3", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/property-provider": "^4.0.2", - "@smithy/protocol-http": "^5.1.0", - "@smithy/signature-v4": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/util-middleware": "^4.0.2", - "fast-xml-parser": "4.4.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "@aws-sdk/types": "3.78.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" } }, - "node_modules/@aws-sdk/credential-provider-cognito-identity": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.812.0.tgz", - "integrity": "sha512-SrEGXP1zs2Cy3jjOwM8eh+UZkr28z7rvjF+cgV4bpOti5F/mzPyVoIxDkG8BQ2sZdAwa9rgEhhOl4CcKjoJoTA==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.80.0.tgz", + "integrity": "sha512-QV26qIXws1m6sZXg65NS+XrQ5NhAzbDVQLtEVE4nC39UN8fuieP6Uet/gZm9mlLI9hllwvcV7EfgBM3GSC7pZg==", "dev": true, - "optional": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-cognito-identity": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">= 12.0.0" } }, - "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.812.0.tgz", - "integrity": "sha512-Ge7IEu06ANurGBZx39q9CNN/ncqb1K8lpKZCY969uNWO0/7YPhnplrRJGMZYIS35nD2mBm3ortEKjY/wMZZd5g==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, - "dependencies": { - "@aws-sdk/core": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.812.0.tgz", - "integrity": "sha512-Vux2U42vPGXeE407Lp6v3yVA65J7hBO9rB67LXshyGVi7VZLAYWc4mrZxNJNqabEkjcDEmMQQakLPT6zc5SvFw==", + "node_modules/@aws-sdk/client-sfn": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sfn/-/client-sfn-3.876.0.tgz", + "integrity": "sha512-wFigy0+W7ciAs7ddyLXkcrx2BGPMFuTDEnt7pilBY73+ib91sie2g6Wrc8IsEGlw4N+tMl4grC2nAoAZ1zl5bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/property-provider": "^4.0.2", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/util-stream": "^4.2.0", - "tslib": "^2.6.2" + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.876.0", + "@aws-sdk/credential-provider-node": "3.876.0", + "@aws-sdk/middleware-host-header": "3.873.0", + "@aws-sdk/middleware-logger": "3.876.0", + "@aws-sdk/middleware-recursion-detection": "3.873.0", + "@aws-sdk/middleware-user-agent": "3.876.0", + "@aws-sdk/region-config-resolver": "3.873.0", + "@aws-sdk/types": "3.862.0", + "@aws-sdk/util-endpoints": "3.873.0", + "@aws-sdk/util-user-agent-browser": "3.873.0", + "@aws-sdk/util-user-agent-node": "3.876.0", + "@smithy/config-resolver": "^4.1.5", + "@smithy/core": "^3.8.0", + "@smithy/fetch-http-handler": "^5.1.1", + "@smithy/hash-node": "^4.0.5", + "@smithy/invalid-dependency": "^4.0.5", + "@smithy/middleware-content-length": "^4.0.5", + "@smithy/middleware-endpoint": "^4.1.18", + "@smithy/middleware-retry": "^4.1.19", + "@smithy/middleware-serde": "^4.0.9", + "@smithy/middleware-stack": "^4.0.5", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/node-http-handler": "^4.1.1", + "@smithy/protocol-http": "^5.1.3", + "@smithy/smithy-client": "^4.4.10", + "@smithy/types": "^4.3.2", + "@smithy/url-parser": "^4.0.5", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.26", + "@smithy/util-defaults-mode-node": "^4.0.26", + "@smithy/util-endpoints": "^3.0.7", + "@smithy/util-middleware": "^4.0.5", + "@smithy/util-retry": "^4.0.7", + "@smithy/util-utf8": "^4.0.0", + "@types/uuid": "^9.0.1", + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", + "node_modules/@aws-sdk/client-sfn/node_modules/@aws-sdk/client-sso": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.876.0.tgz", + "integrity": "sha512-Vf0PMF7HVpvllrfPODnBZmlz6kT/y2AvOt1RQG3+qD0VrHWzShc5nwgRZ+yyP3xkKVhZsQ3sJapfZTFnjqMOYA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.876.0", + "@aws-sdk/middleware-host-header": "3.873.0", + "@aws-sdk/middleware-logger": "3.876.0", + "@aws-sdk/middleware-recursion-detection": "3.873.0", + "@aws-sdk/middleware-user-agent": "3.876.0", + "@aws-sdk/region-config-resolver": "3.873.0", + "@aws-sdk/types": "3.862.0", + "@aws-sdk/util-endpoints": "3.873.0", + "@aws-sdk/util-user-agent-browser": "3.873.0", + "@aws-sdk/util-user-agent-node": "3.876.0", + "@smithy/config-resolver": "^4.1.5", + "@smithy/core": "^3.8.0", + "@smithy/fetch-http-handler": "^5.1.1", + "@smithy/hash-node": "^4.0.5", + "@smithy/invalid-dependency": "^4.0.5", + "@smithy/middleware-content-length": "^4.0.5", + "@smithy/middleware-endpoint": "^4.1.18", + "@smithy/middleware-retry": "^4.1.19", + "@smithy/middleware-serde": "^4.0.9", + "@smithy/middleware-stack": "^4.0.5", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/node-http-handler": "^4.1.1", + "@smithy/protocol-http": "^5.1.3", + "@smithy/smithy-client": "^4.4.10", + "@smithy/types": "^4.3.2", + "@smithy/url-parser": "^4.0.5", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.26", + "@smithy/util-defaults-mode-node": "^4.0.26", + "@smithy/util-endpoints": "^3.0.7", + "@smithy/util-middleware": "^4.0.5", + "@smithy/util-retry": "^4.0.7", + "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", + "node_modules/@aws-sdk/client-sfn/node_modules/@aws-sdk/core": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.876.0.tgz", + "integrity": "sha512-sVFBFkdoPOPyY13NaXO1E/R9O5J6ixzHnnRbqrbXYM2QQgLNPTKIiRtmVEuVoFV9YULg+/aKm7caix8m468y9w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", + "@aws-sdk/types": "3.862.0", + "@aws-sdk/xml-builder": "3.873.0", + "@smithy/core": "^3.8.0", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/property-provider": "^4.0.5", + "@smithy/protocol-http": "^5.1.3", + "@smithy/signature-v4": "^5.1.3", + "@smithy/smithy-client": "^4.4.10", + "@smithy/types": "^4.3.2", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-middleware": "^4.0.5", + "@smithy/util-utf8": "^4.0.0", + "fast-xml-parser": "5.2.5", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.812.0.tgz", - "integrity": "sha512-oltqGvQ488xtPY5wrNjbD+qQYYkuCjn30IDE1qKMxJ58EM6UVTQl3XV44Xq07xfF5gKwVJQkfIyOkRAguOVybg==", + "node_modules/@aws-sdk/client-sfn/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.876.0.tgz", + "integrity": "sha512-cof7lwp2AlrAfRs0pt4W2KMS2VMBvEmpcti1UOFfSJIqkn+cyJliMJ8LHg22GI+kUexjvxdAqSbf3M7OHvEW+w==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.812.0", - "@aws-sdk/credential-provider-env": "3.812.0", - "@aws-sdk/credential-provider-http": "3.812.0", - "@aws-sdk/credential-provider-process": "3.812.0", - "@aws-sdk/credential-provider-sso": "3.812.0", - "@aws-sdk/credential-provider-web-identity": "3.812.0", - "@aws-sdk/nested-clients": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/credential-provider-imds": "^4.0.4", - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", + "@aws-sdk/core": "3.876.0", + "@aws-sdk/types": "3.862.0", + "@smithy/property-provider": "^4.0.5", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.812.0.tgz", - "integrity": "sha512-SnvSWBP6cr9nqx784eETnL2Zl7ZnMB/oJgFVEG1aejAGbT1H9gTpMwuUsBXk4u/mEYe3f1lh1Wqo+HwDgNkfrg==", + "node_modules/@aws-sdk/client-sfn/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.876.0.tgz", + "integrity": "sha512-wzmef2NBp2+X1l8D4Q8hx1G8oI3+WdvLdPev9VnVpRYZxYGRWVPl++wvCBsCn/ZL0mdWopPkhHA3kFexQhMzvg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.812.0", - "@aws-sdk/credential-provider-http": "3.812.0", - "@aws-sdk/credential-provider-ini": "3.812.0", - "@aws-sdk/credential-provider-process": "3.812.0", - "@aws-sdk/credential-provider-sso": "3.812.0", - "@aws-sdk/credential-provider-web-identity": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/credential-provider-imds": "^4.0.4", - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", + "@aws-sdk/core": "3.876.0", + "@aws-sdk/types": "3.862.0", + "@smithy/fetch-http-handler": "^5.1.1", + "@smithy/node-http-handler": "^4.1.1", + "@smithy/property-provider": "^4.0.5", + "@smithy/protocol-http": "^5.1.3", + "@smithy/smithy-client": "^4.4.10", + "@smithy/types": "^4.3.2", + "@smithy/util-stream": "^4.2.4", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.812.0.tgz", - "integrity": "sha512-YI8bb153XeEOb59F9KtTZEwDAc14s2YHZz58+OFiJ2udnKsPV87mNiFhJPW6ba9nmOLXVat5XDcwtVT1b664wg==", + "node_modules/@aws-sdk/client-sfn/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.876.0.tgz", + "integrity": "sha512-JHbW6fqnJsVjGHCyko7B0NVPT1nEAPxkM3CGjUcVGsHgJBkxOLVCMQqTRyHcDdeHR2qeojlLoOHRz97xIHQjYw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", + "@aws-sdk/core": "3.876.0", + "@aws-sdk/credential-provider-env": "3.876.0", + "@aws-sdk/credential-provider-http": "3.876.0", + "@aws-sdk/credential-provider-process": "3.876.0", + "@aws-sdk/credential-provider-sso": "3.876.0", + "@aws-sdk/credential-provider-web-identity": "3.876.0", + "@aws-sdk/nested-clients": "3.876.0", + "@aws-sdk/types": "3.862.0", + "@smithy/credential-provider-imds": "^4.0.7", + "@smithy/property-provider": "^4.0.5", + "@smithy/shared-ini-file-loader": "^4.0.5", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.812.0.tgz", - "integrity": "sha512-ODsPcNhgiO6GOa82TVNskM97mml9rioe9Cbhemz48lkfDQPv1u06NaCR0o3FsvprX1sEhMvJTR3sE1fyEOzvJQ==", + "node_modules/@aws-sdk/client-sfn/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.876.0.tgz", + "integrity": "sha512-eHbNt1+Hi43e8ANnwf6toapLSxfMiyGq459y3Uh6i7NBOiWWKEsOVcgOfUC3RCoqeikxovt1tFM2cEElWUIOhg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.812.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/token-providers": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", + "@aws-sdk/credential-provider-env": "3.876.0", + "@aws-sdk/credential-provider-http": "3.876.0", + "@aws-sdk/credential-provider-ini": "3.876.0", + "@aws-sdk/credential-provider-process": "3.876.0", + "@aws-sdk/credential-provider-sso": "3.876.0", + "@aws-sdk/credential-provider-web-identity": "3.876.0", + "@aws-sdk/types": "3.862.0", + "@smithy/credential-provider-imds": "^4.0.7", + "@smithy/property-provider": "^4.0.5", + "@smithy/shared-ini-file-loader": "^4.0.5", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.812.0.tgz", - "integrity": "sha512-E9Bmiujvm/Hp9DM/Vc1S+D0pQbx8/x4dR/zyAEZU9EoRq0duQOQ1reWYWbebYmL1OklcVpTfKV0a/VCwuAtGSg==", + "node_modules/@aws-sdk/client-sfn/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.876.0.tgz", + "integrity": "sha512-SMX4OlHvspu3gF4hxe7WAnZFhxpiCye+WlBSVoWfW/i9XNhtrZS1JMr29MK34GlCTk9qO7FlRwds/Z5k7xPpHg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.812.0", - "@aws-sdk/nested-clients": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/types": "^4.2.0", + "@aws-sdk/core": "3.876.0", + "@aws-sdk/types": "3.862.0", + "@smithy/property-provider": "^4.0.5", + "@smithy/shared-ini-file-loader": "^4.0.5", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-providers": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.812.0.tgz", - "integrity": "sha512-hT7Kr8Ao+NS9b8KCB/U8cmpr0DcWOZNZNRBGAOc4eq65JpsRv177QmSqjh75vhM9BzchH3VymcP4GeMoy4SuvA==", + "node_modules/@aws-sdk/client-sfn/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.876.0.tgz", + "integrity": "sha512-iP5dz9XqwePbgnh7Bdrq5e1319JpCRKLyomUfHH1XVeXkIHmwIJdmTj1Upeo1J8L/5cLHmhXAN6CTN11bLo8SA==", "dev": true, - "optional": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-cognito-identity": "3.812.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/credential-provider-cognito-identity": "3.812.0", - "@aws-sdk/credential-provider-env": "3.812.0", - "@aws-sdk/credential-provider-http": "3.812.0", - "@aws-sdk/credential-provider-ini": "3.812.0", - "@aws-sdk/credential-provider-node": "3.812.0", - "@aws-sdk/credential-provider-process": "3.812.0", - "@aws-sdk/credential-provider-sso": "3.812.0", - "@aws-sdk/credential-provider-web-identity": "3.812.0", - "@aws-sdk/nested-clients": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.3", - "@smithy/credential-provider-imds": "^4.0.4", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/property-provider": "^4.0.2", - "@smithy/types": "^4.2.0", + "@aws-sdk/client-sso": "3.876.0", + "@aws-sdk/core": "3.876.0", + "@aws-sdk/token-providers": "3.876.0", + "@aws-sdk/types": "3.862.0", + "@smithy/property-provider": "^4.0.5", + "@smithy/shared-ini-file-loader": "^4.0.5", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/endpoint-cache": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/endpoint-cache/-/endpoint-cache-3.804.0.tgz", - "integrity": "sha512-TQVDkA/lV6ua75ELZaichMzlp6x7tDa1bqdy/+0ZftmODPtKXuOOEcJxmdN7Ui/YRo1gkRz2D9txYy7IlNg1Og==", + "node_modules/@aws-sdk/client-sfn/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.876.0.tgz", + "integrity": "sha512-q/XSCP1uae5aB9veM8zcm6Gqu6A4ckX9ZbhHgCzURXVJDwp+nINW1hM9vppMjGw3ND9Ibx/adR+KfTI0TDMzqw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "mnemonist": "0.38.3", + "@aws-sdk/core": "3.876.0", + "@aws-sdk/nested-clients": "3.876.0", + "@aws-sdk/types": "3.862.0", + "@smithy/property-provider": "^4.0.5", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/eventstream-handler-node": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-handler-node/-/eventstream-handler-node-3.804.0.tgz", - "integrity": "sha512-LZddQVBUCB86tZtLJRhqiDyIqr4hfRxZCcUp1fZSfpBMcf419lgcFRGWMR3J/kCWHQ0G05aor7fSeoeaxskuNQ==", + "node_modules/@aws-sdk/client-sfn/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.873.0.tgz", + "integrity": "sha512-KZ/W1uruWtMOs7D5j3KquOxzCnV79KQW9MjJFZM/M0l6KI8J6V3718MXxFHsTjUE4fpdV6SeCNLV1lwGygsjJA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/eventstream-codec": "^4.0.2", - "@smithy/types": "^4.2.0", + "@aws-sdk/types": "3.862.0", + "@smithy/protocol-http": "^5.1.3", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.808.0.tgz", - "integrity": "sha512-wEPlNcs8dir9lXbuviEGtSzYSxG/NRKQrJk5ybOc7OpPGHovsN+QhDOdY3lcjOFdwMTiMIG9foUkPz3zBpLB1A==", + "node_modules/@aws-sdk/client-sfn/node_modules/@aws-sdk/middleware-logger": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.876.0.tgz", + "integrity": "sha512-cpWJhOuMSyz9oV25Z/CMHCBTgafDCbv7fHR80nlRrPdPZ8ETNsahwRgltXP1QJJ8r3X/c1kwpOR7tc+RabVzNA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-arn-parser": "3.804.0", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", - "@smithy/util-config-provider": "^4.0.0", + "@aws-sdk/types": "3.862.0", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-endpoint-discovery": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.808.0.tgz", - "integrity": "sha512-h8LAIO6tuA0JAahrg+oSIVZpb6rhJOFVDDqYNQVp6ZdawlIzpZcc1sa+XVZvarBnThNKqvLTSGK7boSRmaLAwg==", + "node_modules/@aws-sdk/client-sfn/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.873.0.tgz", + "integrity": "sha512-OtgY8EXOzRdEWR//WfPkA/fXl0+WwE8hq0y9iw2caNyKPtca85dzrrZWnPqyBK/cpImosrpR1iKMYr41XshsCg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/endpoint-cache": "3.804.0", - "@aws-sdk/types": "3.804.0", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@aws-sdk/types": "3.862.0", + "@smithy/protocol-http": "^5.1.3", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-eventstream": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-eventstream/-/middleware-eventstream-3.804.0.tgz", - "integrity": "sha512-3lPxZshOJoKSxIMUq8FCiIre+FZ1g/t+O7DHwOMB6EuzJ8lp5QyUeh1wE5iD/gB8VhWZoj90rGIaWCmT8ccEuA==", + "node_modules/@aws-sdk/client-sfn/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.876.0.tgz", + "integrity": "sha512-FR+8INfnbNv32QDQ5szxkWX6mB/QgezfNyx8LnAh1ErISZMmEFBxXXir+ZOfuV8vsmal1a6cy9qmnMNDaNnaNQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@aws-sdk/core": "3.876.0", + "@aws-sdk/types": "3.862.0", + "@aws-sdk/util-endpoints": "3.873.0", + "@smithy/core": "^3.8.0", + "@smithy/protocol-http": "^5.1.3", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.804.0.tgz", - "integrity": "sha512-YW1hySBolALMII6C8y7Z0CRG2UX1dGJjLEBNFeefhO/xP7ZuE1dvnmfJGaEuBMnvc3wkRS63VZ3aqX6sevM1CA==", + "node_modules/@aws-sdk/client-sfn/node_modules/@aws-sdk/nested-clients": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.876.0.tgz", + "integrity": "sha512-R4TZrkM2gUElTsotk8mt3y7iLG8TNi1LL1wgVdEEWSLOYTaFyglGdoNBMtEeP7lmXilaTy00AbYF6BakJvSTHg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.876.0", + "@aws-sdk/middleware-host-header": "3.873.0", + "@aws-sdk/middleware-logger": "3.876.0", + "@aws-sdk/middleware-recursion-detection": "3.873.0", + "@aws-sdk/middleware-user-agent": "3.876.0", + "@aws-sdk/region-config-resolver": "3.873.0", + "@aws-sdk/types": "3.862.0", + "@aws-sdk/util-endpoints": "3.873.0", + "@aws-sdk/util-user-agent-browser": "3.873.0", + "@aws-sdk/util-user-agent-node": "3.876.0", + "@smithy/config-resolver": "^4.1.5", + "@smithy/core": "^3.8.0", + "@smithy/fetch-http-handler": "^5.1.1", + "@smithy/hash-node": "^4.0.5", + "@smithy/invalid-dependency": "^4.0.5", + "@smithy/middleware-content-length": "^4.0.5", + "@smithy/middleware-endpoint": "^4.1.18", + "@smithy/middleware-retry": "^4.1.19", + "@smithy/middleware-serde": "^4.0.9", + "@smithy/middleware-stack": "^4.0.5", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/node-http-handler": "^4.1.1", + "@smithy/protocol-http": "^5.1.3", + "@smithy/smithy-client": "^4.4.10", + "@smithy/types": "^4.3.2", + "@smithy/url-parser": "^4.0.5", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.26", + "@smithy/util-defaults-mode-node": "^4.0.26", + "@smithy/util-endpoints": "^3.0.7", + "@smithy/util-middleware": "^4.0.5", + "@smithy/util-retry": "^4.0.7", + "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.812.0.tgz", - "integrity": "sha512-/ayAooUZvV1GTomNMrfbhjUHAEaz0Wmio3lKyaTJsW4WdLJXBuzdo57YADRmYYUqx6awzJ6VJ6HGc1Uc6tOlbw==", + "node_modules/@aws-sdk/client-sfn/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.873.0.tgz", + "integrity": "sha512-q9sPoef+BBG6PJnc4x60vK/bfVwvRWsPgcoQyIra057S/QGjq5VkjvNk6H8xedf6vnKlXNBwq9BaANBXnldUJg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@aws-crypto/crc32c": "5.2.0", - "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/is-array-buffer": "^4.0.0", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-stream": "^4.2.0", - "@smithy/util-utf8": "^4.0.0", + "@aws-sdk/types": "3.862.0", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/types": "^4.3.2", + "@smithy/util-config-provider": "^4.0.0", + "@smithy/util-middleware": "^4.0.5", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.804.0.tgz", - "integrity": "sha512-bum1hLVBrn2lJCi423Z2fMUYtsbkGI2s4N+2RI2WSjvbaVyMSv/WcejIrjkqiiMR+2Y7m5exgoKeg4/TODLDPQ==", + "node_modules/@aws-sdk/client-sfn/node_modules/@aws-sdk/token-providers": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.876.0.tgz", + "integrity": "sha512-iU08kaQbhXnY0CC2TBcr7y/2PqPwZP2CTWX/Rbq0NvhOyteikfh7ASC+bRfLUp0XMSHKvSb+w2dh8a0lvx4oHg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@aws-sdk/core": "3.876.0", + "@aws-sdk/nested-clients": "3.876.0", + "@aws-sdk/types": "3.862.0", + "@smithy/property-provider": "^4.0.5", + "@smithy/shared-ini-file-loader": "^4.0.5", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.804.0.tgz", - "integrity": "sha512-AMtKnllIWKgoo7hiJfphLYotEwTERfjVMO2+cKAncz9w1g+bnYhHxiVhJJoR94y047c06X4PU5MsTxvdQ73Znw==", + "node_modules/@aws-sdk/client-sfn/node_modules/@aws-sdk/types": { + "version": "3.862.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.862.0.tgz", + "integrity": "sha512-Bei+RL0cDxxV+lW2UezLbCYYNeJm6Nzee0TpW0FfyTRBhH9C1XQh4+x+IClriXvgBnRquTMMYsmJfvx8iyLKrg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-logger": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.804.0.tgz", - "integrity": "sha512-w/qLwL3iq0KOPQNat0Kb7sKndl9BtceigINwBU7SpkYWX9L/Lem6f8NPEKrC9Tl4wDBht3Yztub4oRTy/horJA==", + "node_modules/@aws-sdk/client-sfn/node_modules/@aws-sdk/util-endpoints": { + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.873.0.tgz", + "integrity": "sha512-YByHrhjxYdjKRf/RQygRK1uh0As1FIi9+jXTcIEX/rBgN8mUByczr2u4QXBzw7ZdbdcOBMOkPnLRjNOWW1MkFg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/types": "^4.2.0", + "@aws-sdk/types": "3.862.0", + "@smithy/types": "^4.3.2", + "@smithy/url-parser": "^4.0.5", + "@smithy/util-endpoints": "^3.0.7", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.804.0.tgz", - "integrity": "sha512-zqHOrvLRdsUdN/ehYfZ9Tf8svhbiLLz5VaWUz22YndFv6m9qaAcijkpAOlKexsv3nLBMJdSdJ6GUTAeIy3BZzw==", + "node_modules/@aws-sdk/client-sfn/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.873.0.tgz", + "integrity": "sha512-AcRdbK6o19yehEcywI43blIBhOCSo6UgyWcuOJX5CFF8k39xm1ILCjQlRRjchLAxWrm0lU0Q7XV90RiMMFMZtA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@aws-sdk/types": "3.862.0", + "@smithy/types": "^4.3.2", + "bowser": "^2.11.0", "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.812.0.tgz", - "integrity": "sha512-e8AqRRIaTsunL1hqtO1hksa9oTYdsIbfezHUyVpPGugUIB1lMqPt/DlBsanI85OzUD711UfNSEcZ1mqAxpDOoA==", + "node_modules/@aws-sdk/client-sfn/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.876.0.tgz", + "integrity": "sha512-/ZIaeUt60JBdI0mNc7sZ8v3Tuzp8Pbe4gIAYnppGyF4KV8QA+Yu8tp2bGHfkKn150t1uvQ6P/4CwFfoGF34dzg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-arn-parser": "3.804.0", - "@smithy/core": "^3.3.3", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/protocol-http": "^5.1.0", - "@smithy/signature-v4": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/util-config-provider": "^4.0.0", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-stream": "^4.2.0", - "@smithy/util-utf8": "^4.0.0", + "@aws-sdk/middleware-user-agent": "3.876.0", + "@aws-sdk/types": "3.862.0", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@aws-sdk/middleware-sdk-sqs": { - "version": "3.810.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.810.0.tgz", - "integrity": "sha512-MKNX7TYtB3dn1UO+5ewTLJUtDNXLAIKbXokCEfzHuvqPJpsFPbBp7ERY2jn2KjCBMSaP3w1ZCCpFKcfVICsrXQ==", + "node_modules/@aws-sdk/client-sfn/node_modules/@aws-sdk/xml-builder": { + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.873.0.tgz", + "integrity": "sha512-kLO7k7cGJ6KaHiExSJWojZurF7SnGMDHXRuQunFnEoD0n1yB6Lqy/S/zHiQ7oJnBhPr9q0TW9qFkrsZb1Uc54w==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/util-hex-encoding": "^4.0.0", - "@smithy/util-utf8": "^4.0.0", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.804.0.tgz", - "integrity": "sha512-Tk8jK0gOIUBvEPTz/wwSlP1V70zVQ3QYqsLPAjQRMO6zfOK9ax31dln3MgKvFDJxBydS2tS3wsn53v+brxDxTA==", + "node_modules/@aws-sdk/client-sns": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sns/-/client-sns-3.858.0.tgz", + "integrity": "sha512-5Ltvxj2x3FjSwrfyXZHCNVhcBvzQln4oEoskFl1dsNeuy7mYIdRW+0NiDf9vO3Qfg8FLd2tLZNWElPG3bmgr5g==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/types": "^4.2.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/credential-provider-node": "3.858.0", + "@aws-sdk/middleware-host-header": "3.840.0", + "@aws-sdk/middleware-logger": "3.840.0", + "@aws-sdk/middleware-recursion-detection": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.858.0", + "@aws-sdk/region-config-resolver": "3.840.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-endpoints": "3.848.0", + "@aws-sdk/util-user-agent-browser": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.858.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.2", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/hash-node": "^4.0.4", + "@smithy/invalid-dependency": "^4.0.4", + "@smithy/middleware-content-length": "^4.0.4", + "@smithy/middleware-endpoint": "^4.1.17", + "@smithy/middleware-retry": "^4.1.18", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/node-http-handler": "^4.1.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.25", + "@smithy/util-defaults-mode-node": "^4.0.25", + "@smithy/util-endpoints": "^3.0.6", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.6", + "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.812.0.tgz", - "integrity": "sha512-r+HFwtSvnAs6Fydp4mijylrTX0og9p/xfxOcKsqhMuk3HpZAIcf9sSjRQI6MBusYklg7pnM4sGEnPAZIrdRotA==", + "node_modules/@aws-sdk/client-sqs": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.858.0.tgz", + "integrity": "sha512-LrC00ESq20OIGMYTQEdH/yaXThvTOMBd88BKA9navcfAwOXvXCJTmleIED+KttozBbPZiDzhp3ekhAEoFSy76w==", "dev": true, "dependencies": { - "@aws-sdk/core": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@smithy/core": "^3.3.3", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/credential-provider-node": "3.858.0", + "@aws-sdk/middleware-host-header": "3.840.0", + "@aws-sdk/middleware-logger": "3.840.0", + "@aws-sdk/middleware-recursion-detection": "3.840.0", + "@aws-sdk/middleware-sdk-sqs": "3.857.0", + "@aws-sdk/middleware-user-agent": "3.858.0", + "@aws-sdk/region-config-resolver": "3.840.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-endpoints": "3.848.0", + "@aws-sdk/util-user-agent-browser": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.858.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.2", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/hash-node": "^4.0.4", + "@smithy/invalid-dependency": "^4.0.4", + "@smithy/md5-js": "^4.0.4", + "@smithy/middleware-content-length": "^4.0.4", + "@smithy/middleware-endpoint": "^4.1.17", + "@smithy/middleware-retry": "^4.1.18", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/node-http-handler": "^4.1.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.25", + "@smithy/util-defaults-mode-node": "^4.0.25", + "@smithy/util-endpoints": "^3.0.6", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.6", + "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/nested-clients": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.812.0.tgz", - "integrity": "sha512-FS/fImbEpJU3cXtBGR9fyVd+CP51eNKlvTMi3f4/6lSk3RmHjudNC9yEF/og3jtpT3O+7vsNOUW9mHco5IjdQQ==", + "node_modules/@aws-sdk/client-sso": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.858.0.tgz", + "integrity": "sha512-iXuZQs4KH6a3Pwnt0uORalzAZ5EXRPr3lBYAsdNwkP8OYyoUz5/TE3BLyw7ceEh0rj4QKGNnNALYo1cDm0EV8w==", "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.812.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.812.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.3", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.6", - "@smithy/middleware-retry": "^4.1.7", - "@smithy/middleware-serde": "^4.0.5", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/middleware-host-header": "3.840.0", + "@aws-sdk/middleware-logger": "3.840.0", + "@aws-sdk/middleware-recursion-detection": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.858.0", + "@aws-sdk/region-config-resolver": "3.840.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-endpoints": "3.848.0", + "@aws-sdk/util-user-agent-browser": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.858.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.2", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/hash-node": "^4.0.4", + "@smithy/invalid-dependency": "^4.0.4", + "@smithy/middleware-content-length": "^4.0.4", + "@smithy/middleware-endpoint": "^4.1.17", + "@smithy/middleware-retry": "^4.1.18", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/node-http-handler": "^4.1.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.14", - "@smithy/util-defaults-mode-node": "^4.0.14", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", + "@smithy/util-defaults-mode-browser": "^4.0.25", + "@smithy/util-defaults-mode-node": "^4.0.25", + "@smithy/util-endpoints": "^3.0.6", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.6", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" }, @@ -1557,231 +1679,1906 @@ "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", + "node_modules/@aws-sdk/client-sts": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.85.0.tgz", + "integrity": "sha512-qjaoGG1FrCTS1zSk/XOQRZ0v0JXeytpMl/hf6BcoX/NsaJzDaE5oJlzqdNGwd+1kLYt9J2igG3zxYgvxnCHg6w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.80.0", + "@aws-sdk/credential-provider-node": "3.85.0", + "@aws-sdk/fetch-http-handler": "3.78.0", + "@aws-sdk/hash-node": "3.78.0", + "@aws-sdk/invalid-dependency": "3.78.0", + "@aws-sdk/middleware-content-length": "3.78.0", + "@aws-sdk/middleware-host-header": "3.78.0", + "@aws-sdk/middleware-logger": "3.78.0", + "@aws-sdk/middleware-retry": "3.80.0", + "@aws-sdk/middleware-sdk-sts": "3.78.0", + "@aws-sdk/middleware-serde": "3.78.0", + "@aws-sdk/middleware-signing": "3.78.0", + "@aws-sdk/middleware-stack": "3.78.0", + "@aws-sdk/middleware-user-agent": "3.78.0", + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/node-http-handler": "3.82.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/smithy-client": "3.85.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/url-parser": "3.78.0", + "@aws-sdk/util-base64-browser": "3.58.0", + "@aws-sdk/util-base64-node": "3.55.0", + "@aws-sdk/util-body-length-browser": "3.55.0", + "@aws-sdk/util-body-length-node": "3.55.0", + "@aws-sdk/util-defaults-mode-browser": "3.85.0", + "@aws-sdk/util-defaults-mode-node": "3.85.0", + "@aws-sdk/util-user-agent-browser": "3.78.0", + "@aws-sdk/util-user-agent-node": "3.80.0", + "@aws-sdk/util-utf8-browser": "3.55.0", + "@aws-sdk/util-utf8-node": "3.55.0", + "entities": "2.2.0", + "fast-xml-parser": "3.19.0", + "tslib": "^2.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=12.0.0" } }, - "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", + "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/sha256-browser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz", + "integrity": "sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "@aws-crypto/ie11-detection": "^2.0.0", + "@aws-crypto/sha256-js": "^2.0.0", + "@aws-crypto/supports-web-crypto": "^2.0.0", + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" } }, - "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.808.0.tgz", - "integrity": "sha512-9x2QWfphkARZY5OGkl9dJxZlSlYM2l5inFeo2bKntGuwg4A4YUe5h7d5yJ6sZbam9h43eBrkOdumx03DAkQF9A==", + "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/sha256-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz", + "integrity": "sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/types": "^4.2.0", - "@smithy/util-config-provider": "^4.0.0", - "@smithy/util-middleware": "^4.0.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "tslib": "^1.11.1" } }, - "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.812.0.tgz", - "integrity": "sha512-JTpk3ZHf7TXYbicKfOKi+VrsBTqcAszg9QR9fQmT9aCxPp39gsF3WsXq7NjepwZ5So11ixGIsPE/jtMym399QQ==", + "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/supports-web-crypto": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz", + "integrity": "sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/protocol-http": "^5.1.0", - "@smithy/signature-v4": "^5.1.0", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "tslib": "^1.11.1" } }, - "node_modules/@aws-sdk/token-providers": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.812.0.tgz", - "integrity": "sha512-dbVBaKxrxE708ub5uH3w+cmKIeRQas+2Xf6rpckhohYY+IiflGOdK6aLrp3T6dOQgr/FJ37iQtcYNonAG+yVBQ==", + "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-2.0.2.tgz", + "integrity": "sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/nested-clients": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "@aws-sdk/types": "^3.110.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" } }, - "node_modules/@aws-sdk/types": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.804.0.tgz", - "integrity": "sha512-A9qnsy9zQ8G89vrPPlNG9d1d8QcKRGqJKqwyGgS0dclJpwy6d1EWgQLIolKPl6vcFpLoe6avLOLxr+h8ur5wpg==", + "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/util/node_modules/@aws-sdk/types": { + "version": "3.862.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.862.0.tgz", + "integrity": "sha512-Bei+RL0cDxxV+lW2UezLbCYYNeJm6Nzee0TpW0FfyTRBhH9C1XQh4+x+IClriXvgBnRquTMMYsmJfvx8iyLKrg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.804.0.tgz", - "integrity": "sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ==", + "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/util/node_modules/@aws-sdk/types/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@aws-sdk/client-sts/node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/client-sso": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.85.0.tgz", + "integrity": "sha512-JMW0NzFpo99oE6O9M/kgLela73p4vmhe/5TIcdrqUvP9XUV9nANl5nSXh3rqLz0ubmliedz9kdYYhwMC3ntoXg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "tslib": "^2.6.2" + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.80.0", + "@aws-sdk/fetch-http-handler": "3.78.0", + "@aws-sdk/hash-node": "3.78.0", + "@aws-sdk/invalid-dependency": "3.78.0", + "@aws-sdk/middleware-content-length": "3.78.0", + "@aws-sdk/middleware-host-header": "3.78.0", + "@aws-sdk/middleware-logger": "3.78.0", + "@aws-sdk/middleware-retry": "3.80.0", + "@aws-sdk/middleware-serde": "3.78.0", + "@aws-sdk/middleware-stack": "3.78.0", + "@aws-sdk/middleware-user-agent": "3.78.0", + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/node-http-handler": "3.82.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/smithy-client": "3.85.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/url-parser": "3.78.0", + "@aws-sdk/util-base64-browser": "3.58.0", + "@aws-sdk/util-base64-node": "3.55.0", + "@aws-sdk/util-body-length-browser": "3.55.0", + "@aws-sdk/util-body-length-node": "3.55.0", + "@aws-sdk/util-defaults-mode-browser": "3.85.0", + "@aws-sdk/util-defaults-mode-node": "3.85.0", + "@aws-sdk/util-user-agent-browser": "3.78.0", + "@aws-sdk/util-user-agent-node": "3.80.0", + "@aws-sdk/util-utf8-browser": "3.55.0", + "@aws-sdk/util-utf8-node": "3.55.0", + "tslib": "^2.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=12.0.0" } }, - "node_modules/@aws-sdk/util-endpoints": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.808.0.tgz", - "integrity": "sha512-N6Lic98uc4ADB7fLWlzx+1uVnq04VgVjngZvwHoujcRg9YDhIg9dUDiTzD5VZv13g1BrPYmvYP1HhsildpGV6w==", + "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.78.0.tgz", + "integrity": "sha512-K41VTIzVHm2RyIwtBER8Hte3huUBXdV1WKO+i7olYVgLFmaqcZUNrlyoGDRqZcQ/u4AbxTzBU9jeMIbIfzMOWg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/types": "^4.2.0", - "@smithy/util-endpoints": "^3.0.4", - "tslib": "^2.6.2" + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">= 12.0.0" } }, - "node_modules/@aws-sdk/util-locate-window": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.804.0.tgz", - "integrity": "sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==", + "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.85.0.tgz", + "integrity": "sha512-KgzLGq+w8OrSLutwdYUw0POeLinGQKcqvQJ9702eoeXCwZMnEHwKqU61bn8QKMX/tuYVCNV4I1enI7MmYPW8Lw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "tslib": "^2.6.2" + "@aws-sdk/credential-provider-env": "3.78.0", + "@aws-sdk/credential-provider-imds": "3.81.0", + "@aws-sdk/credential-provider-sso": "3.85.0", + "@aws-sdk/credential-provider-web-identity": "3.78.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">= 12.0.0" } }, - "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.804.0.tgz", - "integrity": "sha512-KfW6T6nQHHM/vZBBdGn6fMyG/MgX5lq82TDdX4HRQRRuHKLgBWGpKXqqvBwqIaCdXwWHgDrg2VQups6GqOWW2A==", + "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.85.0.tgz", + "integrity": "sha512-YMxpRJg88mvfmKxy8I5yG3rx+UmF/5a/4twcdAzCfYTAPz+bV6ypIHjFv610/kygHMm29Fof3DRvHXDdBH4mkw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.804.0", - "@smithy/types": "^4.2.0", - "bowser": "^2.11.0", - "tslib": "^2.6.2" + "@aws-sdk/credential-provider-env": "3.78.0", + "@aws-sdk/credential-provider-imds": "3.81.0", + "@aws-sdk/credential-provider-ini": "3.85.0", + "@aws-sdk/credential-provider-process": "3.80.0", + "@aws-sdk/credential-provider-sso": "3.85.0", + "@aws-sdk/credential-provider-web-identity": "3.78.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=12.0.0" } }, - "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.812.0.tgz", - "integrity": "sha512-8pt+OkHhS2U0LDwnzwRnFxyKn8sjSe752OIZQCNv263odud8jQu9pYO2pKqb2kRBk9h9szynjZBDLXfnvSQ7Bg==", + "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.80.0.tgz", + "integrity": "sha512-3Ro+kMMyLUJHefOhGc5pOO/ibGcJi8bkj0z/Jtqd5I2Sm1qi7avoztST67/k48KMW1OqPnD/FUqxz5T8B2d+FQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } + "node": ">= 12.0.0" } }, - "node_modules/@aws-sdk/xml-builder": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.804.0.tgz", - "integrity": "sha512-JbGWp36IG9dgxtvC6+YXwt5WDZYfuamWFtVfK6fQpnmL96dx+GUPOXPKRWdw67WLKf2comHY28iX2d3z35I53Q==", + "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.85.0.tgz", + "integrity": "sha512-uE238BgJ/AftPDlBGDlV0XdiNWnUZxFmUmLxgbr19/6jHaCuBr//T6rP+Bc0BjcHkvQCvTdFoCjs17R3Quy3cw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" + "@aws-sdk/client-sso": "3.85.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">= 12.0.0" } }, - "node_modules/@azure/abort-controller": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", - "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", + "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.78.0.tgz", + "integrity": "sha512-9/IvqHdJaVqMEABA8xZE3t5YF1S2PepfckVu0Ws9YUglj6oO+2QyVX6aRgMF1xph6781+Yc31TDh8/3eaDja7w==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "tslib": "^2.2.0" + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { - "node": ">=12.0.0" + "node": ">= 12.0.0" } }, - "node_modules/@azure/core-auth": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.9.0.tgz", - "integrity": "sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==", + "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.78.0.tgz", + "integrity": "sha512-1zL8uaDWGmH50c8B8jjz75e0ePj6/3QeZEhjJgTgL6DTdiqvRt32p3t+XWHW+yDI14fZZUYeTklAaLVxqFrHqQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-util": "^1.11.0", - "tslib": "^2.6.2" + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">= 12.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==", + "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/middleware-logger": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.78.0.tgz", + "integrity": "sha512-GBhwxNjhCJUIeQQDaGasX/C23Jay77al2vRyGwmxf8no0DdFsa4J1Ik6/2hhIqkqko+WM4SpCnpZrY4MtnxNvA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "tslib": "^2.6.2" + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "engines": { - "node": ">=18.0.0" + "node": ">= 12.0.0" } }, - "node_modules/@azure/core-client": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.4.tgz", - "integrity": "sha512-f7IxTD15Qdux30s2qFARH+JxgwxWLG2Rlr4oSkPGuLWm+1p5y1+C04XGLA0vmX6EtqfutmjvpNmAfgwVIS5hpw==", + "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.78.0.tgz", + "integrity": "sha512-wdN5uoq8RxxhLhj0EPeuDSRFuXfUwKeEqRzCKMsYAOC0cAm+PryaP2leo0oTGJ9LUK8REK7zyfFcmtC4oOzlkA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.78.0.tgz", + "integrity": "sha512-diGO/Bf4ggBOEnfD7lrrXaaXOwOXGz0bAJ0HhpizwEMlBld5zfDlWXjNpslh+8+u3EHRjPJQ16KGT6mp/Dm+aw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.78.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.80.0.tgz", + "integrity": "sha512-QV26qIXws1m6sZXg65NS+XrQ5NhAzbDVQLtEVE4nC39UN8fuieP6Uet/gZm9mlLI9hllwvcV7EfgBM3GSC7pZg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/client-sts/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/@aws-sdk/client-sts/node_modules/fast-xml-parser": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz", + "integrity": "sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg==", + "dev": true, + "license": "MIT", + "bin": { + "xml2js": "cli.js" + }, + "funding": { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + }, + "node_modules/@aws-sdk/config-resolver": { + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.80.0.tgz", + "integrity": "sha512-vFruNKlmhsaC8yjnHmasi1WW/7EELlEuFTj4mqcqNqR4dfraf0maVvpqF1VSR8EstpFMsGYI5dmoWAnnG4PcLQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/signature-v4": "3.78.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-config-provider": "3.55.0", + "@aws-sdk/util-middleware": "3.78.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/config-resolver/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/core": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.858.0.tgz", + "integrity": "sha512-iWm4QLAS+/XMlnecIU1Y33qbBr1Ju+pmWam3xVCPlY4CSptKpVY+2hXOnmg9SbHAX9C005fWhrIn51oDd00c9A==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.840.0", + "@aws-sdk/xml-builder": "3.821.0", + "@smithy/core": "^3.7.2", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/property-provider": "^4.0.4", + "@smithy/protocol-http": "^5.1.2", + "@smithy/signature-v4": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-utf8": "^4.0.0", + "fast-xml-parser": "5.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-cognito-identity": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.858.0.tgz", + "integrity": "sha512-y8FDSBSEvdFN1rbetf5pHSLyfTfYCbTl04bH382NTf7MaKli2vMkp8GEtrbkUk4OTnxx02kJ3NqaUBGgDFVfsg==", + "dev": true, + "optional": true, + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/property-provider": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.858.0.tgz", + "integrity": "sha512-kZsGyh2BoSRguzlcGtzdLhw/l/n3KYAC+/l/H0SlsOq3RLHF6tO/cRdsLnwoix2bObChHUp03cex63o1gzdx/Q==", + "dev": true, + "dependencies": { + "@aws-sdk/core": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/property-provider": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.858.0.tgz", + "integrity": "sha512-GDnfYl3+NPJQ7WQQYOXEA489B212NinpcIDD7rpsB6IWUPo8yDjT5NceK4uUkIR3MFpNCGt9zd/z6NNLdB2fuQ==", + "dev": true, + "dependencies": { + "@aws-sdk/core": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/node-http-handler": "^4.1.0", + "@smithy/property-provider": "^4.0.4", + "@smithy/protocol-http": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/util-stream": "^4.2.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-imds": { + "version": "3.81.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.81.0.tgz", + "integrity": "sha512-BHopP+gaovTYj+4tSrwCk8NNCR48gE9CWmpIOLkP9ell0gOL81Qh7aCEiIK0BZBZkccv1s16cYq1MSZZGS7PEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/url-parser": "3.78.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-imds/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.858.0.tgz", + "integrity": "sha512-2ZoVJW2Gg4LjpyZPvzOV+EOJgjuaVN/+mvAxAU6JU5OJJUzqNuW1Mi7VXFdZHcF6weXoKHfzYZVR0uuVapu1lQ==", + "dev": true, + "dependencies": { + "@aws-sdk/core": "3.858.0", + "@aws-sdk/credential-provider-env": "3.858.0", + "@aws-sdk/credential-provider-http": "3.858.0", + "@aws-sdk/credential-provider-process": "3.858.0", + "@aws-sdk/credential-provider-sso": "3.858.0", + "@aws-sdk/credential-provider-web-identity": "3.858.0", + "@aws-sdk/nested-clients": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/credential-provider-imds": "^4.0.6", + "@smithy/property-provider": "^4.0.4", + "@smithy/shared-ini-file-loader": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.858.0.tgz", + "integrity": "sha512-clHADxFnMH3R3+7E1bKWEWgoHmLMep2VlmUFDYV4Hw17JR563RRQpzlF2QRCTjSNUjH48dd6AVxEDfh7461X6Q==", + "dev": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.858.0", + "@aws-sdk/credential-provider-http": "3.858.0", + "@aws-sdk/credential-provider-ini": "3.858.0", + "@aws-sdk/credential-provider-process": "3.858.0", + "@aws-sdk/credential-provider-sso": "3.858.0", + "@aws-sdk/credential-provider-web-identity": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/credential-provider-imds": "^4.0.6", + "@smithy/property-provider": "^4.0.4", + "@smithy/shared-ini-file-loader": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.858.0.tgz", + "integrity": "sha512-l5LJWZJMRaZ+LhDjtupFUKEC5hAjgvCRrOvV5T60NCUBOy0Ozxa7Sgx3x+EOwiruuoh3Cn9O+RlbQlJX6IfZIw==", + "dev": true, + "dependencies": { + "@aws-sdk/core": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/property-provider": "^4.0.4", + "@smithy/shared-ini-file-loader": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.858.0.tgz", + "integrity": "sha512-YPAsEm4dUPCYO5nC/lv6fPhiihm70rh2Zdg/gmjOiD/7TIR+OT622bW+E1qBJ9s+dzOdAmutGSCmVbxp8gTM5Q==", + "dev": true, + "dependencies": { + "@aws-sdk/client-sso": "3.858.0", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/token-providers": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/property-provider": "^4.0.4", + "@smithy/shared-ini-file-loader": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.858.0.tgz", + "integrity": "sha512-8iULWsH83iZDdUuiDsRb83M0NqIlXjlDbJUIddVsIrfWp4NmanKw77SV6yOZ66nuJjPsn9j7RDb9bfEPCy5SWA==", + "dev": true, + "dependencies": { + "@aws-sdk/core": "3.858.0", + "@aws-sdk/nested-clients": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/property-provider": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-providers": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.858.0.tgz", + "integrity": "sha512-2Cs7wmT9qbo6gQUJA7bSZ66ANeKgrzdjhe/Q+GMGueDClu6SEzEI5auThwsA05mcoLTD0jbEGQ4iWIUBTLbdIA==", + "dev": true, + "optional": true, + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.858.0", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/credential-provider-cognito-identity": "3.858.0", + "@aws-sdk/credential-provider-env": "3.858.0", + "@aws-sdk/credential-provider-http": "3.858.0", + "@aws-sdk/credential-provider-ini": "3.858.0", + "@aws-sdk/credential-provider-node": "3.858.0", + "@aws-sdk/credential-provider-process": "3.858.0", + "@aws-sdk/credential-provider-sso": "3.858.0", + "@aws-sdk/credential-provider-web-identity": "3.858.0", + "@aws-sdk/nested-clients": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.2", + "@smithy/credential-provider-imds": "^4.0.6", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/property-provider": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/endpoint-cache": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/endpoint-cache/-/endpoint-cache-3.804.0.tgz", + "integrity": "sha512-TQVDkA/lV6ua75ELZaichMzlp6x7tDa1bqdy/+0ZftmODPtKXuOOEcJxmdN7Ui/YRo1gkRz2D9txYy7IlNg1Og==", + "dev": true, + "dependencies": { + "mnemonist": "0.38.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/eventstream-handler-node": { + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-handler-node/-/eventstream-handler-node-3.840.0.tgz", + "integrity": "sha512-m/zVrSSAEHq+6h4sy0JUEBScB1pGgs/1+iRVhfzfbnf+/gTr4ut2jRq4tDiNEX9pQ1oFVvw+ntPua5qfquQeRQ==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.840.0", + "@smithy/eventstream-codec": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/fetch-http-handler": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.78.0.tgz", + "integrity": "sha512-cR6r2h2kJ1DNEZSXC6GknQB7OKmy+s9ZNV+g3AsNqkrUmNNOaHpFoSn+m6SC3qaclcGd0eQBpqzSu/TDn23Ihw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/querystring-builder": "3.78.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-base64-browser": "3.58.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/fetch-http-handler/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/hash-node": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.78.0.tgz", + "integrity": "sha512-ev48yXaqZVtMeuKy52LUZPHCyKvkKQ9uiUebqkA+zFxIk+eN8SMPFHmsififIHWuS6ZkXBUSctjH9wmLebH60A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-buffer-from": "3.55.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/hash-node/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/invalid-dependency": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.78.0.tgz", + "integrity": "sha512-zUo+PbeRMN/Mzj6y+6p9qqk/znuFetT1gmpOcZGL9Rp2T+b9WJWd+daq5ktsL10sVCzIt2UvneJRz6b+aU+bfw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/invalid-dependency/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/is-array-buffer": { + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.55.0.tgz", + "integrity": "sha512-NbiPHVYuPxdqdFd6FxzzN3H1BQn/iWA3ri3Ry7AyLeP/tGs1yzEWMwf8BN8TSMALI0GXT6Sh0GDWy3Ok5xB6DA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.840.0.tgz", + "integrity": "sha512-+gkQNtPwcSMmlwBHFd4saVVS11In6ID1HczNzpM3MXKXRBfSlbZJbCt6wN//AZ8HMklZEik4tcEOG0qa9UY8SQ==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-arn-parser": "3.804.0", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "@smithy/util-config-provider": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-content-length": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.78.0.tgz", + "integrity": "sha512-5MpKt6lB9TdFy25/AGrpOjPY0iDHZAKpEHc+jSOJBXLl6xunXA7qHdiYaVqkWodLxy70nIckGNHqQ3drabidkA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-content-length/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-endpoint-discovery": { + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.840.0.tgz", + "integrity": "sha512-IJDShY5NOg9luTE8h4o2Bm+gsPnHIU0tVWCjMz8vZMLevYjKdIsatcXiu3huTOjKSnelzC9fBHfU6KKsHmjjBQ==", + "dev": true, + "dependencies": { + "@aws-sdk/endpoint-cache": "3.804.0", + "@aws-sdk/types": "3.840.0", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-eventstream": { + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-eventstream/-/middleware-eventstream-3.840.0.tgz", + "integrity": "sha512-4khgf7AjJ4llh3aiNmZ+x4PGl4vkKNxRHn0xTgi6Iw1J3SChsF2mnNaLXK8hoXeydx756rw+JhqOuZH91i5l4w==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.840.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-expect-continue": { + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.840.0.tgz", + "integrity": "sha512-iJg2r6FKsKKvdiU4oCOuCf7Ro/YE0Q2BT/QyEZN3/Rt8Nr4SAZiQOlcBXOCpGvuIKOEAhvDOUnW3aDHL01PdVw==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.840.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.858.0.tgz", + "integrity": "sha512-/GBerFXab3Mk5zkkTaOR1drR1IWMShiUbcEocCPig068/HnpjVSd9SP4+ro/ivG+zLOtxJdpjBcBKxCwQmefMA==", + "dev": true, + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-crypto/util": "5.2.0", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/is-array-buffer": "^4.0.0", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-stream": "^4.2.3", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.840.0.tgz", + "integrity": "sha512-ub+hXJAbAje94+Ya6c6eL7sYujoE8D4Bumu1NUI8TXjUhVVn0HzVWQjpRLshdLsUp1AW7XyeJaxyajRaJQ8+Xg==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.840.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-location-constraint": { + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.840.0.tgz", + "integrity": "sha512-KVLD0u0YMF3aQkVF8bdyHAGWSUY6N1Du89htTLgqCcIhSxxAJ9qifrosVZ9jkAzqRW99hcufyt2LylcVU2yoKQ==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.840.0", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.840.0.tgz", + "integrity": "sha512-lSV8FvjpdllpGaRspywss4CtXV8M7NNNH+2/j86vMH+YCOZ6fu2T/TyFd/tHwZ92vDfHctWkRbQxg0bagqwovA==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.840.0", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.840.0.tgz", + "integrity": "sha512-Gu7lGDyfddyhIkj1Z1JtrY5NHb5+x/CRiB87GjaSrKxkDaydtX2CU977JIABtt69l9wLbcGDIQ+W0uJ5xPof7g==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.840.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-retry": { + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.80.0.tgz", + "integrity": "sha512-CTk+tA4+WMUNOcUfR6UQrkhwvPYFpnMsQ1vuHlpLFOGG3nCqywA2hueLMRQmVcDXzP0sGeygce6dzRI9dJB/GA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/service-error-classification": "3.78.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-middleware": "3.78.0", + "tslib": "^2.3.1", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-retry/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-retry/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.858.0.tgz", + "integrity": "sha512-g1LBHK9iAAMnh4rRX4/cGBuICH5R9boHUw4X9FkMC+ROAH9z1A2uy6bE55sg5guheAmVTQ5sOsVZb8QPEQbIUA==", + "dev": true, + "dependencies": { + "@aws-sdk/core": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-arn-parser": "3.804.0", + "@smithy/core": "^3.7.2", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/protocol-http": "^5.1.2", + "@smithy/signature-v4": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/util-config-provider": "^4.0.0", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-stream": "^4.2.3", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-sqs": { + "version": "3.857.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.857.0.tgz", + "integrity": "sha512-m2CyA7Qhesqkx5esqkwYsb6M16Ny5HX/x38A1/qCdAxYAdkmD3mZoHaXHSb4L6kg/HCPkbxxZO8db1xm4P8t1w==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.840.0", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/util-hex-encoding": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-sts": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.78.0.tgz", + "integrity": "sha512-Lu/kN0J0/Kt0ON1hvwNel+y8yvf35licfIgtedHbBCa/ju8qQ9j+uL9Lla6Y5Tqu29yVaye1JxhiIDhscSwrLA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-signing": "3.78.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/signature-v4": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-sts/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-serde": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.78.0.tgz", + "integrity": "sha512-4DPsNOxsl1bxRzfo1WXEZjmD7OEi7qGNpxrDWucVe96Fqj2dH08jR8wxvBIVV1e6bAad07IwdPuCGmivNvwRuQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-serde/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-signing": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.78.0.tgz", + "integrity": "sha512-OEjJJCNhHHSOprLZ9CzjHIXEKFtPHWP/bG9pMhkV3/6Bmscsgcf8gWHcOnmIrjqX+hT1VALDNpl/RIh0J6/eQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/signature-v4": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-signing/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-ssec": { + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.840.0.tgz", + "integrity": "sha512-CBZP9t1QbjDFGOrtnUEHL1oAvmnCUUm7p0aPNbIdSzNtH42TNKjPRN3TuEIJDGjkrqpL3MXyDSmNayDcw/XW7Q==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.840.0", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-stack": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.78.0.tgz", + "integrity": "sha512-UoNfRh6eAJN3BJHlG1eb+KeuSe+zARTC2cglroJRyHc2j7GxH2i9FD3IJbj5wvzopJEnQzuY/VCs6STFkqWL1g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.858.0.tgz", + "integrity": "sha512-pC3FT/sRZ6n5NyXiTVu9dpf1D9j3YbJz3XmeOOwJqO/Mib2PZyIQktvNMPgwaC5KMVB1zWqS5bmCwxpMOnq0UQ==", + "dev": true, + "dependencies": { + "@aws-sdk/core": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-endpoints": "3.848.0", + "@smithy/core": "^3.7.2", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-websocket": { + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-websocket/-/middleware-websocket-3.844.0.tgz", + "integrity": "sha512-5ZtntUZ9ZMdUbQZ3kI5e5tpiZPN/O57h6fnGZ+GHB+wpSVSOQS78TBt0qYZW+CoZr8iyRsVkJheGETajFCMaUg==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-format-url": "3.840.0", + "@smithy/eventstream-codec": "^4.0.4", + "@smithy/eventstream-serde-browser": "^4.0.4", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/signature-v4": "^5.1.2", + "@smithy/types": "^4.3.1", + "@smithy/util-hex-encoding": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.858.0.tgz", + "integrity": "sha512-ChdIj80T2whoWbovmO7o8ICmhEB2S9q4Jes9MBnKAPm69PexcJAK2dQC8yI4/iUP8b3+BHZoUPrYLWjBxIProQ==", + "dev": true, + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/middleware-host-header": "3.840.0", + "@aws-sdk/middleware-logger": "3.840.0", + "@aws-sdk/middleware-recursion-detection": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.858.0", + "@aws-sdk/region-config-resolver": "3.840.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-endpoints": "3.848.0", + "@aws-sdk/util-user-agent-browser": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.858.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.2", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/hash-node": "^4.0.4", + "@smithy/invalid-dependency": "^4.0.4", + "@smithy/middleware-content-length": "^4.0.4", + "@smithy/middleware-endpoint": "^4.1.17", + "@smithy/middleware-retry": "^4.1.18", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/node-http-handler": "^4.1.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.25", + "@smithy/util-defaults-mode-node": "^4.0.25", + "@smithy/util-endpoints": "^3.0.6", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.6", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/node-config-provider": { + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.80.0.tgz", + "integrity": "sha512-vyTOMK04huB7n10ZUv0thd2TE6KlY8livOuLqFTMtj99AJ6vyeB5XBNwKnQtJIt/P7CijYgp8KcFvI9fndOmKg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/node-config-provider/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/node-http-handler": { + "version": "3.82.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.82.0.tgz", + "integrity": "sha512-yyq/DA/IMzL4fLJhV7zVfP7aUQWPHfOKTCJjWB3KeV5YPiviJtSKb/KyzNi+gQyO7SmsL/8vQbQrf3/s7N/2OA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/abort-controller": "3.78.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/querystring-builder": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/node-http-handler/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/property-provider": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.78.0.tgz", + "integrity": "sha512-PZpLvV0hF6lqg3CSN9YmphrB/t5LVJVWGJLB9d9qm7sJs5ksjTYBb5bY91OQ3zit0F4cqBMU8xt2GQ9J6d4DvQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/property-provider/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/protocol-http": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.78.0.tgz", + "integrity": "sha512-SQB26MhEK96yDxyXd3UAaxLz1Y/ZvgE4pzv7V3wZiokdEedM0kawHKEn1UQJlqJLEZcQI9QYyysh3rTvHZ3fyg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/protocol-http/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/querystring-builder": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.78.0.tgz", + "integrity": "sha512-aib6RW1WAaTQDqVgRU1Ku9idkhm90gJKbCxVaGId+as6QHNUqMChEfK2v+0afuKiPNOs5uWmqvOXI9+Gt+UGDg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-uri-escape": "3.55.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/querystring-builder/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/querystring-parser": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.78.0.tgz", + "integrity": "sha512-csaH8YTyN+KMNczeK6fBS8l7iJaqcQcKOIbpQFg5upX4Ly5A56HJn4sVQhY1LSgfSk4xRsNfMy5mu6BlsIiaXA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/querystring-parser/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.840.0.tgz", + "integrity": "sha512-Qjnxd/yDv9KpIMWr90ZDPtRj0v75AqGC92Lm9+oHXZ8p1MjG5JE2CW0HL8JRgK9iKzgKBL7pPQRXI8FkvEVfrA==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.840.0", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/types": "^4.3.1", + "@smithy/util-config-provider": "^4.0.0", + "@smithy/util-middleware": "^4.0.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/service-error-classification": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.78.0.tgz", + "integrity": "sha512-x7Lx8KWctJa01q4Q72Zb4ol9L/era3vy2daASu8l2paHHxsAPBE0PThkvLdUSLZSzlHSVdh3YHESIsT++VsK4w==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/shared-ini-file-loader": { + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.80.0.tgz", + "integrity": "sha512-3d5EBJjnWWkjLK9skqLLHYbagtFaZZy+3jUTlbTuOKhlOwe8jF7CUM3j6I4JA6yXNcB3w0exDKKHa8w+l+05aA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.78.0.tgz", + "integrity": "sha512-eePjRYuzKoi3VMr/lgrUEF1ytLeH4fA/NMCykr/uR6NMo4bSJA59KrFLYSM7SlWLRIyB0UvJqygVEvSxFluyDw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/is-array-buffer": "3.55.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-hex-encoding": "3.58.0", + "@aws-sdk/util-middleware": "3.78.0", + "@aws-sdk/util-uri-escape": "3.55.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.858.0.tgz", + "integrity": "sha512-WtQvCtIz8KzTqd/OhjziWb5nAFDEZ0pE1KJsWBZ0j6Ngvp17ORSY37U96buU0SlNNflloGT7ZIlDkdFh73YktA==", + "dev": true, + "dependencies": { + "@aws-sdk/middleware-sdk-s3": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/signature-v4": "^5.1.2", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/smithy-client": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.85.0.tgz", + "integrity": "sha512-Ox/yQEAnANzhpJMyrpuxWtF/i3EviavENczT7fo4uwSyZTz/sfSBQNjs/YAG1UeA6uOI3pBP5EaFERV5hr2fRA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-stack": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/smithy-client/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.858.0.tgz", + "integrity": "sha512-uQ3cVpqbkaxq3Hd8zip0pcOFsP731g+m0zsobQ7Bmqjq4/PHcehTov8i3W9+7sBHocOM61/qrQksPlW0TPuPAA==", + "dev": true, + "dependencies": { + "@aws-sdk/core": "3.858.0", + "@aws-sdk/nested-clients": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/property-provider": "^4.0.4", + "@smithy/shared-ini-file-loader": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.840.0.tgz", + "integrity": "sha512-xliuHaUFZxEx1NSXeLLZ9Dyu6+EJVQKEoD+yM+zqUo3YDZ7medKJWY6fIOKiPX/N7XbLdBYwajb15Q7IL8KkeA==", + "dev": true, + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/url-parser": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.78.0.tgz", + "integrity": "sha512-iQn2AjECUoJE0Ae9XtgHtGGKvUkvE8hhbktGopdj+zsPBe4WrBN2DgVxlKPPrBonG/YlcL1D7a5EXaujWSlUUw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/querystring-parser": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/url-parser/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-arn-parser": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.804.0.tgz", + "integrity": "sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-base64-browser": { + "version": "3.58.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-browser/-/util-base64-browser-3.58.0.tgz", + "integrity": "sha512-0ebsXIZNpu/fup9OgsFPnRKfCFbuuI9PPRzvP6twzLxUB0c/aix6Co7LGHFKcRKHZdaykoJMXArf8eHj2Nzv1Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-base64-node": { + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-node/-/util-base64-node-3.55.0.tgz", + "integrity": "sha512-UQ/ZuNoAc8CFMpSiRYmevaTsuRKzLwulZTnM8LNlIt9Wx1tpNvqp80cfvVj7yySKROtEi20wq29h31dZf1eYNQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/util-buffer-from": "3.55.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-body-length-browser": { + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.55.0.tgz", + "integrity": "sha512-Ei2OCzXQw5N6ZkTMZbamUzc1z+z1R1Ja5tMEagz5BxuX4vWdBObT+uGlSzL8yvTbjoPjnxWA2aXyEqaUP3JS8Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-body-length-node": { + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.55.0.tgz", + "integrity": "sha512-lU1d4I+9wJwydduXs0SxSfd+mHKjxeyd39VwOv6i2KSwWkPbji9UQqpflKLKw+r45jL7+xU/zfeTUg5Tt/3Gew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-buffer-from": { + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.55.0.tgz", + "integrity": "sha512-uVzKG1UgvnV7XX2FPTylBujYMKBPBaq/qFBxfl0LVNfrty7YjpfieQxAe6yRLD+T0Kir/WDQwGvYC+tOYG3IGA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/is-array-buffer": "3.55.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-config-provider": { + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.55.0.tgz", + "integrity": "sha512-30dzofQQfx6tp1jVZkZ0DGRsT0wwC15nEysKRiAcjncM64A0Cm6sra77d0os3vbKiKoPCI/lMsFr4o3533+qvQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-defaults-mode-browser": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.85.0.tgz", + "integrity": "sha512-oqK/e2pHuMWrvTJWtDBzylbj232ezlTay5dCq4RQlyi3LPPVBQ08haYD1Mk2ikQ/qa0XvbSD6YVhjpTlvwRNjw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@aws-sdk/util-defaults-mode-browser/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-defaults-mode-node": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.85.0.tgz", + "integrity": "sha512-KDNl4H8jJJLh6y7I3MSwRKe4plKbFKK8MVkS0+Fce/GJh4EnqxF0HzMMaSeNUcPvO2wHRq2a60+XW+0d7eWo1A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/config-resolver": "3.80.0", + "@aws-sdk/credential-provider-imds": "3.81.0", + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@aws-sdk/util-defaults-mode-node/node_modules/@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.848.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.848.0.tgz", + "integrity": "sha512-fY/NuFFCq/78liHvRyFKr+aqq1aA/uuVSANjzr5Ym8c+9Z3HRPE9OrExAHoMrZ6zC8tHerQwlsXYYH5XZ7H+ww==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.840.0", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", + "@smithy/util-endpoints": "^3.0.6", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-format-url": { + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.840.0.tgz", + "integrity": "sha512-VB1PWyI1TQPiPvg4w7tgUGGQER1xxXPNUqfh3baxUSFi1Oh8wHrDnFywkxLm3NMmgDmnLnSZ5Q326qAoyqKLSg==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.840.0", + "@smithy/querystring-builder": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-hex-encoding": { + "version": "3.58.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.58.0.tgz", + "integrity": "sha512-Rl+jXUzk/FJkOLYfUVYPhKa2aUmTpeobRP31l8IatQltSzDgLyRHO35f6UEs7Ztn5s1jbu/POatLAZ2WjbgVyg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.804.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.804.0.tgz", + "integrity": "sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/util-middleware": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.78.0.tgz", + "integrity": "sha512-Hi3wv2b0VogO4mzyeEaeU5KgIt4qeo0LXU5gS6oRrG0T7s2FyKbMBkJW3YDh/Y8fNwqArZ+/QQFujpP0PIKwkA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-uri-escape": { + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.55.0.tgz", + "integrity": "sha512-mmdDLUpFCN2nkfwlLdOM54lTD528GiGSPN1qb8XtGLgZsJUmg3uJSFIN2lPeSbEwJB3NFjVas/rnQC48i7mV8w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.840.0.tgz", + "integrity": "sha512-JdyZM3EhhL4PqwFpttZu1afDpPJCCc3eyZOLi+srpX11LsGj6sThf47TYQN75HT1CarZ7cCdQHGzP2uy3/xHfQ==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.840.0", + "@smithy/types": "^4.3.1", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.858.0.tgz", + "integrity": "sha512-T1m05QlN8hFpx5/5duMjS8uFSK5e6EXP45HQRkZULVkL3DK+jMaxsnh3KLl5LjUoHn/19M4HM0wNUBhYp4Y2Yw==", + "dev": true, + "dependencies": { + "@aws-sdk/middleware-user-agent": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/util-utf8-browser": { + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.55.0.tgz", + "integrity": "sha512-ljzqJcyjfJpEVSIAxwtIS8xMRUly84BdjlBXyp6cu4G8TUufgjNS31LWdhyGhgmW5vYBNr+LTz0Kwf6J+ou7Ug==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-utf8-node": { + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.55.0.tgz", + "integrity": "sha512-FsFm7GFaC7j0tlPEm/ri8bU2QCwFW5WKjxUg8lm1oWaxplCpKGUsmcfPJ4sw58GIoyoGu4QXBK60oCWosZYYdQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/util-buffer-from": "3.55.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/@aws-sdk/xml-builder": { + "version": "3.821.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.821.0.tgz", + "integrity": "sha512-DIIotRnefVL6DiaHtO6/21DhJ4JZnnIwdNbpwiAhdt/AVbttcE4yw925gsjur0OGv5BTYXQXU3YnANBYnZjuQA==", + "dev": true, + "dependencies": { + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure-rest/core-client": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@azure-rest/core-client/-/core-client-2.5.0.tgz", + "integrity": "sha512-KMVIPxG6ygcQ1M2hKHahF7eddKejYsWTjoLIfTWiqnaj42dBkYzj4+S8rK9xxmlOaEHKZHcMrRbm0NfN4kgwHw==", + "dev": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.9.0", + "@azure/core-rest-pipeline": "^1.5.0", + "@azure/core-tracing": "^1.0.1", + "@typespec/ts-http-runtime": "^0.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure-rest/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/abort-controller": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", + "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", + "dev": true, + "dependencies": { + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@azure/core-auth": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.0.tgz", + "integrity": "sha512-88Djs5vBvGbHQHf5ZZcaoNHo6Y8BKZkt3cw2iuJIQzLEgH4Ox6Tm4hjFhbqOxyYsgIG/eJbFEHpxRIfEEWv5Ow==", + "dev": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.11.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.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": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.0.tgz", + "integrity": "sha512-O4aP3CLFNodg8eTHXECaH3B3CjicfzkxVtnrfLkOq0XNP7TIECGfHpK/C6vADZkWP75wzmdBnsIA8ksuJMk18g==", "dev": true, "dependencies": { "@azure/abort-controller": "^2.0.0", @@ -1793,7 +3590,7 @@ "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@azure/core-client/node_modules/@azure/abort-controller": { @@ -1874,9 +3671,9 @@ } }, "node_modules/@azure/core-rest-pipeline": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.20.0.tgz", - "integrity": "sha512-ASoP8uqZBS3H/8N8at/XwFr6vYrRP3syTK0EUjDXQy0Y1/AUS+QeIRThKmTNJO2RggvBBxaXDPM7YoIwDGeA0g==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.22.0.tgz", + "integrity": "sha512-OKHmb3/Kpm06HypvB3g6Q3zJuvyXcpxDpCS1PnU8OV6AJgSFaee/covXBcPbWc6XDDxtEPlbi3EMQ6nUiPaQtw==", "dev": true, "dependencies": { "@azure/abort-controller": "^2.0.0", @@ -1884,11 +3681,11 @@ "@azure/core-tracing": "^1.0.1", "@azure/core-util": "^1.11.0", "@azure/logger": "^1.0.0", - "@typespec/ts-http-runtime": "^0.2.2", + "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@azure/core-rest-pipeline/node_modules/@azure/abort-controller": { @@ -1904,29 +3701,29 @@ } }, "node_modules/@azure/core-tracing": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.2.0.tgz", - "integrity": "sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.0.tgz", + "integrity": "sha512-+XvmZLLWPe67WXNZo9Oc9CrPj/Tm8QnHR92fFAFdnbzwNdCH1h+7UdpaQgRSBsMY+oW1kHXNUZQLdZ1gHX3ROw==", "dev": true, "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@azure/core-util": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.12.0.tgz", - "integrity": "sha512-13IyjTQgABPARvG90+N2dXpC+hwp466XCdQXPCRlbWHgd3SJd5Q1VvaBGv6k1BIa4MQm6hAF1UBU1m8QUxV8sQ==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.0.tgz", + "integrity": "sha512-o0psW8QWQ58fq3i24Q1K2XfS/jYTxr7O1HRcyUE9bV9NttLU+kYOH82Ixj8DGlMTOWgxm1Sss2QAfKK5UkSPxw==", "dev": true, "dependencies": { "@azure/abort-controller": "^2.0.0", - "@typespec/ts-http-runtime": "^0.2.2", + "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@azure/core-util/node_modules/@azure/abort-controller": { @@ -1998,23 +3795,23 @@ } }, "node_modules/@azure/keyvault-keys": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@azure/keyvault-keys/-/keyvault-keys-4.9.0.tgz", - "integrity": "sha512-ZBP07+K4Pj3kS4TF4XdkqFcspWwBHry3vJSOFM5k5ZABvf7JfiMonvaFk2nBF6xjlEbMpz5PE1g45iTMme0raQ==", - "dev": true, - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-client": "^1.5.0", - "@azure/core-http-compat": "^2.0.1", - "@azure/core-lro": "^2.2.0", - "@azure/core-paging": "^1.1.1", - "@azure/core-rest-pipeline": "^1.8.1", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.0.0", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@azure/keyvault-keys/-/keyvault-keys-4.10.0.tgz", + "integrity": "sha512-eDT7iXoBTRZ2n3fLiftuGJFD+yjkiB1GNqzU2KbY1TLYeXeSPVTVgn2eJ5vmRTZ11978jy2Kg2wI7xa9Tyr8ag==", + "dev": true, + "dependencies": { + "@azure-rest/core-client": "^2.3.3", + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.9.0", + "@azure/core-http-compat": "^2.2.0", + "@azure/core-lro": "^2.7.2", + "@azure/core-paging": "^1.6.2", + "@azure/core-rest-pipeline": "^1.19.0", + "@azure/core-tracing": "^1.2.0", + "@azure/core-util": "^1.11.0", "@azure/keyvault-common": "^2.0.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" + "@azure/logger": "^1.1.4", + "tslib": "^2.8.1" }, "engines": { "node": ">=18.0.0" @@ -2033,16 +3830,16 @@ } }, "node_modules/@azure/logger": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.2.0.tgz", - "integrity": "sha512-0hKEzLhpw+ZTAfNJyRrn6s+V0nDWzXk9OjBr2TiGIu0OfMr5s2V4FpKLTAK3Ca5r5OKLbf4hkOGDPyiRjie/jA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz", + "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==", "dev": true, "dependencies": { - "@typespec/ts-http-runtime": "^0.2.2", + "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@azure/msal-browser": { @@ -2104,9 +3901,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.2.tgz", - "integrity": "sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", + "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", "dev": true, "engines": { "node": ">=6.9.0" @@ -2152,15 +3949,15 @@ } }, "node_modules/@babel/generator": { - "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==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", + "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", "dev": true, "dependencies": { - "@babel/parser": "^7.27.1", - "@babel/types": "^7.27.1", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", + "@babel/parser": "^7.28.0", + "@babel/types": "^7.28.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" }, "engines": { @@ -2168,12 +3965,12 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "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==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", "dev": true, "dependencies": { - "@babel/types": "^7.27.1" + "@babel/types": "^7.27.3" }, "engines": { "node": ">=6.9.0" @@ -2261,21 +4058,30 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "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==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", + "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "debug": "^4.4.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "resolve": "^1.22.10" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-member-expression-to-functions": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", @@ -2303,14 +4109,14 @@ } }, "node_modules/@babel/helper-module-transforms": { - "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==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.27.3" }, "engines": { "node": ">=6.9.0" @@ -2429,25 +4235,25 @@ } }, "node_modules/@babel/helpers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz", - "integrity": "sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==", + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.2.tgz", + "integrity": "sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==", "dev": true, "dependencies": { - "@babel/template": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.2.tgz", - "integrity": "sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", + "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", "dev": true, "dependencies": { - "@babel/types": "^7.27.1" + "@babel/types": "^7.28.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -2783,14 +4589,14 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "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==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", + "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-remap-async-to-generator": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -2832,9 +4638,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "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==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.0.tgz", + "integrity": "sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -2879,17 +4685,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "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==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.0.tgz", + "integrity": "sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-globals": "^7.28.0", "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-replace-supers": "^7.27.1", - "@babel/traverse": "^7.27.1", - "globals": "^11.1.0" + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -2915,12 +4721,13 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "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==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz", + "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -3226,15 +5033,16 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.2.tgz", - "integrity": "sha512-AIUHD7xJ1mCrj3uPozvtngY3s0xpv7Nu7DoUSnzNY6Xam1Cy4rUznR//pvMHOhQ4AvbCexhbqXCtpxGHOGOO6g==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.0.tgz", + "integrity": "sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.27.1", - "@babel/plugin-transform-parameters": "^7.27.1" + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -3291,9 +5099,9 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "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==", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3354,9 +5162,9 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "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==", + "version": "7.28.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.1.tgz", + "integrity": "sha512-P0QiV/taaa3kXpLY+sXla5zec4E+4t4Aqc9ggHlfZ7a2cp8/x/Gv08jfwEtn9gnnYIMvHx6aoOZ8XJL8eU71Dg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -3655,27 +5463,27 @@ } }, "node_modules/@babel/traverse": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.1.tgz", - "integrity": "sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", + "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", "dev": true, "dependencies": { "@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/generator": "^7.28.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.0", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz", - "integrity": "sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==", + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", + "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.27.1", @@ -3723,21 +5531,22 @@ "dev": true }, "node_modules/@cucumber/cucumber": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/@cucumber/cucumber/-/cucumber-11.3.0.tgz", - "integrity": "sha512-1YGsoAzRfDyVOnRMTSZP/EcFsOBElOKa2r+5nin0DJAeK+Mp0mzjcmSllMgApGtck7Ji87wwy3kFONfHUHMn4g==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@cucumber/cucumber/-/cucumber-12.1.0.tgz", + "integrity": "sha512-F72uKHUtHFFn4OAw6r6MoS+PWSMomQoIpW4+W/dcwNYY9oAKVAGyGJkEPIDXX00YtZY+EH3RUcNPlkD+f+dI0Q==", "dev": true, + "license": "MIT", "dependencies": { "@cucumber/ci-environment": "10.0.1", "@cucumber/cucumber-expressions": "18.0.1", - "@cucumber/gherkin": "30.0.4", + "@cucumber/gherkin": "32.2.0", "@cucumber/gherkin-streams": "5.0.1", "@cucumber/gherkin-utils": "9.2.0", - "@cucumber/html-formatter": "21.10.1", + "@cucumber/html-formatter": "21.13.0", "@cucumber/junit-xml-formatter": "0.7.1", "@cucumber/message-streams": "4.0.1", "@cucumber/messages": "27.2.0", - "@cucumber/tag-expressions": "6.1.2", + "@cucumber/tag-expressions": "6.2.0", "assertion-error-formatter": "^3.0.0", "capital-case": "^1.0.4", "chalk": "^4.1.2", @@ -3746,7 +5555,7 @@ "debug": "^4.3.4", "error-stack-parser": "^2.1.4", "figures": "^3.2.0", - "glob": "^10.3.10", + "glob": "^11.0.0", "has-ansi": "^4.0.1", "indent-string": "^4.0.0", "is-installed-globally": "^0.4.0", @@ -3760,7 +5569,7 @@ "mz": "^2.7.0", "progress": "^2.0.3", "read-package-up": "^11.0.0", - "semver": "7.7.1", + "semver": "7.7.2", "string-argv": "0.3.1", "supports-color": "^8.1.1", "type-fest": "^4.41.0", @@ -3772,7 +5581,7 @@ "cucumber-js": "bin/cucumber.js" }, "engines": { - "node": "18 || 20 || 22 || >=23" + "node": "20 || 22 || >=24" }, "funding": { "url": "https://opencollective.com/cucumber" @@ -3787,104 +5596,97 @@ "regexp-match-indices": "1.0.2" } }, - "node_modules/@cucumber/cucumber/node_modules/@cucumber/messages": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-27.2.0.tgz", - "integrity": "sha512-f2o/HqKHgsqzFLdq6fAhfG1FNOQPdBdyMGpKwhb7hZqg0yZtx9BVqkTyuoNk83Fcvk3wjMVfouFXXHNEk4nddA==", + "node_modules/@cucumber/cucumber/node_modules/glob": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", + "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==", "dev": true, + "license": "ISC", "dependencies": { - "@types/uuid": "10.0.0", - "class-transformer": "0.5.1", - "reflect-metadata": "0.2.2", - "uuid": "11.0.5" - } - }, - "node_modules/@cucumber/cucumber/node_modules/@types/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", - "dev": true - }, - "node_modules/@cucumber/cucumber/node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "dev": true, + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.0.3", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, "bin": { - "mime": "cli.js" + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=10.0.0" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@cucumber/cucumber/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "node_modules/@cucumber/cucumber/node_modules/jackspeak": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", + "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": ">=10" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@cucumber/cucumber/node_modules/string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "node_modules/@cucumber/cucumber/node_modules/lru-cache": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", + "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", "dev": true, + "license": "ISC", "engines": { - "node": ">=0.6.19" + "node": "20 || >=22" } }, - "node_modules/@cucumber/cucumber/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/@cucumber/cucumber/node_modules/minimatch": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", + "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", "dev": true, + "license": "ISC", "dependencies": { - "has-flag": "^4.0.0" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { - "node": ">=10" + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@cucumber/cucumber/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "node_modules/@cucumber/cucumber/node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, "engines": { - "node": ">=16" + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@cucumber/cucumber/node_modules/uuid": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.5.tgz", - "integrity": "sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/esm/bin/uuid" + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@cucumber/gherkin": { - "version": "30.0.4", - "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-30.0.4.tgz", - "integrity": "sha512-pb7lmAJqweZRADTTsgnC3F5zbTh3nwOB1M83Q9ZPbUKMb3P76PzK6cTcPTJBHWy3l7isbigIv+BkDjaca6C8/g==", + "version": "32.2.0", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-32.2.0.tgz", + "integrity": "sha512-X8xuVhSIqlUjxSRifRJ7t0TycVWyX58fygJH3wDNmHINLg9sYEkvQT0SO2G5YlRZnYc11TIFr4YPenscvdlBIw==", "dev": true, + "license": "MIT", "dependencies": { - "@cucumber/messages": ">=19.1.4 <=26" + "@cucumber/messages": ">=19.1.4 <28" } }, "node_modules/@cucumber/gherkin-streams": { @@ -3964,18 +5766,6 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/@cucumber/gherkin-utils/node_modules/@cucumber/messages": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-27.2.0.tgz", - "integrity": "sha512-f2o/HqKHgsqzFLdq6fAhfG1FNOQPdBdyMGpKwhb7hZqg0yZtx9BVqkTyuoNk83Fcvk3wjMVfouFXXHNEk4nddA==", - "dev": true, - "dependencies": { - "@types/uuid": "10.0.0", - "class-transformer": "0.5.1", - "reflect-metadata": "0.2.2", - "uuid": "11.0.5" - } - }, "node_modules/@cucumber/gherkin-utils/node_modules/@types/uuid": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", @@ -3991,24 +5781,12 @@ "node": ">=18" } }, - "node_modules/@cucumber/gherkin-utils/node_modules/uuid": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.5.tgz", - "integrity": "sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/esm/bin/uuid" - } - }, "node_modules/@cucumber/html-formatter": { - "version": "21.10.1", - "resolved": "https://registry.npmjs.org/@cucumber/html-formatter/-/html-formatter-21.10.1.tgz", - "integrity": "sha512-isaaNMNnBYThsvaHy7i+9kkk9V3+rhgdkt0pd6TCY6zY1CSRZQ7tG6ST9pYyRaECyfbCeF7UGH0KpNEnh6UNvQ==", + "version": "21.13.0", + "resolved": "https://registry.npmjs.org/@cucumber/html-formatter/-/html-formatter-21.13.0.tgz", + "integrity": "sha512-/zkBZNGZca7AeY4hSMMu3PBqZBZtZ45qhynZC++LAstlyhXQrzl6zmjVLZMX7jIbdF1Lb+TjN4PWiGtS5VOM6g==", "dev": true, + "license": "MIT", "peerDependencies": { "@cucumber/messages": ">=18" } @@ -4038,49 +5816,58 @@ } }, "node_modules/@cucumber/messages": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-22.0.0.tgz", - "integrity": "sha512-EuaUtYte9ilkxcKmfqGF9pJsHRUU0jwie5ukuZ/1NPTuHS1LxHPsGEODK17RPRbZHOFhqybNzG2rHAwThxEymg==", + "version": "27.2.0", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-27.2.0.tgz", + "integrity": "sha512-f2o/HqKHgsqzFLdq6fAhfG1FNOQPdBdyMGpKwhb7hZqg0yZtx9BVqkTyuoNk83Fcvk3wjMVfouFXXHNEk4nddA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/uuid": "9.0.1", + "@types/uuid": "10.0.0", "class-transformer": "0.5.1", - "reflect-metadata": "0.1.13", - "uuid": "9.0.0" + "reflect-metadata": "0.2.2", + "uuid": "11.0.5" } }, - "node_modules/@cucumber/messages/node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true + "node_modules/@cucumber/messages/node_modules/@types/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", + "dev": true, + "license": "MIT" }, "node_modules/@cucumber/messages/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.5.tgz", + "integrity": "sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==", "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", "bin": { - "uuid": "dist/bin/uuid" + "uuid": "dist/esm/bin/uuid" } }, "node_modules/@cucumber/query": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/@cucumber/query/-/query-13.2.0.tgz", - "integrity": "sha512-S3g4u+2u/vo444bR1xL0+oVZmF8zb9QZ3MoiNF4GjBt6gG7Kf4S3NyJKjGUAQfESTb8oumOR1YMKHbv79FzA5w==", + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/@cucumber/query/-/query-13.5.0.tgz", + "integrity": "sha512-8L/7qMRixZZJl0S+ao4sq7IobLD1gAdr2H0KDVg81r4M063ZeWDNBSXAr2BXSAYL5I7cpNxpfbfU2VgXPaqapA==", "dev": true, "dependencies": { - "@teppeis/multimaps": "3.0.0" + "@teppeis/multimaps": "3.0.0", + "lodash.sortby": "^4.7.0" }, "peerDependencies": { "@cucumber/messages": "*" } }, "node_modules/@cucumber/tag-expressions": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@cucumber/tag-expressions/-/tag-expressions-6.1.2.tgz", - "integrity": "sha512-xa3pER+ntZhGCxRXSguDTKEHTZpUUsp+RzTRNnit+vi5cqnk6abLdSLg5i3HZXU3c74nQ8afQC6IT507EN74oQ==", - "dev": true + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@cucumber/tag-expressions/-/tag-expressions-6.2.0.tgz", + "integrity": "sha512-KIF0eLcafHbWOuSDWFw0lMmgJOLdDRWjEL1kfXEWrqHmx2119HxVAr35WuEd9z542d3Yyg+XNqSr+81rIKqEdg==", + "dev": true, + "license": "MIT" }, "node_modules/@dabh/diagnostics": { "version": "2.0.3", @@ -4103,37 +5890,37 @@ } }, "node_modules/@emnapi/core": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.3.tgz", - "integrity": "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.5.tgz", + "integrity": "sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==", "dev": true, "dependencies": { - "@emnapi/wasi-threads": "1.0.2", + "@emnapi/wasi-threads": "1.0.4", "tslib": "^2.4.0" } }, "node_modules/@emnapi/runtime": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz", - "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.5.tgz", + "integrity": "sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==", "dev": true, "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@emnapi/wasi-threads": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz", - "integrity": "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.4.tgz", + "integrity": "sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==", "dev": true, "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz", - "integrity": "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz", + "integrity": "sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==", "cpu": [ "ppc64" ], @@ -4147,9 +5934,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.4.tgz", - "integrity": "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.8.tgz", + "integrity": "sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==", "cpu": [ "arm" ], @@ -4163,9 +5950,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz", - "integrity": "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz", + "integrity": "sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==", "cpu": [ "arm64" ], @@ -4179,9 +5966,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.4.tgz", - "integrity": "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.8.tgz", + "integrity": "sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==", "cpu": [ "x64" ], @@ -4195,9 +5982,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.4.tgz", - "integrity": "sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz", + "integrity": "sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==", "cpu": [ "arm64" ], @@ -4211,9 +5998,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz", - "integrity": "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz", + "integrity": "sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==", "cpu": [ "x64" ], @@ -4227,9 +6014,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz", - "integrity": "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz", + "integrity": "sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==", "cpu": [ "arm64" ], @@ -4243,9 +6030,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz", - "integrity": "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz", + "integrity": "sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==", "cpu": [ "x64" ], @@ -4259,9 +6046,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz", - "integrity": "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz", + "integrity": "sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==", "cpu": [ "arm" ], @@ -4275,9 +6062,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz", - "integrity": "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz", + "integrity": "sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==", "cpu": [ "arm64" ], @@ -4291,9 +6078,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz", - "integrity": "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz", + "integrity": "sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==", "cpu": [ "ia32" ], @@ -4307,9 +6094,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz", - "integrity": "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz", + "integrity": "sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==", "cpu": [ "loong64" ], @@ -4323,9 +6110,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz", - "integrity": "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz", + "integrity": "sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==", "cpu": [ "mips64el" ], @@ -4339,9 +6126,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz", - "integrity": "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz", + "integrity": "sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==", "cpu": [ "ppc64" ], @@ -4355,9 +6142,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz", - "integrity": "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz", + "integrity": "sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==", "cpu": [ "riscv64" ], @@ -4371,9 +6158,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz", - "integrity": "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz", + "integrity": "sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==", "cpu": [ "s390x" ], @@ -4387,9 +6174,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz", - "integrity": "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz", + "integrity": "sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==", "cpu": [ "x64" ], @@ -4403,9 +6190,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz", - "integrity": "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz", + "integrity": "sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==", "cpu": [ "arm64" ], @@ -4419,9 +6206,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz", - "integrity": "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz", + "integrity": "sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==", "cpu": [ "x64" ], @@ -4435,9 +6222,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz", - "integrity": "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz", + "integrity": "sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==", "cpu": [ "arm64" ], @@ -4451,9 +6238,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz", - "integrity": "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz", + "integrity": "sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==", "cpu": [ "x64" ], @@ -4466,10 +6253,26 @@ "node": ">=18" } }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz", + "integrity": "sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz", - "integrity": "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz", + "integrity": "sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==", "cpu": [ "x64" ], @@ -4483,9 +6286,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz", - "integrity": "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz", + "integrity": "sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==", "cpu": [ "arm64" ], @@ -4499,9 +6302,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz", - "integrity": "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz", + "integrity": "sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==", "cpu": [ "ia32" ], @@ -4515,9 +6318,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz", - "integrity": "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz", + "integrity": "sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==", "cpu": [ "x64" ], @@ -4535,6 +6338,7 @@ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.4.3" }, @@ -4562,6 +6366,7 @@ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -4584,38 +6389,26 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/@eslint/eslintrc/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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@eslint/eslintrc/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -4628,6 +6421,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -4635,18 +6429,6 @@ "node": "*" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@fastify/ajv-compiler": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.6.0.tgz", @@ -4981,6 +6763,15 @@ "node": ">= 0.8.0" } }, + "node_modules/@fastify/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/@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", @@ -5358,6 +7149,7 @@ "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", "deprecated": "Use @eslint/config-array instead", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", @@ -5368,10 +7160,11 @@ } }, "node_modules/@humanwhocodes/config-array/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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -5382,6 +7175,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -5394,7 +7188,8 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "deprecated": "Use @eslint/object-schema instead", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@hutson/parse-repository-url": { "version": "3.0.2", @@ -5406,11 +7201,34 @@ } }, "node_modules/@ioredis/commands": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", - "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.3.0.tgz", + "integrity": "sha512-M/T6Zewn7sDaBQEqIZ8Rb+i9y8qfGmq+5SDFSf9sA2lUZTmdDLVdOiQaeDp+Q4wElZ9HG1GAX5KhDaidp6LQsQ==", "dev": true }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -5560,17 +7378,13 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { @@ -5582,19 +7396,10 @@ "node": ">=6.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.10.tgz", + "integrity": "sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==", "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -5602,15 +7407,15 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", + "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -5653,18 +7458,28 @@ "dev": true }, "node_modules/@koa/router": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/@koa/router/-/router-13.1.1.tgz", - "integrity": "sha512-JQEuMANYRVHs7lm7KY9PCIjkgJk73h4m4J+g2mkw2Vo1ugPZ17UJVqEH8F+HeAdjKz5do1OaLe7ArDz+z308gw==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@koa/router/-/router-14.0.0.tgz", + "integrity": "sha512-LBSu5K0qAaaQcXX/0WIB9PGDevyCxxpnc1uq13vV/CgObaVxuis5hKl3Eboq/8gcb6ebnkAStW9NB/Em2eYyFA==", "dev": true, "dependencies": { "debug": "^4.4.1", "http-errors": "^2.0.0", "koa-compose": "^4.1.0", - "path-to-regexp": "^6.3.0" + "path-to-regexp": "^8.2.0" }, "engines": { - "node": ">= 18" + "node": ">= 20" + } + }, + "node_modules/@koa/router/node_modules/path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/@lerna/create": { @@ -5752,15 +7567,13 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" + "dev": true }, "node_modules/@lerna/create/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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -5782,12 +7595,46 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/@lerna/create/node_modules/execa": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "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/@lerna/create/node_modules/get-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@lerna/create/node_modules/glob": { "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", "minimatch": "^8.0.2", @@ -5802,11 +7649,10 @@ } }, "node_modules/@lerna/create/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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -5816,7 +7662,6 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -5831,15 +7676,22 @@ "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/@lerna/create/node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true, - "license": "ISC" + "engines": { + "node": ">=8" + } }, "node_modules/@lerna/create/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -5867,7 +7719,6 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -5880,7 +7731,6 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=8" } @@ -5890,7 +7740,6 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, - "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -5911,7 +7760,6 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", "integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^9.2.0" }, @@ -5929,15 +7777,25 @@ "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/@lerna/create/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, - "license": "ISC" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, "node_modules/@lerna/create/node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@lerna/create/node_modules/uuid": { "version": "10.0.0", @@ -5956,8 +7814,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true, - "license": "BSD-2-Clause" + "dev": true }, "node_modules/@lerna/create/node_modules/whatwg-url": { "version": "5.0.0", @@ -5969,221 +7826,6 @@ "webidl-conversions": "^3.0.0" } }, - "node_modules/@lerna/create/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/@lerna/legacy-package-management/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==", - "extraneous": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@lerna/legacy-package-management/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "extraneous": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@lerna/legacy-package-management/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "extraneous": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "minimatch": "^8.0.2", - "minipass": "^4.2.4", - "path-scurry": "^1.6.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@lerna/legacy-package-management/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==", - "extraneous": true - }, - "node_modules/@lerna/legacy-package-management/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "extraneous": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@lerna/legacy-package-management/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==", - "extraneous": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@lerna/legacy-package-management/node_modules/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", - "extraneous": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@lerna/legacy-package-management/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "extraneous": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@lerna/legacy-package-management/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "extraneous": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@lerna/legacy-package-management/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "extraneous": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@lerna/legacy-package-management/node_modules/pretty-format": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.3.tgz", - "integrity": "sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==", - "extraneous": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@lerna/legacy-package-management/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "extraneous": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "rimraf": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@lerna/legacy-package-management/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==", - "extraneous": true - }, - "node_modules/@lerna/legacy-package-management/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "extraneous": true - }, - "node_modules/@lerna/legacy-package-management/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "extraneous": true - }, - "node_modules/@lerna/legacy-package-management/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "extraneous": true - }, - "node_modules/@lerna/legacy-package-management/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "extraneous": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@lukeed/csprng": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", @@ -6200,14 +7842,32 @@ "dev": true }, "node_modules/@mongodb-js/saslprep": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.2.2.tgz", - "integrity": "sha512-EB0O3SCSNRUFk66iRCpI+cXzIjdswfCs7F6nOC3RAGJ7xr5YhaicvsRwJ9eyzYvYRlCSDUO/c7g4yNulxKC1WA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.3.0.tgz", + "integrity": "sha512-zlayKCsIjYb7/IdfqxorK5+xUMyi4vOKcFy10wKJYc63NSdKI8mNME+uJqfatkPmOSMMUiojrL58IePKBm3gvQ==", "dev": true, "dependencies": { "sparse-bitfield": "^3.0.3" } }, + "node_modules/@mswjs/interceptors": { + "version": "0.38.7", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.38.7.tgz", + "integrity": "sha512-Jkb27iSn7JPdkqlTqKfhncFfnEZsIJVYxsFbUSWEkxdIPdsyngrhoDBk0/BGD2FQcRH99vlRrkHpNTyKqI+0/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "strict-event-emitter": "^0.5.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@napi-rs/wasm-runtime": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", @@ -6518,6 +8178,15 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "node_modules/@nestjs/platform-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/@nestjs/platform-express/node_modules/type-is": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", @@ -6603,6 +8272,15 @@ "node": "^16.14.0 || >=18.0.0" } }, + "node_modules/@npmcli/agent/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, "node_modules/@npmcli/agent/node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", @@ -6616,6 +8294,19 @@ "node": ">= 14" } }, + "node_modules/@npmcli/agent/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/@npmcli/agent/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", @@ -6809,6 +8500,91 @@ "node": "^16.14.0 || >=18.0.0" } }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@npmcli/move-file/node_modules/glob": { + "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": { + "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/@npmcli/move-file/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file/node_modules/rimraf": { + "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": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@npmcli/name-from-folder": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", @@ -6993,15 +8769,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@nx/devkit/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/@nx/nx-darwin-arm64": { "version": "20.8.2", "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-20.8.2.tgz", @@ -7172,9 +8939,9 @@ } }, "node_modules/@octokit/core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.1.tgz", - "integrity": "sha512-dKYCMuPO1bmrpuogcjQ8z7ICCH3FP6WmxpwC03yjzGfZhj9fTJg6+bS1+UAplekbN2C+M61UNllGOOoAfGCrdQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.2.tgz", + "integrity": "sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==", "dev": true, "dependencies": { "@octokit/auth-token": "^4.0.0", @@ -7323,6 +9090,31 @@ "@octokit/openapi-types": "^24.2.0" } }, + "node_modules/@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" + } + }, + "node_modules/@open-draft/until": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", + "dev": true, + "license": "MIT" + }, "node_modules/@opentelemetry/api": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", @@ -7332,9 +9124,9 @@ } }, "node_modules/@opentelemetry/api-logs": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.203.0.tgz", - "integrity": "sha512-9B9RU0H7Ya1Dx/Rkyc4stuBZSGVQF27WigitInx2QQoj6KUpEFYPKoWjdFTunJYxmXmh17HeBvbMa1EhGyPmqQ==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.204.0.tgz", + "integrity": "sha512-DqxY8yoAaiBPivoJD4UtgrMS8gEmzZ5lnaxzPojzLVHBGqPxgWm4zcuvcUHZiqQ6kRX2Klel2r9y8cA2HAtqpw==", "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.3.0" @@ -7364,9 +9156,10 @@ "link": true }, "node_modules/@opentelemetry/context-async-hooks": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.0.1.tgz", - "integrity": "sha512-XuY23lSI3d4PEqKA+7SLtAgwqIfc6E/E9eAQWLN1vlpC53ybO3o6jW4BsXo1xvz9lYyyWItfQDDLzezER01mCw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.1.0.tgz", + "integrity": "sha512-zOyetmZppnwTyPrt4S7jMfXiSX9yyfF0hxlA8B5oo2TtKl+/RGCy7fi4DrBfIf3lCPrkKsRBWZZD7RFojK7FDg==", + "license": "Apache-2.0", "engines": { "node": "^18.19.0 || >=20.6.0" }, @@ -7375,10 +9168,11 @@ } }, "node_modules/@opentelemetry/context-zone-peer-dep": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-2.0.1.tgz", - "integrity": "sha512-jgN4jGULoJo46HiJx60E8XR8tJEpuY9stQ7KJ936AfEB1vf6YCbgR/a5bC95frLAnbSbYbaP5ti2jCFxormK4A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-2.1.0.tgz", + "integrity": "sha512-qB1b3p3T6A7Tu1HV//up3/q0mPWkOix12fHA4nvvzBmh82GVt+GgrbMvW4r609F8t3arn6HvCn9pmz6sBJ2Mbg==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.19.0 || >=20.6.0" }, @@ -7392,9 +9186,10 @@ "link": true }, "node_modules/@opentelemetry/core": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.1.tgz", - "integrity": "sha512-MaZk9SJIDgo1peKevlbhP6+IwIiNPNmswNL4AF0WaQJLbHXjr9SrZMgS12+iqr9ToV4ZVosCcc0f8Rg67LXjxw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, @@ -7406,12 +9201,13 @@ } }, "node_modules/@opentelemetry/exporter-jaeger": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-2.0.1.tgz", - "integrity": "sha512-FeHtOp2XMhYxzYhC8sXhsc3gMeoDzjI+CGuPX+vRSyUdHZHDKTMoY9jRfk8ObmZsZDTWmd63Yqcf4X472YtHeA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-2.1.0.tgz", + "integrity": "sha512-qtUMsp8061pQn6ZN9dngH6okiiF0NlHYBLWprzLeeCmNN7i5UHM+V8GmxvUH4L/zXlNBsySq7p3fZHIIbmK9xg==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/sdk-trace-base": "2.0.1", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0", "@opentelemetry/semantic-conventions": "^1.29.0", "jaeger-client": "^3.15.0" }, @@ -7423,17 +9219,17 @@ } }, "node_modules/@opentelemetry/exporter-logs-otlp-grpc": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-grpc/-/exporter-logs-otlp-grpc-0.203.0.tgz", - "integrity": "sha512-g/2Y2noc/l96zmM+g0LdeuyYKINyBwN6FJySoU15LHPLcMN/1a0wNk2SegwKcxrRdE7Xsm7fkIR5n6XFe3QpPw==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-grpc/-/exporter-logs-otlp-grpc-0.204.0.tgz", + "integrity": "sha512-0dBqvTU04wvJVze4o5cGxFR2qmMkzJ0rnqL7vt35Xkn+OVrl7CUxmhZtkWxEePuWnyjIWQeCyDIrQUVXeXhQAQ==", "license": "Apache-2.0", "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/otlp-exporter-base": "0.203.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.203.0", - "@opentelemetry/otlp-transformer": "0.203.0", - "@opentelemetry/sdk-logs": "0.203.0" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.204.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.204.0", + "@opentelemetry/otlp-transformer": "0.204.0", + "@opentelemetry/sdk-logs": "0.204.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -7443,16 +9239,16 @@ } }, "node_modules/@opentelemetry/exporter-logs-otlp-http": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.203.0.tgz", - "integrity": "sha512-s0hys1ljqlMTbXx2XiplmMJg9wG570Z5lH7wMvrZX6lcODI56sG4HL03jklF63tBeyNwK2RV1/ntXGo3HgG4Qw==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.204.0.tgz", + "integrity": "sha512-cQyIIZxUnXy3M6n9LTW3uhw/cem4WP+k7NtrXp8pf4U3v0RljSCBeD0kA8TRotPJj2YutCjUIDrWOn0u+06PSA==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "0.203.0", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/otlp-exporter-base": "0.203.0", - "@opentelemetry/otlp-transformer": "0.203.0", - "@opentelemetry/sdk-logs": "0.203.0" + "@opentelemetry/api-logs": "0.204.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.204.0", + "@opentelemetry/otlp-transformer": "0.204.0", + "@opentelemetry/sdk-logs": "0.204.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -7462,18 +9258,18 @@ } }, "node_modules/@opentelemetry/exporter-logs-otlp-proto": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-proto/-/exporter-logs-otlp-proto-0.203.0.tgz", - "integrity": "sha512-nl/7S91MXn5R1aIzoWtMKGvqxgJgepB/sH9qW0rZvZtabnsjbf8OQ1uSx3yogtvLr0GzwD596nQKz2fV7q2RBw==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-proto/-/exporter-logs-otlp-proto-0.204.0.tgz", + "integrity": "sha512-TeinnqCmgAW9WjZJtmzyTlJxu76WMWvGQ+qkYBHXm1yvsRzClHoUcpODD7X7sZqEELGL6bjpfEMUJap7Eh3tlA==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "0.203.0", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/otlp-exporter-base": "0.203.0", - "@opentelemetry/otlp-transformer": "0.203.0", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-logs": "0.203.0", - "@opentelemetry/sdk-trace-base": "2.0.1" + "@opentelemetry/api-logs": "0.204.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.204.0", + "@opentelemetry/otlp-transformer": "0.204.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-logs": "0.204.0", + "@opentelemetry/sdk-trace-base": "2.1.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -7483,19 +9279,19 @@ } }, "node_modules/@opentelemetry/exporter-metrics-otlp-grpc": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-grpc/-/exporter-metrics-otlp-grpc-0.203.0.tgz", - "integrity": "sha512-FCCj9nVZpumPQSEI57jRAA89hQQgONuoC35Lt+rayWY/mzCAc6BQT7RFyFaZKJ2B7IQ8kYjOCPsF/HGFWjdQkQ==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-grpc/-/exporter-metrics-otlp-grpc-0.204.0.tgz", + "integrity": "sha512-wA4a97B9fGUw9ezrtjcMEh3NPzDXhXzHudEorSrc9JjO7pBdV2kHz8nLB5BG/h955I/5m+yj1bzSf9BiYtJkQw==", "license": "Apache-2.0", "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/exporter-metrics-otlp-http": "0.203.0", - "@opentelemetry/otlp-exporter-base": "0.203.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.203.0", - "@opentelemetry/otlp-transformer": "0.203.0", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-metrics": "2.0.1" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.204.0", + "@opentelemetry/otlp-exporter-base": "0.204.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.204.0", + "@opentelemetry/otlp-transformer": "0.204.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-metrics": "2.1.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -7505,16 +9301,16 @@ } }, "node_modules/@opentelemetry/exporter-metrics-otlp-http": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.203.0.tgz", - "integrity": "sha512-HFSW10y8lY6BTZecGNpV3GpoSy7eaO0Z6GATwZasnT4bEsILp8UJXNG5OmEsz4SdwCSYvyCbTJdNbZP3/8LGCQ==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.204.0.tgz", + "integrity": "sha512-E+2GjtHcOdYscUhKBgNI/+9pDRqknm4MwXlW8mDRImDwcwbdalTNbiJGjUUmdFK/1IVNHR5DsI/o9ASLAN6f+w==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/otlp-exporter-base": "0.203.0", - "@opentelemetry/otlp-transformer": "0.203.0", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-metrics": "2.0.1" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.204.0", + "@opentelemetry/otlp-transformer": "0.204.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-metrics": "2.1.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -7524,17 +9320,17 @@ } }, "node_modules/@opentelemetry/exporter-metrics-otlp-proto": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-proto/-/exporter-metrics-otlp-proto-0.203.0.tgz", - "integrity": "sha512-OZnhyd9npU7QbyuHXFEPVm3LnjZYifuKpT3kTnF84mXeEQ84pJJZgyLBpU4FSkSwUkt/zbMyNAI7y5+jYTWGIg==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-proto/-/exporter-metrics-otlp-proto-0.204.0.tgz", + "integrity": "sha512-3jUOeqwtw1QNo3mtjxYHu5sZQqT08nJbntyt0Irpya0a46+Z2GLwcB13Eg8Lr459vbxC7T+T9hL1YhaRr1b/Cg==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/exporter-metrics-otlp-http": "0.203.0", - "@opentelemetry/otlp-exporter-base": "0.203.0", - "@opentelemetry/otlp-transformer": "0.203.0", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-metrics": "2.0.1" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.204.0", + "@opentelemetry/otlp-exporter-base": "0.204.0", + "@opentelemetry/otlp-transformer": "0.204.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-metrics": "2.1.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -7544,14 +9340,14 @@ } }, "node_modules/@opentelemetry/exporter-prometheus": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.203.0.tgz", - "integrity": "sha512-2jLuNuw5m4sUj/SncDf/mFPabUxMZmmYetx5RKIMIQyPnl6G6ooFzfeE8aXNRf8YD1ZXNlCnRPcISxjveGJHNg==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.204.0.tgz", + "integrity": "sha512-X+P2Qk2ZBG1etKX0A2T64D5Vj2itmzNavDmzgO4t22C9P6V3yUEsbdcZZLFl04pi7wxUaYe72dCf6EvC3v0R9Q==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-metrics": "2.0.1" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-metrics": "2.1.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -7561,18 +9357,18 @@ } }, "node_modules/@opentelemetry/exporter-trace-otlp-grpc": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.203.0.tgz", - "integrity": "sha512-322coOTf81bm6cAA8+ML6A+m4r2xTCdmAZzGNTboPXRzhwPt4JEmovsFAs+grpdarObd68msOJ9FfH3jxM6wqA==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.204.0.tgz", + "integrity": "sha512-sBnu+sEmHrHH8FGYFLH4ipfQx8p2KjtXTzbMhfUKEcR7vb4WTfTdNSUhyrVgM7HolKFM3IUbEj3Kahnp5lrRvw==", "license": "Apache-2.0", "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/otlp-exporter-base": "0.203.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.203.0", - "@opentelemetry/otlp-transformer": "0.203.0", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-trace-base": "2.0.1" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.204.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.204.0", + "@opentelemetry/otlp-transformer": "0.204.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -7582,16 +9378,16 @@ } }, "node_modules/@opentelemetry/exporter-trace-otlp-http": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.203.0.tgz", - "integrity": "sha512-ZDiaswNYo0yq/cy1bBLJFe691izEJ6IgNmkjm4C6kE9ub/OMQqDXORx2D2j8fzTBTxONyzusbaZlqtfmyqURPw==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.204.0.tgz", + "integrity": "sha512-yS/yPKJF0p+/9aE3MaZuB12NGTPGeBky1NwE3jUGzSM7cQ8tLxpSTPN3uMtLMoNtHRiGTWgE4nkaGgX2vQIqkA==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/otlp-exporter-base": "0.203.0", - "@opentelemetry/otlp-transformer": "0.203.0", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-trace-base": "2.0.1" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.204.0", + "@opentelemetry/otlp-transformer": "0.204.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -7601,16 +9397,16 @@ } }, "node_modules/@opentelemetry/exporter-trace-otlp-proto": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.203.0.tgz", - "integrity": "sha512-1xwNTJ86L0aJmWRwENCJlH4LULMG2sOXWIVw+Szta4fkqKVY50Eo4HoVKKq6U9QEytrWCr8+zjw0q/ZOeXpcAQ==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.204.0.tgz", + "integrity": "sha512-lqoHMT+NgqdjGp+jeRKsdm3fxBayGVUPOMWXFndSE9Q4Ph6LoG5W3o/a4s9df3MAUHLpFsJPUT5ktI0C/mwETg==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/otlp-exporter-base": "0.203.0", - "@opentelemetry/otlp-transformer": "0.203.0", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-trace-base": "2.0.1" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.204.0", + "@opentelemetry/otlp-transformer": "0.204.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -7620,13 +9416,14 @@ } }, "node_modules/@opentelemetry/exporter-zipkin": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-2.0.1.tgz", - "integrity": "sha512-a9eeyHIipfdxzCfc2XPrE+/TI3wmrZUDFtG2RRXHSbZZULAny7SyybSvaDvS77a7iib5MPiAvluwVvbGTsHxsw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-2.1.0.tgz", + "integrity": "sha512-0mEI0VDZrrX9t5RE1FhAyGz+jAGt96HSuXu73leswtY3L5YZD11gtcpARY2KAx/s6Z2+rj5Mhj566JsI2C7mfA==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-trace-base": "2.0.1", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { @@ -7645,12 +9442,12 @@ "link": true }, "node_modules/@opentelemetry/instrumentation": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.203.0.tgz", - "integrity": "sha512-ke1qyM+3AK2zPuBPb6Hk/GCsc5ewbLvPNkEuELx/JmANeEp6ZjnZ+wypPAJSucTw0wvCGrUaibDSdcrGFoWxKQ==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.204.0.tgz", + "integrity": "sha512-vV5+WSxktzoMP8JoYWKeopChy6G3HKk4UQ2hESCRDUUTZqQ3+nM3u8noVG0LmNfRWwcFBnbZ71GKC7vaYYdJ1g==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "0.203.0", + "@opentelemetry/api-logs": "0.204.0", "import-in-the-middle": "^1.8.1", "require-in-the-middle": "^7.1.1" }, @@ -7710,14 +9507,14 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-fetch": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.203.0.tgz", - "integrity": "sha512-Z+mls3rOP2BaVykDZLLZPvchjj9l2oj3dYG1GTnrc27Y8o3biE+5M1b0izblycbbQHXjMPHQCpmjHbLMQuWtBg==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.204.0.tgz", + "integrity": "sha512-xEsZrkDdfr4aLjMfkEIkc6eQRb9kVNlhoibFtm8PpfF5n0oC05XA0DdcpI8+uoLx0bI2FTk/6J0cgY4LYPQZCQ==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/instrumentation": "0.203.0", - "@opentelemetry/sdk-trace-web": "2.0.1", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/instrumentation": "0.204.0", + "@opentelemetry/sdk-trace-web": "2.1.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { @@ -7740,12 +9537,12 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-grpc": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.203.0.tgz", - "integrity": "sha512-Qmjx2iwccHYRLoE4RFS46CvQE9JG9Pfeae4EPaNZjvIuJxb/pZa2R9VWzRlTehqQWpAvto/dGhtkw8Tv+o0LTg==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.204.0.tgz", + "integrity": "sha512-K7aBUFNxnMUHFzOJKZ7jarkvpm/WNmtzKv/Ah35+0CVn3R5lK4jpVZDKKmV9OSF3JQq8+uaEveQzxCAxGLyprA==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "0.203.0", + "@opentelemetry/instrumentation": "0.204.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { @@ -7760,13 +9557,13 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-http": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.203.0.tgz", - "integrity": "sha512-y3uQAcCOAwnO6vEuNVocmpVzG3PER6/YZqbPbbffDdJ9te5NkHEkfSMNzlC3+v7KlE+WinPGc3N7MR30G1HY2g==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.204.0.tgz", + "integrity": "sha512-1afJYyGRA4OmHTv0FfNTrTAzoEjPQUYgd+8ih/lX0LlZBnGio/O80vxA0lN3knsJPS7FiDrsDrWq25K7oAzbkw==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/instrumentation": "0.203.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/instrumentation": "0.204.0", "@opentelemetry/semantic-conventions": "^1.29.0", "forwarded-parse": "2.1.2" }, @@ -7829,6 +9626,10 @@ "resolved": "packages/instrumentation-net", "link": true }, + "node_modules/@opentelemetry/instrumentation-openai": { + "resolved": "packages/instrumentation-openai", + "link": true + }, "node_modules/@opentelemetry/instrumentation-oracledb": { "resolved": "packages/instrumentation-oracledb", "link": true @@ -7882,14 +9683,14 @@ "link": true }, "node_modules/@opentelemetry/instrumentation-xml-http-request": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.203.0.tgz", - "integrity": "sha512-PUDlxZ9WmXvbj3DmXoRMSvvfPEwvEbSNaCtKGxF/GZc1HCJlLQtUEyQrOPeJv3Cd/g9ph2236EFXlCd/ttxouQ==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.204.0.tgz", + "integrity": "sha512-x5ukmzpaPx0cVKRVQzuA6r9/j/N8VQ+nzay8/8Ih1DfcaZUFekk6P5xz6Bawb105EUe6e76JnG3HTcdL1ELD8A==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/instrumentation": "0.203.0", - "@opentelemetry/sdk-trace-web": "2.0.1", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/instrumentation": "0.204.0", + "@opentelemetry/sdk-trace-web": "2.1.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { @@ -7900,13 +9701,13 @@ } }, "node_modules/@opentelemetry/otlp-exporter-base": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.203.0.tgz", - "integrity": "sha512-Wbxf7k+87KyvxFr5D7uOiSq/vHXWommvdnNE7vECO3tAhsA2GfOlpWINCMWUEPdHZ7tCXxw6Epp3vgx3jU7llQ==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.204.0.tgz", + "integrity": "sha512-K1LB1Ht4rGgOtZQ1N8xAwUnE1h9EQBfI4XUbSorbC6OxK6s/fLzl+UAhZX1cmBsDqM5mdx5+/k4QaKlDxX6UXQ==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/otlp-transformer": "0.203.0" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-transformer": "0.204.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -7916,15 +9717,15 @@ } }, "node_modules/@opentelemetry/otlp-grpc-exporter-base": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.203.0.tgz", - "integrity": "sha512-te0Ze1ueJF+N/UOFl5jElJW4U0pZXQ8QklgSfJ2linHN0JJsuaHG8IabEUi2iqxY8ZBDlSiz1Trfv5JcjWWWwQ==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.204.0.tgz", + "integrity": "sha512-U9EsCWHLflUyZX13CpT7056bvpLTOntdHZamZoOwlzwwosvqaKeuxNzmjGB1KFtsiLyAwcb9NNrKSHNytuVDhg==", "license": "Apache-2.0", "dependencies": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/otlp-exporter-base": "0.203.0", - "@opentelemetry/otlp-transformer": "0.203.0" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.204.0", + "@opentelemetry/otlp-transformer": "0.204.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -7934,17 +9735,17 @@ } }, "node_modules/@opentelemetry/otlp-transformer": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.203.0.tgz", - "integrity": "sha512-Y8I6GgoCna0qDQ2W6GCRtaF24SnvqvA8OfeTi7fqigD23u8Jpb4R5KFv/pRvrlGagcCLICMIyh9wiejp4TXu/A==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.204.0.tgz", + "integrity": "sha512-AekB2dgHJ0PMS0b3LH7xA2HDKZ0QqqZW4n5r/AVZy00gKnFoeyVF9t0AUz051fm80G7tKjGSLqOUSazqfTNpVQ==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "0.203.0", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-logs": "0.203.0", - "@opentelemetry/sdk-metrics": "2.0.1", - "@opentelemetry/sdk-trace-base": "2.0.1", + "@opentelemetry/api-logs": "0.204.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-logs": "0.204.0", + "@opentelemetry/sdk-metrics": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0", "protobufjs": "^7.3.0" }, "engines": { @@ -7971,11 +9772,12 @@ "link": true }, "node_modules/@opentelemetry/propagator-b3": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-2.0.1.tgz", - "integrity": "sha512-Hc09CaQ8Tf5AGLmf449H726uRoBNGPBL4bjr7AnnUpzWMvhdn61F78z9qb6IqB737TffBsokGAK1XykFEZ1igw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-2.1.0.tgz", + "integrity": "sha512-yOdHmFseIChYanddMMz0mJIFQHyjwbNhoxc65fEAA8yanxcBPwoFDoh1+WBUWAO/Z0NRgk+k87d+aFIzAZhcBw==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.0.1" + "@opentelemetry/core": "2.1.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -7989,11 +9791,12 @@ "link": true }, "node_modules/@opentelemetry/propagator-jaeger": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-2.0.1.tgz", - "integrity": "sha512-7PMdPBmGVH2eQNb/AtSJizQNgeNTfh6jQFqys6lfhd6P4r+m/nTh3gKPPpaCXVdRQ+z93vfKk+4UGty390283w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-2.1.0.tgz", + "integrity": "sha512-QYo7vLyMjrBCUTpwQBF/e+rvP7oGskrSELGxhSvLj5gpM0az9oJnu/0O4l2Nm7LEhAff80ntRYKkAcSwVgvSVQ==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.0.1" + "@opentelemetry/core": "2.1.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -8039,11 +9842,12 @@ "link": true }, "node_modules/@opentelemetry/resources": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.0.1.tgz", - "integrity": "sha512-dZOB3R6zvBwDKnHDTB4X1xtMArB/d324VsbiPkX/Yu0Q8T2xceRthoIVFhJdvgVM2QhGVUyX9tzwiNxGtoBJUw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.1.0.tgz", + "integrity": "sha512-1CJjf3LCvoefUOgegxi8h6r4B/wLSzInyhGP2UmIBYNlo4Qk5CZ73e1eEyWmfXvFtm1ybkmfb2DqWvspsYLrWw==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.0.1", + "@opentelemetry/core": "2.1.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { @@ -8054,14 +9858,14 @@ } }, "node_modules/@opentelemetry/sdk-logs": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.203.0.tgz", - "integrity": "sha512-vM2+rPq0Vi3nYA5akQD2f3QwossDnTDLvKbea6u/A2NZ3XDkPxMfo/PNrDoXhDUD/0pPo2CdH5ce/thn9K0kLw==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.204.0.tgz", + "integrity": "sha512-y32iNNmpMUVFWSqbNrXE8xY/6EMge+HX3PXsMnCDV4cXT4SNT+W/3NgyMDf80KJL0fUK17/a0NmfXcrBhkFWrg==", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "0.203.0", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/resources": "2.0.1" + "@opentelemetry/api-logs": "0.204.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -8071,12 +9875,13 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.0.1.tgz", - "integrity": "sha512-wf8OaJoSnujMAHWR3g+/hGvNcsC16rf9s1So4JlMiFaFHiE4HpIA3oUh+uWZQ7CNuK8gVW/pQSkgoa5HkkOl0g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.1.0.tgz", + "integrity": "sha512-J9QX459mzqHLL9Y6FZ4wQPRZG4TOpMCyPOh6mkr/humxE1W2S3Bvf4i75yiMW9uyed2Kf5rxmLhTm/UK8vNkAw==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/resources": "2.0.1" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -8086,32 +9891,32 @@ } }, "node_modules/@opentelemetry/sdk-node": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.203.0.tgz", - "integrity": "sha512-zRMvrZGhGVMvAbbjiNQW3eKzW/073dlrSiAKPVWmkoQzah9wfynpVPeL55f9fVIm0GaBxTLcPeukWGy0/Wj7KQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api-logs": "0.203.0", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/exporter-logs-otlp-grpc": "0.203.0", - "@opentelemetry/exporter-logs-otlp-http": "0.203.0", - "@opentelemetry/exporter-logs-otlp-proto": "0.203.0", - "@opentelemetry/exporter-metrics-otlp-grpc": "0.203.0", - "@opentelemetry/exporter-metrics-otlp-http": "0.203.0", - "@opentelemetry/exporter-metrics-otlp-proto": "0.203.0", - "@opentelemetry/exporter-prometheus": "0.203.0", - "@opentelemetry/exporter-trace-otlp-grpc": "0.203.0", - "@opentelemetry/exporter-trace-otlp-http": "0.203.0", - "@opentelemetry/exporter-trace-otlp-proto": "0.203.0", - "@opentelemetry/exporter-zipkin": "2.0.1", - "@opentelemetry/instrumentation": "0.203.0", - "@opentelemetry/propagator-b3": "2.0.1", - "@opentelemetry/propagator-jaeger": "2.0.1", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-logs": "0.203.0", - "@opentelemetry/sdk-metrics": "2.0.1", - "@opentelemetry/sdk-trace-base": "2.0.1", - "@opentelemetry/sdk-trace-node": "2.0.1", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.204.0.tgz", + "integrity": "sha512-HRMTjiA6urw9kLpBJrhe6jxDw+69KdXkqr2tBhmsLgpdN7LlVWWPUQbYUtiUg9nWaEOk1Q1blhV2sGQoFNZk+g==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.204.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/exporter-logs-otlp-grpc": "0.204.0", + "@opentelemetry/exporter-logs-otlp-http": "0.204.0", + "@opentelemetry/exporter-logs-otlp-proto": "0.204.0", + "@opentelemetry/exporter-metrics-otlp-grpc": "0.204.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.204.0", + "@opentelemetry/exporter-metrics-otlp-proto": "0.204.0", + "@opentelemetry/exporter-prometheus": "0.204.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.204.0", + "@opentelemetry/exporter-trace-otlp-http": "0.204.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.204.0", + "@opentelemetry/exporter-zipkin": "2.1.0", + "@opentelemetry/instrumentation": "0.204.0", + "@opentelemetry/propagator-b3": "2.1.0", + "@opentelemetry/propagator-jaeger": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-logs": "0.204.0", + "@opentelemetry/sdk-metrics": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0", + "@opentelemetry/sdk-trace-node": "2.1.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { @@ -8122,12 +9927,13 @@ } }, "node_modules/@opentelemetry/sdk-trace-base": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.0.1.tgz", - "integrity": "sha512-xYLlvk/xdScGx1aEqvxLwf6sXQLXCjk3/1SQT9X9AoN5rXRhkdvIFShuNNmtTEPRBqcsMbS4p/gJLNI2wXaDuQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.1.0.tgz", + "integrity": "sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/resources": "2.0.1", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { @@ -8138,13 +9944,14 @@ } }, "node_modules/@opentelemetry/sdk-trace-node": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-2.0.1.tgz", - "integrity": "sha512-UhdbPF19pMpBtCWYP5lHbTogLWx9N0EBxtdagvkn5YtsAnCBZzL7SjktG+ZmupRgifsHMjwUaCCaVmqGfSADmA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-2.1.0.tgz", + "integrity": "sha512-SvVlBFc/jI96u/mmlKm86n9BbTCbQ35nsPoOohqJX6DXH92K0kTe73zGY5r8xoI1QkjR9PizszVJLzMC966y9Q==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/context-async-hooks": "2.0.1", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/sdk-trace-base": "2.0.1" + "@opentelemetry/context-async-hooks": "2.1.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -8154,12 +9961,13 @@ } }, "node_modules/@opentelemetry/sdk-trace-web": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-2.0.1.tgz", - "integrity": "sha512-R4/i0rISvAujG4Zwk3s6ySyrWG+Db3SerZVM4jZ2lEzjrNylF7nRAy1hVvWe8gTbwIxX+6w6ZvZwdtl2C7UQHQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-2.1.0.tgz", + "integrity": "sha512-2F6ZuZFmJg4CdhRPP8+60DkvEwGLCiU3ffAkgnnqe/ALGEBqGa0HrZaNWFGprXWVivrYHpXhr7AEfasgLZD71g==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/sdk-trace-base": "2.0.1" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -8169,9 +9977,9 @@ } }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.34.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.34.0.tgz", - "integrity": "sha512-aKcOkyrorBGlajjRdVoJWHTxfxO1vCNHLJVlSDaRHDIdjU+pX8IYQPvPDkYiujKLbRnWU+1TBwEt0QRgSm4SGA==", + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.37.0.tgz", + "integrity": "sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==", "license": "Apache-2.0", "engines": { "node": ">=14" @@ -8282,9 +10090,9 @@ } }, "node_modules/@puppeteer/browsers/node_modules/tar-fs": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.8.tgz", - "integrity": "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.0.tgz", + "integrity": "sha512-5Mty5y/sOF1YWj1J6GiBodjlDc05CUR8PKXrsnFAiSG0xA+GHeWLovaZPYUDXkH/1iKRf2+M5+OrRgzC7O9b7w==", "dev": true, "dependencies": { "pump": "^3.0.0", @@ -8306,6 +10114,96 @@ "streamx": "^2.15.0" } }, + "node_modules/@redis/bloom": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", + "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", + "dev": true, + "optional": true, + "peer": true, + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/client": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.6.1.tgz", + "integrity": "sha512-/KCsg3xSlR+nCK8/8ZYSknYxvXHwubJrU82F3Lm1Fp6789VQ0/3RJKfsmRXjqfaTA++23CvC3hqmqe/2GEt6Kw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "cluster-key-slot": "1.1.2", + "generic-pool": "3.9.0", + "yallist": "4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@redis/client/node_modules/generic-pool": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", + "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@redis/client/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/@redis/graph": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.1.tgz", + "integrity": "sha512-FEMTcTHZozZciLRl6GiiIB4zGm5z5F3F6a6FZCyrfxdKOhFlGkiAqlexWMBzCi4DcRoyiOsuLfW+cjlGWyExOw==", + "dev": true, + "optional": true, + "peer": true, + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/json": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.7.tgz", + "integrity": "sha512-6UyXfjVaTBTJtKNG4/9Z8PSpKE6XgSyEb8iwaqDcy+uKrd/DGYHTWkUdnQDyzm727V7p21WUMhsqz5oy65kPcQ==", + "dev": true, + "optional": true, + "peer": true, + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/search": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.2.0.tgz", + "integrity": "sha512-tYoDBbtqOVigEDMAcTGsRlMycIIjwMCgD8eR2t0NANeQmgK/lvxNAvYyb6bZDD4frHRhIHkJu2TBRvB0ERkOmw==", + "dev": true, + "optional": true, + "peer": true, + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/time-series": { + "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, + "optional": true, + "peer": true, + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, "node_modules/@rollup/plugin-commonjs": { "version": "26.0.3", "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-26.0.3.tgz", @@ -8356,9 +10254,9 @@ } }, "node_modules/@rollup/pluginutils": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", - "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.2.0.tgz", + "integrity": "sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==", "dev": true, "dependencies": { "@types/estree": "^1.0.0", @@ -8378,9 +10276,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.0.tgz", - "integrity": "sha512-KxN+zCjOYHGwCl4UCtSfZ6jrq/qi88JDUtiEFk8LELEHq2Egfc/FgW+jItZiOLRuQfb/3xJSgFuNPC9jzggX+A==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.2.tgz", + "integrity": "sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==", "cpu": [ "arm" ], @@ -8391,9 +10289,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.0.tgz", - "integrity": "sha512-yDvqx3lWlcugozax3DItKJI5j05B0d4Kvnjx+5mwiUpWramVvmAByYigMplaoAQ3pvdprGCTCE03eduqE/8mPQ==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.2.tgz", + "integrity": "sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==", "cpu": [ "arm64" ], @@ -8404,9 +10302,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.0.tgz", - "integrity": "sha512-2KOU574vD3gzcPSjxO0eyR5iWlnxxtmW1F5CkNOHmMlueKNCQkxR6+ekgWyVnz6zaZihpUNkGxjsYrkTJKhkaw==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.2.tgz", + "integrity": "sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==", "cpu": [ "arm64" ], @@ -8417,9 +10315,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.0.tgz", - "integrity": "sha512-gE5ACNSxHcEZyP2BA9TuTakfZvULEW4YAOtxl/A/YDbIir/wPKukde0BNPlnBiP88ecaN4BJI2TtAd+HKuZPQQ==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.2.tgz", + "integrity": "sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==", "cpu": [ "x64" ], @@ -8430,9 +10328,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.0.tgz", - "integrity": "sha512-GSxU6r5HnWij7FoSo7cZg3l5GPg4HFLkzsFFh0N/b16q5buW1NAWuCJ+HMtIdUEi6XF0qH+hN0TEd78laRp7Dg==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.2.tgz", + "integrity": "sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==", "cpu": [ "arm64" ], @@ -8443,9 +10341,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.0.tgz", - "integrity": "sha512-KGiGKGDg8qLRyOWmk6IeiHJzsN/OYxO6nSbT0Vj4MwjS2XQy/5emsmtoqLAabqrohbgLWJ5GV3s/ljdrIr8Qjg==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.2.tgz", + "integrity": "sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==", "cpu": [ "x64" ], @@ -8456,9 +10354,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.0.tgz", - "integrity": "sha512-46OzWeqEVQyX3N2/QdiU/CMXYDH/lSHpgfBkuhl3igpZiaB3ZIfSjKuOnybFVBQzjsLwkus2mjaESy8H41SzvA==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.2.tgz", + "integrity": "sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==", "cpu": [ "arm" ], @@ -8469,9 +10367,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.0.tgz", - "integrity": "sha512-lfgW3KtQP4YauqdPpcUZHPcqQXmTmH4nYU0cplNeW583CMkAGjtImw4PKli09NFi2iQgChk4e9erkwlfYem6Lg==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.2.tgz", + "integrity": "sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==", "cpu": [ "arm" ], @@ -8482,9 +10380,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.0.tgz", - "integrity": "sha512-nn8mEyzMbdEJzT7cwxgObuwviMx6kPRxzYiOl6o/o+ChQq23gfdlZcUNnt89lPhhz3BYsZ72rp0rxNqBSfqlqw==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.2.tgz", + "integrity": "sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==", "cpu": [ "arm64" ], @@ -8495,9 +10393,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.0.tgz", - "integrity": "sha512-l+QK99je2zUKGd31Gh+45c4pGDAqZSuWQiuRFCdHYC2CSiO47qUWsCcenrI6p22hvHZrDje9QjwSMAFL3iwXwQ==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.2.tgz", + "integrity": "sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==", "cpu": [ "arm64" ], @@ -8508,9 +10406,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.0.tgz", - "integrity": "sha512-WbnJaxPv1gPIm6S8O/Wg+wfE/OzGSXlBMbOe4ie+zMyykMOeqmgD1BhPxZQuDqwUN+0T/xOFtL2RUWBspnZj3w==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.2.tgz", + "integrity": "sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==", "cpu": [ "loong64" ], @@ -8520,10 +10418,10 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.0.tgz", - "integrity": "sha512-eRDWR5t67/b2g8Q/S8XPi0YdbKcCs4WQ8vklNnUYLaSWF+Cbv2axZsp4jni6/j7eKvMLYCYdcsv8dcU+a6QNFg==", + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.2.tgz", + "integrity": "sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==", "cpu": [ "ppc64" ], @@ -8534,9 +10432,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.0.tgz", - "integrity": "sha512-TWrZb6GF5jsEKG7T1IHwlLMDRy2f3DPqYldmIhnA2DVqvvhY2Ai184vZGgahRrg8k9UBWoSlHv+suRfTN7Ua4A==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.2.tgz", + "integrity": "sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==", "cpu": [ "riscv64" ], @@ -8547,9 +10445,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.0.tgz", - "integrity": "sha512-ieQljaZKuJpmWvd8gW87ZmSFwid6AxMDk5bhONJ57U8zT77zpZ/TPKkU9HpnnFrM4zsgr4kiGuzbIbZTGi7u9A==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.2.tgz", + "integrity": "sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==", "cpu": [ "riscv64" ], @@ -8560,9 +10458,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.0.tgz", - "integrity": "sha512-/L3pW48SxrWAlVsKCN0dGLB2bi8Nv8pr5S5ocSM+S0XCn5RCVCXqi8GVtHFsOBBCSeR+u9brV2zno5+mg3S4Aw==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.2.tgz", + "integrity": "sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==", "cpu": [ "s390x" ], @@ -8573,9 +10471,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.0.tgz", - "integrity": "sha512-XMLeKjyH8NsEDCRptf6LO8lJk23o9wvB+dJwcXMaH6ZQbbkHu2dbGIUindbMtRN6ux1xKi16iXWu6q9mu7gDhQ==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.2.tgz", + "integrity": "sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==", "cpu": [ "x64" ], @@ -8586,9 +10484,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.0.tgz", - "integrity": "sha512-m/P7LycHZTvSQeXhFmgmdqEiTqSV80zn6xHaQ1JSqwCtD1YGtwEK515Qmy9DcB2HK4dOUVypQxvhVSy06cJPEg==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.2.tgz", + "integrity": "sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==", "cpu": [ "x64" ], @@ -8599,9 +10497,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.0.tgz", - "integrity": "sha512-4yodtcOrFHpbomJGVEqZ8fzD4kfBeCbpsUy5Pqk4RluXOdsWdjLnjhiKy2w3qzcASWd04fp52Xz7JKarVJ5BTg==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.2.tgz", + "integrity": "sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==", "cpu": [ "arm64" ], @@ -8612,9 +10510,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.0.tgz", - "integrity": "sha512-tmazCrAsKzdkXssEc65zIE1oC6xPHwfy9d5Ta25SRCDOZS+I6RypVVShWALNuU9bxIfGA0aqrmzlzoM5wO5SPQ==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.2.tgz", + "integrity": "sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==", "cpu": [ "ia32" ], @@ -8625,9 +10523,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.0.tgz", - "integrity": "sha512-h1J+Yzjo/X+0EAvR2kIXJDuTuyT7drc+t2ALY0nIcGPbTatNOf0VWdhEA2Z4AAjv6X1NJV7SYo5oCTYRJhSlVA==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.2.tgz", + "integrity": "sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==", "cpu": [ "x64" ], @@ -8814,6 +10712,15 @@ "type-detect": "4.0.8" } }, + "node_modules/@sinonjs/commons/node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/@sinonjs/fake-timers": { "version": "10.3.0", "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", @@ -8824,25 +10731,15 @@ } }, "node_modules/@sinonjs/samsam": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.2.tgz", - "integrity": "sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.3.tgz", + "integrity": "sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ==", "dev": true, "dependencies": { "@sinonjs/commons": "^3.0.1", - "lodash.get": "^4.4.2", "type-detect": "^4.1.0" } }, - "node_modules/@sinonjs/samsam/node_modules/type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/@sinonjs/text-encoding": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz", @@ -8850,28 +10747,17 @@ "dev": true }, "node_modules/@smithy/abort-controller": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.2.0.tgz", - "integrity": "sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==", - "dev": true, - "dependencies": { - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@smithy/abort-controller/node_modules/@smithy/types": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", - "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.5.tgz", + "integrity": "sha512-jcrqdTQurIrBbUm4W2YdLVMQDoL0sA9DTxYd2s+R/y+2U9NLOP7Xf/YqfSg1FZhlZIYEnvk2mwbyvIfdLEPo8g==", "dev": true, + "license": "Apache-2.0", "dependencies": { + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/chunked-blob-reader": { @@ -8900,15 +10786,16 @@ } }, "node_modules/@smithy/config-resolver": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.1.2.tgz", - "integrity": "sha512-7r6mZGwb5LmLJ+zPtkLoznf2EtwEuSWdtid10pjGl/7HefCE4mueOkrfki8JCUm99W6UfP47/r3tbxx9CfBN5A==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.1.5.tgz", + "integrity": "sha512-viuHMxBAqydkB0AfWwHIdwf/PRH2z5KHGUzqyRtS/Wv+n3IHI993Sk76VCA7dD/+GzgGOmlJDITfPcJC1nIVIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.1.1", - "@smithy/types": "^4.2.0", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/types": "^4.3.2", "@smithy/util-config-provider": "^4.0.0", - "@smithy/util-middleware": "^4.0.2", + "@smithy/util-middleware": "^4.0.5", "tslib": "^2.6.2" }, "engines": { @@ -8916,34 +10803,39 @@ } }, "node_modules/@smithy/core": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.3.3.tgz", - "integrity": "sha512-CiJNc0b/WdnttAfQ6uMkxPQ3Z8hG/ba8wF89x9KtBBLDdZk6CX52K4F8hbe94uNbc8LDUuZFtbqfdhM3T21naw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.8.0.tgz", + "integrity": "sha512-EYqsIYJmkR1VhVE9pccnk353xhs+lB6btdutJEtsp7R055haMJp2yE16eSxw8fv+G0WUY6vqxyYOP8kOqawxYQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/middleware-serde": "^4.0.5", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@smithy/middleware-serde": "^4.0.9", + "@smithy/protocol-http": "^5.1.3", + "@smithy/types": "^4.3.2", + "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-stream": "^4.2.0", + "@smithy/util-middleware": "^4.0.5", + "@smithy/util-stream": "^4.2.4", "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" + "@types/uuid": "^9.0.1", + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { "node": ">=18.0.0" } }, "node_modules/@smithy/credential-provider-imds": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.4.tgz", - "integrity": "sha512-jN6M6zaGVyB8FmNGG+xOPQB4N89M1x97MMdMnm1ESjljLS3Qju/IegQizKujaNcy2vXAvrz0en8bobe6E55FEA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.7.tgz", + "integrity": "sha512-dDzrMXA8d8riFNiPvytxn0mNwR4B3h8lgrQ5UjAGu6T9z/kRg/Xncf4tEQHE/+t25sY8IH3CowcmWi+1U5B1Gw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.1.1", - "@smithy/property-provider": "^4.0.2", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/property-provider": "^4.0.5", + "@smithy/types": "^4.3.2", + "@smithy/url-parser": "^4.0.5", "tslib": "^2.6.2" }, "engines": { @@ -8951,13 +10843,13 @@ } }, "node_modules/@smithy/eventstream-codec": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.0.2.tgz", - "integrity": "sha512-p+f2kLSK7ZrXVfskU/f5dzksKTewZk8pJLPvER3aFHPt76C2MxD9vNatSfLzzQSQB4FNO96RK4PSXfhD1TTeMQ==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.0.4.tgz", + "integrity": "sha512-7XoWfZqWb/QoR/rAU4VSi0mWnO2vu9/ltS6JZ5ZSZv0eovLVfDfu0/AX4ub33RsJTOth3TiFWSHS5YdztvFnig==", "dev": true, "dependencies": { "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.1", "@smithy/util-hex-encoding": "^4.0.0", "tslib": "^2.6.2" }, @@ -8966,13 +10858,13 @@ } }, "node_modules/@smithy/eventstream-serde-browser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.0.2.tgz", - "integrity": "sha512-CepZCDs2xgVUtH7ZZ7oDdZFH8e6Y2zOv8iiX6RhndH69nlojCALSKK+OXwZUgOtUZEUaZ5e1hULVCHYbCn7pug==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.0.4.tgz", + "integrity": "sha512-3fb/9SYaYqbpy/z/H3yIi0bYKyAa89y6xPmIqwr2vQiUT2St+avRt8UKwsWt9fEdEasc5d/V+QjrviRaX1JRFA==", "dev": true, "dependencies": { - "@smithy/eventstream-serde-universal": "^4.0.2", - "@smithy/types": "^4.2.0", + "@smithy/eventstream-serde-universal": "^4.0.4", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" }, "engines": { @@ -8980,12 +10872,12 @@ } }, "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.1.0.tgz", - "integrity": "sha512-1PI+WPZ5TWXrfj3CIoKyUycYynYJgZjuQo8U+sphneOtjsgrttYybdqESFReQrdWJ+LKt6NEdbYzmmfDBmjX2A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.1.2.tgz", + "integrity": "sha512-JGtambizrWP50xHgbzZI04IWU7LdI0nh/wGbqH3sJesYToMi2j/DcoElqyOcqEIG/D4tNyxgRuaqBXWE3zOFhQ==", "dev": true, "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" }, "engines": { @@ -8993,13 +10885,13 @@ } }, "node_modules/@smithy/eventstream-serde-node": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.0.2.tgz", - "integrity": "sha512-C5bJ/C6x9ENPMx2cFOirspnF9ZsBVnBMtP6BdPl/qYSuUawdGQ34Lq0dMcf42QTjUZgWGbUIZnz6+zLxJlb9aw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.0.4.tgz", + "integrity": "sha512-RD6UwNZ5zISpOWPuhVgRz60GkSIp0dy1fuZmj4RYmqLVRtejFqQ16WmfYDdoSoAjlp1LX+FnZo+/hkdmyyGZ1w==", "dev": true, "dependencies": { - "@smithy/eventstream-serde-universal": "^4.0.2", - "@smithy/types": "^4.2.0", + "@smithy/eventstream-serde-universal": "^4.0.4", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" }, "engines": { @@ -9007,13 +10899,13 @@ } }, "node_modules/@smithy/eventstream-serde-universal": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.0.2.tgz", - "integrity": "sha512-St8h9JqzvnbB52FtckiHPN4U/cnXcarMniXRXTKn0r4b4XesZOGiAyUdj1aXbqqn1icSqBlzzUsCl6nPB018ng==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.0.4.tgz", + "integrity": "sha512-UeJpOmLGhq1SLox79QWw/0n2PFX+oPRE1ZyRMxPIaFEfCqWaqpB7BU9C8kpPOGEhLF7AwEqfFbtwNxGy4ReENA==", "dev": true, "dependencies": { - "@smithy/eventstream-codec": "^4.0.2", - "@smithy/types": "^4.2.0", + "@smithy/eventstream-codec": "^4.0.4", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" }, "engines": { @@ -9021,14 +10913,15 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.0.2.tgz", - "integrity": "sha512-+9Dz8sakS9pe7f2cBocpJXdeVjMopUDLgZs1yWeu7h++WqSbjUYv/JAJwKwXw1HV6gq1jyWjxuyn24E2GhoEcQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.1.1.tgz", + "integrity": "sha512-61WjM0PWmZJR+SnmzaKI7t7G0UkkNFboDpzIdzSoy7TByUzlxo18Qlh9s71qug4AY4hlH/CwXdubMtkcNEb/sQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.1.0", - "@smithy/querystring-builder": "^4.0.2", - "@smithy/types": "^4.2.0", + "@smithy/protocol-http": "^5.1.3", + "@smithy/querystring-builder": "^4.0.5", + "@smithy/types": "^4.3.2", "@smithy/util-base64": "^4.0.0", "tslib": "^2.6.2" }, @@ -9037,14 +10930,14 @@ } }, "node_modules/@smithy/hash-blob-browser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.0.2.tgz", - "integrity": "sha512-3g188Z3DyhtzfBRxpZjU8R9PpOQuYsbNnyStc/ZVS+9nVX1f6XeNOa9IrAh35HwwIZg+XWk8bFVtNINVscBP+g==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.0.4.tgz", + "integrity": "sha512-WszRiACJiQV3QG6XMV44i5YWlkrlsM5Yxgz4jvsksuu7LDXA6wAtypfPajtNTadzpJy3KyJPoWehYpmZGKUFIQ==", "dev": true, "dependencies": { "@smithy/chunked-blob-reader": "^5.0.0", "@smithy/chunked-blob-reader-native": "^4.0.0", - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" }, "engines": { @@ -9052,12 +10945,13 @@ } }, "node_modules/@smithy/hash-node": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.0.2.tgz", - "integrity": "sha512-VnTpYPnRUE7yVhWozFdlxcYknv9UN7CeOqSrMH+V877v4oqtVYuoqhIhtSjmGPvYrYnAkaM61sLMKHvxL138yg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.0.5.tgz", + "integrity": "sha512-cv1HHkKhpyRb6ahD8Vcfb2Hgz67vNIXEp2vnhzfxLFGRukLCNEA5QdsorbUEzXma1Rco0u3rx5VTqbM06GcZqQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.2", "@smithy/util-buffer-from": "^4.0.0", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" @@ -9067,12 +10961,12 @@ } }, "node_modules/@smithy/hash-stream-node": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.0.2.tgz", - "integrity": "sha512-POWDuTznzbIwlEXEvvXoPMS10y0WKXK790soe57tFRfvf4zBHyzE529HpZMqmDdwG9MfFflnyzndUQ8j78ZdSg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.0.4.tgz", + "integrity": "sha512-wHo0d8GXyVmpmMh/qOR0R7Y46/G1y6OR8U+bSTB4ppEzRxd1xVAQ9xOE9hOc0bSjhz0ujCPAbfNLkLrpa6cevg==", "dev": true, "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.1", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" }, @@ -9081,12 +10975,13 @@ } }, "node_modules/@smithy/invalid-dependency": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.0.2.tgz", - "integrity": "sha512-GatB4+2DTpgWPday+mnUkoumP54u/MDM/5u44KF9hIu8jF0uafZtQLcdfIKkIcUNuF/fBojpLEHZS/56JqPeXQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.0.5.tgz", + "integrity": "sha512-IVnb78Qtf7EJpoEVo7qJ8BEXQwgC4n3igeJNNKEj/MLYtapnx8A67Zt/J3RXAj2xSO1910zk0LdFiygSemuLow==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -9106,12 +11001,12 @@ } }, "node_modules/@smithy/md5-js": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.0.2.tgz", - "integrity": "sha512-Hc0R8EiuVunUewCse2syVgA2AfSRco3LyAv07B/zCOMa+jpXI9ll+Q21Nc6FAlYPcpNcAXqBzMhNs1CD/pP2bA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.0.4.tgz", + "integrity": "sha512-uGLBVqcOwrLvGh/v/jw423yWHq/ofUGK1W31M2TNspLQbUV1Va0F5kTxtirkoHawODAZcjXTSGi7JwbnPcDPJg==", "dev": true, "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.1", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" }, @@ -9120,13 +11015,14 @@ } }, "node_modules/@smithy/middleware-content-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.0.2.tgz", - "integrity": "sha512-hAfEXm1zU+ELvucxqQ7I8SszwQ4znWMbNv6PLMndN83JJN41EPuS93AIyh2N+gJ6x8QFhzSO6b7q2e6oClDI8A==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.0.5.tgz", + "integrity": "sha512-l1jlNZoYzoCC7p0zCtBDE5OBXZ95yMKlRlftooE5jPWQn4YBPLgsp+oeHp7iMHaTGoUdFqmHOPa8c9G3gBsRpQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@smithy/protocol-http": "^5.1.3", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -9134,18 +11030,19 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.6.tgz", - "integrity": "sha512-Zdieg07c3ua3ap5ungdcyNnY1OsxmsXXtKDTk28+/YbwIPju0Z1ZX9X5AnkjmDE3+AbqgvhtC/ZuCMSr6VSfPw==", + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.18.tgz", + "integrity": "sha512-ZhvqcVRPZxnZlokcPaTwb+r+h4yOIOCJmx0v2d1bpVlmP465g3qpVSf7wxcq5zZdu4jb0H4yIMxuPwDJSQc3MQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.3.3", - "@smithy/middleware-serde": "^4.0.5", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", - "@smithy/util-middleware": "^4.0.2", + "@smithy/core": "^3.8.0", + "@smithy/middleware-serde": "^4.0.9", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/shared-ini-file-loader": "^4.0.5", + "@smithy/types": "^4.3.2", + "@smithy/url-parser": "^4.0.5", + "@smithy/util-middleware": "^4.0.5", "tslib": "^2.6.2" }, "engines": { @@ -9153,18 +11050,20 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.1.7.tgz", - "integrity": "sha512-lFIFUJ0E/4I0UaIDY5usNUzNKAghhxO0lDH4TZktXMmE+e4ActD9F154Si0Unc01aCPzcwd+NcOwQw6AfXXRRQ==", + "version": "4.1.19", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.1.19.tgz", + "integrity": "sha512-X58zx/NVECjeuUB6A8HBu4bhx72EoUz+T5jTMIyeNKx2lf+Gs9TmWPNNkH+5QF0COjpInP/xSpJGJ7xEnAklQQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.1.1", - "@smithy/protocol-http": "^5.1.0", - "@smithy/service-error-classification": "^4.0.3", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/protocol-http": "^5.1.3", + "@smithy/service-error-classification": "^4.0.7", + "@smithy/smithy-client": "^4.4.10", + "@smithy/types": "^4.3.2", + "@smithy/util-middleware": "^4.0.5", + "@smithy/util-retry": "^4.0.7", + "@types/uuid": "^9.0.1", "tslib": "^2.6.2", "uuid": "^9.0.1" }, @@ -9173,13 +11072,14 @@ } }, "node_modules/@smithy/middleware-serde": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.0.5.tgz", - "integrity": "sha512-yREC3q/HXqQigq29xX3hiy6tFi+kjPKXoYUQmwQdgPORLbQ0n6V2Z/Iw9Nnlu66da9fM/WhDtGvYvqwecrCljQ==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.0.9.tgz", + "integrity": "sha512-uAFFR4dpeoJPGz8x9mhxp+RPjo5wW0QEEIPPPbLXiRRWeCATf/Km3gKIVR5vaP8bN1kgsPhcEeh+IZvUlBv6Xg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@smithy/protocol-http": "^5.1.3", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -9187,12 +11087,13 @@ } }, "node_modules/@smithy/middleware-stack": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.0.2.tgz", - "integrity": "sha512-eSPVcuJJGVYrFYu2hEq8g8WWdJav3sdrI4o2c6z/rjnYDd3xH9j9E7deZQCzFn4QvGPouLngH3dQ+QVTxv5bOQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.0.5.tgz", + "integrity": "sha512-/yoHDXZPh3ocRVyeWQFvC44u8seu3eYzZRveCMfgMOBcNKnAmOvjbL9+Cp5XKSIi9iYA9PECUuW2teDAk8T+OQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -9200,14 +11101,15 @@ } }, "node_modules/@smithy/node-config-provider": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.1.1.tgz", - "integrity": "sha512-1slS5jf5icHETwl5hxEVBj+mh6B+LbVW4yRINsGtUKH+nxM5Pw2H59+qf+JqYFCHp9jssG4vX81f5WKnjMN3Vw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.1.4.tgz", + "integrity": "sha512-+UDQV/k42jLEPPHSn39l0Bmc4sB1xtdI9Gd47fzo/0PbXzJ7ylgaOByVjF5EeQIumkepnrJyfx86dPa9p47Y+w==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", + "@smithy/property-provider": "^4.0.5", + "@smithy/shared-ini-file-loader": "^4.0.5", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -9215,79 +11117,29 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.4.0.tgz", - "integrity": "sha512-Mf2f7MMy31W8LisJ9O+7J5cKiNwBwBBLU6biQ7/sFSFdhuOxPN7hOPoZ8vlaFjvrpfOUJw9YOpjGyNTKuvomOQ==", - "dev": true, - "dependencies": { - "@smithy/abort-controller": "^2.1.2", - "@smithy/protocol-http": "^3.2.0", - "@smithy/querystring-builder": "^2.1.2", - "@smithy/types": "^2.10.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@smithy/node-http-handler/node_modules/@smithy/protocol-http": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.3.0.tgz", - "integrity": "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==", - "dev": true, - "dependencies": { - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@smithy/node-http-handler/node_modules/@smithy/querystring-builder": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.2.0.tgz", - "integrity": "sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==", - "dev": true, - "dependencies": { - "@smithy/types": "^2.12.0", - "@smithy/util-uri-escape": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@smithy/node-http-handler/node_modules/@smithy/types": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", - "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", - "dev": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@smithy/node-http-handler/node_modules/@smithy/util-uri-escape": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.2.0.tgz", - "integrity": "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.1.1.tgz", + "integrity": "sha512-RHnlHqFpoVdjSPPiYy/t40Zovf3BBHc2oemgD7VsVTFFZrU5erFFe0n52OANZZ/5sbshgD93sOh5r6I35Xmpaw==", "dev": true, "dependencies": { + "@smithy/abort-controller": "^4.0.5", + "@smithy/protocol-http": "^5.1.3", + "@smithy/querystring-builder": "^4.0.5", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/property-provider": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.0.2.tgz", - "integrity": "sha512-wNRoQC1uISOuNc2s4hkOYwYllmiyrvVXWMtq+TysNRVQaHm4yoafYQyjN/goYZS+QbYlPIbb/QRjaUZMuzwQ7A==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.0.5.tgz", + "integrity": "sha512-R/bswf59T/n9ZgfgUICAZoWYKBHcsVDurAGX88zsiUtOTA/xUAPyiT+qkNCPwFn43pZqN84M4MiUsbSGQmgFIQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -9295,13 +11147,13 @@ } }, "node_modules/@smithy/protocol-http": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.1.1.tgz", - "integrity": "sha512-Vsay2mzq05DwNi9jK01yCFtfvu9HimmgC7a4HTs7lhX12Sx8aWsH0mfz6q/02yspSp+lOB+Q2HJwi4IV2GKz7A==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.1.3.tgz", + "integrity": "sha512-fCJd2ZR7D22XhDY0l+92pUag/7je2BztPRQ01gU5bMChcyI0rlly7QFibnYHzcxDvccMjlpM/Q1ev8ceRIb48w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.0", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -9309,13 +11161,13 @@ } }, "node_modules/@smithy/querystring-builder": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.0.3.tgz", - "integrity": "sha512-UUzIWMVfPmDZcOutk2/r1vURZqavvQW0OHvgsyNV0cKupChvqg+/NKPRMaMEe+i8tP96IthMFeZOZWpV+E4RAw==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.0.5.tgz", + "integrity": "sha512-NJeSCU57piZ56c+/wY+AbAw6rxCCAOZLCIniRE7wqvndqxcKKDOXzwWjrY7wGKEISfhL9gBbAaWWgHsUGedk+A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.0", + "@smithy/types": "^4.3.2", "@smithy/util-uri-escape": "^4.0.0", "tslib": "^2.6.2" }, @@ -9324,12 +11176,13 @@ } }, "node_modules/@smithy/querystring-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.0.2.tgz", - "integrity": "sha512-v6w8wnmZcVXjfVLjxw8qF7OwESD9wnpjp0Dqry/Pod0/5vcEA3qxCr+BhbOHlxS8O+29eLpT3aagxXGwIoEk7Q==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.0.5.tgz", + "integrity": "sha512-6SV7md2CzNG/WUeTjVe6Dj8noH32r4MnUeFKZrnVYsQxpGSIcphAanQMayi8jJLZAWm6pdM9ZXvKCpWOsIGg0w==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -9337,24 +11190,26 @@ } }, "node_modules/@smithy/service-error-classification": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.0.3.tgz", - "integrity": "sha512-FTbcajmltovWMjj3tksDQdD23b2w6gH+A0DYA1Yz3iSpjDj8fmkwy62UnXcWMy4d5YoMoSyLFHMfkEVEzbiN8Q==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.0.7.tgz", + "integrity": "sha512-XvRHOipqpwNhEjDf2L5gJowZEm5nsxC16pAZOeEcsygdjv9A2jdOh3YoDQvOXBGTsaJk6mNWtzWalOB9976Wlg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0" + "@smithy/types": "^4.3.2" }, "engines": { "node": ">=18.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.2.tgz", - "integrity": "sha512-J9/gTWBGVuFZ01oVA6vdb4DAjf1XbDhK6sLsu3OS9qmLrS6KB5ygpeHiM3miIbj1qgSJ96GYszXFWv6ErJ8QEw==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.5.tgz", + "integrity": "sha512-YVVwehRDuehgoXdEL4r1tAAzdaDgaC9EQvhK0lEbfnbrd0bd5+CTQumbdPryX3J2shT7ZqQE+jPW4lmNBAB8JQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -9362,16 +11217,17 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.1.0.tgz", - "integrity": "sha512-4t5WX60sL3zGJF/CtZsUQTs3UrZEDO2P7pEaElrekbLqkWPYkgqNW1oeiNYC6xXifBnT9dVBOnNQRvOE9riU9w==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.1.3.tgz", + "integrity": "sha512-mARDSXSEgllNzMw6N+mC+r1AQlEBO3meEAkR/UlfAgnMzJUB3goRBWgip1EAMG99wh36MDqzo86SfIX5Y+VEaw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^4.0.0", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@smithy/protocol-http": "^5.1.3", + "@smithy/types": "^4.3.2", "@smithy/util-hex-encoding": "^4.0.0", - "@smithy/util-middleware": "^4.0.2", + "@smithy/util-middleware": "^4.0.5", "@smithy/util-uri-escape": "^4.0.0", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" @@ -9381,17 +11237,18 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.2.6.tgz", - "integrity": "sha512-WEqP0wQ1N/lVS4pwNK1Vk+0i6QIr66cq/xbu1dVy1tM0A0qYwAYyz0JhbquzM5pMa8s89lyDBtoGKxo7iG74GA==", + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.4.10.tgz", + "integrity": "sha512-iW6HjXqN0oPtRS0NK/zzZ4zZeGESIFcxj2FkWed3mcK8jdSdHzvnCKXSjvewESKAgGKAbJRA+OsaqKhkdYRbQQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.3.3", - "@smithy/middleware-endpoint": "^4.1.6", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", - "@smithy/util-stream": "^4.2.0", + "@smithy/core": "^3.8.0", + "@smithy/middleware-endpoint": "^4.1.18", + "@smithy/middleware-stack": "^4.0.5", + "@smithy/protocol-http": "^5.1.3", + "@smithy/types": "^4.3.2", + "@smithy/util-stream": "^4.2.4", "tslib": "^2.6.2" }, "engines": { @@ -9399,9 +11256,9 @@ } }, "node_modules/@smithy/types": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.0.tgz", - "integrity": "sha512-+1iaIQHthDh9yaLhRzaoQxRk+l9xlk+JjMFxGRhNLz+m9vKOkjNeU8QuB4w3xvzHyVR/BVlp/4AXDHjoRIkfgQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.2.tgz", + "integrity": "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -9412,13 +11269,14 @@ } }, "node_modules/@smithy/url-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.0.2.tgz", - "integrity": "sha512-Bm8n3j2ScqnT+kJaClSVCMeiSenK6jVAzZCNewsYWuZtnBehEz4r2qP0riZySZVfzB+03XZHJeqfmJDkeeSLiQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.0.5.tgz", + "integrity": "sha512-j+733Um7f1/DXjYhCbvNXABV53NyCRRA54C7bNEIxNPs0YjfRxeMKjjgm2jvTYrciZyCjsicHwQ6Q0ylo+NAUw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/querystring-parser": "^4.0.2", - "@smithy/types": "^4.2.0", + "@smithy/querystring-parser": "^4.0.5", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -9489,14 +11347,15 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.14.tgz", - "integrity": "sha512-l7QnMX8VcDOH6n/fBRu4zqguSlOBZxFzWqp58dXFSARFBjNlmEDk5G/z4T7BMGr+rI0Pg8MkhmMUfEtHFgpy2g==", + "version": "4.0.26", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.26.tgz", + "integrity": "sha512-xgl75aHIS/3rrGp7iTxQAOELYeyiwBu+eEgAk4xfKwJJ0L8VUjhO2shsDpeil54BOFsqmk5xfdesiewbUY5tKQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.0.2", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", + "@smithy/property-provider": "^4.0.5", + "@smithy/smithy-client": "^4.4.10", + "@smithy/types": "^4.3.2", "bowser": "^2.11.0", "tslib": "^2.6.2" }, @@ -9505,17 +11364,18 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.14.tgz", - "integrity": "sha512-Ujs1gsWDo3m/T63VWBTBmHLTD2UlU6J6FEokLCEp7OZQv45jcjLHoxTwgWsi8ULpsYozvH4MTWkRP+bhwr0vDg==", + "version": "4.0.26", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.26.tgz", + "integrity": "sha512-z81yyIkGiLLYVDetKTUeCZQ8x20EEzvQjrqJtb/mXnevLq2+w3XCEWTJ2pMp401b6BkEkHVfXb/cROBpVauLMQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/config-resolver": "^4.1.2", - "@smithy/credential-provider-imds": "^4.0.4", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/property-provider": "^4.0.2", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", + "@smithy/config-resolver": "^4.1.5", + "@smithy/credential-provider-imds": "^4.0.7", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/property-provider": "^4.0.5", + "@smithy/smithy-client": "^4.4.10", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -9523,13 +11383,14 @@ } }, "node_modules/@smithy/util-endpoints": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.0.4.tgz", - "integrity": "sha512-VfFATC1bmZLV2858B/O1NpMcL32wYo8DPPhHxYxDCodDl3f3mSZ5oJheW1IF91A0EeAADz2WsakM/hGGPGNKLg==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.0.7.tgz", + "integrity": "sha512-klGBP+RpBp6V5JbrY2C/VKnHXn3d5V2YrifZbmMY8os7M6m8wdYFoO6w/fe5VkP+YVwrEktW3IWYaSQVNZJ8oQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.1.1", - "@smithy/types": "^4.2.0", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -9549,12 +11410,13 @@ } }, "node_modules/@smithy/util-middleware": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.0.2.tgz", - "integrity": "sha512-6GDamTGLuBQVAEuQ4yDQ+ti/YINf/MEmIegrEeg7DdB/sld8BX1lqt9RRuIcABOhAGTA50bRbPzErez7SlDtDQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.0.5.tgz", + "integrity": "sha512-N40PfqsZHRSsByGB81HhSo+uvMxEHT+9e255S53pfBw/wI6WKDI7Jw9oyu5tJTLwZzV5DsMha3ji8jk9dsHmQQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -9562,13 +11424,14 @@ } }, "node_modules/@smithy/util-retry": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.0.3.tgz", - "integrity": "sha512-DPuYjZQDXmKr/sNvy9Spu8R/ESa2e22wXZzSAY6NkjOLj6spbIje/Aq8rT97iUMdDj0qHMRIe+bTxvlU74d9Ng==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.0.7.tgz", + "integrity": "sha512-TTO6rt0ppK70alZpkjwy+3nQlTiqNfoXja+qwuAchIEAIoSZW8Qyd76dvBv3I5bCpE38APafG23Y/u270NspiQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/service-error-classification": "^4.0.3", - "@smithy/types": "^4.2.0", + "@smithy/service-error-classification": "^4.0.7", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -9576,14 +11439,15 @@ } }, "node_modules/@smithy/util-stream": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.2.0.tgz", - "integrity": "sha512-Vj1TtwWnuWqdgQI6YTUF5hQ/0jmFiOYsc51CSMgj7QfyO+RF4EnT2HNjoviNlOOmgzgvf3f5yno+EiC4vrnaWQ==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.2.4.tgz", + "integrity": "sha512-vSKnvNZX2BXzl0U2RgCLOwWaAP9x/ddd/XobPK02pCbzRm5s55M53uwb1rl/Ts7RXZvdJZerPkA+en2FDghLuQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/types": "^4.2.0", + "@smithy/fetch-http-handler": "^5.1.1", + "@smithy/node-http-handler": "^4.1.1", + "@smithy/types": "^4.3.2", "@smithy/util-base64": "^4.0.0", "@smithy/util-buffer-from": "^4.0.0", "@smithy/util-hex-encoding": "^4.0.0", @@ -9594,37 +11458,6 @@ "node": ">=18.0.0" } }, - "node_modules/@smithy/util-stream/node_modules/@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-stream/node_modules/@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@smithy/util-uri-escape": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.0.0.tgz", @@ -9651,27 +11484,13 @@ } }, "node_modules/@smithy/util-waiter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.0.3.tgz", - "integrity": "sha512-JtaY3FxmD+te+KSI2FJuEcfNC9T/DGGVf551babM7fAaXhjJUt7oSYurH1Devxd2+BOSUACCgt3buinx4UnmEA==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.0.6.tgz", + "integrity": "sha512-slcr1wdRbX7NFphXZOxtxRNA7hXAAtJAXJDE/wdoMAos27SIquVCKiSqfB6/28YzQ8FCsB5NKkhdM5gMADbqxg==", "dev": true, "dependencies": { - "@smithy/abort-controller": "^4.0.2", - "@smithy/types": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-waiter/node_modules/@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.3.0", + "@smithy/abort-controller": "^4.0.4", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" }, "engines": { @@ -9779,19 +11598,19 @@ } }, "node_modules/@types/amqplib": { - "version": "0.5.17", - "resolved": "https://registry.npmjs.org/@types/amqplib/-/amqplib-0.5.17.tgz", - "integrity": "sha512-RImqiLP1swDqWBW8UX9iBXVEOw6MYzNmxdXqfemDfdwtUvdTM/W0s2RlSuMVIGkRhaWvpkC9O/N81VzzQwfAbw==", + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/@types/amqplib/-/amqplib-0.10.7.tgz", + "integrity": "sha512-IVj3avf9AQd2nXCx0PGk/OYq7VmHiyNxWFSb5HhU9ATh+i+gHWvVcljFTcTWQ/dyHJCTrzCixde+r/asL2ErDA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/bluebird": "*", "@types/node": "*" } }, "node_modules/@types/aws-lambda": { - "version": "8.10.150", - "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.150.tgz", - "integrity": "sha512-AX+AbjH/rH5ezX1fbK8onC/a+HyQHo7QGmvoxAE42n22OsciAxvZoZNEr22tbXs8WfP1nIsBjKDpgPm3HjOZbA==" + "version": "8.10.152", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.152.tgz", + "integrity": "sha512-soT/c2gYBnT5ygwiHPmd9a1bftj462NWVk2tKCc1PYHSIacB2UwbTS2zYG4jzag1mRDuzg/OjtxQjQ2NKRB6Rw==" }, "node_modules/@types/babel__code-frame": { "version": "7.0.6", @@ -9799,16 +11618,10 @@ "integrity": "sha512-Anitqkl3+KrzcW2k77lRlg/GfLZLWXBuNgbEcIOU6M92yw42vsd3xV/Z/yAHEj8m+KUjL6bWOVOFqX8PFPJ4LA==", "dev": true }, - "node_modules/@types/bluebird": { - "version": "3.5.42", - "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.42.tgz", - "integrity": "sha512-Jhy+MWRlro6UjVi578V/4ZGNfeCOcNCp0YaFNIUGFKlImowqwb1O/22wDVk3FDGMLqxdpOV3qQHD5fPEH4hK6A==", - "dev": true - }, "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", "dev": true, "dependencies": { "@types/connect": "*", @@ -9863,9 +11676,9 @@ } }, "node_modules/@types/content-disposition": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.8.tgz", - "integrity": "sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==", + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.9.tgz", + "integrity": "sha512-8uYXI3Gw35MhiVYhG3s295oihrxRyytcRHjSjqnqZVDDy/xcGBRny7+Xj1Wgfhv5QzRtN2hB2dVRBUX9XW3UcQ==", "dev": true }, "node_modules/@types/convert-source-map": { @@ -9875,9 +11688,9 @@ "dev": true }, "node_modules/@types/cookies": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.9.0.tgz", - "integrity": "sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.9.1.tgz", + "integrity": "sha512-E/DPgzifH4sM1UMadJMWd6mO2jOd4g1Ejwzx8/uRCDpJis1IrlyQEcGAYEomtAqRYmD5ORbNXMeI9U0RiVGZbg==", "dev": true, "dependencies": { "@types/connect": "*", @@ -9887,9 +11700,9 @@ } }, "node_modules/@types/cors": { - "version": "2.8.18", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.18.tgz", - "integrity": "sha512-nX3d0sxJW41CqQvfOzVG1NCTXfFDrDWIghCZncpHeWlVFd81zxB/DLhg7avFg6eHLCRX7ckBmoIIcqa++upvJA==", + "version": "2.8.19", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", "dev": true, "dependencies": { "@types/node": "*" @@ -9902,27 +11715,26 @@ "dev": true }, "node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true }, "node_modules/@types/express": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz", - "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.3.tgz", + "integrity": "sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==", "dev": true, "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", + "@types/express-serve-static-core": "^5.0.0", "@types/serve-static": "*" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.6", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", - "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.7.tgz", + "integrity": "sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==", "dev": true, "dependencies": { "@types/node": "*", @@ -9948,9 +11760,9 @@ "dev": true }, "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", "dev": true }, "node_modules/@types/ioredis4": { @@ -9988,9 +11800,9 @@ } }, "node_modules/@types/jquery": { - "version": "3.5.32", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.32.tgz", - "integrity": "sha512-b9Xbf4CkMqS02YH8zACqN1xzdxc3cO735Qe5AbSUFmyOiaWAbcpqh9Wna+Uk0vgACvoQHpWDg2rGdHkYPLmCiQ==", + "version": "3.5.33", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.33.tgz", + "integrity": "sha512-SeyVJXlCZpEki5F0ghuYe+L+PprQta6nRZqhONt9F13dWBtR/ftoaIbdRQ7cis7womE+X2LKhsDdDtkkDhJS6g==", "dev": true, "dependencies": { "@types/sizzle": "*" @@ -10006,7 +11818,8 @@ "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/keygrip": { "version": "1.0.6", @@ -10111,12 +11924,22 @@ } }, "node_modules/@types/node": { - "version": "18.18.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", - "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.1.0.tgz", + "integrity": "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==", + "dependencies": { + "undici-types": "~7.8.0" + } + }, + "node_modules/@types/node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==", + "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "@types/node": "*", + "form-data": "^4.0.0" } }, "node_modules/@types/normalize-package-data": { @@ -10140,9 +11963,9 @@ "dev": true }, "node_modules/@types/pg": { - "version": "8.15.4", - "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.15.4.tgz", - "integrity": "sha512-I6UNVBAoYbvuWkkU3oosC8yxqH21f4/Jc4DK71JLG3dT2mdlGe1z+ep/LQGXaKaOgcvUrsQoPRqfgtMcvZiJhg==", + "version": "8.15.5", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.15.5.tgz", + "integrity": "sha512-LF7lF6zWEKxuT3/OR8wAZGzkg4ENGXFNyiV/JeOt9z5B+0ZVwbql9McqX5c/WStFq1GaGso7H1AzP/qSzmlCKQ==", "dependencies": { "@types/node": "*", "pg-protocol": "*", @@ -10157,60 +11980,10 @@ "@types/pg": "*" } }, - "node_modules/@types/pg/node_modules/pg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "dependencies": { - "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@types/pg/node_modules/postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@types/pg/node_modules/postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@types/pg/node_modules/postgres-date": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@types/pg/node_modules/postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "dependencies": { - "xtend": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@types/prop-types": { - "version": "15.7.14", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", - "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", "dev": true }, "node_modules/@types/qs": { @@ -10226,9 +11999,9 @@ "dev": true }, "node_modules/@types/react": { - "version": "17.0.87", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.87.tgz", - "integrity": "sha512-wpg9AbtJ6agjA+BKYmhG6dRWEU/2DHYwMzCaBzsz137ft6IyuqZ5fI4ic1DWL4DrI03Zy78IyVE6ucrXl0mu4g==", + "version": "17.0.88", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.88.tgz", + "integrity": "sha512-HEOvpzcFWkEcHq4EsTChnpimRc3Lz1/qzYRDFtobFp4obVa6QVjCDMjWmkgxgaTYttNvyjnldY8MUflGp5YiUw==", "dev": true, "dependencies": { "@types/prop-types": "*", @@ -10255,21 +12028,14 @@ } }, "node_modules/@types/readable-stream": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.18.tgz", - "integrity": "sha512-21jK/1j+Wg+7jVw1xnSwy/2Q1VgVjWuFssbYGTREPUBeZ+rqVFl2udq0IkxzPC0ZhOzVceUbyIACFZKLqKEBlA==", + "version": "4.0.21", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.21.tgz", + "integrity": "sha512-19eKVv9tugr03IgfXlA9UVUVRbW6IuqRO5B92Dl4a6pT7K8uaGrNS0GkxiZD0BOk6PLuXl5FhWl//eX/pzYdTQ==", "dev": true, "dependencies": { - "@types/node": "*", - "safe-buffer": "~5.1.1" + "@types/node": "*" } }, - "node_modules/@types/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, "node_modules/@types/resolve": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", @@ -10299,9 +12065,9 @@ "dev": true }, "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "version": "0.17.5", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", + "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", "dev": true, "dependencies": { "@types/mime": "^1", @@ -10309,9 +12075,9 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz", + "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==", "dev": true, "dependencies": { "@types/http-errors": "*", @@ -10366,11 +12132,10 @@ "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==" }, "node_modules/@types/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==", - "dev": true, - "license": "MIT" + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "dev": true }, "node_modules/@types/webidl-conversions": { "version": "7.0.3", @@ -10385,12 +12150,11 @@ "dev": true }, "node_modules/@types/whatwg-url": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", - "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", + "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", "dev": true, "dependencies": { - "@types/node": "*", "@types/webidl-conversions": "*" } }, @@ -10433,6 +12197,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.4.0", "@typescript-eslint/scope-manager": "5.62.0", @@ -10462,14 +12227,19 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "node_modules/@typescript-eslint/experimental-utils": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.8.1.tgz", + "integrity": "sha512-fbodVnjIDU4JpeXWRDsG5IfIjYBxEvs8EBO8W1+YVdtrc2B9ppfof5sZhVEDOtgTfFHnYQJDI8+qdqLYO4ceww==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.8.1", + "@typescript-eslint/types": "5.8.1", + "@typescript-eslint/typescript-estree": "5.8.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -10477,13 +12247,21 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.8.1.tgz", + "integrity": "sha512-DGxJkNyYruFH3NIZc3PwrzwOQAg7vvgsHsHCILOLvUpupgkwDZdNq/cXU3BjF4LNrCsVg0qxEyWasys5AiJ85Q==", "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.8.1", + "@typescript-eslint/visitor-keys": "5.8.1" + }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -10492,15 +12270,12 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.8.1.tgz", + "integrity": "sha512-L/FlWCCgnjKOLefdok90/pqInkomLnAcF9UAzNr+DSqMC3IffzumHTQTrINXhP1gVp9zlHiYYjvozVZDPleLcA==", "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -10509,16 +12284,20 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.8.1.tgz", + "integrity": "sha512-26lQ8l8tTbG7ri7xEcCFT9ijU5Fk+sx/KRRyyzCv7MQ+rZZlqiDPtMKWLC8P7o+dtCnby4c+OlxuX1tp8WfafQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" + "@typescript-eslint/types": "5.8.1", + "@typescript-eslint/visitor-keys": "5.8.1", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -10527,37 +12306,22 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, "peerDependenciesMeta": { "typescript": { "optional": true } } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.8.1.tgz", + "integrity": "sha512-SWgiWIwocK6NralrJarPZlWdr0hZnj5GXHIgfdm8hNkyKvpeQuFyLP6YjSIe9kf3YBIfU6OHSZLYkQ+smZwtNg==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "@typescript-eslint/types": "5.8.1", + "eslint-visitor-keys": "^3.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -10566,19 +12330,17 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "node_modules/@typescript-eslint/parser": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -10587,20 +12349,24 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, "peerDependenciesMeta": { "typescript": { "optional": true } } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "node_modules/@typescript-eslint/scope-manager": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/visitor-keys": "5.62.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -10615,6 +12381,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "5.62.0", "@typescript-eslint/utils": "5.62.0", @@ -10637,111 +12404,12 @@ } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "node_modules/@typescript-eslint/types": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -10750,11 +12418,12 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "node_modules/@typescript-eslint/typescript-estree": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0", @@ -10777,11 +12446,39 @@ } } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "eslint-visitor-keys": "^3.3.0" @@ -10795,9 +12492,9 @@ } }, "node_modules/@typespec/ts-http-runtime": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.2.2.tgz", - "integrity": "sha512-Gz/Sm64+Sq/vklJu1tt9t+4R2lvnud8NbTD/ZfpZtMiUX7YeVpCA8j6NSW8ptwcoLL+NmYANwqP8DV0q/bwl2w==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.0.tgz", + "integrity": "sha512-sOx1PKSuFwnIl7z4RN0Ls7N9AQawmR9r66eI5rFCzLDIs8HTIYrIpH9QjYWoX0lkgGrkLxXhi4QnK7MizPRrIg==", "dev": true, "dependencies": { "http-proxy-agent": "^7.0.0", @@ -10805,7 +12502,16 @@ "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" + } + }, + "node_modules/@typespec/ts-http-runtime/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "engines": { + "node": ">= 14" } }, "node_modules/@typespec/ts-http-runtime/node_modules/http-proxy-agent": { @@ -10821,6 +12527,19 @@ "node": ">= 14" } }, + "node_modules/@typespec/ts-http-runtime/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/@web/browser-logs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@web/browser-logs/-/browser-logs-0.4.1.tgz", @@ -11453,9 +13172,9 @@ } }, "node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "bin": { "acorn": "bin/acorn" }, @@ -11476,6 +13195,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" } @@ -11514,11 +13234,15 @@ "dev": true }, "node_modules/agent-base": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, "engines": { - "node": ">= 14" + "node": ">= 6.0.0" } }, "node_modules/agentkeepalive": { @@ -11698,6 +13422,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ansi-regex": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", @@ -11902,17 +13638,20 @@ "dev": true }, "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "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" + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -11935,6 +13674,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", @@ -11953,6 +13693,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", @@ -12150,13 +13891,13 @@ } }, "node_modules/axios": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", - "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz", + "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==", "dev": true, "dependencies": { "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", + "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, @@ -12218,13 +13959,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz", - "integrity": "sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==", + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.4", + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", "semver": "^6.3.1" }, "peerDependencies": { @@ -12254,12 +13995,12 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz", - "integrity": "sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.4" + "@babel/helper-define-polyfill-provider": "^0.6.5" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -12272,16 +14013,16 @@ "dev": true }, "node_modules/bare-events": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", - "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.6.0.tgz", + "integrity": "sha512-EKZ5BTXYExaNqi3I3f9RtEsaI/xBSGjE0XZCZilPzFAV/goswFHuPd9jEZlPIZ/iNZJwDSao9qRiScySz7MbQg==", "dev": true, "optional": true }, "node_modules/bare-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.5.tgz", - "integrity": "sha512-1zccWBMypln0jEE05LzZt+V/8y8AQsQQqxtklqaIyg5nu6OAYFhZxPXinJTSG+kU5qyNmeLgcn9AW7eHiCHVLA==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.6.tgz", + "integrity": "sha512-25RsLF33BqooOEFNdMcEhMpJy8EoR88zSMrnOQOaM3USnOK2VmaJ1uaQEwPA6AQjrv1lXChScosN6CzbwbO9OQ==", "dev": true, "optional": true, "dependencies": { @@ -12397,11 +14138,12 @@ "dev": true }, "node_modules/better-sqlite3": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.0.0.tgz", - "integrity": "sha512-1NnNhmT3EZTsKtofJlMox1jkMxdedILury74PwUbQBjWgo4tL4kf7uTAjU55mgQwjdzqakSTjkf+E1imrFwjnA==", + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.10.0.tgz", + "integrity": "sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ==", "dev": true, "hasInstallScript": true, + "license": "MIT", "dependencies": { "bindings": "^1.5.0", "prebuild-install": "^7.1.1" @@ -12417,10 +14159,9 @@ } }, "node_modules/bignumber.js": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", - "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==", - "license": "MIT", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", + "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", "engines": { "node": "*" } @@ -12613,9 +14354,9 @@ "dev": true }, "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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "dependencies": { "balanced-match": "^1.0.0" @@ -12640,9 +14381,9 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.24.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.5.tgz", - "integrity": "sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==", + "version": "4.25.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", + "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", "dev": true, "funding": [ { @@ -12659,8 +14400,8 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001716", - "electron-to-chromium": "^1.5.149", + "caniuse-lite": "^1.0.30001726", + "electron-to-chromium": "^1.5.173", "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.3" }, @@ -12672,15 +14413,12 @@ } }, "node_modules/bson": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", - "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.4.tgz", + "integrity": "sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==", "dev": true, - "dependencies": { - "buffer": "^5.6.0" - }, "engines": { - "node": ">=6.9.0" + "node": ">=16.20.1" } }, "node_modules/buffer": { @@ -12834,18 +14572,6 @@ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true }, - "node_modules/cacache/node_modules/minipass-collect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", - "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", - "dev": true, - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/cache-content-type": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", @@ -12987,9 +14713,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001718", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz", - "integrity": "sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==", + "version": "1.0.30001731", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001731.tgz", + "integrity": "sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg==", "dev": true, "funding": [ { @@ -13059,15 +14785,6 @@ "node": ">=4" } }, - "node_modules/chai/node_modules/type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -13099,6 +14816,18 @@ "url": "https://github.com/chalk/chalk-template?sponsor=1" } }, + "node_modules/chalk/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/chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", @@ -13250,12 +14979,40 @@ "npm": ">=5.0.0" } }, + "node_modules/cli-highlight/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "node_modules/cli-highlight/node_modules/parse5": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", "dev": true }, + "node_modules/cli-highlight/node_modules/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/cli-highlight/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -13274,6 +15031,15 @@ "node": ">=10" } }, + "node_modules/cli-highlight/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/cli-spinners": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", @@ -13311,21 +15077,22 @@ } }, "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/cliui/node_modules/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", @@ -13361,24 +15128,11 @@ "node": ">=6" } }, - "node_modules/clone-deep/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/cluster-key-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz", - "integrity": "sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", "dev": true, - "license": "APACHE-2.0", "engines": { "node": ">=0.10.0" } @@ -13651,12 +15405,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true - }, "node_modules/connect": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", @@ -13928,12 +15676,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.42.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.42.0.tgz", - "integrity": "sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ==", + "version": "3.44.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.44.0.tgz", + "integrity": "sha512-JepmAj2zfl6ogy34qfWtcE7nHKAJnKsQFRn++scjVS2bZFllwptzw61BZcZFYBPpUznLfAvh0LGhxKppk04ClA==", "dev": true, "dependencies": { - "browserslist": "^4.24.4" + "browserslist": "^4.25.1" }, "funding": { "type": "opencollective", @@ -13941,11 +15689,10 @@ } }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true, - "license": "MIT" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true }, "node_modules/cors": { "version": "2.8.5", @@ -14061,36 +15808,36 @@ "dev": true }, "node_modules/csv": { - "version": "6.3.11", - "resolved": "https://registry.npmjs.org/csv/-/csv-6.3.11.tgz", - "integrity": "sha512-a8bhT76Q546jOElHcTrkzWY7Py925mfLO/jqquseH61ThOebYwOjLbWHBqdRB4K1VpU36sTyIei6Jwj7QdEZ7g==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/csv/-/csv-6.4.1.tgz", + "integrity": "sha512-ajGosmTGnTwYyGl8STqZDu7R6LkDf3xL39XiOmliV/GufQeVUxHzTKIm4NOBCwmEuujK7B6isxs4Uqt9GcRCvA==", "dev": true, "dependencies": { - "csv-generate": "^4.4.2", - "csv-parse": "^5.6.0", - "csv-stringify": "^6.5.2", - "stream-transform": "^3.3.3" + "csv-generate": "^4.5.0", + "csv-parse": "^6.1.0", + "csv-stringify": "^6.6.0", + "stream-transform": "^3.4.0" }, "engines": { "node": ">= 0.1.90" } }, "node_modules/csv-generate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/csv-generate/-/csv-generate-4.4.2.tgz", - "integrity": "sha512-W6nVsf+rz0J3yo9FOjeer7tmzBJKaTTxf7K0uw6GZgRocZYPVpuSWWa5/aoWWrjQZj4/oNIKTYapOM7hiNjVMA==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/csv-generate/-/csv-generate-4.5.0.tgz", + "integrity": "sha512-aQr/vmOKyBSBHNwYhAoXw1+kUsPnMSwmYgpNoo36rIXoG1ecWILnvPGZeQ6oUjzrWknZAD3+jfpqYOBAl4x15A==", "dev": true }, "node_modules/csv-parse": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.6.0.tgz", - "integrity": "sha512-l3nz3euub2QMg5ouu5U09Ew9Wf6/wQ8I++ch1loQ0ljmzhmfZYrH9fflS22i/PQEvsPvxCwxgz5q7UB8K1JO4Q==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-6.1.0.tgz", + "integrity": "sha512-CEE+jwpgLn+MmtCpVcPtiCZpVtB6Z2OKPTr34pycYYoL7sxdOkXDdQ4lRiw6ioC0q6BLqhc6cKweCVvral8yhw==", "dev": true }, "node_modules/csv-stringify": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.5.2.tgz", - "integrity": "sha512-RFPahj0sXcmUyjrObAK+DOWtMvMIFV328n4qZJhgX3x2RqkQgOTU2mCUmiFR0CzM6AzChlRSUErjiJeEt8BaQA==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.6.0.tgz", + "integrity": "sha512-YW32lKOmIBgbxtu3g5SaiqWNwa/9ISQt2EcgOq0+RAIFufFp9is6tqNnKahqE5kuKvrnYAzs28r+s6pXJR8Vcw==", "dev": true }, "node_modules/custom-event": { @@ -14580,6 +16327,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -14719,9 +16467,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.155", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.155.tgz", - "integrity": "sha512-ps5KcGGmwL8VaeJlvlDlu4fORQpv3+GIcF5I3f9tUKUlJ/wsysh6HU8P5L1XWRYeXfA0oJd4PyM8ds8zTFf6Ng==", + "version": "1.5.194", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.194.tgz", + "integrity": "sha512-SdnWJwSUot04UR51I2oPD8kuP2VI37/CADR1OHsFOUzZIvfWJBO6q11k5P/uKNyTT3cdOsnyjkrZ+DDShqYqJA==", "dev": true }, "node_modules/emoji-regex": { @@ -14763,9 +16511,9 @@ } }, "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==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "dev": true, "dependencies": { "once": "^1.4.0" @@ -14912,9 +16660,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.18.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", - "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz", + "integrity": "sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -14977,7 +16725,6 @@ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", "dev": true, - "license": "MIT", "bin": { "envinfo": "dist/cli.js" }, @@ -15025,27 +16772,27 @@ "dev": true }, "node_modules/es-abstract": { - "version": "1.23.9", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", - "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.3", + "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", + "es-object-atoms": "^1.1.1", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.0", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", @@ -15057,21 +16804,24 @@ "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", + "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.0", + "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.3", + "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.3", + "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", @@ -15080,7 +16830,7 @@ "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.18" + "which-typed-array": "^1.1.19" }, "engines": { "node": ">= 0.4" @@ -15090,17 +16840,17 @@ } }, "node_modules/es-aggregate-error": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/es-aggregate-error/-/es-aggregate-error-1.0.13.tgz", - "integrity": "sha512-KkzhUUuD2CUMqEc8JEqsXEMDHzDPE8RCjZeUBitsnB1eNcAJWQPiciKsMXe3Yytj4Flw1XLl46Qcf9OxvZha7A==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/es-aggregate-error/-/es-aggregate-error-1.0.14.tgz", + "integrity": "sha512-3YxX6rVb07B5TV11AV5wsL7nQCHXNwoHPsQC8S4AmBiqYhyNCJ5BRKXkXyDJvs8QzXN20NgRtxe3dEEQD9NLHA==", "dev": true, "dependencies": { "define-data-property": "^1.1.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", + "es-abstract": "^1.24.0", "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "globalthis": "^1.0.3", + "globalthis": "^1.0.4", "has-property-descriptors": "^1.0.2", "set-function-name": "^2.0.2" }, @@ -15167,6 +16917,7 @@ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -15204,9 +16955,9 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz", - "integrity": "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz", + "integrity": "sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==", "dev": true, "hasInstallScript": true, "bin": { @@ -15216,31 +16967,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.4", - "@esbuild/android-arm": "0.25.4", - "@esbuild/android-arm64": "0.25.4", - "@esbuild/android-x64": "0.25.4", - "@esbuild/darwin-arm64": "0.25.4", - "@esbuild/darwin-x64": "0.25.4", - "@esbuild/freebsd-arm64": "0.25.4", - "@esbuild/freebsd-x64": "0.25.4", - "@esbuild/linux-arm": "0.25.4", - "@esbuild/linux-arm64": "0.25.4", - "@esbuild/linux-ia32": "0.25.4", - "@esbuild/linux-loong64": "0.25.4", - "@esbuild/linux-mips64el": "0.25.4", - "@esbuild/linux-ppc64": "0.25.4", - "@esbuild/linux-riscv64": "0.25.4", - "@esbuild/linux-s390x": "0.25.4", - "@esbuild/linux-x64": "0.25.4", - "@esbuild/netbsd-arm64": "0.25.4", - "@esbuild/netbsd-x64": "0.25.4", - "@esbuild/openbsd-arm64": "0.25.4", - "@esbuild/openbsd-x64": "0.25.4", - "@esbuild/sunos-x64": "0.25.4", - "@esbuild/win32-arm64": "0.25.4", - "@esbuild/win32-ia32": "0.25.4", - "@esbuild/win32-x64": "0.25.4" + "@esbuild/aix-ppc64": "0.25.8", + "@esbuild/android-arm": "0.25.8", + "@esbuild/android-arm64": "0.25.8", + "@esbuild/android-x64": "0.25.8", + "@esbuild/darwin-arm64": "0.25.8", + "@esbuild/darwin-x64": "0.25.8", + "@esbuild/freebsd-arm64": "0.25.8", + "@esbuild/freebsd-x64": "0.25.8", + "@esbuild/linux-arm": "0.25.8", + "@esbuild/linux-arm64": "0.25.8", + "@esbuild/linux-ia32": "0.25.8", + "@esbuild/linux-loong64": "0.25.8", + "@esbuild/linux-mips64el": "0.25.8", + "@esbuild/linux-ppc64": "0.25.8", + "@esbuild/linux-riscv64": "0.25.8", + "@esbuild/linux-s390x": "0.25.8", + "@esbuild/linux-x64": "0.25.8", + "@esbuild/netbsd-arm64": "0.25.8", + "@esbuild/netbsd-x64": "0.25.8", + "@esbuild/openbsd-arm64": "0.25.8", + "@esbuild/openbsd-x64": "0.25.8", + "@esbuild/openharmony-arm64": "0.25.8", + "@esbuild/sunos-x64": "0.25.8", + "@esbuild/win32-arm64": "0.25.8", + "@esbuild/win32-ia32": "0.25.8", + "@esbuild/win32-x64": "0.25.8" } }, "node_modules/escalade": { @@ -15321,6 +17073,7 @@ "integrity": "sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, + "license": "MIT", "dependencies": { "@eslint/eslintrc": "^1.0.5", "@humanwhocodes/config-array": "^0.9.2", @@ -15368,39 +17121,12 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-config-airbnb-base": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", - "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", - "dev": true, - "dependencies": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5", - "semver": "^6.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "peerDependencies": { - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.2" - } - }, - "node_modules/eslint-config-airbnb-base/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/eslint-config-prettier": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", "dev": true, + "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -15413,6 +17139,7 @@ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", @@ -15424,15 +17151,17 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-module-utils": { - "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==", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -15450,6 +17179,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -15511,6 +17241,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", @@ -15536,10 +17267,11 @@ } }, "node_modules/eslint-plugin-import/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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -15550,6 +17282,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -15559,6 +17292,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -15571,6 +17305,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -15583,6 +17318,7 @@ "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" } @@ -15608,9 +17344,9 @@ } }, "node_modules/eslint-plugin-node/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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", @@ -15663,10 +17399,11 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.5.tgz", + "integrity": "sha512-9Ni+xgemM2IWLq6aXEpP2+V/V30GeA/46Ar629vcMqVPodFFWC9skHu/D1phvuqtS8bJCFnNf01/qcmqYEwNfg==", "dev": true, + "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0" }, @@ -15701,6 +17438,7 @@ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^2.0.0" }, @@ -15719,6 +17457,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10" } @@ -15728,6 +17467,7 @@ "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, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -15739,12 +17479,13 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/eslint/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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", @@ -15756,6 +17497,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -15772,30 +17514,17 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -15815,18 +17544,6 @@ "node": "*" } }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/esm": { "version": "3.2.25", "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", @@ -15841,6 +17558,7 @@ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -15975,11 +17693,10 @@ } }, "node_modules/execa": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, - "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -16421,22 +18138,18 @@ "dev": true }, "node_modules/fast-xml-parser": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", - "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", + "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" } ], "dependencies": { - "strnum": "^1.0.5" + "strnum": "^2.1.0" }, "bin": { "fxparser": "src/cli/cli.js" @@ -16481,102 +18194,6 @@ "integrity": "sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==", "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/pino": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-8.21.0.tgz", - "integrity": "sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==", - "dev": true, - "dependencies": { - "atomic-sleep": "^1.0.0", - "fast-redact": "^3.1.1", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^1.2.0", - "pino-std-serializers": "^6.0.0", - "process-warning": "^3.0.0", - "quick-format-unescaped": "^4.0.3", - "real-require": "^0.2.0", - "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^3.7.0", - "thread-stream": "^2.6.0" - }, - "bin": { - "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/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 - }, - "node_modules/fastify/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "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/fastify/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/fastq": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", @@ -16643,6 +18260,7 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -16834,6 +18452,7 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", @@ -16844,10 +18463,11 @@ } }, "node_modules/flat-cache/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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -16859,6 +18479,7 @@ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -16879,6 +18500,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -16892,6 +18514,7 @@ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -16915,9 +18538,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "dev": true, "funding": [ { @@ -16966,20 +18589,42 @@ } }, "node_modules/form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { "node": ">= 6" } }, + "node_modules/form-data-encoder": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", + "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==", + "dev": true, + "license": "MIT" + }, + "node_modules/formdata-node": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", + "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" + }, + "engines": { + "node": ">= 12.20" + } + }, "node_modules/formidable": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", @@ -17126,7 +18771,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/functions-have-names": { "version": "1.2.3", @@ -17166,31 +18812,35 @@ "optional": true }, "node_modules/gaxios": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", - "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz", + "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==", + "dev": true, + "optional": true, + "peer": true, "dependencies": { "extend": "^3.0.2", - "https-proxy-agent": "^7.0.1", + "https-proxy-agent": "^5.0.0", "is-stream": "^2.0.0", - "node-fetch": "^2.6.9", - "uuid": "^9.0.1" + "node-fetch": "^2.6.9" }, "engines": { - "node": ">=14" + "node": ">=12" } }, "node_modules/gcp-metadata": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.1.tgz", - "integrity": "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz", + "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==", + "dev": true, + "optional": true, + "peer": true, "dependencies": { - "gaxios": "^6.1.1", - "google-logging-utils": "^0.0.2", + "gaxios": "^5.0.0", "json-bigint": "^1.0.0" }, "engines": { - "node": ">=14" + "node": ">=12" } }, "node_modules/generate-function": { @@ -17288,6 +18938,17 @@ "node": ">=6.9.0" } }, + "node_modules/get-pkg-repo/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "node_modules/get-pkg-repo/node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -17312,6 +18973,23 @@ "node": ">=10" } }, + "node_modules/get-pkg-repo/node_modules/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/get-pkg-repo/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -17336,6 +19014,15 @@ "node": ">=10" } }, + "node_modules/get-pkg-repo/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/get-port": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", @@ -17362,11 +19049,10 @@ } }, "node_modules/get-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", - "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", + "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, - "license": "MIT", "engines": { "node": ">=10" }, @@ -17392,9 +19078,9 @@ } }, "node_modules/get-uri": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz", - "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", + "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", "dev": true, "dependencies": { "basic-ftp": "^5.0.2", @@ -17569,12 +19255,32 @@ } }, "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/globalthis": { @@ -17704,6 +19410,7 @@ "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -18037,6 +19744,15 @@ "node": ">= 0.8" } }, + "node_modules/http-errors/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/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", @@ -18065,18 +19781,6 @@ "node": ">= 6" } }, - "node_modules/http-proxy-agent/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==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, "node_modules/http-signature": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz", @@ -18092,15 +19796,16 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "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, "dependencies": { - "agent-base": "^7.1.2", + "agent-base": "6", "debug": "4" }, "engines": { - "node": ">= 14" + "node": ">= 6" } }, "node_modules/human-signals": { @@ -18200,9 +19905,9 @@ } }, "node_modules/import-in-the-middle": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.13.2.tgz", - "integrity": "sha512-Yjp9X7s2eHSXvZYQ0aye6UvwYPrVB5C2k47fuXjFKnYinAByaDZjh4t9MT2wEga9775n6WaIqyHnQhBxYtX2mg==", + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.14.2.tgz", + "integrity": "sha512-5tCuY9BV8ujfOpwtAGgsTx9CGUapcFMEEyByLv1B+v2+6DhAcw+Zr0nhQT7uwaZ7DiourxFEscghOR8e1aPLQw==", "dependencies": { "acorn": "^8.14.0", "acorn-import-attributes": "^1.9.5", @@ -18215,7 +19920,6 @@ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, - "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -18319,11 +20023,10 @@ } }, "node_modules/inquirer": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", - "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.1", @@ -18339,28 +20042,24 @@ "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6", - "wrap-ansi": "^7.0.0" + "wrap-ansi": "^6.0.1" }, "engines": { "node": ">=12.0.0" } }, "node_modules/inquirer/node_modules/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==", + "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, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=8" } }, "node_modules/internal-ip": { @@ -18791,6 +20490,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-node-process": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", + "dev": true, + "license": "MIT" + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -18843,6 +20561,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-promise": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", @@ -18919,12 +20649,14 @@ } }, "node_modules/is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "license": "MIT", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-string": { @@ -19171,9 +20903,9 @@ } }, "node_modules/istanbul-lib-processinfo/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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", @@ -19279,6 +21011,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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", @@ -19390,9 +21134,9 @@ } }, "node_modules/jake/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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", @@ -19522,21 +21266,6 @@ "node": ">= 10.13.0" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/joi": { "version": "17.12.2", "resolved": "https://registry.npmjs.org/joi/-/joi-17.12.2.tgz", @@ -19603,11 +21332,10 @@ "dev": true }, "node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, - "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -19627,7 +21355,8 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-parse-better-errors": { "version": "1.0.2", @@ -19933,9 +21662,9 @@ } }, "node_modules/karma-coverage/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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", @@ -20027,9 +21756,9 @@ } }, "node_modules/karma-webpack/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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", @@ -20103,9 +21832,9 @@ } }, "node_modules/karma/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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", @@ -20136,6 +21865,17 @@ "fsevents": "~2.3.2" } }, + "node_modules/karma/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "node_modules/karma/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -20202,6 +21942,18 @@ "url": "https://github.com/sponsors/gjtorikian/" } }, + "node_modules/karma/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/karma/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -20322,6 +22074,23 @@ "node": "*" } }, + "node_modules/karma/node_modules/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/karma/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -20340,6 +22109,15 @@ "node": ">=10" } }, + "node_modules/karma/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/keygrip": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", @@ -20357,6 +22135,7 @@ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -20867,6 +22646,41 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/lerna/node_modules/execa": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "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/lerna/node_modules/get-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lerna/node_modules/glob": { "version": "9.3.5", "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", @@ -20915,6 +22729,15 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, + "node_modules/lerna/node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/lerna/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -21007,6 +22830,18 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/lerna/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/lerna/node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -21042,15 +22877,6 @@ "webidl-conversions": "^3.0.0" } }, - "node_modules/lerna/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -21097,9 +22923,9 @@ } }, "node_modules/libnpmpublish/node_modules/ci-info": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz", - "integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.0.tgz", + "integrity": "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==", "dev": true, "funding": [ { @@ -21265,13 +23091,6 @@ "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", "dev": true }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", - "dev": true - }, "node_modules/lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", @@ -21338,6 +23157,12 @@ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "dev": true }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true + }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -21596,36 +23421,10 @@ "semver": "^7.3.5" } }, - "node_modules/make-fetch-happen/node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "dev": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-fetch-happen/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==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, "node_modules/make-fetch-happen/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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", @@ -21694,19 +23493,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/make-fetch-happen/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==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/make-fetch-happen/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -21743,6 +23529,18 @@ "node": ">=8" } }, + "node_modules/make-fetch-happen/node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/make-fetch-happen/node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -22203,6 +24001,15 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/meow/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/merge-descriptors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", @@ -22283,15 +24090,15 @@ } }, "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", "dev": true, "bin": { "mime": "cli.js" }, "engines": { - "node": ">=4.0.0" + "node": ">=10.0.0" } }, "node_modules/mime-db": { @@ -22407,35 +24214,17 @@ } }, "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "minipass": "^7.0.3" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/minipass-collect/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/minipass-fetch": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", @@ -22629,30 +24418,30 @@ } }, "node_modules/mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", + "version": "11.7.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.2.tgz", + "integrity": "sha512-lkqVJPmqqG/w5jmmFtiRvtA2jkDyNVUcefFJKb2uyX4dekk8Okgqop3cgbFiaIvj8uCRJVTP5x9dfxGyXm2jvQ==", "dev": true, "dependencies": { - "ansi-colors": "^4.1.3", "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", + "chokidar": "^4.0.1", "debug": "^4.3.5", - "diff": "^5.2.0", + "diff": "^7.0.0", "escape-string-regexp": "^4.0.0", "find-up": "^5.0.0", - "glob": "^8.1.0", + "glob": "^10.4.5", "he": "^1.2.0", "js-yaml": "^4.1.0", "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", + "minimatch": "^9.0.5", "ms": "^2.1.3", + "picocolors": "^1.1.1", "serialize-javascript": "^6.0.2", "strip-json-comments": "^3.1.1", "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", + "workerpool": "^9.2.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", "yargs-unparser": "^2.0.0" }, "bin": { @@ -22660,7 +24449,7 @@ "mocha": "bin/mocha.js" }, "engines": { - "node": ">= 14.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/mocha/node_modules/argparse": { @@ -22669,28 +24458,13 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/mocha/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "node_modules/mocha/node_modules/diff": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", "dev": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">=0.3.1" } }, "node_modules/mocha/node_modules/find-up": { @@ -22709,38 +24483,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/mocha/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -22768,18 +24510,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/mocha/node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -22810,88 +24540,131 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", "dev": true, "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=0.10.0" } }, - "node_modules/mocha/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/module-details-from-path": { + "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==" + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, + "optional": true, "engines": { - "node": ">=8.10.0" + "node": "*" } }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/mongodb": { + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.19.0.tgz", + "integrity": "sha512-H3GtYujOJdeKIMLKBT9PwlDhGrQfplABNF1G904w6r5ZXKWyv77aB0X9B+rhmaAwjtllHzaEkvi9mkGVZxs2Bw==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "@mongodb-js/saslprep": "^1.1.9", + "bson": "^6.10.4", + "mongodb-connection-string-url": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=16.20.1" }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "peerDependencies": { + "@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", + "mongodb-client-encryption": ">=6.0.0 <7", + "snappy": "^7.3.2", + "socks": "^2.7.1" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "@mongodb-js/zstd": { + "optional": true + }, + "gcp-metadata": { + "optional": true + }, + "kerberos": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + }, + "socks": { + "optional": true + } } }, - "node_modules/mocha/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/mongodb-connection-string-url": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.2.tgz", + "integrity": "sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==", "dev": true, "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" + "@types/whatwg-url": "^11.0.2", + "whatwg-url": "^14.1.0 || ^13.0.0" } }, - "node_modules/modify-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", - "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "node_modules/mongoose": { + "version": "6.13.8", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.13.8.tgz", + "integrity": "sha512-JHKco/533CyVrqCbyQsnqMpLn8ZCiKrPDTd2mvo2W7ygIvhygWjX2wj+RPjn6upZZgw0jC6U51RD7kUsyK8NBg==", "dev": true, + "dependencies": { + "bson": "^4.7.2", + "kareem": "2.5.1", + "mongodb": "4.17.2", + "mpath": "0.9.0", + "mquery": "4.0.3", + "ms": "2.1.3", + "sift": "16.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" } }, - "node_modules/module-details-from-path": { - "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==" + "node_modules/mongoose/node_modules/@types/whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } }, - "node_modules/moment": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", - "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "node_modules/mongoose/node_modules/bson": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", + "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", "dev": true, - "optional": true, + "dependencies": { + "buffer": "^5.6.0" + }, "engines": { - "node": "*" + "node": ">=6.9.0" } }, - "node_modules/mongodb": { + "node_modules/mongoose/node_modules/mongodb": { "version": "4.17.2", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.17.2.tgz", "integrity": "sha512-mLV7SEiov2LHleRJPMPrK2PMyhXFZt2UQLC4VD4pnth3jMjYKHhtqfwwkkvS/NXuo/Fp3vbhaNcXrIDaLRb9Tg==", @@ -22909,7 +24682,7 @@ "@mongodb-js/saslprep": "^1.1.0" } }, - "node_modules/mongodb-connection-string-url": { + "node_modules/mongoose/node_modules/mongodb-connection-string-url": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", @@ -22919,7 +24692,7 @@ "whatwg-url": "^11.0.0" } }, - "node_modules/mongodb-connection-string-url/node_modules/punycode": { + "node_modules/mongoose/node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", @@ -22928,7 +24701,7 @@ "node": ">=6" } }, - "node_modules/mongodb-connection-string-url/node_modules/tr46": { + "node_modules/mongoose/node_modules/tr46": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", @@ -22940,7 +24713,7 @@ "node": ">=12" } }, - "node_modules/mongodb-connection-string-url/node_modules/whatwg-url": { + "node_modules/mongoose/node_modules/whatwg-url": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", @@ -22953,28 +24726,6 @@ "node": ">=12" } }, - "node_modules/mongoose": { - "version": "6.13.8", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.13.8.tgz", - "integrity": "sha512-JHKco/533CyVrqCbyQsnqMpLn8ZCiKrPDTd2mvo2W7ygIvhygWjX2wj+RPjn6upZZgw0jC6U51RD7kUsyK8NBg==", - "dev": true, - "dependencies": { - "bson": "^4.7.2", - "kareem": "2.5.1", - "mongodb": "4.17.2", - "mpath": "0.9.0", - "mquery": "4.0.3", - "ms": "2.1.3", - "sift": "16.0.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mongoose" - } - }, "node_modules/mpath": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", @@ -23005,6 +24756,7 @@ "version": "1.4.5-lts.1", "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "deprecated": "Multer 1.x is impacted by a number of vulnerabilities, which have been patched in 2.x. You should upgrade to the latest 2.x version.", "dev": true, "dependencies": { "append-field": "^1.0.0", @@ -23111,9 +24863,9 @@ } }, "node_modules/multimatch/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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", @@ -23154,9 +24906,9 @@ } }, "node_modules/mv/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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "optional": true, "dependencies": { @@ -23237,6 +24989,15 @@ "node": ">= 0.6" } }, + "node_modules/mysql/node_modules/bignumber.js": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/mysql/node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -23335,9 +25096,9 @@ } }, "node_modules/nan": { - "version": "2.22.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz", - "integrity": "sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==", + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.23.0.tgz", + "integrity": "sha512-1UxuyYGdoQHcGg87Lkqm3FzefucTa0NAiOcuRsDmysep3c1LVCRK2krrUDafMWtjSG04htvAmvg96+SDknOmgQ==", "dev": true, "optional": true }, @@ -23387,7 +25148,8 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ncp": { "version": "2.0.0", @@ -23488,6 +25250,33 @@ "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", "dev": true }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -23776,7 +25565,6 @@ "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-17.1.0.tgz", "integrity": "sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/redact": "^2.0.0", "jsonparse": "^1.3.1", @@ -23811,7 +25599,7 @@ "ssri": "^10.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm-registry-fetch/node_modules/minipass-fetch": { @@ -23949,20 +25737,6 @@ } } }, - "node_modules/nx/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/nx/node_modules/jsonc-parser": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", @@ -24029,33 +25803,6 @@ "node": ">=6" } }, - "node_modules/nx/node_modules/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, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/nx/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/nyc": { "version": "17.1.0", "resolved": "https://registry.npmjs.org/nyc/-/nyc-17.1.0.tgz", @@ -24098,9 +25845,9 @@ } }, "node_modules/nyc/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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", @@ -24337,26 +26084,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.entries": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", - "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/object.values": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -24508,13 +26241,13 @@ } }, "node_modules/oracledb": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/oracledb/-/oracledb-6.8.0.tgz", - "integrity": "sha512-A4ds4n4xtjPTzk1gwrHWuMeWsEcrScF0GFgVebGrhNpHSAzn6eDwMKcSbakZODKfFcI099iqhmqWsgko8D+7Ww==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/oracledb/-/oracledb-6.9.0.tgz", + "integrity": "sha512-NwPbIGPv6m0GTFSbyy4/5WEjsKMiiJRxztLmYUcfD3oyh/uXdmVmKOwEWr84wFwWJ/0wQrYQh4PjnzvShibRaA==", "dev": true, "hasInstallScript": true, "engines": { - "node": ">=14.6" + "node": ">=14.17" } }, "node_modules/os-tmpdir": { @@ -24526,6 +26259,13 @@ "node": ">=0.10.0" } }, + "node_modules/outvariant": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", + "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", + "dev": true, + "license": "MIT" + }, "node_modules/own-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", @@ -24710,6 +26450,15 @@ "node": ">= 14" } }, + "node_modules/pac-proxy-agent/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, "node_modules/pac-proxy-agent/node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", @@ -24723,6 +26472,19 @@ "node": ">= 14" } }, + "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/pac-proxy-agent/node_modules/socks-proxy-agent": { "version": "8.0.5", "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", @@ -25061,15 +26823,14 @@ } }, "node_modules/pg-protocol": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.0.tgz", - "integrity": "sha512-IpdytjudNuLv8nhlHs/UrVBhU0e78J0oIS/0AVdTbWxSOkFUVdsHC/NrorO6nXsQNDTT1kzDSOMJubBQviX18Q==" + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.3.tgz", + "integrity": "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==" }, - "node_modules/pg/node_modules/pg-types": { + "node_modules/pg-types": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "dev": true, "dependencies": { "pg-int8": "1.0.1", "postgres-array": "~2.0.0", @@ -25081,45 +26842,6 @@ "node": ">=4" } }, - "node_modules/pg/node_modules/postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pg/node_modules/postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pg/node_modules/postgres-date": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pg/node_modules/postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "dev": true, - "dependencies": { - "xtend": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/pgpass": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", @@ -25145,9 +26867,9 @@ "dev": true }, "node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "engines": { "node": ">=12" @@ -25181,32 +26903,34 @@ } }, "node_modules/pino": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/pino/-/pino-8.3.1.tgz", - "integrity": "sha512-G5KDVXr8viwc/n7iKfDyqqRZflY7OpJn0SDq1wagUhXkcPodZuSymLFziSuD/gCEcVG65IN5MPDY4ZMT9OJWfg==", + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.21.0.tgz", + "integrity": "sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==", "dev": true, + "license": "MIT", "dependencies": { "atomic-sleep": "^1.0.0", "fast-redact": "^3.1.1", "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "v1.0.0", + "pino-abstract-transport": "^1.2.0", "pino-std-serializers": "^6.0.0", - "process-warning": "^2.0.0", + "process-warning": "^3.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^3.1.0", - "thread-stream": "^2.0.0" + "sonic-boom": "^3.7.0", + "thread-stream": "^2.6.0" }, "bin": { "pino": "bin.js" } }, "node_modules/pino-abstract-transport": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz", - "integrity": "sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==", + "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, + "license": "MIT", "dependencies": { "readable-stream": "^4.0.0", "split2": "^4.0.0" @@ -25231,6 +26955,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -25241,6 +26966,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "dev": true, + "license": "MIT", "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", @@ -25257,6 +26983,7 @@ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 10.x" } @@ -25266,6 +26993,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } @@ -25276,6 +27004,13 @@ "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==", "dev": true }, + "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, + "license": "MIT" + }, "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -25323,6 +27058,41 @@ "node": ">=4" } }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/prebuild-install": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", @@ -25545,9 +27315,9 @@ "dev": true }, "node_modules/protobufjs": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.3.tgz", - "integrity": "sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.4.tgz", + "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==", "hasInstallScript": true, "license": "BSD-3-Clause", "dependencies": { @@ -25606,6 +27376,15 @@ "node": ">= 14" } }, + "node_modules/proxy-agent/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, "node_modules/proxy-agent/node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", @@ -25619,6 +27398,19 @@ "node": ">= 14" } }, + "node_modules/proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/proxy-agent/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", @@ -25655,9 +27447,9 @@ "dev": true }, "node_modules/pump": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", - "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", "dev": true, "dependencies": { "end-of-stream": "^1.1.0", @@ -25696,9 +27488,9 @@ } }, "node_modules/puppeteer-core/node_modules/ws": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", - "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "dev": true, "engines": { "node": ">=10.0.0" @@ -25976,18 +27768,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-package-up/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "dev": true, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -26240,10 +28020,8 @@ "resolved": "https://registry.npmjs.org/redis/-/redis-4.7.1.tgz", "integrity": "sha512-S1bJDnqLftzHXHP8JsT5II/CtHWQrASX5K96REjWjlmWKrviSOLWmM7QnRLstAWsu1VBBV1ffV6DzCvxNP0UJQ==", "dev": true, - "license": "MIT", - "workspaces": [ - "./packages/*" - ], + "optional": true, + "peer": true, "dependencies": { "@redis/bloom": "1.2.0", "@redis/client": "1.6.1", @@ -26274,98 +28052,6 @@ "node": ">=4" } }, - "node_modules/redis/node_modules/@redis/bloom": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", - "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@redis/client": "^1.0.0" - } - }, - "node_modules/redis/node_modules/@redis/client": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.6.1.tgz", - "integrity": "sha512-/KCsg3xSlR+nCK8/8ZYSknYxvXHwubJrU82F3Lm1Fp6789VQ0/3RJKfsmRXjqfaTA++23CvC3hqmqe/2GEt6Kw==", - "dev": true, - "license": "MIT", - "dependencies": { - "cluster-key-slot": "1.1.2", - "generic-pool": "3.9.0", - "yallist": "4.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/redis/node_modules/@redis/graph": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.1.tgz", - "integrity": "sha512-FEMTcTHZozZciLRl6GiiIB4zGm5z5F3F6a6FZCyrfxdKOhFlGkiAqlexWMBzCi4DcRoyiOsuLfW+cjlGWyExOw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@redis/client": "^1.0.0" - } - }, - "node_modules/redis/node_modules/@redis/json": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.7.tgz", - "integrity": "sha512-6UyXfjVaTBTJtKNG4/9Z8PSpKE6XgSyEb8iwaqDcy+uKrd/DGYHTWkUdnQDyzm727V7p21WUMhsqz5oy65kPcQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@redis/client": "^1.0.0" - } - }, - "node_modules/redis/node_modules/@redis/search": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.2.0.tgz", - "integrity": "sha512-tYoDBbtqOVigEDMAcTGsRlMycIIjwMCgD8eR2t0NANeQmgK/lvxNAvYyb6bZDD4frHRhIHkJu2TBRvB0ERkOmw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@redis/client": "^1.0.0" - } - }, - "node_modules/redis/node_modules/@redis/time-series": { - "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, - "license": "MIT", - "peerDependencies": { - "@redis/client": "^1.0.0" - } - }, - "node_modules/redis/node_modules/cluster-key-slot": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", - "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/redis/node_modules/generic-pool": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", - "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/redis/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "license": "ISC" - }, "node_modules/reflect-metadata": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", @@ -26497,6 +28183,18 @@ "regjsparser": "bin/parser" } }, + "node_modules/regjsparser/node_modules/jsesc": { + "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": ">=6" + } + }, "node_modules/release-zalgo": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", @@ -26719,30 +28417,6 @@ "safe-json-stringify": "^1.0.4" } }, - "node_modules/restify/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/restify/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -26785,18 +28459,6 @@ "node": ">=12" } }, - "node_modules/restify/node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/restify/node_modules/negotiator": { "version": "0.6.4", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", @@ -26806,60 +28468,6 @@ "node": ">= 0.6" } }, - "node_modules/restify/node_modules/pino": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-8.21.0.tgz", - "integrity": "sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==", - "dev": true, - "dependencies": { - "atomic-sleep": "^1.0.0", - "fast-redact": "^3.1.1", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^1.2.0", - "pino-std-serializers": "^6.0.0", - "process-warning": "^3.0.0", - "quick-format-unescaped": "^4.0.3", - "real-require": "^0.2.0", - "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^3.7.0", - "thread-stream": "^2.6.0" - }, - "bin": { - "pino": "bin.js" - } - }, - "node_modules/restify/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/restify/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/restify/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "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/restify/node_modules/send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", @@ -26896,22 +28504,13 @@ "node": ">=4" } }, - "node_modules/restify/node_modules/split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "node_modules/restify/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": ">= 10.x" - } - }, - "node_modules/restify/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" + "node": ">= 0.8" } }, "node_modules/restore-cursor": { @@ -26983,12 +28582,12 @@ } }, "node_modules/rollup": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.0.tgz", - "integrity": "sha512-HqMFpUbWlf/tvcxBFNKnJyzc7Lk+XO3FGc3pbNBLqEbOz0gPLRgcrlS3UF4MfUrVlstOaP/q0kM6GVvi+LrLRg==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.2.tgz", + "integrity": "sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==", "dev": true, "dependencies": { - "@types/estree": "1.0.7" + "@types/estree": "1.0.8" }, "bin": { "rollup": "dist/bin/rollup" @@ -26998,26 +28597,26 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.41.0", - "@rollup/rollup-android-arm64": "4.41.0", - "@rollup/rollup-darwin-arm64": "4.41.0", - "@rollup/rollup-darwin-x64": "4.41.0", - "@rollup/rollup-freebsd-arm64": "4.41.0", - "@rollup/rollup-freebsd-x64": "4.41.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.41.0", - "@rollup/rollup-linux-arm-musleabihf": "4.41.0", - "@rollup/rollup-linux-arm64-gnu": "4.41.0", - "@rollup/rollup-linux-arm64-musl": "4.41.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.41.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.41.0", - "@rollup/rollup-linux-riscv64-gnu": "4.41.0", - "@rollup/rollup-linux-riscv64-musl": "4.41.0", - "@rollup/rollup-linux-s390x-gnu": "4.41.0", - "@rollup/rollup-linux-x64-gnu": "4.41.0", - "@rollup/rollup-linux-x64-musl": "4.41.0", - "@rollup/rollup-win32-arm64-msvc": "4.41.0", - "@rollup/rollup-win32-ia32-msvc": "4.41.0", - "@rollup/rollup-win32-x64-msvc": "4.41.0", + "@rollup/rollup-android-arm-eabi": "4.46.2", + "@rollup/rollup-android-arm64": "4.46.2", + "@rollup/rollup-darwin-arm64": "4.46.2", + "@rollup/rollup-darwin-x64": "4.46.2", + "@rollup/rollup-freebsd-arm64": "4.46.2", + "@rollup/rollup-freebsd-x64": "4.46.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.46.2", + "@rollup/rollup-linux-arm-musleabihf": "4.46.2", + "@rollup/rollup-linux-arm64-gnu": "4.46.2", + "@rollup/rollup-linux-arm64-musl": "4.46.2", + "@rollup/rollup-linux-loongarch64-gnu": "4.46.2", + "@rollup/rollup-linux-ppc64-gnu": "4.46.2", + "@rollup/rollup-linux-riscv64-gnu": "4.46.2", + "@rollup/rollup-linux-riscv64-musl": "4.46.2", + "@rollup/rollup-linux-s390x-gnu": "4.46.2", + "@rollup/rollup-linux-x64-gnu": "4.46.2", + "@rollup/rollup-linux-x64-musl": "4.46.2", + "@rollup/rollup-win32-arm64-msvc": "4.46.2", + "@rollup/rollup-win32-ia32-msvc": "4.46.2", + "@rollup/rollup-win32-x64-msvc": "4.46.2", "fsevents": "~2.3.2" } }, @@ -27407,16 +29006,23 @@ "dev": true }, "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", "dev": true, "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" }, "bin": { "sha.js": "bin.js" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/shallow-clone": { @@ -27649,6 +29255,18 @@ "url": "https://opencollective.com/sinon" } }, + "node_modules/sinon/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/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -27853,9 +29471,9 @@ } }, "node_modules/socks": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", - "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.6.tgz", + "integrity": "sha512-pe4Y2yzru68lXCb38aAqRf5gvN8YdjP1lok5o0J7BOHljkyCGKVz7H3vpVIXKD27rj2giOJ7DwVyk/GWrPHDWA==", "dev": true, "dependencies": { "ip-address": "^9.0.5", @@ -27880,18 +29498,6 @@ "node": ">= 10" } }, - "node_modules/socks-proxy-agent/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==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, "node_modules/sonic-boom": { "version": "3.8.1", "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.8.1.tgz", @@ -27914,12 +29520,12 @@ } }, "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", "dev": true, "engines": { - "node": ">= 8" + "node": ">= 12" } }, "node_modules/source-map-support": { @@ -27989,9 +29595,9 @@ } }, "node_modules/spawn-wrap/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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", @@ -28202,9 +29808,9 @@ "dev": true }, "node_modules/sql-highlight": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/sql-highlight/-/sql-highlight-6.0.0.tgz", - "integrity": "sha512-+fLpbAbWkQ+d0JEchJT/NrRRXbYRNbG15gFpANx73EwxQB1PRjj+k/OI0GTU0J63g8ikGkJECQp9z8XEJZvPRw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sql-highlight/-/sql-highlight-6.1.0.tgz", + "integrity": "sha512-ed7OK4e9ywpE7pgRMkMQmZDPKSVdm0oX5IEtZiKnFucSF0zu6c80GZBe38UqHuVhTWJ9xsKgSMjCG2bml86KvA==", "dev": true, "funding": [ "https://github.com/scriptcoded/sql-highlight?sponsor=1", @@ -28249,9 +29855,9 @@ "optional": true }, "node_modules/sqlite3/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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "optional": true, "dependencies": { @@ -28294,12 +29900,6 @@ "node": "*" } }, - "node_modules/sqlite3/node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true - }, "node_modules/sqlite3/node_modules/node-gyp": { "version": "8.4.1", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", @@ -28453,14 +30053,27 @@ "dev": true }, "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "dev": true, "engines": { "node": ">= 0.8" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/stoppable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", @@ -28472,9 +30085,9 @@ } }, "node_modules/stream-transform": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/stream-transform/-/stream-transform-3.3.3.tgz", - "integrity": "sha512-dALXrXe+uq4aO5oStdHKlfCM/b3NBdouigvxVPxCdrMRAU6oHh3KNss20VbTPQNQmjAHzZGKGe66vgwegFEIog==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/stream-transform/-/stream-transform-3.4.0.tgz", + "integrity": "sha512-QO3OGhKyeIV8p6eRQdG+W6WounFw519zk690hHCNfhgfP9bylVS+NTXsuBc7n+RsGn31UgFPGrWYIgoAbArKEw==", "dev": true }, "node_modules/streamroller": { @@ -28533,9 +30146,9 @@ } }, "node_modules/streamx": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz", - "integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==", + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz", + "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==", "dev": true, "dependencies": { "fast-fifo": "^1.3.2", @@ -28545,12 +30158,28 @@ "bare-events": "^2.2.0" } }, + "node_modules/strict-event-emitter": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", + "dev": true, + "license": "MIT" + }, "node_modules/string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", "dev": true }, + "node_modules/string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, "node_modules/string-template": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", @@ -28724,9 +30353,9 @@ } }, "node_modules/strnum": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", - "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", "dev": true, "funding": [ { @@ -28736,15 +30365,18 @@ ] }, "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==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { "has-flag": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -28806,9 +30438,9 @@ } }, "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", + "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", "dev": true, "engines": { "node": ">=6" @@ -28832,9 +30464,9 @@ } }, "node_modules/tar-fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz", - "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.3.tgz", + "integrity": "sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==", "dev": true, "dependencies": { "chownr": "^1.1.1", @@ -28971,9 +30603,9 @@ } }, "node_modules/tedious/node_modules/bl": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-6.1.0.tgz", - "integrity": "sha512-ClDyJGQkc8ZtzdAAbAwBmhMSpwN/sC9HA8jxdYm6nVUbCfZbe2mgza4qh7AuEYyEPB/c4Kznf9s66bnsKMQDjw==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-6.1.1.tgz", + "integrity": "sha512-yYc8UIHrd1ZTLgNBIE7JjMzUPZH+dec3q7nWkrSHEbtvkQ3h6WKC63W9K5jthcL5EXFyMuWYq+2pq5WMSIgFHw==", "dev": true, "dependencies": { "@types/readable-stream": "^4.0.0", @@ -29047,9 +30679,9 @@ } }, "node_modules/terser": { - "version": "5.39.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.2.tgz", - "integrity": "sha512-yEPUmWve+VA78bI71BW70Dh0TuV4HHd+I5SHOAfS1+QBOmvmCiiffgjR8ryyEd3KIfvPGFqoADt8LdQ6XpXIvg==", + "version": "5.43.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz", + "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -29248,9 +30880,9 @@ } }, "node_modules/test-exclude/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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", @@ -29318,7 +30950,8 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/thenify": { "version": "3.3.1", @@ -29442,9 +31075,9 @@ "dev": true }, "node_modules/tiny-lru": { - "version": "11.3.1", - "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-11.3.1.tgz", - "integrity": "sha512-18e6DmpCUtUub2rbBQgtV/COvo2XtaqG5ECvguDRO3Cv7sm0CD9w09zJcRLvoQc3Mgn9ejAHZUX6Y2ZQII4fLw==", + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-11.3.4.tgz", + "integrity": "sha512-UxWEfRKpFCabAf6fkTNdlfSw/RDUJ/4C6i1aLZaDnGF82PERHyYhz5CMCVYXtLt34LbqgfpJ2bjmgGKgxuF/6A==", "dev": true, "engines": { "node": ">=12" @@ -29475,6 +31108,26 @@ "node": ">=14.14" } }, + "node_modules/to-buffer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.1.tgz", + "integrity": "sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==", + "dev": true, + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/to-buffer/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -29550,9 +31203,9 @@ } }, "node_modules/ts-loader": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.2.tgz", - "integrity": "sha512-Qo4piXvOTWcMGIgRiuFa6nHNm+54HbYaZCKqc9eeZCLRy3XqafQgwX2F7mofrbJG3g7EEb+lkiR+z2Lic2s3Zw==", + "version": "9.5.4", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz", + "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==", "dev": true, "dependencies": { "chalk": "^4.1.0", @@ -29626,6 +31279,7 @@ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", @@ -29638,6 +31292,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -29650,6 +31305,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -29674,6 +31330,7 @@ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^1.8.1" }, @@ -29688,7 +31345,8 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/tuf-js": { "version": "2.2.1", @@ -29784,21 +31442,21 @@ } }, "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -29906,6 +31564,163 @@ "is-typedarray": "^1.0.0" } }, + "node_modules/typeorm": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.25.tgz", + "integrity": "sha512-fTKDFzWXKwAaBdEMU4k661seZewbNYET4r1J/z3Jwf+eAvlzMVpTLKAVcAzg75WwQk7GDmtsmkZ5MfkmXCiFWg==", + "dev": true, + "dependencies": { + "@sqltools/formatter": "^1.2.5", + "ansis": "^3.17.0", + "app-root-path": "^3.1.0", + "buffer": "^6.0.3", + "dayjs": "^1.11.13", + "debug": "^4.4.0", + "dedent": "^1.6.0", + "dotenv": "^16.4.7", + "glob": "^10.4.5", + "sha.js": "^2.4.11", + "sql-highlight": "^6.0.0", + "tslib": "^2.8.1", + "uuid": "^11.1.0", + "yargs": "^17.7.2" + }, + "bin": { + "typeorm": "cli.js", + "typeorm-ts-node-commonjs": "cli-ts-node-commonjs.js", + "typeorm-ts-node-esm": "cli-ts-node-esm.js" + }, + "engines": { + "node": ">=16.13.0" + }, + "funding": { + "url": "https://opencollective.com/typeorm" + }, + "peerDependencies": { + "@google-cloud/spanner": "^5.18.0 || ^6.0.0 || ^7.0.0", + "@sap/hana-client": "^2.12.25", + "better-sqlite3": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", + "hdb-pool": "^0.1.6", + "ioredis": "^5.0.4", + "mongodb": "^5.8.0 || ^6.0.0", + "mssql": "^9.1.1 || ^10.0.1 || ^11.0.1", + "mysql2": "^2.2.5 || ^3.0.1", + "oracledb": "^6.3.0", + "pg": "^8.5.1", + "pg-native": "^3.0.0", + "pg-query-stream": "^4.0.0", + "redis": "^3.1.1 || ^4.0.0", + "reflect-metadata": "^0.1.14 || ^0.2.0", + "sql.js": "^1.4.0", + "sqlite3": "^5.0.3", + "ts-node": "^10.7.0", + "typeorm-aurora-data-api-driver": "^2.0.0 || ^3.0.0" + }, + "peerDependenciesMeta": { + "@google-cloud/spanner": { + "optional": true + }, + "@sap/hana-client": { + "optional": true + }, + "better-sqlite3": { + "optional": true + }, + "hdb-pool": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "mongodb": { + "optional": true + }, + "mssql": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "oracledb": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-native": { + "optional": true + }, + "pg-query-stream": { + "optional": true + }, + "redis": { + "optional": true + }, + "sql.js": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "ts-node": { + "optional": true + }, + "typeorm-aurora-data-api-driver": { + "optional": true + } + } + }, + "node_modules/typeorm/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/typeorm/node_modules/dedent": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz", + "integrity": "sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/typeorm/node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, "node_modules/typescript": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", @@ -30024,9 +31839,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": "7.8.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", + "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==" }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.1", @@ -30257,9 +32072,9 @@ } }, "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", "dev": true, "license": "MIT" }, @@ -30331,13 +32146,18 @@ "engines": [ "node >=0.6.0" ], - "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" } }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, "node_modules/void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", @@ -30354,9 +32174,9 @@ "dev": true }, "node_modules/watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", + "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -30384,6 +32204,16 @@ "defaults": "^1.0.3" } }, + "node_modules/web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -30508,9 +32338,9 @@ } }, "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", + "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", "dev": true, "engines": { "node": ">=10.13.0" @@ -30818,9 +32648,9 @@ } }, "node_modules/workerpool": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", - "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.3.tgz", + "integrity": "sha512-slxCaKbYjEdFT/o2rH9xS1hf4uRDch1w7Uo+apxhZ+sf/1d9e0ZVkn42kPNGP2dgjIx6YFvSevj0zHvbWe2jdw==", "dev": true }, "node_modules/wrap-ansi": { @@ -31123,13 +32953,11 @@ } }, "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "license": "ISC", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yargs-unparser": { @@ -31168,43 +32996,6 @@ "node": ">=8" } }, - "node_modules/yargs/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs/node_modules/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==", - "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/yargs/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "engines": { - "node": ">=12" - } - }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -31279,21 +33070,21 @@ } }, "node_modules/zone.js": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.0.tgz", - "integrity": "sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==" + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.1.tgz", + "integrity": "sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==" }, "packages/auto-configuration-propagators": { "name": "@opentelemetry/auto-configuration-propagators", - "version": "0.4.1", + "version": "0.4.2", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/propagator-aws-xray": "^2.1.0", - "@opentelemetry/propagator-aws-xray-lambda": "^0.55.0", + "@opentelemetry/propagator-aws-xray": "^2.1.1", + "@opentelemetry/propagator-aws-xray-lambda": "^0.55.1", "@opentelemetry/propagator-b3": "^2.0.0", "@opentelemetry/propagator-jaeger": "^2.0.0", - "@opentelemetry/propagator-ot-trace": "^0.28.0" + "@opentelemetry/propagator-ot-trace": "^0.28.1" }, "devDependencies": { "@opentelemetry/api": "^1.4.1", @@ -31312,59 +33103,74 @@ "@opentelemetry/api": "^1.4.1" } }, + "packages/auto-configuration-propagators/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/auto-configuration-propagators/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 + }, "packages/auto-instrumentations-node": { "name": "@opentelemetry/auto-instrumentations-node", - "version": "0.62.0", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", - "@opentelemetry/instrumentation-amqplib": "^0.50.0", - "@opentelemetry/instrumentation-aws-lambda": "^0.54.0", - "@opentelemetry/instrumentation-aws-sdk": "^0.56.0", - "@opentelemetry/instrumentation-bunyan": "^0.49.0", - "@opentelemetry/instrumentation-cassandra-driver": "^0.49.0", - "@opentelemetry/instrumentation-connect": "^0.47.0", - "@opentelemetry/instrumentation-cucumber": "^0.18.0", - "@opentelemetry/instrumentation-dataloader": "^0.21.0", - "@opentelemetry/instrumentation-dns": "^0.47.0", - "@opentelemetry/instrumentation-express": "^0.52.0", - "@opentelemetry/instrumentation-fastify": "^0.48.0", - "@opentelemetry/instrumentation-fs": "^0.23.0", - "@opentelemetry/instrumentation-generic-pool": "^0.47.0", - "@opentelemetry/instrumentation-graphql": "^0.51.0", - "@opentelemetry/instrumentation-grpc": "^0.203.0", - "@opentelemetry/instrumentation-hapi": "^0.50.0", - "@opentelemetry/instrumentation-http": "^0.203.0", - "@opentelemetry/instrumentation-ioredis": "^0.51.0", - "@opentelemetry/instrumentation-kafkajs": "^0.12.0", - "@opentelemetry/instrumentation-knex": "^0.48.0", - "@opentelemetry/instrumentation-koa": "^0.51.0", - "@opentelemetry/instrumentation-lru-memoizer": "^0.48.0", - "@opentelemetry/instrumentation-memcached": "^0.47.0", - "@opentelemetry/instrumentation-mongodb": "^0.56.0", - "@opentelemetry/instrumentation-mongoose": "^0.50.0", - "@opentelemetry/instrumentation-mysql": "^0.49.0", - "@opentelemetry/instrumentation-mysql2": "^0.49.0", - "@opentelemetry/instrumentation-nestjs-core": "^0.49.0", - "@opentelemetry/instrumentation-net": "^0.47.0", - "@opentelemetry/instrumentation-oracledb": "^0.29.0", - "@opentelemetry/instrumentation-pg": "^0.55.0", - "@opentelemetry/instrumentation-pino": "^0.50.0", - "@opentelemetry/instrumentation-redis": "^0.51.0", - "@opentelemetry/instrumentation-restify": "^0.49.0", - "@opentelemetry/instrumentation-router": "^0.48.0", - "@opentelemetry/instrumentation-runtime-node": "^0.17.0", - "@opentelemetry/instrumentation-socket.io": "^0.50.0", - "@opentelemetry/instrumentation-tedious": "^0.22.0", - "@opentelemetry/instrumentation-undici": "^0.14.0", - "@opentelemetry/instrumentation-winston": "^0.48.0", - "@opentelemetry/resource-detector-alibaba-cloud": "^0.31.3", - "@opentelemetry/resource-detector-aws": "^2.3.0", - "@opentelemetry/resource-detector-azure": "^0.10.0", - "@opentelemetry/resource-detector-container": "^0.7.3", - "@opentelemetry/resource-detector-gcp": "^0.37.0", + "version": "0.63.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.204.0", + "@opentelemetry/instrumentation-amqplib": "^0.51.0", + "@opentelemetry/instrumentation-aws-lambda": "^0.55.0", + "@opentelemetry/instrumentation-aws-sdk": "^0.59.0", + "@opentelemetry/instrumentation-bunyan": "^0.50.0", + "@opentelemetry/instrumentation-cassandra-driver": "^0.50.0", + "@opentelemetry/instrumentation-connect": "^0.48.0", + "@opentelemetry/instrumentation-cucumber": "^0.20.0", + "@opentelemetry/instrumentation-dataloader": "^0.22.0", + "@opentelemetry/instrumentation-dns": "^0.48.0", + "@opentelemetry/instrumentation-express": "^0.53.0", + "@opentelemetry/instrumentation-fastify": "^0.49.0", + "@opentelemetry/instrumentation-fs": "^0.24.0", + "@opentelemetry/instrumentation-generic-pool": "^0.48.0", + "@opentelemetry/instrumentation-graphql": "^0.52.0", + "@opentelemetry/instrumentation-grpc": "^0.204.0", + "@opentelemetry/instrumentation-hapi": "^0.51.0", + "@opentelemetry/instrumentation-http": "^0.204.0", + "@opentelemetry/instrumentation-ioredis": "^0.52.0", + "@opentelemetry/instrumentation-kafkajs": "^0.14.0", + "@opentelemetry/instrumentation-knex": "^0.49.0", + "@opentelemetry/instrumentation-koa": "^0.52.0", + "@opentelemetry/instrumentation-lru-memoizer": "^0.49.0", + "@opentelemetry/instrumentation-memcached": "^0.48.0", + "@opentelemetry/instrumentation-mongodb": "^0.57.0", + "@opentelemetry/instrumentation-mongoose": "^0.51.0", + "@opentelemetry/instrumentation-mysql": "^0.50.0", + "@opentelemetry/instrumentation-mysql2": "^0.51.0", + "@opentelemetry/instrumentation-nestjs-core": "^0.50.0", + "@opentelemetry/instrumentation-net": "^0.48.0", + "@opentelemetry/instrumentation-oracledb": "^0.30.0", + "@opentelemetry/instrumentation-pg": "^0.57.0", + "@opentelemetry/instrumentation-pino": "^0.51.0", + "@opentelemetry/instrumentation-redis": "^0.53.0", + "@opentelemetry/instrumentation-restify": "^0.50.0", + "@opentelemetry/instrumentation-router": "^0.49.0", + "@opentelemetry/instrumentation-runtime-node": "^0.18.0", + "@opentelemetry/instrumentation-socket.io": "^0.51.0", + "@opentelemetry/instrumentation-tedious": "^0.23.0", + "@opentelemetry/instrumentation-undici": "^0.15.0", + "@opentelemetry/instrumentation-winston": "^0.49.0", + "@opentelemetry/resource-detector-alibaba-cloud": "^0.31.4", + "@opentelemetry/resource-detector-aws": "^2.4.0", + "@opentelemetry/resource-detector-azure": "^0.11.0", + "@opentelemetry/resource-detector-container": "^0.7.4", + "@opentelemetry/resource-detector-gcp": "^0.38.0", "@opentelemetry/resources": "^2.0.0", - "@opentelemetry/sdk-node": "^0.203.0" + "@opentelemetry/sdk-node": "^0.204.0" }, "devDependencies": { "@opentelemetry/api": "^1.4.1", @@ -31385,16 +33191,31 @@ "@opentelemetry/core": "^2.0.0" } }, + "packages/auto-instrumentations-node/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/auto-instrumentations-node/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 + }, "packages/auto-instrumentations-web": { "name": "@opentelemetry/auto-instrumentations-web", - "version": "0.49.0", + "version": "0.50.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", - "@opentelemetry/instrumentation-document-load": "^0.48.0", - "@opentelemetry/instrumentation-fetch": "^0.203.0", - "@opentelemetry/instrumentation-user-interaction": "^0.48.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0", + "@opentelemetry/instrumentation-document-load": "^0.49.0", + "@opentelemetry/instrumentation-fetch": "^0.204.0", + "@opentelemetry/instrumentation-user-interaction": "^0.49.0", + "@opentelemetry/instrumentation-xml-http-request": "^0.204.0" }, "devDependencies": { "@babel/core": "7.24.6", @@ -31416,7 +33237,7 @@ "nyc": "17.1.0", "rimraf": "5.0.10", "sinon": "15.1.2", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", @@ -31430,6 +33251,15 @@ "zone.js": "^0.11.4 || ^0.13.0 || ^0.14.0 || ^0.15.0" } }, + "packages/auto-instrumentations-web/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "packages/auto-instrumentations-web/node_modules/sinon": { "version": "15.1.2", "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.1.2.tgz", @@ -31449,12 +33279,30 @@ "url": "https://opencollective.com/sinon" } }, + "packages/auto-instrumentations-web/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" + } + }, + "packages/auto-instrumentations-web/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 + }, "packages/baggage-log-record-processor": { "name": "@opentelemetry/baggage-log-record-processor", - "version": "0.4.0", + "version": "0.5.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/sdk-logs": "^0.203.0" + "@opentelemetry/sdk-logs": "^0.204.0" }, "devDependencies": { "@opentelemetry/api": "^1.0.0", @@ -31472,6 +33320,21 @@ "@opentelemetry/api": "^1.0.0" } }, + "packages/baggage-log-record-processor/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/baggage-log-record-processor/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 + }, "packages/baggage-span-processor": { "name": "@opentelemetry/baggage-span-processor", "version": "0.4.0", @@ -31495,17 +33358,32 @@ "@opentelemetry/api": "^1.0.0" } }, + "packages/baggage-span-processor/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/baggage-span-processor/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 + }, "packages/contrib-test-utils": { "name": "@opentelemetry/contrib-test-utils", - "version": "0.49.0", + "version": "0.50.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/exporter-jaeger": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/resources": "^2.0.0", "@opentelemetry/sdk-metrics": "^2.0.0", - "@opentelemetry/sdk-node": "^0.203.0", + "@opentelemetry/sdk-node": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0" @@ -31522,6 +33400,21 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/contrib-test-utils/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/contrib-test-utils/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 + }, "packages/host-metrics": { "name": "@opentelemetry/host-metrics", "version": "0.36.0", @@ -31547,9 +33440,24 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/host-metrics/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/host-metrics/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 + }, "packages/id-generator-aws-xray": { "name": "@opentelemetry/id-generator-aws-xray", - "version": "2.0.0", + "version": "2.0.1", "license": "Apache-2.0", "dependencies": { "@opentelemetry/sdk-trace-base": "^2.0.0" @@ -31574,7 +33482,7 @@ "nyc": "17.1.0", "rimraf": "5.0.10", "sinon": "15.1.2", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", @@ -31587,6 +33495,15 @@ "@opentelemetry/api": "^1.0.0" } }, + "packages/id-generator-aws-xray/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "packages/id-generator-aws-xray/node_modules/sinon": { "version": "15.1.2", "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.1.2.tgz", @@ -31606,24 +33523,43 @@ "url": "https://opencollective.com/sinon" } }, + "packages/id-generator-aws-xray/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" + } + }, + "packages/id-generator-aws-xray/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 + }, "packages/instrumentation-amqplib": { "name": "@opentelemetry/instrumentation-amqplib", - "version": "0.50.0", + "version": "0.51.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@types/amqplib": "^0.5.17", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@types/amqplib": "^0.10.7", "@types/lodash": "4.14.199", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", "amqplib": "0.8.0", + "cross-env": "7.0.3", "expect": "29.2.0", "lodash": "4.17.21", "nyc": "17.1.0", @@ -31638,20 +33574,35 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-amqplib/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-amqplib/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 + }, "packages/instrumentation-aws-lambda": { "name": "@opentelemetry/instrumentation-aws-lambda", - "version": "0.54.0", + "version": "0.55.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0", - "@types/aws-lambda": "8.10.150" + "@types/aws-lambda": "8.10.152" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/propagator-aws-xray": "^2.1.0", - "@opentelemetry/propagator-aws-xray-lambda": "^0.55.0", + "@opentelemetry/propagator-aws-xray": "^2.1.1", + "@opentelemetry/propagator-aws-xray-lambda": "^0.55.1", "@opentelemetry/sdk-metrics": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", @@ -31668,14 +33619,28 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-aws-lambda/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-aws-lambda/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 + }, "packages/instrumentation-aws-sdk": { "name": "@opentelemetry/instrumentation-aws-sdk", - "version": "0.56.0", + "version": "0.59.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", - "@opentelemetry/propagation-utils": "^0.31.3", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.34.0" }, "devDependencies": { @@ -31684,13 +33649,15 @@ "@aws-sdk/client-kinesis": "^3.85.0", "@aws-sdk/client-lambda": "^3.85.0", "@aws-sdk/client-s3": "^3.85.0", + "@aws-sdk/client-secrets-manager": "^3.85.0", + "@aws-sdk/client-sfn": "^3.85.0", "@aws-sdk/client-sns": "^3.85.0", "@aws-sdk/client-sqs": "^3.85.0", "@aws-sdk/types": "^3.370.0", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", - "@smithy/node-http-handler": "2.4.0", + "@smithy/node-http-handler": "4.1.1", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -31710,19 +33677,34 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-aws-sdk/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-aws-sdk/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 + }, "packages/instrumentation-bunyan": { "name": "@opentelemetry/instrumentation-bunyan", - "version": "0.49.0", + "version": "0.50.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "^0.203.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/api-logs": "^0.204.0", + "@opentelemetry/instrumentation": "^0.204.0", "@types/bunyan": "1.8.11" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/resources": "^2.0.0", - "@opentelemetry/sdk-logs": "^0.203.0", + "@opentelemetry/sdk-logs": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -31743,18 +33725,33 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-bunyan/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-bunyan/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 + }, "packages/instrumentation-cassandra-driver": { "name": "@opentelemetry/instrumentation-cassandra-driver", - "version": "0.49.0", + "version": "0.50.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", @@ -31762,6 +33759,7 @@ "@types/semver": "7.5.8", "@types/sinon": "17.0.4", "cassandra-driver": "4.6.4", + "cross-env": "7.0.3", "nyc": "17.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", @@ -31774,13 +33772,28 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-cassandra-driver/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-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 + }, "packages/instrumentation-connect": { "name": "@opentelemetry/instrumentation-connect", - "version": "0.47.0", + "version": "0.48.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/connect": "3.4.38" }, @@ -31803,17 +33816,32 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-connect/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-connect/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 + }, "packages/instrumentation-cucumber": { "name": "@opentelemetry/instrumentation-cucumber", - "version": "0.18.0", + "version": "0.20.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { - "@cucumber/cucumber": "^11.0.0", - "@cucumber/messages": "^22.0.0", + "@cucumber/cucumber": "^12.0.0", + "@cucumber/messages": "^28.0.0", "@opentelemetry/api": "^1.0.0", "@opentelemetry/core": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", @@ -31837,16 +33865,66 @@ "@opentelemetry/api": "^1.0.0" } }, + "packages/instrumentation-cucumber/node_modules/@cucumber/messages": { + "version": "28.1.0", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-28.1.0.tgz", + "integrity": "sha512-2LzZtOwYKNlCuNf31ajkrekoy2M4z0Z1QGiPH40n4gf5t8VOUFb7m1ojtR4LmGvZxBGvJZP8voOmRqDWzBzYKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/uuid": "10.0.0", + "class-transformer": "0.5.1", + "reflect-metadata": "0.2.2", + "uuid": "11.1.0" + } + }, + "packages/instrumentation-cucumber/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-cucumber/node_modules/@types/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", + "dev": true, + "license": "MIT" + }, + "packages/instrumentation-cucumber/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 + }, + "packages/instrumentation-cucumber/node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, "packages/instrumentation-dataloader": { "name": "@opentelemetry/instrumentation-dataloader", - "version": "0.21.0", + "version": "0.22.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", @@ -31864,12 +33942,27 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-dataloader/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-dataloader/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 + }, "packages/instrumentation-dns": { "name": "@opentelemetry/instrumentation-dns", - "version": "0.47.0", + "version": "0.48.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -31893,13 +33986,28 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-dns/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-dns/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 + }, "packages/instrumentation-document-load": { "name": "@opentelemetry/instrumentation-document-load", - "version": "0.48.0", + "version": "0.49.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-web": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, @@ -31958,6 +34066,15 @@ "url": "https://opencollective.com/babel" } }, + "packages/instrumentation-document-load/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "packages/instrumentation-document-load/node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", @@ -31973,22 +34090,28 @@ "semver": "bin/semver.js" } }, + "packages/instrumentation-document-load/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 + }, "packages/instrumentation-express": { "name": "@opentelemetry/instrumentation-express", - "version": "0.52.0", + "version": "0.53.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", - "@types/express": "4.17.23", + "@types/express": "5.0.3", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -32006,24 +34129,38 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-express/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-express/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 + }, "packages/instrumentation-fastify": { "name": "@opentelemetry/instrumentation-fastify", - "version": "0.48.0", + "version": "0.49.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@fastify/express": "^3.0.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation-http": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", - "@types/express": "4.17.23", "@types/mocha": "10.0.10", "@types/node": "18.15.3", "@types/semver": "7.5.8", @@ -32049,11 +34186,11 @@ }, "packages/instrumentation-fs": { "name": "@opentelemetry/instrumentation-fs", - "version": "0.23.0", + "version": "0.24.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -32076,12 +34213,27 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-fs/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-fs/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 + }, "packages/instrumentation-generic-pool": { "name": "@opentelemetry/instrumentation-generic-pool", - "version": "0.47.0", + "version": "0.48.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -32105,12 +34257,27 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-generic-pool/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-generic-pool/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 + }, "packages/instrumentation-graphql": { "name": "@opentelemetry/instrumentation-graphql", - "version": "0.51.0", + "version": "0.52.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -32131,20 +34298,35 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-graphql/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-graphql/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 + }, "packages/instrumentation-hapi": { "name": "@opentelemetry/instrumentation-hapi", - "version": "0.50.0", + "version": "0.51.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@hapi/hapi": "21.3.12", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", @@ -32162,19 +34344,34 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-hapi/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-hapi/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 + }, "packages/instrumentation-ioredis": { "name": "@opentelemetry/instrumentation-ioredis", - "version": "0.51.0", + "version": "0.52.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/redis-common": "^0.38.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/ioredis4": "npm:@types/ioredis@4.28.10", @@ -32196,17 +34393,32 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-ioredis/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-ioredis/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 + }, "packages/instrumentation-kafkajs": { "name": "@opentelemetry/instrumentation-kafkajs", - "version": "0.12.0", + "version": "0.14.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.30.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -32225,12 +34437,27 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-kafkajs/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-kafkajs/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 + }, "packages/instrumentation-knex": { "name": "@opentelemetry/instrumentation-knex", - "version": "0.48.0", + "version": "0.49.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.33.1" }, "devDependencies": { @@ -32240,7 +34467,7 @@ "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", - "better-sqlite3": "11.0.0", + "better-sqlite3": "^11.10.0", "knex": "3.1.0", "nyc": "17.1.0", "rimraf": "5.0.10", @@ -32254,21 +34481,36 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-knex/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-knex/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 + }, "packages/instrumentation-koa": { "name": "@opentelemetry/instrumentation-koa", - "version": "0.51.0", + "version": "0.52.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { - "@koa/router": "13.1.1", + "@koa/router": "14.0.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation-http": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/koa": "2.15.0", @@ -32291,13 +34533,28 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-koa/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-koa/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 + }, "packages/instrumentation-long-task": { "name": "@opentelemetry/instrumentation-long-task", - "version": "0.48.0", + "version": "0.49.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0" }, "devDependencies": { "@babel/core": "7.24.6", @@ -32321,7 +34578,7 @@ "nyc": "17.1.0", "rimraf": "5.0.10", "sinon": "15.1.2", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", @@ -32335,6 +34592,15 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-long-task/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "packages/instrumentation-long-task/node_modules/sinon": { "version": "15.1.2", "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.1.2.tgz", @@ -32354,16 +34620,34 @@ "url": "https://opencollective.com/sinon" } }, + "packages/instrumentation-long-task/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" + } + }, + "packages/instrumentation-long-task/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 + }, "packages/instrumentation-lru-memoizer": { "name": "@opentelemetry/instrumentation-lru-memoizer", - "version": "0.48.0", + "version": "0.49.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@types/lru-cache": "7.10.10", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -32381,19 +34665,34 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-lru-memoizer/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-lru-memoizer/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 + }, "packages/instrumentation-memcached": { "name": "@opentelemetry/instrumentation-memcached", - "version": "0.47.0", + "version": "0.48.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/memcached": "^2.2.6" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", @@ -32411,25 +34710,41 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-memcached/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-memcached/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 + }, "packages/instrumentation-mongodb": { "name": "@opentelemetry/instrumentation-mongodb", - "version": "0.56.0", + "version": "0.57.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-metrics": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/bson": "4.0.5", "@types/mocha": "10.0.10", "@types/node": "18.18.14", - "mongodb": "6.15.0", + "cross-env": "7.0.3", + "mongodb": "6.19.0", "nyc": "17.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", @@ -32442,309 +34757,528 @@ "@opentelemetry/api": "^1.3.0" } }, - "packages/instrumentation-mongodb/node_modules/@types/whatwg-url": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", - "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", + "packages/instrumentation-mongodb/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", "dev": true, "dependencies": { - "@types/webidl-conversions": "*" + "undici-types": "~5.26.4" } }, - "packages/instrumentation-mongodb/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==", - "dev": true, - "optional": true, - "peer": true, + "packages/instrumentation-mongodb/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 + }, + "packages/instrumentation-mongoose": { + "name": "@opentelemetry/instrumentation-mongoose", + "version": "0.51.0", + "license": "Apache-2.0", "dependencies": { - "debug": "4" + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.204.0", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@types/mocha": "10.0.10", + "@types/node": "18.18.14", + "cross-env": "7.0.3", + "expect": "29.2.0", + "mongoose": "6.13.8", + "nyc": "17.1.0", + "rimraf": "5.0.10", + "test-all-versions": "6.1.0", + "typescript": "5.0.4" }, "engines": { - "node": ">= 6.0.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "packages/instrumentation-mongodb/node_modules/bson": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.3.tgz", - "integrity": "sha512-MTxGsqgYTwfshYWTRdmZRC+M7FnG1b4y7RO7p2k3X24Wq0yv1m77Wsj0BzlPzd/IowgESfsruQCUToa7vbOpPQ==", + "packages/instrumentation-mongoose/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", "dev": true, - "engines": { - "node": ">=16.20.1" + "dependencies": { + "undici-types": "~5.26.4" } }, - "packages/instrumentation-mongodb/node_modules/gaxios": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz", - "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==", - "dev": true, - "optional": true, - "peer": true, + "packages/instrumentation-mongoose/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 + }, + "packages/instrumentation-mysql": { + "name": "@opentelemetry/instrumentation-mysql", + "version": "0.50.0", + "license": "Apache-2.0", "dependencies": { - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.9" + "@opentelemetry/instrumentation": "^0.204.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@types/mysql": "2.15.27" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/sdk-metrics": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@types/mocha": "10.0.10", + "@types/node": "18.18.14", + "@types/sinon": "17.0.4", + "cross-env": "7.0.3", + "mysql": "2.18.1", + "nyc": "17.1.0", + "rimraf": "5.0.10", + "sinon": "15.2.0", + "typescript": "5.0.4" }, "engines": { - "node": ">=12" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "packages/instrumentation-mongodb/node_modules/gcp-metadata": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz", - "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==", + "packages/instrumentation-mysql/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "gaxios": "^5.0.0", - "json-bigint": "^1.0.0" - }, - "engines": { - "node": ">=12" + "undici-types": "~5.26.4" } }, - "packages/instrumentation-mongodb/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==", - "dev": true, - "optional": true, - "peer": true, + "packages/instrumentation-mysql/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 + }, + "packages/instrumentation-mysql2": { + "name": "@opentelemetry/instrumentation-mysql2", + "version": "0.51.0", + "license": "Apache-2.0", "dependencies": { - "agent-base": "6", - "debug": "4" + "@opentelemetry/instrumentation": "^0.204.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "@opentelemetry/sql-common": "^0.41.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@types/mocha": "10.0.10", + "@types/node": "18.18.14", + "@types/semver": "7.5.8", + "cross-env": "7.0.3", + "mysql2": "3.11.5", + "nyc": "17.1.0", + "rimraf": "5.0.10", + "semver": "7.7.2", + "test-all-versions": "6.1.0", + "typescript": "5.0.4" }, "engines": { - "node": ">= 6" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" } }, - "packages/instrumentation-mongodb/node_modules/mongodb": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.15.0.tgz", - "integrity": "sha512-ifBhQ0rRzHDzqp9jAQP6OwHSH7dbYIQjD3SbJs9YYk9AikKEettW/9s/tbSFDTpXcRbF+u1aLrhHxDFaYtZpFQ==", + "packages/instrumentation-mysql2/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", "dev": true, "dependencies": { - "@mongodb-js/saslprep": "^1.1.9", - "bson": "^6.10.3", - "mongodb-connection-string-url": "^3.0.0" + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-mysql2/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 + }, + "packages/instrumentation-nestjs-core": { + "name": "@opentelemetry/instrumentation-nestjs-core", + "version": "0.50.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/instrumentation": "^0.204.0", + "@opentelemetry/semantic-conventions": "^1.30.0" + }, + "devDependencies": { + "@nestjs/common": "11.0.10", + "@nestjs/core": "11.0.10", + "@nestjs/platform-express": "11.0.10", + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", + "@types/mocha": "10.0.10", + "@types/node": "18.18.14", + "@types/semver": "7.5.8", + "cross-env": "7.0.3", + "nyc": "17.1.0", + "reflect-metadata": "0.2.2", + "rimraf": "5.0.10", + "rxjs": "7.8.2", + "rxjs-compat": "6.6.7", + "semver": "7.7.2", + "test-all-versions": "6.1.0", + "typescript": "5.0.4" }, "engines": { - "node": ">=16.20.1" + "node": "^18.19.0 || >=20.6.0" }, "peerDependencies": { - "@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", - "mongodb-client-encryption": ">=6.0.0 <7", - "snappy": "^7.2.2", - "socks": "^2.7.1" - }, - "peerDependenciesMeta": { - "@aws-sdk/credential-providers": { - "optional": true - }, - "@mongodb-js/zstd": { - "optional": true - }, - "gcp-metadata": { - "optional": true - }, - "kerberos": { - "optional": true - }, - "mongodb-client-encryption": { - "optional": true - }, - "snappy": { - "optional": true - }, - "socks": { - "optional": true - } + "@opentelemetry/api": "^1.3.0" } }, - "packages/instrumentation-mongodb/node_modules/mongodb-connection-string-url": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.2.tgz", - "integrity": "sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==", + "packages/instrumentation-nestjs-core/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", "dev": true, "dependencies": { - "@types/whatwg-url": "^11.0.2", - "whatwg-url": "^14.1.0 || ^13.0.0" + "undici-types": "~5.26.4" } }, - "packages/instrumentation-mongoose": { - "name": "@opentelemetry/instrumentation-mongoose", - "version": "0.50.0", + "packages/instrumentation-nestjs-core/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 + }, + "packages/instrumentation-net": { + "name": "@opentelemetry/instrumentation-net", + "version": "0.48.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", + "@types/sinon": "17.0.4", + "nyc": "17.1.0", + "rimraf": "5.0.10", + "sinon": "15.2.0", + "typescript": "5.0.4" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "packages/instrumentation-net/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-net/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 + }, + "packages/instrumentation-openai": { + "name": "@opentelemetry/instrumentation-openai", + "version": "0.2.0", + "dependencies": { + "@opentelemetry/api-logs": "^0.204.0", + "@opentelemetry/instrumentation": "^0.204.0", + "@opentelemetry/semantic-conventions": "^1.36.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/sdk-logs": "^0.204.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", + "@types/node": "18.18.14", + "@typescript-eslint/eslint-plugin": "5.8.1", + "@typescript-eslint/parser": "5.8.1", + "cross-env": "7.0.3", "expect": "29.2.0", - "mongoose": "6.13.8", + "nock": "^14.0.0", "nyc": "17.1.0", + "openai": "4.104.0", "rimraf": "5.0.10", + "safe-stable-stringify": "^2.4.1", + "sinon": "15.2.0", "test-all-versions": "6.1.0", "typescript": "5.0.4" }, "engines": { - "node": "^18.19.0 || >=20.6.0" + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "packages/instrumentation-openai/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-openai/node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.8.1.tgz", + "integrity": "sha512-wTZ5oEKrKj/8/366qTM366zqhIKAp6NCMweoRONtfuC07OAU9nVI2GZZdqQ1qD30WAAtcPdkH+npDwtRFdp4Rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/experimental-utils": "5.8.1", + "@typescript-eslint/scope-manager": "5.8.1", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "packages/instrumentation-openai/node_modules/@typescript-eslint/parser": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.8.1.tgz", + "integrity": "sha512-K1giKHAjHuyB421SoXMXFHHVI4NdNY603uKw92++D3qyxSeYvC10CBJ/GE5Thpo4WTUvu1mmJI2/FFkz38F2Gw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "5.8.1", + "@typescript-eslint/types": "5.8.1", + "@typescript-eslint/typescript-estree": "5.8.1", + "debug": "^4.3.2" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "packages/instrumentation-mysql": { - "name": "@opentelemetry/instrumentation-mysql", - "version": "0.49.0", - "license": "Apache-2.0", + "packages/instrumentation-openai/node_modules/@typescript-eslint/scope-manager": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.8.1.tgz", + "integrity": "sha512-DGxJkNyYruFH3NIZc3PwrzwOQAg7vvgsHsHCILOLvUpupgkwDZdNq/cXU3BjF4LNrCsVg0qxEyWasys5AiJ85Q==", + "dev": true, + "license": "MIT", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@types/mysql": "2.15.27" + "@typescript-eslint/types": "5.8.1", + "@typescript-eslint/visitor-keys": "5.8.1" }, - "devDependencies": { - "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/sdk-metrics": "^2.0.0", - "@opentelemetry/sdk-trace-base": "^2.0.0", - "@types/mocha": "10.0.10", - "@types/node": "18.18.14", - "@types/sinon": "17.0.4", - "mysql": "2.18.1", - "nyc": "17.1.0", - "rimraf": "5.0.10", - "sinon": "15.2.0", - "typescript": "5.0.4" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "packages/instrumentation-openai/node_modules/@typescript-eslint/types": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.8.1.tgz", + "integrity": "sha512-L/FlWCCgnjKOLefdok90/pqInkomLnAcF9UAzNr+DSqMC3IffzumHTQTrINXhP1gVp9zlHiYYjvozVZDPleLcA==", + "dev": true, + "license": "MIT", "engines": { - "node": "^18.19.0 || >=20.6.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "packages/instrumentation-mysql2": { - "name": "@opentelemetry/instrumentation-mysql2", - "version": "0.49.0", - "license": "Apache-2.0", + "packages/instrumentation-openai/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.8.1.tgz", + "integrity": "sha512-26lQ8l8tTbG7ri7xEcCFT9ijU5Fk+sx/KRRyyzCv7MQ+rZZlqiDPtMKWLC8P7o+dtCnby4c+OlxuX1tp8WfafQ==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "@opentelemetry/sql-common": "^0.41.0" - }, - "devDependencies": { - "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/sdk-trace-base": "^2.0.0", - "@types/mocha": "10.0.10", - "@types/node": "18.18.14", - "@types/semver": "7.5.8", - "mysql2": "3.11.5", - "nyc": "17.1.0", - "rimraf": "5.0.10", - "semver": "7.7.2", - "test-all-versions": "6.1.0", - "typescript": "5.0.4" + "@typescript-eslint/types": "5.8.1", + "@typescript-eslint/visitor-keys": "5.8.1", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "engines": { - "node": "^18.19.0 || >=20.6.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "packages/instrumentation-nestjs-core": { - "name": "@opentelemetry/instrumentation-nestjs-core", - "version": "0.49.0", - "license": "Apache-2.0", + "packages/instrumentation-openai/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.8.1.tgz", + "integrity": "sha512-SWgiWIwocK6NralrJarPZlWdr0hZnj5GXHIgfdm8hNkyKvpeQuFyLP6YjSIe9kf3YBIfU6OHSZLYkQ+smZwtNg==", + "dev": true, + "license": "MIT", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", - "@opentelemetry/semantic-conventions": "^1.30.0" - }, - "devDependencies": { - "@nestjs/common": "11.0.10", - "@nestjs/core": "11.0.10", - "@nestjs/platform-express": "11.0.10", - "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/sdk-trace-base": "^2.0.0", - "@opentelemetry/sdk-trace-node": "^2.0.0", - "@types/mocha": "10.0.10", - "@types/node": "18.18.14", - "@types/semver": "7.5.8", - "cross-env": "7.0.3", - "nyc": "17.1.0", - "reflect-metadata": "0.2.2", - "rimraf": "5.0.10", - "rxjs": "7.8.2", - "rxjs-compat": "6.6.7", - "semver": "7.7.2", - "test-all-versions": "6.1.0", - "typescript": "5.0.4" + "@typescript-eslint/types": "5.8.1", + "eslint-visitor-keys": "^3.0.0" }, "engines": { - "node": "^18.19.0 || >=20.6.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "packages/instrumentation-net": { - "name": "@opentelemetry/instrumentation-net", - "version": "0.47.0", + "packages/instrumentation-openai/node_modules/nock": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/nock/-/nock-14.0.5.tgz", + "integrity": "sha512-R49fALR9caB6vxuSWUIaK2eBYeTloZQUFBZ4rHO+TbhMGQHtwnhdqKLYki+o+8qMgLvoBYWrp/2KzGPhxL4S6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@mswjs/interceptors": "^0.38.7", + "json-stringify-safe": "^5.0.1", + "propagate": "^2.0.0" + }, + "engines": { + "node": ">=18.20.0 <20 || >=20.12.1" + } + }, + "packages/instrumentation-openai/node_modules/openai": { + "version": "4.104.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.104.0.tgz", + "integrity": "sha512-p99EFNsA/yX6UhVO93f5kJsDRLAg+CTA2RBqdHK4RtK8u5IJw32Hyb2dTGKbnnFmnuoBv5r7Z2CURI9sGZpSuA==", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", - "@opentelemetry/semantic-conventions": "^1.27.0" + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7" }, - "devDependencies": { - "@opentelemetry/api": "^1.3.0", - "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/sdk-trace-base": "^2.0.0", - "@opentelemetry/sdk-trace-node": "^2.0.0", - "@types/mocha": "10.0.10", - "@types/node": "18.18.14", - "@types/sinon": "17.0.4", - "nyc": "17.1.0", - "rimraf": "5.0.10", - "sinon": "15.2.0", - "typescript": "5.0.4" + "bin": { + "openai": "bin/cli" }, + "peerDependencies": { + "ws": "^8.18.0", + "zod": "^3.23.8" + }, + "peerDependenciesMeta": { + "ws": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "packages/instrumentation-openai/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" + }, + "packages/instrumentation-openai/node_modules/ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, "engines": { - "node": "^18.19.0 || >=20.6.0" + "node": ">=10.0.0" }, "peerDependencies": { - "@opentelemetry/api": "^1.3.0" + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "packages/instrumentation-oracledb": { "name": "@opentelemetry/instrumentation-oracledb", - "version": "0.29.0", + "version": "0.30.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/oracledb": "6.5.2" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", @@ -32766,22 +35300,37 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-oracledb/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-oracledb/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 + }, "packages/instrumentation-pg": { "name": "@opentelemetry/instrumentation-pg", - "version": "0.55.0", + "version": "0.57.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", - "@opentelemetry/semantic-conventions": "^1.27.0", + "@opentelemetry/instrumentation": "^0.204.0", + "@opentelemetry/semantic-conventions": "^1.34.0", "@opentelemetry/sql-common": "^0.41.0", - "@types/pg": "8.15.4", + "@types/pg": "8.15.5", "@types/pg-pool": "2.0.6" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", @@ -32804,18 +35353,33 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-pg/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-pg/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 + }, "packages/instrumentation-pino": { "name": "@opentelemetry/instrumentation-pino", - "version": "0.50.0", + "version": "0.51.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "^0.203.0", + "@opentelemetry/api-logs": "^0.204.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -32824,7 +35388,7 @@ "@types/semver": "7.5.8", "@types/sinon": "17.0.4", "nyc": "17.1.0", - "pino": "8.3.1", + "pino": "^8.21.0", "rimraf": "5.0.10", "semver": "7.7.2", "sinon": "15.2.0", @@ -32838,26 +35402,41 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-pino/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-pino/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 + }, "packages/instrumentation-redis": { "name": "@opentelemetry/instrumentation-redis", - "version": "0.51.0", + "version": "0.53.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/redis-common": "^0.38.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "cross-env": "7.0.3", "nyc": "17.1.0", - "redis": "^4.7.1", + "redis": "^5.6.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", "typescript": "5.0.4" @@ -32869,13 +35448,110 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-redis/node_modules/@redis/bloom": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-5.6.0.tgz", + "integrity": "sha512-l13/d6BaZDJzogzZJEphIeZ8J0hpQpjkMiozomTm6nJiMNYkoPsNOBOOQua4QsG0fFjyPmLMDJFPAp5FBQtTXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@redis/client": "^5.6.0" + } + }, + "packages/instrumentation-redis/node_modules/@redis/client": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-5.6.0.tgz", + "integrity": "sha512-wmP9kCFElCSr4MM4+1E4VckDuN4wLtiXSM/J0rKVQppajxQhowci89RGZr2OdLualowb8SRJ/R6OjsXrn9ZNFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cluster-key-slot": "1.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "packages/instrumentation-redis/node_modules/@redis/json": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@redis/json/-/json-5.6.0.tgz", + "integrity": "sha512-YQN9ZqaSDpdLfJqwzcF4WeuJMGru/h4WsV7GeeNtXsSeyQjHTyDxrd48xXfRRJGv7HitA7zGnzdHplNeKOgrZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@redis/client": "^5.6.0" + } + }, + "packages/instrumentation-redis/node_modules/@redis/search": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@redis/search/-/search-5.6.0.tgz", + "integrity": "sha512-sLgQl92EyMVNHtri5K8Q0j2xt9c0cO9HYurXz667Un4xeUYR+B/Dw5lLG35yqO7VvVxb9amHJo9sAWumkKZYwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@redis/client": "^5.6.0" + } + }, + "packages/instrumentation-redis/node_modules/@redis/time-series": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-5.6.0.tgz", + "integrity": "sha512-tXABmN1vu4aTNL3WI4Iolpvx/5jgil2Bs31ozvKblT+jkUoRkk8ykmYo9Pv/Mp7Gk6/Qkr/2rMgVminrt/4BBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@redis/client": "^5.6.0" + } + }, + "packages/instrumentation-redis/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-redis/node_modules/redis": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/redis/-/redis-5.6.0.tgz", + "integrity": "sha512-0x3pM3SlYA5azdNwO8qgfMBzoOqSqr9M+sd1hojbcn0ZDM5zsmKeMM+zpTp6LIY+mbQomIc/RTTQKuBzr8QKzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@redis/bloom": "5.6.0", + "@redis/client": "5.6.0", + "@redis/json": "5.6.0", + "@redis/search": "5.6.0", + "@redis/time-series": "5.6.0" + }, + "engines": { + "node": ">= 18" + } + }, + "packages/instrumentation-redis/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 + }, "packages/instrumentation-restify": { "name": "@opentelemetry/instrumentation-restify", - "version": "0.49.0", + "version": "0.50.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { @@ -32901,12 +35577,27 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-restify/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-restify/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 + }, "packages/instrumentation-router": { "name": "@opentelemetry/instrumentation-router", - "version": "0.48.0", + "version": "0.49.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { @@ -32928,12 +35619,27 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-router/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-router/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 + }, "packages/instrumentation-runtime-node": { "name": "@opentelemetry/instrumentation-runtime-node", - "version": "0.17.0", + "version": "0.18.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", @@ -32951,17 +35657,32 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-runtime-node/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-runtime-node/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 + }, "packages/instrumentation-socket.io": { "name": "@opentelemetry/instrumentation-socket.io", - "version": "0.50.0", + "version": "0.51.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -32996,6 +35717,15 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "packages/instrumentation-socket.io/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "packages/instrumentation-socket.io/node_modules/@types/yargs": { "version": "16.0.9", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", @@ -33131,22 +35861,29 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, + "packages/instrumentation-socket.io/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 + }, "packages/instrumentation-tedious": { "name": "@opentelemetry/instrumentation-tedious", - "version": "0.22.0", + "version": "0.23.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/tedious": "^4.0.14" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", + "cross-env": "7.0.3", "nyc": "17.1.0", "rimraf": "5.0.10", "semver": "7.7.2", @@ -33161,17 +35898,32 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-tedious/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-tedious/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 + }, "packages/instrumentation-typeorm": { "name": "@opentelemetry/instrumentation-typeorm", - "version": "0.4.0", + "version": "0.5.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -33188,76 +35940,25 @@ "@opentelemetry/api": "^1.3.0" } }, - "packages/instrumentation-typeorm/node_modules/@types/whatwg-url": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", - "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/webidl-conversions": "*" - } - }, - "packages/instrumentation-typeorm/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==", + "packages/instrumentation-typeorm/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" + "undici-types": "~5.26.4" } }, "packages/instrumentation-typeorm/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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "packages/instrumentation-typeorm/node_modules/bson": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.3.tgz", - "integrity": "sha512-MTxGsqgYTwfshYWTRdmZRC+M7FnG1b4y7RO7p2k3X24Wq0yv1m77Wsj0BzlPzd/IowgESfsruQCUToa7vbOpPQ==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=16.20.1" - } - }, - "packages/instrumentation-typeorm/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" - } - }, "packages/instrumentation-typeorm/node_modules/camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -33284,20 +35985,6 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true }, - "packages/instrumentation-typeorm/node_modules/dedent": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz", - "integrity": "sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==", - "dev": true, - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, "packages/instrumentation-typeorm/node_modules/foreground-child": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", @@ -33311,123 +35998,37 @@ "node": ">=8.0.0" } }, - "packages/instrumentation-typeorm/node_modules/gaxios": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz", - "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.9" - }, - "engines": { - "node": ">=12" - } - }, - "packages/instrumentation-typeorm/node_modules/gcp-metadata": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz", - "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "gaxios": "^5.0.0", - "json-bigint": "^1.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "packages/instrumentation-typeorm/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==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "packages/instrumentation-typeorm/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "packages/instrumentation-typeorm/node_modules/mongodb": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.16.0.tgz", - "integrity": "sha512-D1PNcdT0y4Grhou5Zi/qgipZOYeWrhLEpk33n3nm6LGtz61jvO88WlrWCK/bigMjpnOdAUKKQwsGIl0NtWMyYw==", + "packages/instrumentation-typeorm/node_modules/glob": { + "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, - "optional": true, - "peer": true, "dependencies": { - "@mongodb-js/saslprep": "^1.1.9", - "bson": "^6.10.3", - "mongodb-connection-string-url": "^3.0.0" - }, - "engines": { - "node": ">=16.20.1" + "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" }, - "peerDependencies": { - "@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", - "mongodb-client-encryption": ">=6.0.0 <7", - "snappy": "^7.2.2", - "socks": "^2.7.1" + "engines": { + "node": "*" }, - "peerDependenciesMeta": { - "@aws-sdk/credential-providers": { - "optional": true - }, - "@mongodb-js/zstd": { - "optional": true - }, - "gcp-metadata": { - "optional": true - }, - "kerberos": { - "optional": true - }, - "mongodb-client-encryption": { - "optional": true - }, - "snappy": { - "optional": true - }, - "socks": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "packages/instrumentation-typeorm/node_modules/mongodb-connection-string-url": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.2.tgz", - "integrity": "sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==", + "packages/instrumentation-typeorm/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "@types/whatwg-url": "^11.0.2", - "whatwg-url": "^14.1.0 || ^13.0.0" + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, "packages/instrumentation-typeorm/node_modules/nyc": { @@ -33471,27 +36072,6 @@ "node": ">=8.9" } }, - "packages/instrumentation-typeorm/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==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "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" - } - }, "packages/instrumentation-typeorm/node_modules/nyc/node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -33508,28 +36088,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "packages/instrumentation-typeorm/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" - } - }, "packages/instrumentation-typeorm/node_modules/p-map": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", @@ -33548,124 +36106,11 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "packages/instrumentation-typeorm/node_modules/typeorm": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.24.tgz", - "integrity": "sha512-4IrHG7A0tY8l5gEGXfW56VOMfUVWEkWlH/h5wmcyZ+V8oCiLj7iTPp0lEjMEZVrxEkGSdP9ErgTKHKXQApl/oA==", - "dev": true, - "dependencies": { - "@sqltools/formatter": "^1.2.5", - "ansis": "^3.17.0", - "app-root-path": "^3.1.0", - "buffer": "^6.0.3", - "dayjs": "^1.11.13", - "debug": "^4.4.0", - "dedent": "^1.6.0", - "dotenv": "^16.4.7", - "glob": "^10.4.5", - "sha.js": "^2.4.11", - "sql-highlight": "^6.0.0", - "tslib": "^2.8.1", - "uuid": "^11.1.0", - "yargs": "^17.7.2" - }, - "bin": { - "typeorm": "cli.js", - "typeorm-ts-node-commonjs": "cli-ts-node-commonjs.js", - "typeorm-ts-node-esm": "cli-ts-node-esm.js" - }, - "engines": { - "node": ">=16.13.0" - }, - "funding": { - "url": "https://opencollective.com/typeorm" - }, - "peerDependencies": { - "@google-cloud/spanner": "^5.18.0 || ^6.0.0 || ^7.0.0", - "@sap/hana-client": "^2.12.25", - "better-sqlite3": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", - "hdb-pool": "^0.1.6", - "ioredis": "^5.0.4", - "mongodb": "^5.8.0 || ^6.0.0", - "mssql": "^9.1.1 || ^10.0.1 || ^11.0.1", - "mysql2": "^2.2.5 || ^3.0.1", - "oracledb": "^6.3.0", - "pg": "^8.5.1", - "pg-native": "^3.0.0", - "pg-query-stream": "^4.0.0", - "redis": "^3.1.1 || ^4.0.0", - "reflect-metadata": "^0.1.14 || ^0.2.0", - "sql.js": "^1.4.0", - "sqlite3": "^5.0.3", - "ts-node": "^10.7.0", - "typeorm-aurora-data-api-driver": "^2.0.0 || ^3.0.0" - }, - "peerDependenciesMeta": { - "@google-cloud/spanner": { - "optional": true - }, - "@sap/hana-client": { - "optional": true - }, - "better-sqlite3": { - "optional": true - }, - "hdb-pool": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "mongodb": { - "optional": true - }, - "mssql": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "oracledb": { - "optional": true - }, - "pg": { - "optional": true - }, - "pg-native": { - "optional": true - }, - "pg-query-stream": { - "optional": true - }, - "redis": { - "optional": true - }, - "sql.js": { - "optional": true - }, - "sqlite3": { - "optional": true - }, - "ts-node": { - "optional": true - }, - "typeorm-aurora-data-api-driver": { - "optional": true - } - } - }, - "packages/instrumentation-typeorm/node_modules/uuid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/esm/bin/uuid" - } + "packages/instrumentation-typeorm/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 }, "packages/instrumentation-typeorm/node_modules/wrap-ansi": { "version": "6.2.0", @@ -33687,6 +36132,28 @@ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "dev": true }, + "packages/instrumentation-typeorm/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" + } + }, "packages/instrumentation-typeorm/node_modules/yargs-parser": { "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", @@ -33702,11 +36169,11 @@ }, "packages/instrumentation-undici": { "name": "@opentelemetry/instrumentation-undici", - "version": "0.14.0", + "version": "0.15.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0" }, "devDependencies": { "@opentelemetry/api": "^1.7.0", @@ -33729,13 +36196,28 @@ "@opentelemetry/api": "^1.7.0" } }, + "packages/instrumentation-undici/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-undici/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 + }, "packages/instrumentation-user-interaction": { "name": "@opentelemetry/instrumentation-user-interaction", - "version": "0.48.0", + "version": "0.49.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-web": "^2.0.0" }, "devDependencies": { @@ -33743,9 +36225,9 @@ "@babel/preset-env": "7.24.6", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-zone-peer-dep": "^2.0.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.203.0", + "@opentelemetry/instrumentation-xml-http-request": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", - "@types/jquery": "3.5.32", + "@types/jquery": "3.5.33", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -33762,7 +36244,7 @@ "karma-webpack": "5.0.1", "nyc": "17.1.0", "sinon": "15.1.2", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", @@ -33777,6 +36259,15 @@ "zone.js": "^0.11.4 || ^0.13.0 || ^0.14.0 || ^0.15.0" } }, + "packages/instrumentation-user-interaction/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "packages/instrumentation-user-interaction/node_modules/sinon": { "version": "15.1.2", "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.1.2.tgz", @@ -33796,20 +36287,38 @@ "url": "https://opencollective.com/sinon" } }, + "packages/instrumentation-user-interaction/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" + } + }, + "packages/instrumentation-user-interaction/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 + }, "packages/instrumentation-winston": { "name": "@opentelemetry/instrumentation-winston", - "version": "0.48.0", + "version": "0.49.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "^0.203.0", - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/api-logs": "^0.204.0", + "@opentelemetry/instrumentation": "^0.204.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", - "@opentelemetry/winston-transport": "^0.14.0", + "@opentelemetry/winston-transport": "^0.15.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -33829,12 +36338,27 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/instrumentation-winston/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/instrumentation-winston/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 + }, "packages/plugin-react-load": { "name": "@opentelemetry/plugin-react-load", - "version": "0.35.0", + "version": "0.36.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "shimmer": "^1.2.1" }, "devDependencies": { @@ -33846,7 +36370,7 @@ "@opentelemetry/sdk-trace-web": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", - "@types/react": "17.0.87", + "@types/react": "17.0.88", "@types/react-addons-test-utils": "0.14.26", "@types/react-dom": "17.0.26", "@types/shimmer": "1.0.3", @@ -33866,7 +36390,7 @@ "react-dom": "17.0.2", "rimraf": "5.0.10", "sinon": "15.1.2", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", @@ -33880,6 +36404,15 @@ "react": "^16.13.1 || ^17.0.0" } }, + "packages/plugin-react-load/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "packages/plugin-react-load/node_modules/sinon": { "version": "15.1.2", "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.1.2.tgz", @@ -33899,13 +36432,31 @@ "url": "https://opencollective.com/sinon" } }, + "packages/plugin-react-load/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" + } + }, + "packages/plugin-react-load/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 + }, "packages/propagation-utils": { "name": "@opentelemetry/propagation-utils", - "version": "0.31.3", + "version": "0.31.4", "license": "Apache-2.0", "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@types/mocha": "^10.0.0", "@types/node": "18.18.14", "@types/sinon": "^17.0.0", @@ -33921,9 +36472,24 @@ "@opentelemetry/api": "^1.0.0" } }, + "packages/propagation-utils/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/propagation-utils/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 + }, "packages/propagator-aws-xray": { "name": "@opentelemetry/propagator-aws-xray", - "version": "2.1.0", + "version": "2.1.1", "license": "Apache-2.0", "devDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0", @@ -33941,7 +36507,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "nyc": "17.1.0", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.95.0", "webpack-cli": "5.1.4", @@ -33956,10 +36522,10 @@ }, "packages/propagator-aws-xray-lambda": { "name": "@opentelemetry/propagator-aws-xray-lambda", - "version": "0.55.0", + "version": "0.55.1", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/propagator-aws-xray": "^2.1.0" + "@opentelemetry/propagator-aws-xray": "^2.1.1" }, "devDependencies": { "@babel/core": "^7.21.8", @@ -33972,7 +36538,7 @@ "babel-plugin-istanbul": "7.0.0", "nyc": "17.1.0", "sinon": "15.1.2", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4" }, "engines": { @@ -33982,6 +36548,15 @@ "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, + "packages/propagator-aws-xray-lambda/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "packages/propagator-aws-xray-lambda/node_modules/sinon": { "version": "15.1.2", "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.1.2.tgz", @@ -34001,6 +36576,33 @@ "url": "https://opencollective.com/sinon" } }, + "packages/propagator-aws-xray-lambda/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" + } + }, + "packages/propagator-aws-xray-lambda/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 + }, + "packages/propagator-aws-xray/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "packages/propagator-aws-xray/node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -34025,6 +36627,12 @@ "url": "https://opencollective.com/webpack" } }, + "packages/propagator-aws-xray/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 + }, "packages/propagator-aws-xray/node_modules/webpack": { "version": "5.95.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", @@ -34073,7 +36681,7 @@ }, "packages/propagator-instana": { "name": "@opentelemetry/propagator-instana", - "version": "0.4.0", + "version": "0.4.1", "license": "Apache-2.0", "devDependencies": { "@babel/core": "7.24.6", @@ -34094,7 +36702,7 @@ "karma-webpack": "5.0.1", "nyc": "17.1.0", "process": "0.11.10", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", @@ -34107,9 +36715,24 @@ "@opentelemetry/api": "^1.0.0" } }, + "packages/propagator-instana/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/propagator-instana/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 + }, "packages/propagator-ot-trace": { "name": "@opentelemetry/propagator-ot-trace", - "version": "0.28.0", + "version": "0.28.1", "license": "Apache-2.0", "devDependencies": { "@babel/core": "7.24.6", @@ -34130,7 +36753,7 @@ "karma-webpack": "5.0.1", "nyc": "17.1.0", "sinon": "15.1.2", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", @@ -34143,6 +36766,15 @@ "@opentelemetry/api": "^1.0.0" } }, + "packages/propagator-ot-trace/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "packages/propagator-ot-trace/node_modules/sinon": { "version": "15.1.2", "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.1.2.tgz", @@ -34162,6 +36794,24 @@ "url": "https://opencollective.com/sinon" } }, + "packages/propagator-ot-trace/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" + } + }, + "packages/propagator-ot-trace/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 + }, "packages/redis-common": { "name": "@opentelemetry/redis-common", "version": "0.38.0", @@ -34176,9 +36826,24 @@ "node": "^18.19.0 || >=20.6.0" } }, + "packages/redis-common/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/redis-common/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 + }, "packages/resource-detector-alibaba-cloud": { "name": "@opentelemetry/resource-detector-alibaba-cloud", - "version": "0.31.3", + "version": "0.31.4", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^2.0.0", @@ -34187,7 +36852,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -34205,9 +36870,24 @@ "@opentelemetry/api": "^1.0.0" } }, + "packages/resource-detector-alibaba-cloud/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/resource-detector-alibaba-cloud/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 + }, "packages/resource-detector-aws": { "name": "@opentelemetry/resource-detector-aws", - "version": "2.3.0", + "version": "2.4.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^2.0.0", @@ -34216,9 +36896,9 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation-fs": "^0.23.0", - "@opentelemetry/instrumentation-http": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation-fs": "^0.24.0", + "@opentelemetry/instrumentation-http": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -34236,9 +36916,24 @@ "@opentelemetry/api": "^1.0.0" } }, + "packages/resource-detector-aws/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/resource-detector-aws/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 + }, "packages/resource-detector-azure": { "name": "@opentelemetry/resource-detector-azure", - "version": "0.10.0", + "version": "0.11.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^2.0.0", @@ -34247,8 +36942,8 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation-http": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -34265,9 +36960,24 @@ "@opentelemetry/api": "^1.0.0" } }, + "packages/resource-detector-azure/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/resource-detector-azure/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 + }, "packages/resource-detector-container": { "name": "@opentelemetry/resource-detector-container", - "version": "0.7.3", + "version": "0.7.4", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^2.0.0", @@ -34276,8 +36986,8 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation-fs": "^0.23.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation-fs": "^0.24.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -34296,36 +37006,114 @@ "@opentelemetry/api": "^1.0.0" } }, - "packages/resource-detector-gcp": { - "name": "@opentelemetry/resource-detector-gcp", - "version": "0.37.0", - "license": "Apache-2.0", + "packages/resource-detector-container/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/resource-detector-container/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 + }, + "packages/resource-detector-gcp": { + "name": "@opentelemetry/resource-detector-gcp", + "version": "0.38.0", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "gcp-metadata": "^6.0.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.0.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.204.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@types/mocha": "10.0.10", + "@types/node": "18.18.14", + "@types/semver": "7.5.8", + "nock": "13.3.3", + "nyc": "17.1.0", + "rimraf": "5.0.10", + "typescript": "5.0.4" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "packages/resource-detector-gcp/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/resource-detector-gcp/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "engines": { + "node": ">= 14" + } + }, + "packages/resource-detector-gcp/node_modules/gaxios": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", + "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "packages/resource-detector-gcp/node_modules/gcp-metadata": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.1.tgz", + "integrity": "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==", + "dependencies": { + "gaxios": "^6.1.1", + "google-logging-utils": "^0.0.2", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "packages/resource-detector-gcp/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dependencies": { - "@opentelemetry/core": "^2.0.0", - "@opentelemetry/resources": "^2.0.0", - "@opentelemetry/semantic-conventions": "^1.27.0", - "gcp-metadata": "^6.0.0" - }, - "devDependencies": { - "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation-http": "^0.203.0", - "@opentelemetry/sdk-trace-base": "^2.0.0", - "@types/mocha": "10.0.10", - "@types/node": "18.18.14", - "@types/semver": "7.5.8", - "nock": "13.3.3", - "nyc": "17.1.0", - "rimraf": "5.0.10", - "typescript": "5.0.4" + "agent-base": "^7.1.2", + "debug": "4" }, "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0" + "node": ">= 14" } }, + "packages/resource-detector-gcp/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 + }, "packages/resource-detector-github": { "name": "@opentelemetry/resource-detector-github", "version": "0.31.0", @@ -34350,9 +37138,24 @@ "@opentelemetry/api": "^1.0.0" } }, + "packages/resource-detector-github/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/resource-detector-github/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 + }, "packages/resource-detector-instana": { "name": "@opentelemetry/resource-detector-instana", - "version": "0.22.0", + "version": "0.23.0", "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "^2.0.0", @@ -34360,8 +37163,8 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/sdk-node": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/sdk-node": "^0.204.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/semver": "7.5.8", @@ -34377,6 +37180,21 @@ "@opentelemetry/api": "^1.3.0" } }, + "packages/resource-detector-instana/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/resource-detector-instana/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 + }, "packages/sql-common": { "name": "@opentelemetry/sql-common", "version": "0.41.0", @@ -34398,12 +37216,27 @@ "@opentelemetry/api": "^1.1.0" } }, + "packages/sql-common/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/sql-common/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 + }, "packages/winston-transport": { "name": "@opentelemetry/winston-transport", - "version": "0.14.0", + "version": "0.15.0", "license": "Apache-2.0", "dependencies": { - "@opentelemetry/api-logs": "^0.203.0", + "@opentelemetry/api-logs": "^0.204.0", "winston-transport": "4.*" }, "devDependencies": { @@ -34419,6 +37252,21 @@ "engines": { "node": "^18.19.0 || >=20.6.0" } + }, + "packages/winston-transport/node_modules/@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "packages/winston-transport/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 } }, "dependencies": { @@ -34454,6 +37302,23 @@ "tslib": "^2.6.2" } }, + "@aws-crypto/ie11-detection": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-2.0.2.tgz", + "integrity": "sha512-5XDMQY98gMAf/WRTic5G++jfmS/VLM0rwpiOpaainKi4L0nqWMSB1SzsrEG5rjFZGYN6ZAefO+/Yta2dFM0kMw==", + "dev": true, + "requires": { + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, "@aws-crypto/sha1-browser": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", @@ -34607,895 +37472,1789 @@ } } }, + "@aws-sdk/abort-controller": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.78.0.tgz", + "integrity": "sha512-iz1YLwM2feJUj/y97yO4XmDeTxs+yZ1XJwQgoawKuc8IDBKUutnJNCHL5jL04WUKU7Nrlq+Hr2fCTScFh2z9zg==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true + } + } + }, "@aws-sdk/client-bedrock-runtime": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-bedrock-runtime/-/client-bedrock-runtime-3.812.0.tgz", - "integrity": "sha512-ipHP7WxDylty67jVYd/WbZSb1nPIfQywvdUrm4P7pbj3d8n5GLANIg8RMtCbQfedzF6VezmQFcwWI4j7WJ57aw==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-bedrock-runtime/-/client-bedrock-runtime-3.858.0.tgz", + "integrity": "sha512-0q/WL3gGDeDpt596XVx6M0q2kgTlWK+ujFy5Uv/e2MBWfranhnhrYq2IIxsa/GdhwoTLZAgO/YFdqmt9B4d8VA==", "dev": true, "requires": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/credential-provider-node": "3.812.0", - "@aws-sdk/eventstream-handler-node": "3.804.0", - "@aws-sdk/middleware-eventstream": "3.804.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.812.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.812.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.3", - "@smithy/eventstream-serde-browser": "^4.0.2", - "@smithy/eventstream-serde-config-resolver": "^4.1.0", - "@smithy/eventstream-serde-node": "^4.0.2", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.6", - "@smithy/middleware-retry": "^4.1.7", - "@smithy/middleware-serde": "^4.0.5", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/credential-provider-node": "3.858.0", + "@aws-sdk/eventstream-handler-node": "3.840.0", + "@aws-sdk/middleware-eventstream": "3.840.0", + "@aws-sdk/middleware-host-header": "3.840.0", + "@aws-sdk/middleware-logger": "3.840.0", + "@aws-sdk/middleware-recursion-detection": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.858.0", + "@aws-sdk/middleware-websocket": "3.844.0", + "@aws-sdk/region-config-resolver": "3.840.0", + "@aws-sdk/token-providers": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-endpoints": "3.848.0", + "@aws-sdk/util-user-agent-browser": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.858.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.2", + "@smithy/eventstream-serde-browser": "^4.0.4", + "@smithy/eventstream-serde-config-resolver": "^4.1.2", + "@smithy/eventstream-serde-node": "^4.0.4", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/hash-node": "^4.0.4", + "@smithy/invalid-dependency": "^4.0.4", + "@smithy/middleware-content-length": "^4.0.4", + "@smithy/middleware-endpoint": "^4.1.17", + "@smithy/middleware-retry": "^4.1.18", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/node-http-handler": "^4.1.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.14", - "@smithy/util-defaults-mode-node": "^4.0.14", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", - "@smithy/util-stream": "^4.2.0", + "@smithy/util-defaults-mode-browser": "^4.0.25", + "@smithy/util-defaults-mode-node": "^4.0.25", + "@smithy/util-endpoints": "^3.0.6", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.6", + "@smithy/util-stream": "^4.2.3", "@smithy/util-utf8": "^4.0.0", "@types/uuid": "^9.0.1", "tslib": "^2.6.2", "uuid": "^9.0.1" - }, - "dependencies": { - "@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", - "dev": true, - "requires": { - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - } - }, - "@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", - "dev": true, - "requires": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - } - } } }, "@aws-sdk/client-cognito-identity": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.812.0.tgz", - "integrity": "sha512-LWkP+Vb2f6aNaway06XvFZG3altSXltAClzCz9cTFuOfKG6V2X+0VWsW9cnFRV4+MFFJW3iQAaPMQ1fBO9Rusg==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.858.0.tgz", + "integrity": "sha512-ISODr1Wv2Tv/J7fStSnJzjeb+A2YnAq5/cBq9ntJQpwkXMDS/onku5yRCGEVTLYrQICFee7ibEpzGbAC/X+3Vg==", "dev": true, "optional": true, "requires": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/credential-provider-node": "3.812.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.812.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.812.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.3", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.6", - "@smithy/middleware-retry": "^4.1.7", - "@smithy/middleware-serde": "^4.0.5", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/credential-provider-node": "3.858.0", + "@aws-sdk/middleware-host-header": "3.840.0", + "@aws-sdk/middleware-logger": "3.840.0", + "@aws-sdk/middleware-recursion-detection": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.858.0", + "@aws-sdk/region-config-resolver": "3.840.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-endpoints": "3.848.0", + "@aws-sdk/util-user-agent-browser": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.858.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.2", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/hash-node": "^4.0.4", + "@smithy/invalid-dependency": "^4.0.4", + "@smithy/middleware-content-length": "^4.0.4", + "@smithy/middleware-endpoint": "^4.1.17", + "@smithy/middleware-retry": "^4.1.18", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/node-http-handler": "^4.1.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.14", - "@smithy/util-defaults-mode-node": "^4.0.14", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", + "@smithy/util-defaults-mode-browser": "^4.0.25", + "@smithy/util-defaults-mode-node": "^4.0.25", + "@smithy/util-endpoints": "^3.0.6", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.6", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", - "dev": true, - "optional": true, - "requires": { - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - } - }, - "@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", - "dev": true, - "optional": true, - "requires": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - } - } } }, "@aws-sdk/client-dynamodb": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.812.0.tgz", - "integrity": "sha512-1cmdldrYEYbVzai1OnIX9INS9l6YFyY6Z/kAvSL5qe55CHdKHVeWb5zRGln+Ffy5zespPE/ejtJBb4hTARCZ8Q==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.858.0.tgz", + "integrity": "sha512-QB9levGfBBR11WbCMEUInpED9W4wLtnU4LKgheul2z+TX59xHk5l7G0hd9+sW9wWyInZ+MDLRNDhGfSlpqw80g==", "dev": true, "requires": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/credential-provider-node": "3.812.0", - "@aws-sdk/middleware-endpoint-discovery": "3.808.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.812.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.812.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.3", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.6", - "@smithy/middleware-retry": "^4.1.7", - "@smithy/middleware-serde": "^4.0.5", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/credential-provider-node": "3.858.0", + "@aws-sdk/middleware-endpoint-discovery": "3.840.0", + "@aws-sdk/middleware-host-header": "3.840.0", + "@aws-sdk/middleware-logger": "3.840.0", + "@aws-sdk/middleware-recursion-detection": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.858.0", + "@aws-sdk/region-config-resolver": "3.840.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-endpoints": "3.848.0", + "@aws-sdk/util-user-agent-browser": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.858.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.2", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/hash-node": "^4.0.4", + "@smithy/invalid-dependency": "^4.0.4", + "@smithy/middleware-content-length": "^4.0.4", + "@smithy/middleware-endpoint": "^4.1.17", + "@smithy/middleware-retry": "^4.1.18", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/node-http-handler": "^4.1.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.14", - "@smithy/util-defaults-mode-node": "^4.0.14", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", + "@smithy/util-defaults-mode-browser": "^4.0.25", + "@smithy/util-defaults-mode-node": "^4.0.25", + "@smithy/util-endpoints": "^3.0.6", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.6", "@smithy/util-utf8": "^4.0.0", - "@smithy/util-waiter": "^4.0.3", + "@smithy/util-waiter": "^4.0.6", "@types/uuid": "^9.0.1", "tslib": "^2.6.2", "uuid": "^9.0.1" - }, - "dependencies": { - "@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", - "dev": true, - "requires": { - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - } - }, - "@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", - "dev": true, - "requires": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - } - } } }, "@aws-sdk/client-kinesis": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-kinesis/-/client-kinesis-3.812.0.tgz", - "integrity": "sha512-6uxG4aYHMa5QfhwshU2MVOW5pkonWA9LNnwaD60nWtBJNshsLX0rhLf2bicAZa6TNUCYrWMmd3Y0ZdhFHCezXA==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-kinesis/-/client-kinesis-3.858.0.tgz", + "integrity": "sha512-G+YD9vNO0GqkYSfoyL+/IJkGtnvw96mGyPQ5UWh5DbRizW0cZBZP0HEAw46ARkK99Fuevb5WnAcbab1HidGykQ==", "dev": true, "requires": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/credential-provider-node": "3.812.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.812.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.812.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.3", - "@smithy/eventstream-serde-browser": "^4.0.2", - "@smithy/eventstream-serde-config-resolver": "^4.1.0", - "@smithy/eventstream-serde-node": "^4.0.2", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.6", - "@smithy/middleware-retry": "^4.1.7", - "@smithy/middleware-serde": "^4.0.5", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/credential-provider-node": "3.858.0", + "@aws-sdk/middleware-host-header": "3.840.0", + "@aws-sdk/middleware-logger": "3.840.0", + "@aws-sdk/middleware-recursion-detection": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.858.0", + "@aws-sdk/region-config-resolver": "3.840.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-endpoints": "3.848.0", + "@aws-sdk/util-user-agent-browser": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.858.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.2", + "@smithy/eventstream-serde-browser": "^4.0.4", + "@smithy/eventstream-serde-config-resolver": "^4.1.2", + "@smithy/eventstream-serde-node": "^4.0.4", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/hash-node": "^4.0.4", + "@smithy/invalid-dependency": "^4.0.4", + "@smithy/middleware-content-length": "^4.0.4", + "@smithy/middleware-endpoint": "^4.1.17", + "@smithy/middleware-retry": "^4.1.18", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/node-http-handler": "^4.1.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.14", - "@smithy/util-defaults-mode-node": "^4.0.14", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", + "@smithy/util-defaults-mode-browser": "^4.0.25", + "@smithy/util-defaults-mode-node": "^4.0.25", + "@smithy/util-endpoints": "^3.0.6", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.6", "@smithy/util-utf8": "^4.0.0", - "@smithy/util-waiter": "^4.0.3", + "@smithy/util-waiter": "^4.0.6", "tslib": "^2.6.2" - }, - "dependencies": { - "@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", - "dev": true, - "requires": { - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - } - }, - "@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", - "dev": true, - "requires": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - } - } } }, "@aws-sdk/client-lambda": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.812.0.tgz", - "integrity": "sha512-F1Nj+vst26JBgygFJi6Jl5+nWW72ErU6eSYM9G9t2WdPuSV+VKDIVJaMHVPRiLIogZMj0lH+P5QrECBq0RPe8Q==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.858.0.tgz", + "integrity": "sha512-b8buzwDwUrd13tvhlcThNfP4hw86ymNfrhOO3Mr9VZo4e6a+NtxGodDlcRPUjVmiKmi4ibNER/El5ePLNT/r5g==", "dev": true, "requires": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/credential-provider-node": "3.812.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.812.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.812.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.3", - "@smithy/eventstream-serde-browser": "^4.0.2", - "@smithy/eventstream-serde-config-resolver": "^4.1.0", - "@smithy/eventstream-serde-node": "^4.0.2", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.6", - "@smithy/middleware-retry": "^4.1.7", - "@smithy/middleware-serde": "^4.0.5", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/credential-provider-node": "3.858.0", + "@aws-sdk/middleware-host-header": "3.840.0", + "@aws-sdk/middleware-logger": "3.840.0", + "@aws-sdk/middleware-recursion-detection": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.858.0", + "@aws-sdk/region-config-resolver": "3.840.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-endpoints": "3.848.0", + "@aws-sdk/util-user-agent-browser": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.858.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.2", + "@smithy/eventstream-serde-browser": "^4.0.4", + "@smithy/eventstream-serde-config-resolver": "^4.1.2", + "@smithy/eventstream-serde-node": "^4.0.4", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/hash-node": "^4.0.4", + "@smithy/invalid-dependency": "^4.0.4", + "@smithy/middleware-content-length": "^4.0.4", + "@smithy/middleware-endpoint": "^4.1.17", + "@smithy/middleware-retry": "^4.1.18", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/node-http-handler": "^4.1.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.14", - "@smithy/util-defaults-mode-node": "^4.0.14", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", - "@smithy/util-stream": "^4.2.0", + "@smithy/util-defaults-mode-browser": "^4.0.25", + "@smithy/util-defaults-mode-node": "^4.0.25", + "@smithy/util-endpoints": "^3.0.6", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.6", + "@smithy/util-stream": "^4.2.3", "@smithy/util-utf8": "^4.0.0", - "@smithy/util-waiter": "^4.0.3", + "@smithy/util-waiter": "^4.0.6", "tslib": "^2.6.2" - }, - "dependencies": { - "@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", - "dev": true, - "requires": { - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - } - }, - "@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", - "dev": true, - "requires": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - } - } } }, "@aws-sdk/client-s3": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.812.0.tgz", - "integrity": "sha512-kHgw9JDXNPLa/mHtWpOd5btBVXFSe+wwp1Ed9+bqz9uLkv0iV4joZrdQwnydkO8zlTs60Sc5ez+P2OiZ76i2Qg==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.858.0.tgz", + "integrity": "sha512-4BFXHxDyeFgeOgop1hqhf0Xjwi8ryD48W/+MY0Yf1sl5kejVcUjHlsTWi1yjF0d0B88asgU4c40IAnLKIGtzbg==", "dev": true, "requires": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/credential-provider-node": "3.812.0", - "@aws-sdk/middleware-bucket-endpoint": "3.808.0", - "@aws-sdk/middleware-expect-continue": "3.804.0", - "@aws-sdk/middleware-flexible-checksums": "3.812.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-location-constraint": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-sdk-s3": "3.812.0", - "@aws-sdk/middleware-ssec": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.812.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/signature-v4-multi-region": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.812.0", - "@aws-sdk/xml-builder": "3.804.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.3", - "@smithy/eventstream-serde-browser": "^4.0.2", - "@smithy/eventstream-serde-config-resolver": "^4.1.0", - "@smithy/eventstream-serde-node": "^4.0.2", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-blob-browser": "^4.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/hash-stream-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/md5-js": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.6", - "@smithy/middleware-retry": "^4.1.7", - "@smithy/middleware-serde": "^4.0.5", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/credential-provider-node": "3.858.0", + "@aws-sdk/middleware-bucket-endpoint": "3.840.0", + "@aws-sdk/middleware-expect-continue": "3.840.0", + "@aws-sdk/middleware-flexible-checksums": "3.858.0", + "@aws-sdk/middleware-host-header": "3.840.0", + "@aws-sdk/middleware-location-constraint": "3.840.0", + "@aws-sdk/middleware-logger": "3.840.0", + "@aws-sdk/middleware-recursion-detection": "3.840.0", + "@aws-sdk/middleware-sdk-s3": "3.858.0", + "@aws-sdk/middleware-ssec": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.858.0", + "@aws-sdk/region-config-resolver": "3.840.0", + "@aws-sdk/signature-v4-multi-region": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-endpoints": "3.848.0", + "@aws-sdk/util-user-agent-browser": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.858.0", + "@aws-sdk/xml-builder": "3.821.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.2", + "@smithy/eventstream-serde-browser": "^4.0.4", + "@smithy/eventstream-serde-config-resolver": "^4.1.2", + "@smithy/eventstream-serde-node": "^4.0.4", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/hash-blob-browser": "^4.0.4", + "@smithy/hash-node": "^4.0.4", + "@smithy/hash-stream-node": "^4.0.4", + "@smithy/invalid-dependency": "^4.0.4", + "@smithy/md5-js": "^4.0.4", + "@smithy/middleware-content-length": "^4.0.4", + "@smithy/middleware-endpoint": "^4.1.17", + "@smithy/middleware-retry": "^4.1.18", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/node-http-handler": "^4.1.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.14", - "@smithy/util-defaults-mode-node": "^4.0.14", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", - "@smithy/util-stream": "^4.2.0", + "@smithy/util-defaults-mode-browser": "^4.0.25", + "@smithy/util-defaults-mode-node": "^4.0.25", + "@smithy/util-endpoints": "^3.0.6", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.6", + "@smithy/util-stream": "^4.2.3", "@smithy/util-utf8": "^4.0.0", - "@smithy/util-waiter": "^4.0.3", - "tslib": "^2.6.2" + "@smithy/util-waiter": "^4.0.6", + "@types/uuid": "^9.0.1", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + } + }, + "@aws-sdk/client-secrets-manager": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.85.0.tgz", + "integrity": "sha512-KXATnzbQ7Z2+1bDKJXi69k37OMsn11MpIw3Wlkw5dpKYPeY9S+JEjWputfqbyyCLkdQtCWYPcv6YSX9IcAZyjw==", + "dev": true, + "requires": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/client-sts": "3.85.0", + "@aws-sdk/config-resolver": "3.80.0", + "@aws-sdk/credential-provider-node": "3.85.0", + "@aws-sdk/fetch-http-handler": "3.78.0", + "@aws-sdk/hash-node": "3.78.0", + "@aws-sdk/invalid-dependency": "3.78.0", + "@aws-sdk/middleware-content-length": "3.78.0", + "@aws-sdk/middleware-host-header": "3.78.0", + "@aws-sdk/middleware-logger": "3.78.0", + "@aws-sdk/middleware-retry": "3.80.0", + "@aws-sdk/middleware-serde": "3.78.0", + "@aws-sdk/middleware-signing": "3.78.0", + "@aws-sdk/middleware-stack": "3.78.0", + "@aws-sdk/middleware-user-agent": "3.78.0", + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/node-http-handler": "3.82.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/smithy-client": "3.85.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/url-parser": "3.78.0", + "@aws-sdk/util-base64-browser": "3.58.0", + "@aws-sdk/util-base64-node": "3.55.0", + "@aws-sdk/util-body-length-browser": "3.55.0", + "@aws-sdk/util-body-length-node": "3.55.0", + "@aws-sdk/util-defaults-mode-browser": "3.85.0", + "@aws-sdk/util-defaults-mode-node": "3.85.0", + "@aws-sdk/util-user-agent-browser": "3.78.0", + "@aws-sdk/util-user-agent-node": "3.80.0", + "@aws-sdk/util-utf8-browser": "3.55.0", + "@aws-sdk/util-utf8-node": "3.55.0", + "tslib": "^2.3.1", + "uuid": "^8.3.2" }, "dependencies": { - "@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", + "@aws-crypto/sha256-browser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz", + "integrity": "sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A==", + "dev": true, + "requires": { + "@aws-crypto/ie11-detection": "^2.0.0", + "@aws-crypto/sha256-js": "^2.0.0", + "@aws-crypto/supports-web-crypto": "^2.0.0", + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@aws-crypto/sha256-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz", + "integrity": "sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig==", "dev": true, "requires": { - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, - "@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", + "@aws-crypto/supports-web-crypto": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz", + "integrity": "sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ==", "dev": true, "requires": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@aws-crypto/util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-2.0.2.tgz", + "integrity": "sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA==", + "dev": true, + "requires": { + "@aws-sdk/types": "^3.110.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.862.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.862.0.tgz", + "integrity": "sha512-Bei+RL0cDxxV+lW2UezLbCYYNeJm6Nzee0TpW0FfyTRBhH9C1XQh4+x+IClriXvgBnRquTMMYsmJfvx8iyLKrg==", + "dev": true, + "requires": { + "@smithy/types": "^4.3.2", + "tslib": "^2.6.2" + }, + "dependencies": { + "tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true + } + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@aws-sdk/client-sso": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.85.0.tgz", + "integrity": "sha512-JMW0NzFpo99oE6O9M/kgLela73p4vmhe/5TIcdrqUvP9XUV9nANl5nSXh3rqLz0ubmliedz9kdYYhwMC3ntoXg==", + "dev": true, + "requires": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.80.0", + "@aws-sdk/fetch-http-handler": "3.78.0", + "@aws-sdk/hash-node": "3.78.0", + "@aws-sdk/invalid-dependency": "3.78.0", + "@aws-sdk/middleware-content-length": "3.78.0", + "@aws-sdk/middleware-host-header": "3.78.0", + "@aws-sdk/middleware-logger": "3.78.0", + "@aws-sdk/middleware-retry": "3.80.0", + "@aws-sdk/middleware-serde": "3.78.0", + "@aws-sdk/middleware-stack": "3.78.0", + "@aws-sdk/middleware-user-agent": "3.78.0", + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/node-http-handler": "3.82.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/smithy-client": "3.85.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/url-parser": "3.78.0", + "@aws-sdk/util-base64-browser": "3.58.0", + "@aws-sdk/util-base64-node": "3.55.0", + "@aws-sdk/util-body-length-browser": "3.55.0", + "@aws-sdk/util-body-length-node": "3.55.0", + "@aws-sdk/util-defaults-mode-browser": "3.85.0", + "@aws-sdk/util-defaults-mode-node": "3.85.0", + "@aws-sdk/util-user-agent-browser": "3.78.0", + "@aws-sdk/util-user-agent-node": "3.80.0", + "@aws-sdk/util-utf8-browser": "3.55.0", + "@aws-sdk/util-utf8-node": "3.55.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-env": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.78.0.tgz", + "integrity": "sha512-K41VTIzVHm2RyIwtBER8Hte3huUBXdV1WKO+i7olYVgLFmaqcZUNrlyoGDRqZcQ/u4AbxTzBU9jeMIbIfzMOWg==", + "dev": true, + "requires": { + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-ini": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.85.0.tgz", + "integrity": "sha512-KgzLGq+w8OrSLutwdYUw0POeLinGQKcqvQJ9702eoeXCwZMnEHwKqU61bn8QKMX/tuYVCNV4I1enI7MmYPW8Lw==", + "dev": true, + "requires": { + "@aws-sdk/credential-provider-env": "3.78.0", + "@aws-sdk/credential-provider-imds": "3.81.0", + "@aws-sdk/credential-provider-sso": "3.85.0", + "@aws-sdk/credential-provider-web-identity": "3.78.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-node": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.85.0.tgz", + "integrity": "sha512-YMxpRJg88mvfmKxy8I5yG3rx+UmF/5a/4twcdAzCfYTAPz+bV6ypIHjFv610/kygHMm29Fof3DRvHXDdBH4mkw==", + "dev": true, + "requires": { + "@aws-sdk/credential-provider-env": "3.78.0", + "@aws-sdk/credential-provider-imds": "3.81.0", + "@aws-sdk/credential-provider-ini": "3.85.0", + "@aws-sdk/credential-provider-process": "3.80.0", + "@aws-sdk/credential-provider-sso": "3.85.0", + "@aws-sdk/credential-provider-web-identity": "3.78.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-process": { + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.80.0.tgz", + "integrity": "sha512-3Ro+kMMyLUJHefOhGc5pOO/ibGcJi8bkj0z/Jtqd5I2Sm1qi7avoztST67/k48KMW1OqPnD/FUqxz5T8B2d+FQ==", + "dev": true, + "requires": { + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-sso": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.85.0.tgz", + "integrity": "sha512-uE238BgJ/AftPDlBGDlV0XdiNWnUZxFmUmLxgbr19/6jHaCuBr//T6rP+Bc0BjcHkvQCvTdFoCjs17R3Quy3cw==", + "dev": true, + "requires": { + "@aws-sdk/client-sso": "3.85.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-web-identity": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.78.0.tgz", + "integrity": "sha512-9/IvqHdJaVqMEABA8xZE3t5YF1S2PepfckVu0Ws9YUglj6oO+2QyVX6aRgMF1xph6781+Yc31TDh8/3eaDja7w==", + "dev": true, + "requires": { + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-host-header": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.78.0.tgz", + "integrity": "sha512-1zL8uaDWGmH50c8B8jjz75e0ePj6/3QeZEhjJgTgL6DTdiqvRt32p3t+XWHW+yDI14fZZUYeTklAaLVxqFrHqQ==", + "dev": true, + "requires": { + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-logger": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.78.0.tgz", + "integrity": "sha512-GBhwxNjhCJUIeQQDaGasX/C23Jay77al2vRyGwmxf8no0DdFsa4J1Ik6/2hhIqkqko+WM4SpCnpZrY4MtnxNvA==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-user-agent": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.78.0.tgz", + "integrity": "sha512-wdN5uoq8RxxhLhj0EPeuDSRFuXfUwKeEqRzCKMsYAOC0cAm+PryaP2leo0oTGJ9LUK8REK7zyfFcmtC4oOzlkA==", + "dev": true, + "requires": { + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true + }, + "@aws-sdk/util-user-agent-browser": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.78.0.tgz", + "integrity": "sha512-diGO/Bf4ggBOEnfD7lrrXaaXOwOXGz0bAJ0HhpizwEMlBld5zfDlWXjNpslh+8+u3EHRjPJQ16KGT6mp/Dm+aw==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.78.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" } + }, + "@aws-sdk/util-user-agent-node": { + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.80.0.tgz", + "integrity": "sha512-QV26qIXws1m6sZXg65NS+XrQ5NhAzbDVQLtEVE4nC39UN8fuieP6Uet/gZm9mlLI9hllwvcV7EfgBM3GSC7pZg==", + "dev": true, + "requires": { + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true } } }, - "@aws-sdk/client-sns": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sns/-/client-sns-3.812.0.tgz", - "integrity": "sha512-B8L33piQ+laO2ti+kdPl4tkuf+XtVcFoFXhmtTiXtWKEmdmwwg+wLto1ZPCm5y3LGvd8qKi4MI+rFpxeNTzJdw==", + "@aws-sdk/client-sfn": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sfn/-/client-sfn-3.876.0.tgz", + "integrity": "sha512-wFigy0+W7ciAs7ddyLXkcrx2BGPMFuTDEnt7pilBY73+ib91sie2g6Wrc8IsEGlw4N+tMl4grC2nAoAZ1zl5bg==", "dev": true, "requires": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/credential-provider-node": "3.812.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.812.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.812.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.3", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.6", - "@smithy/middleware-retry": "^4.1.7", - "@smithy/middleware-serde": "^4.0.5", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", + "@aws-sdk/core": "3.876.0", + "@aws-sdk/credential-provider-node": "3.876.0", + "@aws-sdk/middleware-host-header": "3.873.0", + "@aws-sdk/middleware-logger": "3.876.0", + "@aws-sdk/middleware-recursion-detection": "3.873.0", + "@aws-sdk/middleware-user-agent": "3.876.0", + "@aws-sdk/region-config-resolver": "3.873.0", + "@aws-sdk/types": "3.862.0", + "@aws-sdk/util-endpoints": "3.873.0", + "@aws-sdk/util-user-agent-browser": "3.873.0", + "@aws-sdk/util-user-agent-node": "3.876.0", + "@smithy/config-resolver": "^4.1.5", + "@smithy/core": "^3.8.0", + "@smithy/fetch-http-handler": "^5.1.1", + "@smithy/hash-node": "^4.0.5", + "@smithy/invalid-dependency": "^4.0.5", + "@smithy/middleware-content-length": "^4.0.5", + "@smithy/middleware-endpoint": "^4.1.18", + "@smithy/middleware-retry": "^4.1.19", + "@smithy/middleware-serde": "^4.0.9", + "@smithy/middleware-stack": "^4.0.5", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/node-http-handler": "^4.1.1", + "@smithy/protocol-http": "^5.1.3", + "@smithy/smithy-client": "^4.4.10", + "@smithy/types": "^4.3.2", + "@smithy/url-parser": "^4.0.5", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.14", - "@smithy/util-defaults-mode-node": "^4.0.14", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", + "@smithy/util-defaults-mode-browser": "^4.0.26", + "@smithy/util-defaults-mode-node": "^4.0.26", + "@smithy/util-endpoints": "^3.0.7", + "@smithy/util-middleware": "^4.0.5", + "@smithy/util-retry": "^4.0.7", "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" + "@types/uuid": "^9.0.1", + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "dependencies": { - "@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", + "@aws-sdk/client-sso": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.876.0.tgz", + "integrity": "sha512-Vf0PMF7HVpvllrfPODnBZmlz6kT/y2AvOt1RQG3+qD0VrHWzShc5nwgRZ+yyP3xkKVhZsQ3sJapfZTFnjqMOYA==", + "dev": true, + "requires": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.876.0", + "@aws-sdk/middleware-host-header": "3.873.0", + "@aws-sdk/middleware-logger": "3.876.0", + "@aws-sdk/middleware-recursion-detection": "3.873.0", + "@aws-sdk/middleware-user-agent": "3.876.0", + "@aws-sdk/region-config-resolver": "3.873.0", + "@aws-sdk/types": "3.862.0", + "@aws-sdk/util-endpoints": "3.873.0", + "@aws-sdk/util-user-agent-browser": "3.873.0", + "@aws-sdk/util-user-agent-node": "3.876.0", + "@smithy/config-resolver": "^4.1.5", + "@smithy/core": "^3.8.0", + "@smithy/fetch-http-handler": "^5.1.1", + "@smithy/hash-node": "^4.0.5", + "@smithy/invalid-dependency": "^4.0.5", + "@smithy/middleware-content-length": "^4.0.5", + "@smithy/middleware-endpoint": "^4.1.18", + "@smithy/middleware-retry": "^4.1.19", + "@smithy/middleware-serde": "^4.0.9", + "@smithy/middleware-stack": "^4.0.5", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/node-http-handler": "^4.1.1", + "@smithy/protocol-http": "^5.1.3", + "@smithy/smithy-client": "^4.4.10", + "@smithy/types": "^4.3.2", + "@smithy/url-parser": "^4.0.5", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.26", + "@smithy/util-defaults-mode-node": "^4.0.26", + "@smithy/util-endpoints": "^3.0.7", + "@smithy/util-middleware": "^4.0.5", + "@smithy/util-retry": "^4.0.7", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/core": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.876.0.tgz", + "integrity": "sha512-sVFBFkdoPOPyY13NaXO1E/R9O5J6ixzHnnRbqrbXYM2QQgLNPTKIiRtmVEuVoFV9YULg+/aKm7caix8m468y9w==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.862.0", + "@aws-sdk/xml-builder": "3.873.0", + "@smithy/core": "^3.8.0", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/property-provider": "^4.0.5", + "@smithy/protocol-http": "^5.1.3", + "@smithy/signature-v4": "^5.1.3", + "@smithy/smithy-client": "^4.4.10", + "@smithy/types": "^4.3.2", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-middleware": "^4.0.5", + "@smithy/util-utf8": "^4.0.0", + "fast-xml-parser": "5.2.5", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/credential-provider-env": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.876.0.tgz", + "integrity": "sha512-cof7lwp2AlrAfRs0pt4W2KMS2VMBvEmpcti1UOFfSJIqkn+cyJliMJ8LHg22GI+kUexjvxdAqSbf3M7OHvEW+w==", "dev": true, "requires": { - "@smithy/types": "^4.3.0", + "@aws-sdk/core": "3.876.0", + "@aws-sdk/types": "3.862.0", + "@smithy/property-provider": "^4.0.5", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, - "@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", + "@aws-sdk/credential-provider-http": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.876.0.tgz", + "integrity": "sha512-wzmef2NBp2+X1l8D4Q8hx1G8oI3+WdvLdPev9VnVpRYZxYGRWVPl++wvCBsCn/ZL0mdWopPkhHA3kFexQhMzvg==", + "dev": true, + "requires": { + "@aws-sdk/core": "3.876.0", + "@aws-sdk/types": "3.862.0", + "@smithy/fetch-http-handler": "^5.1.1", + "@smithy/node-http-handler": "^4.1.1", + "@smithy/property-provider": "^4.0.5", + "@smithy/protocol-http": "^5.1.3", + "@smithy/smithy-client": "^4.4.10", + "@smithy/types": "^4.3.2", + "@smithy/util-stream": "^4.2.4", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/credential-provider-ini": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.876.0.tgz", + "integrity": "sha512-JHbW6fqnJsVjGHCyko7B0NVPT1nEAPxkM3CGjUcVGsHgJBkxOLVCMQqTRyHcDdeHR2qeojlLoOHRz97xIHQjYw==", + "dev": true, + "requires": { + "@aws-sdk/core": "3.876.0", + "@aws-sdk/credential-provider-env": "3.876.0", + "@aws-sdk/credential-provider-http": "3.876.0", + "@aws-sdk/credential-provider-process": "3.876.0", + "@aws-sdk/credential-provider-sso": "3.876.0", + "@aws-sdk/credential-provider-web-identity": "3.876.0", + "@aws-sdk/nested-clients": "3.876.0", + "@aws-sdk/types": "3.862.0", + "@smithy/credential-provider-imds": "^4.0.7", + "@smithy/property-provider": "^4.0.5", + "@smithy/shared-ini-file-loader": "^4.0.5", + "@smithy/types": "^4.3.2", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/credential-provider-node": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.876.0.tgz", + "integrity": "sha512-eHbNt1+Hi43e8ANnwf6toapLSxfMiyGq459y3Uh6i7NBOiWWKEsOVcgOfUC3RCoqeikxovt1tFM2cEElWUIOhg==", + "dev": true, + "requires": { + "@aws-sdk/credential-provider-env": "3.876.0", + "@aws-sdk/credential-provider-http": "3.876.0", + "@aws-sdk/credential-provider-ini": "3.876.0", + "@aws-sdk/credential-provider-process": "3.876.0", + "@aws-sdk/credential-provider-sso": "3.876.0", + "@aws-sdk/credential-provider-web-identity": "3.876.0", + "@aws-sdk/types": "3.862.0", + "@smithy/credential-provider-imds": "^4.0.7", + "@smithy/property-provider": "^4.0.5", + "@smithy/shared-ini-file-loader": "^4.0.5", + "@smithy/types": "^4.3.2", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/credential-provider-process": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.876.0.tgz", + "integrity": "sha512-SMX4OlHvspu3gF4hxe7WAnZFhxpiCye+WlBSVoWfW/i9XNhtrZS1JMr29MK34GlCTk9qO7FlRwds/Z5k7xPpHg==", + "dev": true, + "requires": { + "@aws-sdk/core": "3.876.0", + "@aws-sdk/types": "3.862.0", + "@smithy/property-provider": "^4.0.5", + "@smithy/shared-ini-file-loader": "^4.0.5", + "@smithy/types": "^4.3.2", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/credential-provider-sso": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.876.0.tgz", + "integrity": "sha512-iP5dz9XqwePbgnh7Bdrq5e1319JpCRKLyomUfHH1XVeXkIHmwIJdmTj1Upeo1J8L/5cLHmhXAN6CTN11bLo8SA==", + "dev": true, + "requires": { + "@aws-sdk/client-sso": "3.876.0", + "@aws-sdk/core": "3.876.0", + "@aws-sdk/token-providers": "3.876.0", + "@aws-sdk/types": "3.862.0", + "@smithy/property-provider": "^4.0.5", + "@smithy/shared-ini-file-loader": "^4.0.5", + "@smithy/types": "^4.3.2", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/credential-provider-web-identity": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.876.0.tgz", + "integrity": "sha512-q/XSCP1uae5aB9veM8zcm6Gqu6A4ckX9ZbhHgCzURXVJDwp+nINW1hM9vppMjGw3ND9Ibx/adR+KfTI0TDMzqw==", + "dev": true, + "requires": { + "@aws-sdk/core": "3.876.0", + "@aws-sdk/nested-clients": "3.876.0", + "@aws-sdk/types": "3.862.0", + "@smithy/property-provider": "^4.0.5", + "@smithy/types": "^4.3.2", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/middleware-host-header": { + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.873.0.tgz", + "integrity": "sha512-KZ/W1uruWtMOs7D5j3KquOxzCnV79KQW9MjJFZM/M0l6KI8J6V3718MXxFHsTjUE4fpdV6SeCNLV1lwGygsjJA==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.862.0", + "@smithy/protocol-http": "^5.1.3", + "@smithy/types": "^4.3.2", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/middleware-logger": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.876.0.tgz", + "integrity": "sha512-cpWJhOuMSyz9oV25Z/CMHCBTgafDCbv7fHR80nlRrPdPZ8ETNsahwRgltXP1QJJ8r3X/c1kwpOR7tc+RabVzNA==", "dev": true, "requires": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", + "@aws-sdk/types": "3.862.0", + "@smithy/types": "^4.3.2", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/middleware-recursion-detection": { + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.873.0.tgz", + "integrity": "sha512-OtgY8EXOzRdEWR//WfPkA/fXl0+WwE8hq0y9iw2caNyKPtca85dzrrZWnPqyBK/cpImosrpR1iKMYr41XshsCg==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.862.0", + "@smithy/protocol-http": "^5.1.3", + "@smithy/types": "^4.3.2", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/middleware-user-agent": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.876.0.tgz", + "integrity": "sha512-FR+8INfnbNv32QDQ5szxkWX6mB/QgezfNyx8LnAh1ErISZMmEFBxXXir+ZOfuV8vsmal1a6cy9qmnMNDaNnaNQ==", + "dev": true, + "requires": { + "@aws-sdk/core": "3.876.0", + "@aws-sdk/types": "3.862.0", + "@aws-sdk/util-endpoints": "3.873.0", + "@smithy/core": "^3.8.0", + "@smithy/protocol-http": "^5.1.3", + "@smithy/types": "^4.3.2", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/nested-clients": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.876.0.tgz", + "integrity": "sha512-R4TZrkM2gUElTsotk8mt3y7iLG8TNi1LL1wgVdEEWSLOYTaFyglGdoNBMtEeP7lmXilaTy00AbYF6BakJvSTHg==", + "dev": true, + "requires": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.876.0", + "@aws-sdk/middleware-host-header": "3.873.0", + "@aws-sdk/middleware-logger": "3.876.0", + "@aws-sdk/middleware-recursion-detection": "3.873.0", + "@aws-sdk/middleware-user-agent": "3.876.0", + "@aws-sdk/region-config-resolver": "3.873.0", + "@aws-sdk/types": "3.862.0", + "@aws-sdk/util-endpoints": "3.873.0", + "@aws-sdk/util-user-agent-browser": "3.873.0", + "@aws-sdk/util-user-agent-node": "3.876.0", + "@smithy/config-resolver": "^4.1.5", + "@smithy/core": "^3.8.0", + "@smithy/fetch-http-handler": "^5.1.1", + "@smithy/hash-node": "^4.0.5", + "@smithy/invalid-dependency": "^4.0.5", + "@smithy/middleware-content-length": "^4.0.5", + "@smithy/middleware-endpoint": "^4.1.18", + "@smithy/middleware-retry": "^4.1.19", + "@smithy/middleware-serde": "^4.0.9", + "@smithy/middleware-stack": "^4.0.5", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/node-http-handler": "^4.1.1", + "@smithy/protocol-http": "^5.1.3", + "@smithy/smithy-client": "^4.4.10", + "@smithy/types": "^4.3.2", + "@smithy/url-parser": "^4.0.5", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.26", + "@smithy/util-defaults-mode-node": "^4.0.26", + "@smithy/util-endpoints": "^3.0.7", + "@smithy/util-middleware": "^4.0.5", + "@smithy/util-retry": "^4.0.7", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/region-config-resolver": { + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.873.0.tgz", + "integrity": "sha512-q9sPoef+BBG6PJnc4x60vK/bfVwvRWsPgcoQyIra057S/QGjq5VkjvNk6H8xedf6vnKlXNBwq9BaANBXnldUJg==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.862.0", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/types": "^4.3.2", + "@smithy/util-config-provider": "^4.0.0", + "@smithy/util-middleware": "^4.0.5", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/token-providers": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.876.0.tgz", + "integrity": "sha512-iU08kaQbhXnY0CC2TBcr7y/2PqPwZP2CTWX/Rbq0NvhOyteikfh7ASC+bRfLUp0XMSHKvSb+w2dh8a0lvx4oHg==", + "dev": true, + "requires": { + "@aws-sdk/core": "3.876.0", + "@aws-sdk/nested-clients": "3.876.0", + "@aws-sdk/types": "3.862.0", + "@smithy/property-provider": "^4.0.5", + "@smithy/shared-ini-file-loader": "^4.0.5", + "@smithy/types": "^4.3.2", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/types": { + "version": "3.862.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.862.0.tgz", + "integrity": "sha512-Bei+RL0cDxxV+lW2UezLbCYYNeJm6Nzee0TpW0FfyTRBhH9C1XQh4+x+IClriXvgBnRquTMMYsmJfvx8iyLKrg==", + "dev": true, + "requires": { + "@smithy/types": "^4.3.2", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/util-endpoints": { + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.873.0.tgz", + "integrity": "sha512-YByHrhjxYdjKRf/RQygRK1uh0As1FIi9+jXTcIEX/rBgN8mUByczr2u4QXBzw7ZdbdcOBMOkPnLRjNOWW1MkFg==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.862.0", + "@smithy/types": "^4.3.2", + "@smithy/url-parser": "^4.0.5", + "@smithy/util-endpoints": "^3.0.7", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/util-user-agent-browser": { + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.873.0.tgz", + "integrity": "sha512-AcRdbK6o19yehEcywI43blIBhOCSo6UgyWcuOJX5CFF8k39xm1ILCjQlRRjchLAxWrm0lU0Q7XV90RiMMFMZtA==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.862.0", + "@smithy/types": "^4.3.2", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/util-user-agent-node": { + "version": "3.876.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.876.0.tgz", + "integrity": "sha512-/ZIaeUt60JBdI0mNc7sZ8v3Tuzp8Pbe4gIAYnppGyF4KV8QA+Yu8tp2bGHfkKn150t1uvQ6P/4CwFfoGF34dzg==", + "dev": true, + "requires": { + "@aws-sdk/middleware-user-agent": "3.876.0", + "@aws-sdk/types": "3.862.0", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/types": "^4.3.2", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/xml-builder": { + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.873.0.tgz", + "integrity": "sha512-kLO7k7cGJ6KaHiExSJWojZurF7SnGMDHXRuQunFnEoD0n1yB6Lqy/S/zHiQ7oJnBhPr9q0TW9qFkrsZb1Uc54w==", + "dev": true, + "requires": { + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } } } }, + "@aws-sdk/client-sns": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sns/-/client-sns-3.858.0.tgz", + "integrity": "sha512-5Ltvxj2x3FjSwrfyXZHCNVhcBvzQln4oEoskFl1dsNeuy7mYIdRW+0NiDf9vO3Qfg8FLd2tLZNWElPG3bmgr5g==", + "dev": true, + "requires": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/credential-provider-node": "3.858.0", + "@aws-sdk/middleware-host-header": "3.840.0", + "@aws-sdk/middleware-logger": "3.840.0", + "@aws-sdk/middleware-recursion-detection": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.858.0", + "@aws-sdk/region-config-resolver": "3.840.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-endpoints": "3.848.0", + "@aws-sdk/util-user-agent-browser": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.858.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.2", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/hash-node": "^4.0.4", + "@smithy/invalid-dependency": "^4.0.4", + "@smithy/middleware-content-length": "^4.0.4", + "@smithy/middleware-endpoint": "^4.1.17", + "@smithy/middleware-retry": "^4.1.18", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/node-http-handler": "^4.1.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.25", + "@smithy/util-defaults-mode-node": "^4.0.25", + "@smithy/util-endpoints": "^3.0.6", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.6", + "@smithy/util-utf8": "^4.0.0", + "tslib": "^2.6.2" + } + }, "@aws-sdk/client-sqs": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.812.0.tgz", - "integrity": "sha512-8Fbn1Qu7239snvDL8lU9+/yFaK6UX5loQXcZGra6z/R1fJC9hBCIqLXBmHmr+bq8Atl9XepO3Or7gTpU/Aa9Gw==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.858.0.tgz", + "integrity": "sha512-LrC00ESq20OIGMYTQEdH/yaXThvTOMBd88BKA9navcfAwOXvXCJTmleIED+KttozBbPZiDzhp3ekhAEoFSy76w==", "dev": true, "requires": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/credential-provider-node": "3.812.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-sdk-sqs": "3.810.0", - "@aws-sdk/middleware-user-agent": "3.812.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.812.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.3", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/md5-js": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.6", - "@smithy/middleware-retry": "^4.1.7", - "@smithy/middleware-serde": "^4.0.5", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/credential-provider-node": "3.858.0", + "@aws-sdk/middleware-host-header": "3.840.0", + "@aws-sdk/middleware-logger": "3.840.0", + "@aws-sdk/middleware-recursion-detection": "3.840.0", + "@aws-sdk/middleware-sdk-sqs": "3.857.0", + "@aws-sdk/middleware-user-agent": "3.858.0", + "@aws-sdk/region-config-resolver": "3.840.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-endpoints": "3.848.0", + "@aws-sdk/util-user-agent-browser": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.858.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.2", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/hash-node": "^4.0.4", + "@smithy/invalid-dependency": "^4.0.4", + "@smithy/md5-js": "^4.0.4", + "@smithy/middleware-content-length": "^4.0.4", + "@smithy/middleware-endpoint": "^4.1.17", + "@smithy/middleware-retry": "^4.1.18", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/node-http-handler": "^4.1.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.14", - "@smithy/util-defaults-mode-node": "^4.0.14", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", + "@smithy/util-defaults-mode-browser": "^4.0.25", + "@smithy/util-defaults-mode-node": "^4.0.25", + "@smithy/util-endpoints": "^3.0.6", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.6", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", - "dev": true, - "requires": { - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - } - }, - "@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", - "dev": true, - "requires": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - } - } } }, "@aws-sdk/client-sso": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.812.0.tgz", - "integrity": "sha512-O//smQRj1+RXELB7xX54s5pZB0V69KHXpUZmz8V+8GAYO1FKTHfbpUgK+zyMNb+lFZxG9B69yl8pWPZ/K8bvxA==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.858.0.tgz", + "integrity": "sha512-iXuZQs4KH6a3Pwnt0uORalzAZ5EXRPr3lBYAsdNwkP8OYyoUz5/TE3BLyw7ceEh0rj4QKGNnNALYo1cDm0EV8w==", "dev": true, "requires": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.812.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.812.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.3", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.6", - "@smithy/middleware-retry": "^4.1.7", - "@smithy/middleware-serde": "^4.0.5", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/middleware-host-header": "3.840.0", + "@aws-sdk/middleware-logger": "3.840.0", + "@aws-sdk/middleware-recursion-detection": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.858.0", + "@aws-sdk/region-config-resolver": "3.840.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-endpoints": "3.848.0", + "@aws-sdk/util-user-agent-browser": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.858.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.2", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/hash-node": "^4.0.4", + "@smithy/invalid-dependency": "^4.0.4", + "@smithy/middleware-content-length": "^4.0.4", + "@smithy/middleware-endpoint": "^4.1.17", + "@smithy/middleware-retry": "^4.1.18", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/node-http-handler": "^4.1.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.14", - "@smithy/util-defaults-mode-node": "^4.0.14", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", + "@smithy/util-defaults-mode-browser": "^4.0.25", + "@smithy/util-defaults-mode-node": "^4.0.25", + "@smithy/util-endpoints": "^3.0.6", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.6", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", + } + }, + "@aws-sdk/client-sts": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.85.0.tgz", + "integrity": "sha512-qjaoGG1FrCTS1zSk/XOQRZ0v0JXeytpMl/hf6BcoX/NsaJzDaE5oJlzqdNGwd+1kLYt9J2igG3zxYgvxnCHg6w==", + "dev": true, + "requires": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.80.0", + "@aws-sdk/credential-provider-node": "3.85.0", + "@aws-sdk/fetch-http-handler": "3.78.0", + "@aws-sdk/hash-node": "3.78.0", + "@aws-sdk/invalid-dependency": "3.78.0", + "@aws-sdk/middleware-content-length": "3.78.0", + "@aws-sdk/middleware-host-header": "3.78.0", + "@aws-sdk/middleware-logger": "3.78.0", + "@aws-sdk/middleware-retry": "3.80.0", + "@aws-sdk/middleware-sdk-sts": "3.78.0", + "@aws-sdk/middleware-serde": "3.78.0", + "@aws-sdk/middleware-signing": "3.78.0", + "@aws-sdk/middleware-stack": "3.78.0", + "@aws-sdk/middleware-user-agent": "3.78.0", + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/node-http-handler": "3.82.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/smithy-client": "3.85.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/url-parser": "3.78.0", + "@aws-sdk/util-base64-browser": "3.58.0", + "@aws-sdk/util-base64-node": "3.55.0", + "@aws-sdk/util-body-length-browser": "3.55.0", + "@aws-sdk/util-body-length-node": "3.55.0", + "@aws-sdk/util-defaults-mode-browser": "3.85.0", + "@aws-sdk/util-defaults-mode-node": "3.85.0", + "@aws-sdk/util-user-agent-browser": "3.78.0", + "@aws-sdk/util-user-agent-node": "3.80.0", + "@aws-sdk/util-utf8-browser": "3.55.0", + "@aws-sdk/util-utf8-node": "3.55.0", + "entities": "2.2.0", + "fast-xml-parser": "3.19.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "@aws-crypto/sha256-browser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz", + "integrity": "sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A==", + "dev": true, + "requires": { + "@aws-crypto/ie11-detection": "^2.0.0", + "@aws-crypto/sha256-js": "^2.0.0", + "@aws-crypto/supports-web-crypto": "^2.0.0", + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@aws-crypto/sha256-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz", + "integrity": "sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig==", "dev": true, "requires": { - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" + "@aws-crypto/util": "^2.0.0", + "@aws-sdk/types": "^3.1.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, - "@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", + "@aws-crypto/supports-web-crypto": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz", + "integrity": "sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ==", "dev": true, "requires": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@aws-crypto/util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-2.0.2.tgz", + "integrity": "sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA==", + "dev": true, + "requires": { + "@aws-sdk/types": "^3.110.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.862.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.862.0.tgz", + "integrity": "sha512-Bei+RL0cDxxV+lW2UezLbCYYNeJm6Nzee0TpW0FfyTRBhH9C1XQh4+x+IClriXvgBnRquTMMYsmJfvx8iyLKrg==", + "dev": true, + "requires": { + "@smithy/types": "^4.3.2", + "tslib": "^2.6.2" + }, + "dependencies": { + "tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true + } + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@aws-sdk/client-sso": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.85.0.tgz", + "integrity": "sha512-JMW0NzFpo99oE6O9M/kgLela73p4vmhe/5TIcdrqUvP9XUV9nANl5nSXh3rqLz0ubmliedz9kdYYhwMC3ntoXg==", + "dev": true, + "requires": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.80.0", + "@aws-sdk/fetch-http-handler": "3.78.0", + "@aws-sdk/hash-node": "3.78.0", + "@aws-sdk/invalid-dependency": "3.78.0", + "@aws-sdk/middleware-content-length": "3.78.0", + "@aws-sdk/middleware-host-header": "3.78.0", + "@aws-sdk/middleware-logger": "3.78.0", + "@aws-sdk/middleware-retry": "3.80.0", + "@aws-sdk/middleware-serde": "3.78.0", + "@aws-sdk/middleware-stack": "3.78.0", + "@aws-sdk/middleware-user-agent": "3.78.0", + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/node-http-handler": "3.82.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/smithy-client": "3.85.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/url-parser": "3.78.0", + "@aws-sdk/util-base64-browser": "3.58.0", + "@aws-sdk/util-base64-node": "3.55.0", + "@aws-sdk/util-body-length-browser": "3.55.0", + "@aws-sdk/util-body-length-node": "3.55.0", + "@aws-sdk/util-defaults-mode-browser": "3.85.0", + "@aws-sdk/util-defaults-mode-node": "3.85.0", + "@aws-sdk/util-user-agent-browser": "3.78.0", + "@aws-sdk/util-user-agent-node": "3.80.0", + "@aws-sdk/util-utf8-browser": "3.55.0", + "@aws-sdk/util-utf8-node": "3.55.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-env": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.78.0.tgz", + "integrity": "sha512-K41VTIzVHm2RyIwtBER8Hte3huUBXdV1WKO+i7olYVgLFmaqcZUNrlyoGDRqZcQ/u4AbxTzBU9jeMIbIfzMOWg==", + "dev": true, + "requires": { + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-ini": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.85.0.tgz", + "integrity": "sha512-KgzLGq+w8OrSLutwdYUw0POeLinGQKcqvQJ9702eoeXCwZMnEHwKqU61bn8QKMX/tuYVCNV4I1enI7MmYPW8Lw==", + "dev": true, + "requires": { + "@aws-sdk/credential-provider-env": "3.78.0", + "@aws-sdk/credential-provider-imds": "3.81.0", + "@aws-sdk/credential-provider-sso": "3.85.0", + "@aws-sdk/credential-provider-web-identity": "3.78.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-node": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.85.0.tgz", + "integrity": "sha512-YMxpRJg88mvfmKxy8I5yG3rx+UmF/5a/4twcdAzCfYTAPz+bV6ypIHjFv610/kygHMm29Fof3DRvHXDdBH4mkw==", + "dev": true, + "requires": { + "@aws-sdk/credential-provider-env": "3.78.0", + "@aws-sdk/credential-provider-imds": "3.81.0", + "@aws-sdk/credential-provider-ini": "3.85.0", + "@aws-sdk/credential-provider-process": "3.80.0", + "@aws-sdk/credential-provider-sso": "3.85.0", + "@aws-sdk/credential-provider-web-identity": "3.78.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-process": { + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.80.0.tgz", + "integrity": "sha512-3Ro+kMMyLUJHefOhGc5pOO/ibGcJi8bkj0z/Jtqd5I2Sm1qi7avoztST67/k48KMW1OqPnD/FUqxz5T8B2d+FQ==", + "dev": true, + "requires": { + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-sso": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.85.0.tgz", + "integrity": "sha512-uE238BgJ/AftPDlBGDlV0XdiNWnUZxFmUmLxgbr19/6jHaCuBr//T6rP+Bc0BjcHkvQCvTdFoCjs17R3Quy3cw==", + "dev": true, + "requires": { + "@aws-sdk/client-sso": "3.85.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-web-identity": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.78.0.tgz", + "integrity": "sha512-9/IvqHdJaVqMEABA8xZE3t5YF1S2PepfckVu0Ws9YUglj6oO+2QyVX6aRgMF1xph6781+Yc31TDh8/3eaDja7w==", + "dev": true, + "requires": { + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-host-header": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.78.0.tgz", + "integrity": "sha512-1zL8uaDWGmH50c8B8jjz75e0ePj6/3QeZEhjJgTgL6DTdiqvRt32p3t+XWHW+yDI14fZZUYeTklAaLVxqFrHqQ==", + "dev": true, + "requires": { + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-logger": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.78.0.tgz", + "integrity": "sha512-GBhwxNjhCJUIeQQDaGasX/C23Jay77al2vRyGwmxf8no0DdFsa4J1Ik6/2hhIqkqko+WM4SpCnpZrY4MtnxNvA==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-user-agent": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.78.0.tgz", + "integrity": "sha512-wdN5uoq8RxxhLhj0EPeuDSRFuXfUwKeEqRzCKMsYAOC0cAm+PryaP2leo0oTGJ9LUK8REK7zyfFcmtC4oOzlkA==", + "dev": true, + "requires": { + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true + }, + "@aws-sdk/util-user-agent-browser": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.78.0.tgz", + "integrity": "sha512-diGO/Bf4ggBOEnfD7lrrXaaXOwOXGz0bAJ0HhpizwEMlBld5zfDlWXjNpslh+8+u3EHRjPJQ16KGT6mp/Dm+aw==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.78.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-user-agent-node": { + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.80.0.tgz", + "integrity": "sha512-QV26qIXws1m6sZXg65NS+XrQ5NhAzbDVQLtEVE4nC39UN8fuieP6Uet/gZm9mlLI9hllwvcV7EfgBM3GSC7pZg==", + "dev": true, + "requires": { + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "fast-xml-parser": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz", + "integrity": "sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg==", + "dev": true } } }, - "@aws-sdk/core": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.812.0.tgz", - "integrity": "sha512-myWA9oHMBVDObKrxG+puAkIGs8igcWInQ1PWCRTS/zN4BkhUMFjjh/JPV/4Vzvtvj5E36iujq2WtlrDLl1PpOw==", + "@aws-sdk/config-resolver": { + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.80.0.tgz", + "integrity": "sha512-vFruNKlmhsaC8yjnHmasi1WW/7EELlEuFTj4mqcqNqR4dfraf0maVvpqF1VSR8EstpFMsGYI5dmoWAnnG4PcLQ==", "dev": true, "requires": { - "@aws-sdk/types": "3.804.0", - "@smithy/core": "^3.3.3", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/property-provider": "^4.0.2", - "@smithy/protocol-http": "^5.1.0", - "@smithy/signature-v4": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/util-middleware": "^4.0.2", - "fast-xml-parser": "4.4.1", + "@aws-sdk/signature-v4": "3.78.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-config-provider": "3.55.0", + "@aws-sdk/util-middleware": "3.78.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true + } + } + }, + "@aws-sdk/core": { + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.858.0.tgz", + "integrity": "sha512-iWm4QLAS+/XMlnecIU1Y33qbBr1Ju+pmWam3xVCPlY4CSptKpVY+2hXOnmg9SbHAX9C005fWhrIn51oDd00c9A==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.840.0", + "@aws-sdk/xml-builder": "3.821.0", + "@smithy/core": "^3.7.2", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/property-provider": "^4.0.4", + "@smithy/protocol-http": "^5.1.2", + "@smithy/signature-v4": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-utf8": "^4.0.0", + "fast-xml-parser": "5.2.5", "tslib": "^2.6.2" } }, "@aws-sdk/credential-provider-cognito-identity": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.812.0.tgz", - "integrity": "sha512-SrEGXP1zs2Cy3jjOwM8eh+UZkr28z7rvjF+cgV4bpOti5F/mzPyVoIxDkG8BQ2sZdAwa9rgEhhOl4CcKjoJoTA==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.858.0.tgz", + "integrity": "sha512-y8FDSBSEvdFN1rbetf5pHSLyfTfYCbTl04bH382NTf7MaKli2vMkp8GEtrbkUk4OTnxx02kJ3NqaUBGgDFVfsg==", "dev": true, "optional": true, "requires": { - "@aws-sdk/client-cognito-identity": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/types": "^4.2.0", + "@aws-sdk/client-cognito-identity": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/property-provider": "^4.0.4", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "@aws-sdk/credential-provider-env": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.812.0.tgz", - "integrity": "sha512-Ge7IEu06ANurGBZx39q9CNN/ncqb1K8lpKZCY969uNWO0/7YPhnplrRJGMZYIS35nD2mBm3ortEKjY/wMZZd5g==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.858.0.tgz", + "integrity": "sha512-kZsGyh2BoSRguzlcGtzdLhw/l/n3KYAC+/l/H0SlsOq3RLHF6tO/cRdsLnwoix2bObChHUp03cex63o1gzdx/Q==", "dev": true, "requires": { - "@aws-sdk/core": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/types": "^4.2.0", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/property-provider": "^4.0.4", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "@aws-sdk/credential-provider-http": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.812.0.tgz", - "integrity": "sha512-Vux2U42vPGXeE407Lp6v3yVA65J7hBO9rB67LXshyGVi7VZLAYWc4mrZxNJNqabEkjcDEmMQQakLPT6zc5SvFw==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.858.0.tgz", + "integrity": "sha512-GDnfYl3+NPJQ7WQQYOXEA489B212NinpcIDD7rpsB6IWUPo8yDjT5NceK4uUkIR3MFpNCGt9zd/z6NNLdB2fuQ==", "dev": true, "requires": { - "@aws-sdk/core": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/property-provider": "^4.0.2", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/util-stream": "^4.2.0", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/node-http-handler": "^4.1.0", + "@smithy/property-provider": "^4.0.4", + "@smithy/protocol-http": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/util-stream": "^4.2.3", "tslib": "^2.6.2" + } + }, + "@aws-sdk/credential-provider-imds": { + "version": "3.81.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.81.0.tgz", + "integrity": "sha512-BHopP+gaovTYj+4tSrwCk8NNCR48gE9CWmpIOLkP9ell0gOL81Qh7aCEiIK0BZBZkccv1s16cYq1MSZZGS7PEQ==", + "dev": true, + "requires": { + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/url-parser": "3.78.0", + "tslib": "^2.3.1" }, "dependencies": { - "@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", - "dev": true, - "requires": { - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - } - }, - "@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", - "dev": true, - "requires": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - } + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true } } }, "@aws-sdk/credential-provider-ini": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.812.0.tgz", - "integrity": "sha512-oltqGvQ488xtPY5wrNjbD+qQYYkuCjn30IDE1qKMxJ58EM6UVTQl3XV44Xq07xfF5gKwVJQkfIyOkRAguOVybg==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.858.0.tgz", + "integrity": "sha512-2ZoVJW2Gg4LjpyZPvzOV+EOJgjuaVN/+mvAxAU6JU5OJJUzqNuW1Mi7VXFdZHcF6weXoKHfzYZVR0uuVapu1lQ==", "dev": true, "requires": { - "@aws-sdk/core": "3.812.0", - "@aws-sdk/credential-provider-env": "3.812.0", - "@aws-sdk/credential-provider-http": "3.812.0", - "@aws-sdk/credential-provider-process": "3.812.0", - "@aws-sdk/credential-provider-sso": "3.812.0", - "@aws-sdk/credential-provider-web-identity": "3.812.0", - "@aws-sdk/nested-clients": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/credential-provider-imds": "^4.0.4", - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/credential-provider-env": "3.858.0", + "@aws-sdk/credential-provider-http": "3.858.0", + "@aws-sdk/credential-provider-process": "3.858.0", + "@aws-sdk/credential-provider-sso": "3.858.0", + "@aws-sdk/credential-provider-web-identity": "3.858.0", + "@aws-sdk/nested-clients": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/credential-provider-imds": "^4.0.6", + "@smithy/property-provider": "^4.0.4", + "@smithy/shared-ini-file-loader": "^4.0.4", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "@aws-sdk/credential-provider-node": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.812.0.tgz", - "integrity": "sha512-SnvSWBP6cr9nqx784eETnL2Zl7ZnMB/oJgFVEG1aejAGbT1H9gTpMwuUsBXk4u/mEYe3f1lh1Wqo+HwDgNkfrg==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.858.0.tgz", + "integrity": "sha512-clHADxFnMH3R3+7E1bKWEWgoHmLMep2VlmUFDYV4Hw17JR563RRQpzlF2QRCTjSNUjH48dd6AVxEDfh7461X6Q==", "dev": true, "requires": { - "@aws-sdk/credential-provider-env": "3.812.0", - "@aws-sdk/credential-provider-http": "3.812.0", - "@aws-sdk/credential-provider-ini": "3.812.0", - "@aws-sdk/credential-provider-process": "3.812.0", - "@aws-sdk/credential-provider-sso": "3.812.0", - "@aws-sdk/credential-provider-web-identity": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/credential-provider-imds": "^4.0.4", - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", + "@aws-sdk/credential-provider-env": "3.858.0", + "@aws-sdk/credential-provider-http": "3.858.0", + "@aws-sdk/credential-provider-ini": "3.858.0", + "@aws-sdk/credential-provider-process": "3.858.0", + "@aws-sdk/credential-provider-sso": "3.858.0", + "@aws-sdk/credential-provider-web-identity": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/credential-provider-imds": "^4.0.6", + "@smithy/property-provider": "^4.0.4", + "@smithy/shared-ini-file-loader": "^4.0.4", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "@aws-sdk/credential-provider-process": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.812.0.tgz", - "integrity": "sha512-YI8bb153XeEOb59F9KtTZEwDAc14s2YHZz58+OFiJ2udnKsPV87mNiFhJPW6ba9nmOLXVat5XDcwtVT1b664wg==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.858.0.tgz", + "integrity": "sha512-l5LJWZJMRaZ+LhDjtupFUKEC5hAjgvCRrOvV5T60NCUBOy0Ozxa7Sgx3x+EOwiruuoh3Cn9O+RlbQlJX6IfZIw==", "dev": true, "requires": { - "@aws-sdk/core": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/property-provider": "^4.0.4", + "@smithy/shared-ini-file-loader": "^4.0.4", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "@aws-sdk/credential-provider-sso": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.812.0.tgz", - "integrity": "sha512-ODsPcNhgiO6GOa82TVNskM97mml9rioe9Cbhemz48lkfDQPv1u06NaCR0o3FsvprX1sEhMvJTR3sE1fyEOzvJQ==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.858.0.tgz", + "integrity": "sha512-YPAsEm4dUPCYO5nC/lv6fPhiihm70rh2Zdg/gmjOiD/7TIR+OT622bW+E1qBJ9s+dzOdAmutGSCmVbxp8gTM5Q==", "dev": true, "requires": { - "@aws-sdk/client-sso": "3.812.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/token-providers": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", + "@aws-sdk/client-sso": "3.858.0", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/token-providers": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/property-provider": "^4.0.4", + "@smithy/shared-ini-file-loader": "^4.0.4", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "@aws-sdk/credential-provider-web-identity": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.812.0.tgz", - "integrity": "sha512-E9Bmiujvm/Hp9DM/Vc1S+D0pQbx8/x4dR/zyAEZU9EoRq0duQOQ1reWYWbebYmL1OklcVpTfKV0a/VCwuAtGSg==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.858.0.tgz", + "integrity": "sha512-8iULWsH83iZDdUuiDsRb83M0NqIlXjlDbJUIddVsIrfWp4NmanKw77SV6yOZ66nuJjPsn9j7RDb9bfEPCy5SWA==", "dev": true, "requires": { - "@aws-sdk/core": "3.812.0", - "@aws-sdk/nested-clients": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/types": "^4.2.0", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/nested-clients": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/property-provider": "^4.0.4", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "@aws-sdk/credential-providers": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.812.0.tgz", - "integrity": "sha512-hT7Kr8Ao+NS9b8KCB/U8cmpr0DcWOZNZNRBGAOc4eq65JpsRv177QmSqjh75vhM9BzchH3VymcP4GeMoy4SuvA==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.858.0.tgz", + "integrity": "sha512-2Cs7wmT9qbo6gQUJA7bSZ66ANeKgrzdjhe/Q+GMGueDClu6SEzEI5auThwsA05mcoLTD0jbEGQ4iWIUBTLbdIA==", "dev": true, "optional": true, "requires": { - "@aws-sdk/client-cognito-identity": "3.812.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/credential-provider-cognito-identity": "3.812.0", - "@aws-sdk/credential-provider-env": "3.812.0", - "@aws-sdk/credential-provider-http": "3.812.0", - "@aws-sdk/credential-provider-ini": "3.812.0", - "@aws-sdk/credential-provider-node": "3.812.0", - "@aws-sdk/credential-provider-process": "3.812.0", - "@aws-sdk/credential-provider-sso": "3.812.0", - "@aws-sdk/credential-provider-web-identity": "3.812.0", - "@aws-sdk/nested-clients": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.3", - "@smithy/credential-provider-imds": "^4.0.4", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/property-provider": "^4.0.2", - "@smithy/types": "^4.2.0", + "@aws-sdk/client-cognito-identity": "3.858.0", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/credential-provider-cognito-identity": "3.858.0", + "@aws-sdk/credential-provider-env": "3.858.0", + "@aws-sdk/credential-provider-http": "3.858.0", + "@aws-sdk/credential-provider-ini": "3.858.0", + "@aws-sdk/credential-provider-node": "3.858.0", + "@aws-sdk/credential-provider-process": "3.858.0", + "@aws-sdk/credential-provider-sso": "3.858.0", + "@aws-sdk/credential-provider-web-identity": "3.858.0", + "@aws-sdk/nested-clients": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.2", + "@smithy/credential-provider-imds": "^4.0.6", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/property-provider": "^4.0.4", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, @@ -35510,322 +39269,689 @@ } }, "@aws-sdk/eventstream-handler-node": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-handler-node/-/eventstream-handler-node-3.804.0.tgz", - "integrity": "sha512-LZddQVBUCB86tZtLJRhqiDyIqr4hfRxZCcUp1fZSfpBMcf419lgcFRGWMR3J/kCWHQ0G05aor7fSeoeaxskuNQ==", + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-handler-node/-/eventstream-handler-node-3.840.0.tgz", + "integrity": "sha512-m/zVrSSAEHq+6h4sy0JUEBScB1pGgs/1+iRVhfzfbnf+/gTr4ut2jRq4tDiNEX9pQ1oFVvw+ntPua5qfquQeRQ==", "dev": true, "requires": { - "@aws-sdk/types": "3.804.0", - "@smithy/eventstream-codec": "^4.0.2", - "@smithy/types": "^4.2.0", + "@aws-sdk/types": "3.840.0", + "@smithy/eventstream-codec": "^4.0.4", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, + "@aws-sdk/fetch-http-handler": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.78.0.tgz", + "integrity": "sha512-cR6r2h2kJ1DNEZSXC6GknQB7OKmy+s9ZNV+g3AsNqkrUmNNOaHpFoSn+m6SC3qaclcGd0eQBpqzSu/TDn23Ihw==", + "dev": true, + "requires": { + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/querystring-builder": "3.78.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-base64-browser": "3.58.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true + } + } + }, + "@aws-sdk/hash-node": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.78.0.tgz", + "integrity": "sha512-ev48yXaqZVtMeuKy52LUZPHCyKvkKQ9uiUebqkA+zFxIk+eN8SMPFHmsififIHWuS6ZkXBUSctjH9wmLebH60A==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-buffer-from": "3.55.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true + } + } + }, + "@aws-sdk/invalid-dependency": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.78.0.tgz", + "integrity": "sha512-zUo+PbeRMN/Mzj6y+6p9qqk/znuFetT1gmpOcZGL9Rp2T+b9WJWd+daq5ktsL10sVCzIt2UvneJRz6b+aU+bfw==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true + } + } + }, + "@aws-sdk/is-array-buffer": { + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.55.0.tgz", + "integrity": "sha512-NbiPHVYuPxdqdFd6FxzzN3H1BQn/iWA3ri3Ry7AyLeP/tGs1yzEWMwf8BN8TSMALI0GXT6Sh0GDWy3Ok5xB6DA==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + } + }, "@aws-sdk/middleware-bucket-endpoint": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.808.0.tgz", - "integrity": "sha512-wEPlNcs8dir9lXbuviEGtSzYSxG/NRKQrJk5ybOc7OpPGHovsN+QhDOdY3lcjOFdwMTiMIG9foUkPz3zBpLB1A==", + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.840.0.tgz", + "integrity": "sha512-+gkQNtPwcSMmlwBHFd4saVVS11In6ID1HczNzpM3MXKXRBfSlbZJbCt6wN//AZ8HMklZEik4tcEOG0qa9UY8SQ==", "dev": true, "requires": { - "@aws-sdk/types": "3.804.0", + "@aws-sdk/types": "3.840.0", "@aws-sdk/util-arn-parser": "3.804.0", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", "@smithy/util-config-provider": "^4.0.0", "tslib": "^2.6.2" } }, + "@aws-sdk/middleware-content-length": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.78.0.tgz", + "integrity": "sha512-5MpKt6lB9TdFy25/AGrpOjPY0iDHZAKpEHc+jSOJBXLl6xunXA7qHdiYaVqkWodLxy70nIckGNHqQ3drabidkA==", + "dev": true, + "requires": { + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true + } + } + }, "@aws-sdk/middleware-endpoint-discovery": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.808.0.tgz", - "integrity": "sha512-h8LAIO6tuA0JAahrg+oSIVZpb6rhJOFVDDqYNQVp6ZdawlIzpZcc1sa+XVZvarBnThNKqvLTSGK7boSRmaLAwg==", + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.840.0.tgz", + "integrity": "sha512-IJDShY5NOg9luTE8h4o2Bm+gsPnHIU0tVWCjMz8vZMLevYjKdIsatcXiu3huTOjKSnelzC9fBHfU6KKsHmjjBQ==", "dev": true, "requires": { "@aws-sdk/endpoint-cache": "3.804.0", - "@aws-sdk/types": "3.804.0", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@aws-sdk/types": "3.840.0", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "@aws-sdk/middleware-eventstream": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-eventstream/-/middleware-eventstream-3.804.0.tgz", - "integrity": "sha512-3lPxZshOJoKSxIMUq8FCiIre+FZ1g/t+O7DHwOMB6EuzJ8lp5QyUeh1wE5iD/gB8VhWZoj90rGIaWCmT8ccEuA==", + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-eventstream/-/middleware-eventstream-3.840.0.tgz", + "integrity": "sha512-4khgf7AjJ4llh3aiNmZ+x4PGl4vkKNxRHn0xTgi6Iw1J3SChsF2mnNaLXK8hoXeydx756rw+JhqOuZH91i5l4w==", "dev": true, "requires": { - "@aws-sdk/types": "3.804.0", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@aws-sdk/types": "3.840.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "@aws-sdk/middleware-expect-continue": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.804.0.tgz", - "integrity": "sha512-YW1hySBolALMII6C8y7Z0CRG2UX1dGJjLEBNFeefhO/xP7ZuE1dvnmfJGaEuBMnvc3wkRS63VZ3aqX6sevM1CA==", + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.840.0.tgz", + "integrity": "sha512-iJg2r6FKsKKvdiU4oCOuCf7Ro/YE0Q2BT/QyEZN3/Rt8Nr4SAZiQOlcBXOCpGvuIKOEAhvDOUnW3aDHL01PdVw==", "dev": true, "requires": { - "@aws-sdk/types": "3.804.0", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@aws-sdk/types": "3.840.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "@aws-sdk/middleware-flexible-checksums": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.812.0.tgz", - "integrity": "sha512-/ayAooUZvV1GTomNMrfbhjUHAEaz0Wmio3lKyaTJsW4WdLJXBuzdo57YADRmYYUqx6awzJ6VJ6HGc1Uc6tOlbw==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.858.0.tgz", + "integrity": "sha512-/GBerFXab3Mk5zkkTaOR1drR1IWMShiUbcEocCPig068/HnpjVSd9SP4+ro/ivG+zLOtxJdpjBcBKxCwQmefMA==", "dev": true, "requires": { "@aws-crypto/crc32": "5.2.0", "@aws-crypto/crc32c": "5.2.0", "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/types": "3.804.0", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/types": "3.840.0", "@smithy/is-array-buffer": "^4.0.0", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-stream": "^4.2.0", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-stream": "^4.2.3", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" } }, "@aws-sdk/middleware-host-header": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.804.0.tgz", - "integrity": "sha512-bum1hLVBrn2lJCi423Z2fMUYtsbkGI2s4N+2RI2WSjvbaVyMSv/WcejIrjkqiiMR+2Y7m5exgoKeg4/TODLDPQ==", + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.840.0.tgz", + "integrity": "sha512-ub+hXJAbAje94+Ya6c6eL7sYujoE8D4Bumu1NUI8TXjUhVVn0HzVWQjpRLshdLsUp1AW7XyeJaxyajRaJQ8+Xg==", "dev": true, "requires": { - "@aws-sdk/types": "3.804.0", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@aws-sdk/types": "3.840.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "@aws-sdk/middleware-location-constraint": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.804.0.tgz", - "integrity": "sha512-AMtKnllIWKgoo7hiJfphLYotEwTERfjVMO2+cKAncz9w1g+bnYhHxiVhJJoR94y047c06X4PU5MsTxvdQ73Znw==", + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.840.0.tgz", + "integrity": "sha512-KVLD0u0YMF3aQkVF8bdyHAGWSUY6N1Du89htTLgqCcIhSxxAJ9qifrosVZ9jkAzqRW99hcufyt2LylcVU2yoKQ==", "dev": true, "requires": { - "@aws-sdk/types": "3.804.0", - "@smithy/types": "^4.2.0", + "@aws-sdk/types": "3.840.0", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "@aws-sdk/middleware-logger": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.804.0.tgz", - "integrity": "sha512-w/qLwL3iq0KOPQNat0Kb7sKndl9BtceigINwBU7SpkYWX9L/Lem6f8NPEKrC9Tl4wDBht3Yztub4oRTy/horJA==", + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.840.0.tgz", + "integrity": "sha512-lSV8FvjpdllpGaRspywss4CtXV8M7NNNH+2/j86vMH+YCOZ6fu2T/TyFd/tHwZ92vDfHctWkRbQxg0bagqwovA==", "dev": true, "requires": { - "@aws-sdk/types": "3.804.0", - "@smithy/types": "^4.2.0", + "@aws-sdk/types": "3.840.0", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "@aws-sdk/middleware-recursion-detection": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.804.0.tgz", - "integrity": "sha512-zqHOrvLRdsUdN/ehYfZ9Tf8svhbiLLz5VaWUz22YndFv6m9qaAcijkpAOlKexsv3nLBMJdSdJ6GUTAeIy3BZzw==", + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.840.0.tgz", + "integrity": "sha512-Gu7lGDyfddyhIkj1Z1JtrY5NHb5+x/CRiB87GjaSrKxkDaydtX2CU977JIABtt69l9wLbcGDIQ+W0uJ5xPof7g==", "dev": true, "requires": { - "@aws-sdk/types": "3.804.0", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@aws-sdk/types": "3.840.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, + "@aws-sdk/middleware-retry": { + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.80.0.tgz", + "integrity": "sha512-CTk+tA4+WMUNOcUfR6UQrkhwvPYFpnMsQ1vuHlpLFOGG3nCqywA2hueLMRQmVcDXzP0sGeygce6dzRI9dJB/GA==", + "dev": true, + "requires": { + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/service-error-classification": "3.78.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-middleware": "3.78.0", + "tslib": "^2.3.1", + "uuid": "^8.3.2" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } + } + }, "@aws-sdk/middleware-sdk-s3": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.812.0.tgz", - "integrity": "sha512-e8AqRRIaTsunL1hqtO1hksa9oTYdsIbfezHUyVpPGugUIB1lMqPt/DlBsanI85OzUD711UfNSEcZ1mqAxpDOoA==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.858.0.tgz", + "integrity": "sha512-g1LBHK9iAAMnh4rRX4/cGBuICH5R9boHUw4X9FkMC+ROAH9z1A2uy6bE55sg5guheAmVTQ5sOsVZb8QPEQbIUA==", "dev": true, "requires": { - "@aws-sdk/core": "3.812.0", - "@aws-sdk/types": "3.804.0", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/types": "3.840.0", "@aws-sdk/util-arn-parser": "3.804.0", - "@smithy/core": "^3.3.3", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/protocol-http": "^5.1.0", - "@smithy/signature-v4": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", + "@smithy/core": "^3.7.2", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/protocol-http": "^5.1.2", + "@smithy/signature-v4": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", "@smithy/util-config-provider": "^4.0.0", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-stream": "^4.2.0", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-stream": "^4.2.3", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" } }, "@aws-sdk/middleware-sdk-sqs": { - "version": "3.810.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.810.0.tgz", - "integrity": "sha512-MKNX7TYtB3dn1UO+5ewTLJUtDNXLAIKbXokCEfzHuvqPJpsFPbBp7ERY2jn2KjCBMSaP3w1ZCCpFKcfVICsrXQ==", + "version": "3.857.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.857.0.tgz", + "integrity": "sha512-m2CyA7Qhesqkx5esqkwYsb6M16Ny5HX/x38A1/qCdAxYAdkmD3mZoHaXHSb4L6kg/HCPkbxxZO8db1xm4P8t1w==", "dev": true, "requires": { - "@aws-sdk/types": "3.804.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", + "@aws-sdk/types": "3.840.0", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", "@smithy/util-hex-encoding": "^4.0.0", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" } }, + "@aws-sdk/middleware-sdk-sts": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.78.0.tgz", + "integrity": "sha512-Lu/kN0J0/Kt0ON1hvwNel+y8yvf35licfIgtedHbBCa/ju8qQ9j+uL9Lla6Y5Tqu29yVaye1JxhiIDhscSwrLA==", + "dev": true, + "requires": { + "@aws-sdk/middleware-signing": "3.78.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/signature-v4": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true + } + } + }, + "@aws-sdk/middleware-serde": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.78.0.tgz", + "integrity": "sha512-4DPsNOxsl1bxRzfo1WXEZjmD7OEi7qGNpxrDWucVe96Fqj2dH08jR8wxvBIVV1e6bAad07IwdPuCGmivNvwRuQ==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true + } + } + }, + "@aws-sdk/middleware-signing": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.78.0.tgz", + "integrity": "sha512-OEjJJCNhHHSOprLZ9CzjHIXEKFtPHWP/bG9pMhkV3/6Bmscsgcf8gWHcOnmIrjqX+hT1VALDNpl/RIh0J6/eQw==", + "dev": true, + "requires": { + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/signature-v4": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true + } + } + }, "@aws-sdk/middleware-ssec": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.804.0.tgz", - "integrity": "sha512-Tk8jK0gOIUBvEPTz/wwSlP1V70zVQ3QYqsLPAjQRMO6zfOK9ax31dln3MgKvFDJxBydS2tS3wsn53v+brxDxTA==", + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.840.0.tgz", + "integrity": "sha512-CBZP9t1QbjDFGOrtnUEHL1oAvmnCUUm7p0aPNbIdSzNtH42TNKjPRN3TuEIJDGjkrqpL3MXyDSmNayDcw/XW7Q==", "dev": true, "requires": { - "@aws-sdk/types": "3.804.0", - "@smithy/types": "^4.2.0", + "@aws-sdk/types": "3.840.0", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, + "@aws-sdk/middleware-stack": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.78.0.tgz", + "integrity": "sha512-UoNfRh6eAJN3BJHlG1eb+KeuSe+zARTC2cglroJRyHc2j7GxH2i9FD3IJbj5wvzopJEnQzuY/VCs6STFkqWL1g==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + } + }, "@aws-sdk/middleware-user-agent": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.812.0.tgz", - "integrity": "sha512-r+HFwtSvnAs6Fydp4mijylrTX0og9p/xfxOcKsqhMuk3HpZAIcf9sSjRQI6MBusYklg7pnM4sGEnPAZIrdRotA==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.858.0.tgz", + "integrity": "sha512-pC3FT/sRZ6n5NyXiTVu9dpf1D9j3YbJz3XmeOOwJqO/Mib2PZyIQktvNMPgwaC5KMVB1zWqS5bmCwxpMOnq0UQ==", "dev": true, "requires": { - "@aws-sdk/core": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@smithy/core": "^3.3.3", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-endpoints": "3.848.0", + "@smithy/core": "^3.7.2", + "@smithy/protocol-http": "^5.1.2", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/middleware-websocket": { + "version": "3.844.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-websocket/-/middleware-websocket-3.844.0.tgz", + "integrity": "sha512-5ZtntUZ9ZMdUbQZ3kI5e5tpiZPN/O57h6fnGZ+GHB+wpSVSOQS78TBt0qYZW+CoZr8iyRsVkJheGETajFCMaUg==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-format-url": "3.840.0", + "@smithy/eventstream-codec": "^4.0.4", + "@smithy/eventstream-serde-browser": "^4.0.4", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/signature-v4": "^5.1.2", + "@smithy/types": "^4.3.1", + "@smithy/util-hex-encoding": "^4.0.0", "tslib": "^2.6.2" } }, "@aws-sdk/nested-clients": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.812.0.tgz", - "integrity": "sha512-FS/fImbEpJU3cXtBGR9fyVd+CP51eNKlvTMi3f4/6lSk3RmHjudNC9yEF/og3jtpT3O+7vsNOUW9mHco5IjdQQ==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.858.0.tgz", + "integrity": "sha512-ChdIj80T2whoWbovmO7o8ICmhEB2S9q4Jes9MBnKAPm69PexcJAK2dQC8yI4/iUP8b3+BHZoUPrYLWjBxIProQ==", "dev": true, "requires": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.812.0", - "@aws-sdk/middleware-host-header": "3.804.0", - "@aws-sdk/middleware-logger": "3.804.0", - "@aws-sdk/middleware-recursion-detection": "3.804.0", - "@aws-sdk/middleware-user-agent": "3.812.0", - "@aws-sdk/region-config-resolver": "3.808.0", - "@aws-sdk/types": "3.804.0", - "@aws-sdk/util-endpoints": "3.808.0", - "@aws-sdk/util-user-agent-browser": "3.804.0", - "@aws-sdk/util-user-agent-node": "3.812.0", - "@smithy/config-resolver": "^4.1.2", - "@smithy/core": "^3.3.3", - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/hash-node": "^4.0.2", - "@smithy/invalid-dependency": "^4.0.2", - "@smithy/middleware-content-length": "^4.0.2", - "@smithy/middleware-endpoint": "^4.1.6", - "@smithy/middleware-retry": "^4.1.7", - "@smithy/middleware-serde": "^4.0.5", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/protocol-http": "^5.1.0", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/middleware-host-header": "3.840.0", + "@aws-sdk/middleware-logger": "3.840.0", + "@aws-sdk/middleware-recursion-detection": "3.840.0", + "@aws-sdk/middleware-user-agent": "3.858.0", + "@aws-sdk/region-config-resolver": "3.840.0", + "@aws-sdk/types": "3.840.0", + "@aws-sdk/util-endpoints": "3.848.0", + "@aws-sdk/util-user-agent-browser": "3.840.0", + "@aws-sdk/util-user-agent-node": "3.858.0", + "@smithy/config-resolver": "^4.1.4", + "@smithy/core": "^3.7.2", + "@smithy/fetch-http-handler": "^5.1.0", + "@smithy/hash-node": "^4.0.4", + "@smithy/invalid-dependency": "^4.0.4", + "@smithy/middleware-content-length": "^4.0.4", + "@smithy/middleware-endpoint": "^4.1.17", + "@smithy/middleware-retry": "^4.1.18", + "@smithy/middleware-serde": "^4.0.8", + "@smithy/middleware-stack": "^4.0.4", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/node-http-handler": "^4.1.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/smithy-client": "^4.4.9", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.14", - "@smithy/util-defaults-mode-node": "^4.0.14", - "@smithy/util-endpoints": "^3.0.4", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", + "@smithy/util-defaults-mode-browser": "^4.0.25", + "@smithy/util-defaults-mode-node": "^4.0.25", + "@smithy/util-endpoints": "^3.0.6", + "@smithy/util-middleware": "^4.0.4", + "@smithy/util-retry": "^4.0.6", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" + } + }, + "@aws-sdk/node-config-provider": { + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.80.0.tgz", + "integrity": "sha512-vyTOMK04huB7n10ZUv0thd2TE6KlY8livOuLqFTMtj99AJ6vyeB5XBNwKnQtJIt/P7CijYgp8KcFvI9fndOmKg==", + "dev": true, + "requires": { + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/shared-ini-file-loader": "3.80.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" }, "dependencies": { - "@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", - "dev": true, - "requires": { - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - } - }, - "@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", - "dev": true, - "requires": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - } + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true + } + } + }, + "@aws-sdk/node-http-handler": { + "version": "3.82.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.82.0.tgz", + "integrity": "sha512-yyq/DA/IMzL4fLJhV7zVfP7aUQWPHfOKTCJjWB3KeV5YPiviJtSKb/KyzNi+gQyO7SmsL/8vQbQrf3/s7N/2OA==", + "dev": true, + "requires": { + "@aws-sdk/abort-controller": "3.78.0", + "@aws-sdk/protocol-http": "3.78.0", + "@aws-sdk/querystring-builder": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true + } + } + }, + "@aws-sdk/property-provider": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.78.0.tgz", + "integrity": "sha512-PZpLvV0hF6lqg3CSN9YmphrB/t5LVJVWGJLB9d9qm7sJs5ksjTYBb5bY91OQ3zit0F4cqBMU8xt2GQ9J6d4DvQ==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true + } + } + }, + "@aws-sdk/protocol-http": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.78.0.tgz", + "integrity": "sha512-SQB26MhEK96yDxyXd3UAaxLz1Y/ZvgE4pzv7V3wZiokdEedM0kawHKEn1UQJlqJLEZcQI9QYyysh3rTvHZ3fyg==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true + } + } + }, + "@aws-sdk/querystring-builder": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.78.0.tgz", + "integrity": "sha512-aib6RW1WAaTQDqVgRU1Ku9idkhm90gJKbCxVaGId+as6QHNUqMChEfK2v+0afuKiPNOs5uWmqvOXI9+Gt+UGDg==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-uri-escape": "3.55.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true + } + } + }, + "@aws-sdk/querystring-parser": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.78.0.tgz", + "integrity": "sha512-csaH8YTyN+KMNczeK6fBS8l7iJaqcQcKOIbpQFg5upX4Ly5A56HJn4sVQhY1LSgfSk4xRsNfMy5mu6BlsIiaXA==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true } } }, "@aws-sdk/region-config-resolver": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.808.0.tgz", - "integrity": "sha512-9x2QWfphkARZY5OGkl9dJxZlSlYM2l5inFeo2bKntGuwg4A4YUe5h7d5yJ6sZbam9h43eBrkOdumx03DAkQF9A==", + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.840.0.tgz", + "integrity": "sha512-Qjnxd/yDv9KpIMWr90ZDPtRj0v75AqGC92Lm9+oHXZ8p1MjG5JE2CW0HL8JRgK9iKzgKBL7pPQRXI8FkvEVfrA==", "dev": true, "requires": { - "@aws-sdk/types": "3.804.0", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/types": "^4.2.0", + "@aws-sdk/types": "3.840.0", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/types": "^4.3.1", "@smithy/util-config-provider": "^4.0.0", - "@smithy/util-middleware": "^4.0.2", + "@smithy/util-middleware": "^4.0.4", "tslib": "^2.6.2" } }, + "@aws-sdk/service-error-classification": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.78.0.tgz", + "integrity": "sha512-x7Lx8KWctJa01q4Q72Zb4ol9L/era3vy2daASu8l2paHHxsAPBE0PThkvLdUSLZSzlHSVdh3YHESIsT++VsK4w==", + "dev": true + }, + "@aws-sdk/shared-ini-file-loader": { + "version": "3.80.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.80.0.tgz", + "integrity": "sha512-3d5EBJjnWWkjLK9skqLLHYbagtFaZZy+3jUTlbTuOKhlOwe8jF7CUM3j6I4JA6yXNcB3w0exDKKHa8w+l+05aA==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/signature-v4": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.78.0.tgz", + "integrity": "sha512-eePjRYuzKoi3VMr/lgrUEF1ytLeH4fA/NMCykr/uR6NMo4bSJA59KrFLYSM7SlWLRIyB0UvJqygVEvSxFluyDw==", + "dev": true, + "requires": { + "@aws-sdk/is-array-buffer": "3.55.0", + "@aws-sdk/types": "3.78.0", + "@aws-sdk/util-hex-encoding": "3.58.0", + "@aws-sdk/util-middleware": "3.78.0", + "@aws-sdk/util-uri-escape": "3.55.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true + } + } + }, "@aws-sdk/signature-v4-multi-region": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.812.0.tgz", - "integrity": "sha512-JTpk3ZHf7TXYbicKfOKi+VrsBTqcAszg9QR9fQmT9aCxPp39gsF3WsXq7NjepwZ5So11ixGIsPE/jtMym399QQ==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.858.0.tgz", + "integrity": "sha512-WtQvCtIz8KzTqd/OhjziWb5nAFDEZ0pE1KJsWBZ0j6Ngvp17ORSY37U96buU0SlNNflloGT7ZIlDkdFh73YktA==", "dev": true, "requires": { - "@aws-sdk/middleware-sdk-s3": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/protocol-http": "^5.1.0", - "@smithy/signature-v4": "^5.1.0", - "@smithy/types": "^4.2.0", + "@aws-sdk/middleware-sdk-s3": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/protocol-http": "^5.1.2", + "@smithy/signature-v4": "^5.1.2", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, + "@aws-sdk/smithy-client": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.85.0.tgz", + "integrity": "sha512-Ox/yQEAnANzhpJMyrpuxWtF/i3EviavENczT7fo4uwSyZTz/sfSBQNjs/YAG1UeA6uOI3pBP5EaFERV5hr2fRA==", + "dev": true, + "requires": { + "@aws-sdk/middleware-stack": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true + } + } + }, "@aws-sdk/token-providers": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.812.0.tgz", - "integrity": "sha512-dbVBaKxrxE708ub5uH3w+cmKIeRQas+2Xf6rpckhohYY+IiflGOdK6aLrp3T6dOQgr/FJ37iQtcYNonAG+yVBQ==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.858.0.tgz", + "integrity": "sha512-uQ3cVpqbkaxq3Hd8zip0pcOFsP731g+m0zsobQ7Bmqjq4/PHcehTov8i3W9+7sBHocOM61/qrQksPlW0TPuPAA==", "dev": true, "requires": { - "@aws-sdk/nested-clients": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", + "@aws-sdk/core": "3.858.0", + "@aws-sdk/nested-clients": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/property-provider": "^4.0.4", + "@smithy/shared-ini-file-loader": "^4.0.4", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "@aws-sdk/types": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.804.0.tgz", - "integrity": "sha512-A9qnsy9zQ8G89vrPPlNG9d1d8QcKRGqJKqwyGgS0dclJpwy6d1EWgQLIolKPl6vcFpLoe6avLOLxr+h8ur5wpg==", + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.840.0.tgz", + "integrity": "sha512-xliuHaUFZxEx1NSXeLLZ9Dyu6+EJVQKEoD+yM+zqUo3YDZ7medKJWY6fIOKiPX/N7XbLdBYwajb15Q7IL8KkeA==", "dev": true, "requires": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, + "@aws-sdk/url-parser": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.78.0.tgz", + "integrity": "sha512-iQn2AjECUoJE0Ae9XtgHtGGKvUkvE8hhbktGopdj+zsPBe4WrBN2DgVxlKPPrBonG/YlcL1D7a5EXaujWSlUUw==", + "dev": true, + "requires": { + "@aws-sdk/querystring-parser": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true + } + } + }, "@aws-sdk/util-arn-parser": { "version": "3.804.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.804.0.tgz", @@ -35835,18 +39961,138 @@ "tslib": "^2.6.2" } }, + "@aws-sdk/util-base64-browser": { + "version": "3.58.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-browser/-/util-base64-browser-3.58.0.tgz", + "integrity": "sha512-0ebsXIZNpu/fup9OgsFPnRKfCFbuuI9PPRzvP6twzLxUB0c/aix6Co7LGHFKcRKHZdaykoJMXArf8eHj2Nzv1Q==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-base64-node": { + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-node/-/util-base64-node-3.55.0.tgz", + "integrity": "sha512-UQ/ZuNoAc8CFMpSiRYmevaTsuRKzLwulZTnM8LNlIt9Wx1tpNvqp80cfvVj7yySKROtEi20wq29h31dZf1eYNQ==", + "dev": true, + "requires": { + "@aws-sdk/util-buffer-from": "3.55.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-body-length-browser": { + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.55.0.tgz", + "integrity": "sha512-Ei2OCzXQw5N6ZkTMZbamUzc1z+z1R1Ja5tMEagz5BxuX4vWdBObT+uGlSzL8yvTbjoPjnxWA2aXyEqaUP3JS8Q==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-body-length-node": { + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.55.0.tgz", + "integrity": "sha512-lU1d4I+9wJwydduXs0SxSfd+mHKjxeyd39VwOv6i2KSwWkPbji9UQqpflKLKw+r45jL7+xU/zfeTUg5Tt/3Gew==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-buffer-from": { + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.55.0.tgz", + "integrity": "sha512-uVzKG1UgvnV7XX2FPTylBujYMKBPBaq/qFBxfl0LVNfrty7YjpfieQxAe6yRLD+T0Kir/WDQwGvYC+tOYG3IGA==", + "dev": true, + "requires": { + "@aws-sdk/is-array-buffer": "3.55.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-config-provider": { + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.55.0.tgz", + "integrity": "sha512-30dzofQQfx6tp1jVZkZ0DGRsT0wwC15nEysKRiAcjncM64A0Cm6sra77d0os3vbKiKoPCI/lMsFr4o3533+qvQ==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-defaults-mode-browser": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.85.0.tgz", + "integrity": "sha512-oqK/e2pHuMWrvTJWtDBzylbj232ezlTay5dCq4RQlyi3LPPVBQ08haYD1Mk2ikQ/qa0XvbSD6YVhjpTlvwRNjw==", + "dev": true, + "requires": { + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true + } + } + }, + "@aws-sdk/util-defaults-mode-node": { + "version": "3.85.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.85.0.tgz", + "integrity": "sha512-KDNl4H8jJJLh6y7I3MSwRKe4plKbFKK8MVkS0+Fce/GJh4EnqxF0HzMMaSeNUcPvO2wHRq2a60+XW+0d7eWo1A==", + "dev": true, + "requires": { + "@aws-sdk/config-resolver": "3.80.0", + "@aws-sdk/credential-provider-imds": "3.81.0", + "@aws-sdk/node-config-provider": "3.80.0", + "@aws-sdk/property-provider": "3.78.0", + "@aws-sdk/types": "3.78.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "@aws-sdk/types": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.78.0.tgz", + "integrity": "sha512-I9PTlVNSbwhIgMfmDM5as1tqRIkVZunjVmfogb2WVVPp4CaX0Ll01S0FSMSLL9k6tcQLXqh45pFRjrxCl9WKdQ==", + "dev": true + } + } + }, "@aws-sdk/util-endpoints": { - "version": "3.808.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.808.0.tgz", - "integrity": "sha512-N6Lic98uc4ADB7fLWlzx+1uVnq04VgVjngZvwHoujcRg9YDhIg9dUDiTzD5VZv13g1BrPYmvYP1HhsildpGV6w==", + "version": "3.848.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.848.0.tgz", + "integrity": "sha512-fY/NuFFCq/78liHvRyFKr+aqq1aA/uuVSANjzr5Ym8c+9Z3HRPE9OrExAHoMrZ6zC8tHerQwlsXYYH5XZ7H+ww==", "dev": true, "requires": { - "@aws-sdk/types": "3.804.0", - "@smithy/types": "^4.2.0", - "@smithy/util-endpoints": "^3.0.4", + "@aws-sdk/types": "3.840.0", + "@smithy/types": "^4.3.1", + "@smithy/url-parser": "^4.0.4", + "@smithy/util-endpoints": "^3.0.6", "tslib": "^2.6.2" } }, + "@aws-sdk/util-format-url": { + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.840.0.tgz", + "integrity": "sha512-VB1PWyI1TQPiPvg4w7tgUGGQER1xxXPNUqfh3baxUSFi1Oh8wHrDnFywkxLm3NMmgDmnLnSZ5Q326qAoyqKLSg==", + "dev": true, + "requires": { + "@aws-sdk/types": "3.840.0", + "@smithy/querystring-builder": "^4.0.4", + "@smithy/types": "^4.3.1", + "tslib": "^2.6.2" + } + }, + "@aws-sdk/util-hex-encoding": { + "version": "3.58.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.58.0.tgz", + "integrity": "sha512-Rl+jXUzk/FJkOLYfUVYPhKa2aUmTpeobRP31l8IatQltSzDgLyRHO35f6UEs7Ztn5s1jbu/POatLAZ2WjbgVyg==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + } + }, "@aws-sdk/util-locate-window": { "version": "3.804.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.804.0.tgz", @@ -35856,41 +40102,103 @@ "tslib": "^2.6.2" } }, + "@aws-sdk/util-middleware": { + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.78.0.tgz", + "integrity": "sha512-Hi3wv2b0VogO4mzyeEaeU5KgIt4qeo0LXU5gS6oRrG0T7s2FyKbMBkJW3YDh/Y8fNwqArZ+/QQFujpP0PIKwkA==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-uri-escape": { + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.55.0.tgz", + "integrity": "sha512-mmdDLUpFCN2nkfwlLdOM54lTD528GiGSPN1qb8XtGLgZsJUmg3uJSFIN2lPeSbEwJB3NFjVas/rnQC48i7mV8w==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + } + }, "@aws-sdk/util-user-agent-browser": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.804.0.tgz", - "integrity": "sha512-KfW6T6nQHHM/vZBBdGn6fMyG/MgX5lq82TDdX4HRQRRuHKLgBWGpKXqqvBwqIaCdXwWHgDrg2VQups6GqOWW2A==", + "version": "3.840.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.840.0.tgz", + "integrity": "sha512-JdyZM3EhhL4PqwFpttZu1afDpPJCCc3eyZOLi+srpX11LsGj6sThf47TYQN75HT1CarZ7cCdQHGzP2uy3/xHfQ==", "dev": true, "requires": { - "@aws-sdk/types": "3.804.0", - "@smithy/types": "^4.2.0", + "@aws-sdk/types": "3.840.0", + "@smithy/types": "^4.3.1", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "@aws-sdk/util-user-agent-node": { - "version": "3.812.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.812.0.tgz", - "integrity": "sha512-8pt+OkHhS2U0LDwnzwRnFxyKn8sjSe752OIZQCNv263odud8jQu9pYO2pKqb2kRBk9h9szynjZBDLXfnvSQ7Bg==", + "version": "3.858.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.858.0.tgz", + "integrity": "sha512-T1m05QlN8hFpx5/5duMjS8uFSK5e6EXP45HQRkZULVkL3DK+jMaxsnh3KLl5LjUoHn/19M4HM0wNUBhYp4Y2Yw==", "dev": true, "requires": { - "@aws-sdk/middleware-user-agent": "3.812.0", - "@aws-sdk/types": "3.804.0", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/types": "^4.2.0", + "@aws-sdk/middleware-user-agent": "3.858.0", + "@aws-sdk/types": "3.840.0", + "@smithy/node-config-provider": "^4.1.3", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, + "@aws-sdk/util-utf8-browser": { + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.55.0.tgz", + "integrity": "sha512-ljzqJcyjfJpEVSIAxwtIS8xMRUly84BdjlBXyp6cu4G8TUufgjNS31LWdhyGhgmW5vYBNr+LTz0Kwf6J+ou7Ug==", + "dev": true, + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-utf8-node": { + "version": "3.55.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.55.0.tgz", + "integrity": "sha512-FsFm7GFaC7j0tlPEm/ri8bU2QCwFW5WKjxUg8lm1oWaxplCpKGUsmcfPJ4sw58GIoyoGu4QXBK60oCWosZYYdQ==", + "dev": true, + "requires": { + "@aws-sdk/util-buffer-from": "3.55.0", + "tslib": "^2.3.1" + } + }, "@aws-sdk/xml-builder": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.804.0.tgz", - "integrity": "sha512-JbGWp36IG9dgxtvC6+YXwt5WDZYfuamWFtVfK6fQpnmL96dx+GUPOXPKRWdw67WLKf2comHY28iX2d3z35I53Q==", + "version": "3.821.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.821.0.tgz", + "integrity": "sha512-DIIotRnefVL6DiaHtO6/21DhJ4JZnnIwdNbpwiAhdt/AVbttcE4yw925gsjur0OGv5BTYXQXU3YnANBYnZjuQA==", "dev": true, "requires": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, + "@azure-rest/core-client": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@azure-rest/core-client/-/core-client-2.5.0.tgz", + "integrity": "sha512-KMVIPxG6ygcQ1M2hKHahF7eddKejYsWTjoLIfTWiqnaj42dBkYzj4+S8rK9xxmlOaEHKZHcMrRbm0NfN4kgwHw==", + "dev": true, + "requires": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.9.0", + "@azure/core-rest-pipeline": "^1.5.0", + "@azure/core-tracing": "^1.0.1", + "@typespec/ts-http-runtime": "^0.3.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/abort-controller": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", @@ -35901,9 +40209,9 @@ } }, "@azure/core-auth": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.9.0.tgz", - "integrity": "sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.0.tgz", + "integrity": "sha512-88Djs5vBvGbHQHf5ZZcaoNHo6Y8BKZkt3cw2iuJIQzLEgH4Ox6Tm4hjFhbqOxyYsgIG/eJbFEHpxRIfEEWv5Ow==", "dev": true, "requires": { "@azure/abort-controller": "^2.0.0", @@ -35923,9 +40231,9 @@ } }, "@azure/core-client": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.4.tgz", - "integrity": "sha512-f7IxTD15Qdux30s2qFARH+JxgwxWLG2Rlr4oSkPGuLWm+1p5y1+C04XGLA0vmX6EtqfutmjvpNmAfgwVIS5hpw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.0.tgz", + "integrity": "sha512-O4aP3CLFNodg8eTHXECaH3B3CjicfzkxVtnrfLkOq0XNP7TIECGfHpK/C6vADZkWP75wzmdBnsIA8ksuJMk18g==", "dev": true, "requires": { "@azure/abort-controller": "^2.0.0", @@ -36003,9 +40311,9 @@ } }, "@azure/core-rest-pipeline": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.20.0.tgz", - "integrity": "sha512-ASoP8uqZBS3H/8N8at/XwFr6vYrRP3syTK0EUjDXQy0Y1/AUS+QeIRThKmTNJO2RggvBBxaXDPM7YoIwDGeA0g==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.22.0.tgz", + "integrity": "sha512-OKHmb3/Kpm06HypvB3g6Q3zJuvyXcpxDpCS1PnU8OV6AJgSFaee/covXBcPbWc6XDDxtEPlbi3EMQ6nUiPaQtw==", "dev": true, "requires": { "@azure/abort-controller": "^2.0.0", @@ -36013,7 +40321,7 @@ "@azure/core-tracing": "^1.0.1", "@azure/core-util": "^1.11.0", "@azure/logger": "^1.0.0", - "@typespec/ts-http-runtime": "^0.2.2", + "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" }, "dependencies": { @@ -36029,22 +40337,22 @@ } }, "@azure/core-tracing": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.2.0.tgz", - "integrity": "sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.0.tgz", + "integrity": "sha512-+XvmZLLWPe67WXNZo9Oc9CrPj/Tm8QnHR92fFAFdnbzwNdCH1h+7UdpaQgRSBsMY+oW1kHXNUZQLdZ1gHX3ROw==", "dev": true, "requires": { "tslib": "^2.6.2" } }, "@azure/core-util": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.12.0.tgz", - "integrity": "sha512-13IyjTQgABPARvG90+N2dXpC+hwp466XCdQXPCRlbWHgd3SJd5Q1VvaBGv6k1BIa4MQm6hAF1UBU1m8QUxV8sQ==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.0.tgz", + "integrity": "sha512-o0psW8QWQ58fq3i24Q1K2XfS/jYTxr7O1HRcyUE9bV9NttLU+kYOH82Ixj8DGlMTOWgxm1Sss2QAfKK5UkSPxw==", "dev": true, "requires": { "@azure/abort-controller": "^2.0.0", - "@typespec/ts-http-runtime": "^0.2.2", + "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" }, "dependencies": { @@ -36109,23 +40417,23 @@ } }, "@azure/keyvault-keys": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@azure/keyvault-keys/-/keyvault-keys-4.9.0.tgz", - "integrity": "sha512-ZBP07+K4Pj3kS4TF4XdkqFcspWwBHry3vJSOFM5k5ZABvf7JfiMonvaFk2nBF6xjlEbMpz5PE1g45iTMme0raQ==", - "dev": true, - "requires": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-client": "^1.5.0", - "@azure/core-http-compat": "^2.0.1", - "@azure/core-lro": "^2.2.0", - "@azure/core-paging": "^1.1.1", - "@azure/core-rest-pipeline": "^1.8.1", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.0.0", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@azure/keyvault-keys/-/keyvault-keys-4.10.0.tgz", + "integrity": "sha512-eDT7iXoBTRZ2n3fLiftuGJFD+yjkiB1GNqzU2KbY1TLYeXeSPVTVgn2eJ5vmRTZ11978jy2Kg2wI7xa9Tyr8ag==", + "dev": true, + "requires": { + "@azure-rest/core-client": "^2.3.3", + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.9.0", + "@azure/core-http-compat": "^2.2.0", + "@azure/core-lro": "^2.7.2", + "@azure/core-paging": "^1.6.2", + "@azure/core-rest-pipeline": "^1.19.0", + "@azure/core-tracing": "^1.2.0", + "@azure/core-util": "^1.11.0", "@azure/keyvault-common": "^2.0.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" + "@azure/logger": "^1.1.4", + "tslib": "^2.8.1" }, "dependencies": { "@azure/abort-controller": { @@ -36140,12 +40448,12 @@ } }, "@azure/logger": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.2.0.tgz", - "integrity": "sha512-0hKEzLhpw+ZTAfNJyRrn6s+V0nDWzXk9OjBr2TiGIu0OfMr5s2V4FpKLTAK3Ca5r5OKLbf4hkOGDPyiRjie/jA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz", + "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==", "dev": true, "requires": { - "@typespec/ts-http-runtime": "^0.2.2", + "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" } }, @@ -36195,9 +40503,9 @@ } }, "@babel/compat-data": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.2.tgz", - "integrity": "sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", + "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", "dev": true }, "@babel/core": { @@ -36232,25 +40540,25 @@ } }, "@babel/generator": { - "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==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", + "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", "dev": true, "requires": { - "@babel/parser": "^7.27.1", - "@babel/types": "^7.27.1", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", + "@babel/parser": "^7.28.0", + "@babel/types": "^7.28.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "@babel/helper-annotate-as-pure": { - "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==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", "dev": true, "requires": { - "@babel/types": "^7.27.1" + "@babel/types": "^7.27.3" } }, "@babel/helper-compilation-targets": { @@ -36317,18 +40625,24 @@ } }, "@babel/helper-define-polyfill-provider": { - "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==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", + "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "debug": "^4.4.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "resolve": "^1.22.10" } }, + "@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true + }, "@babel/helper-member-expression-to-functions": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", @@ -36350,14 +40664,14 @@ } }, "@babel/helper-module-transforms": { - "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==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.27.3" } }, "@babel/helper-optimise-call-expression": { @@ -36437,22 +40751,22 @@ } }, "@babel/helpers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz", - "integrity": "sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==", + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.2.tgz", + "integrity": "sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==", "dev": true, "requires": { - "@babel/template": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.2" } }, "@babel/parser": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.2.tgz", - "integrity": "sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", + "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", "dev": true, "requires": { - "@babel/types": "^7.27.1" + "@babel/types": "^7.28.0" } }, "@babel/plugin-bugfix-firefox-class-in-computed-class-key": { @@ -36675,14 +40989,14 @@ } }, "@babel/plugin-transform-async-generator-functions": { - "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==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", + "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-remap-async-to-generator": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.28.0" } }, "@babel/plugin-transform-async-to-generator": { @@ -36706,9 +41020,9 @@ } }, "@babel/plugin-transform-block-scoping": { - "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==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.0.tgz", + "integrity": "sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.27.1" @@ -36735,17 +41049,17 @@ } }, "@babel/plugin-transform-classes": { - "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==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.0.tgz", + "integrity": "sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-globals": "^7.28.0", "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-replace-supers": "^7.27.1", - "@babel/traverse": "^7.27.1", - "globals": "^11.1.0" + "@babel/traverse": "^7.28.0" } }, "@babel/plugin-transform-computed-properties": { @@ -36759,12 +41073,13 @@ } }, "@babel/plugin-transform-destructuring": { - "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==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz", + "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.0" } }, "@babel/plugin-transform-dotall-regex": { @@ -36950,15 +41265,16 @@ } }, "@babel/plugin-transform-object-rest-spread": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.2.tgz", - "integrity": "sha512-AIUHD7xJ1mCrj3uPozvtngY3s0xpv7Nu7DoUSnzNY6Xam1Cy4rUznR//pvMHOhQ4AvbCexhbqXCtpxGHOGOO6g==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.0.tgz", + "integrity": "sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.27.1", - "@babel/plugin-transform-parameters": "^7.27.1" + "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.0" } }, "@babel/plugin-transform-object-super": { @@ -36991,9 +41307,9 @@ } }, "@babel/plugin-transform-parameters": { - "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==", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.27.1" @@ -37030,9 +41346,9 @@ } }, "@babel/plugin-transform-regenerator": { - "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==", + "version": "7.28.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.1.tgz", + "integrity": "sha512-P0QiV/taaa3kXpLY+sXla5zec4E+4t4Aqc9ggHlfZ7a2cp8/x/Gv08jfwEtn9gnnYIMvHx6aoOZ8XJL8eU71Dg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.27.1" @@ -37252,24 +41568,24 @@ } }, "@babel/traverse": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.1.tgz", - "integrity": "sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", + "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", "dev": true, "requires": { "@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/generator": "^7.28.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.0", + "debug": "^4.3.1" } }, "@babel/types": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz", - "integrity": "sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==", + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", + "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", "dev": true, "requires": { "@babel/helper-string-parser": "^7.27.1", @@ -37310,21 +41626,21 @@ "dev": true }, "@cucumber/cucumber": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/@cucumber/cucumber/-/cucumber-11.3.0.tgz", - "integrity": "sha512-1YGsoAzRfDyVOnRMTSZP/EcFsOBElOKa2r+5nin0DJAeK+Mp0mzjcmSllMgApGtck7Ji87wwy3kFONfHUHMn4g==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@cucumber/cucumber/-/cucumber-12.1.0.tgz", + "integrity": "sha512-F72uKHUtHFFn4OAw6r6MoS+PWSMomQoIpW4+W/dcwNYY9oAKVAGyGJkEPIDXX00YtZY+EH3RUcNPlkD+f+dI0Q==", "dev": true, "requires": { "@cucumber/ci-environment": "10.0.1", "@cucumber/cucumber-expressions": "18.0.1", - "@cucumber/gherkin": "30.0.4", + "@cucumber/gherkin": "32.2.0", "@cucumber/gherkin-streams": "5.0.1", "@cucumber/gherkin-utils": "9.2.0", - "@cucumber/html-formatter": "21.10.1", + "@cucumber/html-formatter": "21.13.0", "@cucumber/junit-xml-formatter": "0.7.1", "@cucumber/message-streams": "4.0.1", "@cucumber/messages": "27.2.0", - "@cucumber/tag-expressions": "6.1.2", + "@cucumber/tag-expressions": "6.2.0", "assertion-error-formatter": "^3.0.0", "capital-case": "^1.0.4", "chalk": "^4.1.2", @@ -37333,7 +41649,7 @@ "debug": "^4.3.4", "error-stack-parser": "^2.1.4", "figures": "^3.2.0", - "glob": "^10.3.10", + "glob": "^11.0.0", "has-ansi": "^4.0.1", "indent-string": "^4.0.0", "is-installed-globally": "^0.4.0", @@ -37347,7 +41663,7 @@ "mz": "^2.7.0", "progress": "^2.0.3", "read-package-up": "^11.0.0", - "semver": "7.7.1", + "semver": "7.7.2", "string-argv": "0.3.1", "supports-color": "^8.1.1", "type-fest": "^4.41.0", @@ -37356,62 +41672,53 @@ "yup": "1.6.1" }, "dependencies": { - "@cucumber/messages": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-27.2.0.tgz", - "integrity": "sha512-f2o/HqKHgsqzFLdq6fAhfG1FNOQPdBdyMGpKwhb7hZqg0yZtx9BVqkTyuoNk83Fcvk3wjMVfouFXXHNEk4nddA==", + "glob": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", + "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==", "dev": true, "requires": { - "@types/uuid": "10.0.0", - "class-transformer": "0.5.1", - "reflect-metadata": "0.2.2", - "uuid": "11.0.5" + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.0.3", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" } }, - "@types/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", - "dev": true - }, - "mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "dev": true - }, - "semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true + "jackspeak": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", + "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2" + } }, - "string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "lru-cache": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", + "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", "dev": true }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "minimatch": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", + "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "@isaacs/brace-expansion": "^5.0.0" } }, - "type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "dev": true - }, - "uuid": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.5.tgz", - "integrity": "sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==", - "dev": true + "path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "dev": true, + "requires": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + } } } }, @@ -37425,12 +41732,12 @@ } }, "@cucumber/gherkin": { - "version": "30.0.4", - "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-30.0.4.tgz", - "integrity": "sha512-pb7lmAJqweZRADTTsgnC3F5zbTh3nwOB1M83Q9ZPbUKMb3P76PzK6cTcPTJBHWy3l7isbigIv+BkDjaca6C8/g==", + "version": "32.2.0", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-32.2.0.tgz", + "integrity": "sha512-X8xuVhSIqlUjxSRifRJ7t0TycVWyX58fygJH3wDNmHINLg9sYEkvQT0SO2G5YlRZnYc11TIFr4YPenscvdlBIw==", "dev": true, "requires": { - "@cucumber/messages": ">=19.1.4 <=26" + "@cucumber/messages": ">=19.1.4 <28" } }, "@cucumber/gherkin-streams": { @@ -37493,18 +41800,6 @@ } } }, - "@cucumber/messages": { - "version": "27.2.0", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-27.2.0.tgz", - "integrity": "sha512-f2o/HqKHgsqzFLdq6fAhfG1FNOQPdBdyMGpKwhb7hZqg0yZtx9BVqkTyuoNk83Fcvk3wjMVfouFXXHNEk4nddA==", - "dev": true, - "requires": { - "@types/uuid": "10.0.0", - "class-transformer": "0.5.1", - "reflect-metadata": "0.2.2", - "uuid": "11.0.5" - } - }, "@types/uuid": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", @@ -37516,19 +41811,13 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", "dev": true - }, - "uuid": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.5.tgz", - "integrity": "sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==", - "dev": true } } }, "@cucumber/html-formatter": { - "version": "21.10.1", - "resolved": "https://registry.npmjs.org/@cucumber/html-formatter/-/html-formatter-21.10.1.tgz", - "integrity": "sha512-isaaNMNnBYThsvaHy7i+9kkk9V3+rhgdkt0pd6TCY6zY1CSRZQ7tG6ST9pYyRaECyfbCeF7UGH0KpNEnh6UNvQ==", + "version": "21.13.0", + "resolved": "https://registry.npmjs.org/@cucumber/html-formatter/-/html-formatter-21.13.0.tgz", + "integrity": "sha512-/zkBZNGZca7AeY4hSMMu3PBqZBZtZ45qhynZC++LAstlyhXQrzl6zmjVLZMX7jIbdF1Lb+TjN4PWiGtS5VOM6g==", "dev": true, "requires": {} }, @@ -37552,44 +41841,45 @@ "requires": {} }, "@cucumber/messages": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-22.0.0.tgz", - "integrity": "sha512-EuaUtYte9ilkxcKmfqGF9pJsHRUU0jwie5ukuZ/1NPTuHS1LxHPsGEODK17RPRbZHOFhqybNzG2rHAwThxEymg==", + "version": "27.2.0", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-27.2.0.tgz", + "integrity": "sha512-f2o/HqKHgsqzFLdq6fAhfG1FNOQPdBdyMGpKwhb7hZqg0yZtx9BVqkTyuoNk83Fcvk3wjMVfouFXXHNEk4nddA==", "dev": true, "requires": { - "@types/uuid": "9.0.1", + "@types/uuid": "10.0.0", "class-transformer": "0.5.1", - "reflect-metadata": "0.1.13", - "uuid": "9.0.0" + "reflect-metadata": "0.2.2", + "uuid": "11.0.5" }, "dependencies": { - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "@types/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", "dev": true }, "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.5.tgz", + "integrity": "sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==", "dev": true } } }, "@cucumber/query": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/@cucumber/query/-/query-13.2.0.tgz", - "integrity": "sha512-S3g4u+2u/vo444bR1xL0+oVZmF8zb9QZ3MoiNF4GjBt6gG7Kf4S3NyJKjGUAQfESTb8oumOR1YMKHbv79FzA5w==", + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/@cucumber/query/-/query-13.5.0.tgz", + "integrity": "sha512-8L/7qMRixZZJl0S+ao4sq7IobLD1gAdr2H0KDVg81r4M063ZeWDNBSXAr2BXSAYL5I7cpNxpfbfU2VgXPaqapA==", "dev": true, "requires": { - "@teppeis/multimaps": "3.0.0" + "@teppeis/multimaps": "3.0.0", + "lodash.sortby": "^4.7.0" } }, "@cucumber/tag-expressions": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@cucumber/tag-expressions/-/tag-expressions-6.1.2.tgz", - "integrity": "sha512-xa3pER+ntZhGCxRXSguDTKEHTZpUUsp+RzTRNnit+vi5cqnk6abLdSLg5i3HZXU3c74nQ8afQC6IT507EN74oQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@cucumber/tag-expressions/-/tag-expressions-6.2.0.tgz", + "integrity": "sha512-KIF0eLcafHbWOuSDWFw0lMmgJOLdDRWjEL1kfXEWrqHmx2119HxVAr35WuEd9z542d3Yyg+XNqSr+81rIKqEdg==", "dev": true }, "@dabh/diagnostics": { @@ -37610,205 +41900,212 @@ "dev": true }, "@emnapi/core": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.3.tgz", - "integrity": "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.5.tgz", + "integrity": "sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==", "dev": true, "requires": { - "@emnapi/wasi-threads": "1.0.2", + "@emnapi/wasi-threads": "1.0.4", "tslib": "^2.4.0" } }, "@emnapi/runtime": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz", - "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.5.tgz", + "integrity": "sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==", "dev": true, "requires": { "tslib": "^2.4.0" } }, "@emnapi/wasi-threads": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz", - "integrity": "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.4.tgz", + "integrity": "sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==", "dev": true, "requires": { "tslib": "^2.4.0" } }, "@esbuild/aix-ppc64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz", - "integrity": "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz", + "integrity": "sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==", "dev": true, "optional": true }, "@esbuild/android-arm": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.4.tgz", - "integrity": "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.8.tgz", + "integrity": "sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==", "dev": true, "optional": true }, "@esbuild/android-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz", - "integrity": "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz", + "integrity": "sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==", "dev": true, "optional": true }, "@esbuild/android-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.4.tgz", - "integrity": "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.8.tgz", + "integrity": "sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==", "dev": true, "optional": true }, "@esbuild/darwin-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.4.tgz", - "integrity": "sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz", + "integrity": "sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==", "dev": true, "optional": true }, "@esbuild/darwin-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz", - "integrity": "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz", + "integrity": "sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==", "dev": true, "optional": true }, "@esbuild/freebsd-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz", - "integrity": "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz", + "integrity": "sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==", "dev": true, "optional": true }, "@esbuild/freebsd-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz", - "integrity": "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz", + "integrity": "sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==", "dev": true, "optional": true }, "@esbuild/linux-arm": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz", - "integrity": "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz", + "integrity": "sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==", "dev": true, "optional": true }, "@esbuild/linux-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz", - "integrity": "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz", + "integrity": "sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==", "dev": true, "optional": true }, "@esbuild/linux-ia32": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz", - "integrity": "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz", + "integrity": "sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==", "dev": true, "optional": true }, "@esbuild/linux-loong64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz", - "integrity": "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz", + "integrity": "sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==", "dev": true, "optional": true }, "@esbuild/linux-mips64el": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz", - "integrity": "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz", + "integrity": "sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==", "dev": true, "optional": true }, "@esbuild/linux-ppc64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz", - "integrity": "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz", + "integrity": "sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==", "dev": true, "optional": true }, "@esbuild/linux-riscv64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz", - "integrity": "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz", + "integrity": "sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==", "dev": true, "optional": true }, "@esbuild/linux-s390x": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz", - "integrity": "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz", + "integrity": "sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==", "dev": true, "optional": true }, "@esbuild/linux-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz", - "integrity": "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz", + "integrity": "sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==", "dev": true, "optional": true }, "@esbuild/netbsd-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz", - "integrity": "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz", + "integrity": "sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==", "dev": true, "optional": true }, "@esbuild/netbsd-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz", - "integrity": "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz", + "integrity": "sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==", "dev": true, "optional": true }, "@esbuild/openbsd-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz", - "integrity": "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz", + "integrity": "sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==", "dev": true, "optional": true }, "@esbuild/openbsd-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz", - "integrity": "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz", + "integrity": "sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==", + "dev": true, + "optional": true + }, + "@esbuild/openharmony-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz", + "integrity": "sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==", "dev": true, "optional": true }, "@esbuild/sunos-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz", - "integrity": "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz", + "integrity": "sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==", "dev": true, "optional": true }, "@esbuild/win32-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz", - "integrity": "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz", + "integrity": "sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==", "dev": true, "optional": true }, "@esbuild/win32-ia32": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz", - "integrity": "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz", + "integrity": "sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==", "dev": true, "optional": true }, "@esbuild/win32-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz", - "integrity": "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz", + "integrity": "sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==", "dev": true, "optional": true }, @@ -37851,24 +42148,15 @@ "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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -37886,12 +42174,6 @@ "requires": { "brace-expansion": "^1.1.7" } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true } } }, @@ -38166,6 +42448,12 @@ "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 } } }, @@ -38529,9 +42817,9 @@ }, "dependencies": { "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -38562,11 +42850,26 @@ "dev": true }, "@ioredis/commands": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", - "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.3.0.tgz", + "integrity": "sha512-M/T6Zewn7sDaBQEqIZ8Rb+i9y8qfGmq+5SDFSf9sA2lUZTmdDLVdOiQaeDp+Q4wElZ9HG1GAX5KhDaidp6LQsQ==", "dev": true }, + "@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "dev": true + }, + "@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "dev": true, + "requires": { + "@isaacs/balanced-match": "^4.0.1" + } + }, "@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -38681,13 +42984,12 @@ } }, "@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", "dev": true, "requires": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, @@ -38697,16 +42999,10 @@ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true }, - "@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true - }, "@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.10.tgz", + "integrity": "sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==", "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.5", @@ -38714,15 +43010,15 @@ } }, "@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", + "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.1.0", @@ -38762,15 +43058,23 @@ } }, "@koa/router": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/@koa/router/-/router-13.1.1.tgz", - "integrity": "sha512-JQEuMANYRVHs7lm7KY9PCIjkgJk73h4m4J+g2mkw2Vo1ugPZ17UJVqEH8F+HeAdjKz5do1OaLe7ArDz+z308gw==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@koa/router/-/router-14.0.0.tgz", + "integrity": "sha512-LBSu5K0qAaaQcXX/0WIB9PGDevyCxxpnc1uq13vV/CgObaVxuis5hKl3Eboq/8gcb6ebnkAStW9NB/Em2eYyFA==", "dev": true, "requires": { "debug": "^4.4.1", "http-errors": "^2.0.0", "koa-compose": "^4.1.0", - "path-to-regexp": "^6.3.0" + "path-to-regexp": "^8.2.0" + }, + "dependencies": { + "path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "dev": true + } } }, "@lerna/create": { @@ -38858,9 +43162,9 @@ "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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -38877,6 +43181,29 @@ "supports-color": "^7.1.0" } }, + "execa": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "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.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", + "dev": true + }, "glob": { "version": "9.3.5", "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", @@ -38890,9 +43217,9 @@ }, "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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "requires": { "balanced-match": "^1.0.0" @@ -38915,6 +43242,12 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -38972,6 +43305,15 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "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" + } + }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -38999,12 +43341,6 @@ "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true } } }, @@ -39021,14 +43357,28 @@ "dev": true }, "@mongodb-js/saslprep": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.2.2.tgz", - "integrity": "sha512-EB0O3SCSNRUFk66iRCpI+cXzIjdswfCs7F6nOC3RAGJ7xr5YhaicvsRwJ9eyzYvYRlCSDUO/c7g4yNulxKC1WA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.3.0.tgz", + "integrity": "sha512-zlayKCsIjYb7/IdfqxorK5+xUMyi4vOKcFy10wKJYc63NSdKI8mNME+uJqfatkPmOSMMUiojrL58IePKBm3gvQ==", "dev": true, "requires": { "sparse-bitfield": "^3.0.3" } }, + "@mswjs/interceptors": { + "version": "0.38.7", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.38.7.tgz", + "integrity": "sha512-Jkb27iSn7JPdkqlTqKfhncFfnEZsIJVYxsFbUSWEkxdIPdsyngrhoDBk0/BGD2FQcRH99vlRrkHpNTyKqI+0/w==", + "dev": true, + "requires": { + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "strict-event-emitter": "^0.5.1" + } + }, "@napi-rs/wasm-runtime": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", @@ -39238,6 +43588,12 @@ } } }, + "statuses": { + "version": "2.0.1", + "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", @@ -39309,6 +43665,12 @@ "socks-proxy-agent": "^8.0.3" }, "dependencies": { + "agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true + }, "http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", @@ -39319,6 +43681,16 @@ "debug": "^4.3.4" } }, + "https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "requires": { + "agent-base": "^7.1.2", + "debug": "4" + } + }, "lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", @@ -39479,6 +43851,66 @@ "semver": "^7.3.5" } }, + "@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "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" + } + } + } + }, "@npmcli/name-from-folder": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", @@ -39611,12 +44043,6 @@ "requires": { "brace-expansion": "^2.0.1" } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true } } }, @@ -39697,9 +44123,9 @@ "dev": true }, "@octokit/core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.1.tgz", - "integrity": "sha512-dKYCMuPO1bmrpuogcjQ8z7ICCH3FP6WmxpwC03yjzGfZhj9fTJg6+bS1+UAplekbN2C+M61UNllGOOoAfGCrdQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.2.tgz", + "integrity": "sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==", "dev": true, "requires": { "@octokit/auth-token": "^4.0.0", @@ -39813,15 +44239,37 @@ "@octokit/openapi-types": "^24.2.0" } }, + "@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "dev": true + }, + "@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "dev": true, + "requires": { + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" + } + }, + "@open-draft/until": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", + "dev": true + }, "@opentelemetry/api": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" }, "@opentelemetry/api-logs": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.203.0.tgz", - "integrity": "sha512-9B9RU0H7Ya1Dx/Rkyc4stuBZSGVQF27WigitInx2QQoj6KUpEFYPKoWjdFTunJYxmXmh17HeBvbMa1EhGyPmqQ==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.204.0.tgz", + "integrity": "sha512-DqxY8yoAaiBPivoJD4UtgrMS8gEmzZ5lnaxzPojzLVHBGqPxgWm4zcuvcUHZiqQ6kRX2Klel2r9y8cA2HAtqpw==", "requires": { "@opentelemetry/api": "^1.3.0" } @@ -39831,11 +44279,11 @@ "requires": { "@opentelemetry/api": "^1.4.1", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/propagator-aws-xray": "^2.1.0", - "@opentelemetry/propagator-aws-xray-lambda": "^0.55.0", + "@opentelemetry/propagator-aws-xray": "^2.1.1", + "@opentelemetry/propagator-aws-xray-lambda": "^0.55.1", "@opentelemetry/propagator-b3": "^2.0.0", "@opentelemetry/propagator-jaeger": "^2.0.0", - "@opentelemetry/propagator-ot-trace": "^0.28.0", + "@opentelemetry/propagator-ot-trace": "^0.28.1", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -39843,6 +44291,23 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/auto-instrumentations-node": { @@ -39850,54 +44315,54 @@ "requires": { "@opentelemetry/api": "^1.4.1", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", - "@opentelemetry/instrumentation-amqplib": "^0.50.0", - "@opentelemetry/instrumentation-aws-lambda": "^0.54.0", - "@opentelemetry/instrumentation-aws-sdk": "^0.56.0", - "@opentelemetry/instrumentation-bunyan": "^0.49.0", - "@opentelemetry/instrumentation-cassandra-driver": "^0.49.0", - "@opentelemetry/instrumentation-connect": "^0.47.0", - "@opentelemetry/instrumentation-cucumber": "^0.18.0", - "@opentelemetry/instrumentation-dataloader": "^0.21.0", - "@opentelemetry/instrumentation-dns": "^0.47.0", - "@opentelemetry/instrumentation-express": "^0.52.0", - "@opentelemetry/instrumentation-fastify": "^0.48.0", - "@opentelemetry/instrumentation-fs": "^0.23.0", - "@opentelemetry/instrumentation-generic-pool": "^0.47.0", - "@opentelemetry/instrumentation-graphql": "^0.51.0", - "@opentelemetry/instrumentation-grpc": "^0.203.0", - "@opentelemetry/instrumentation-hapi": "^0.50.0", - "@opentelemetry/instrumentation-http": "^0.203.0", - "@opentelemetry/instrumentation-ioredis": "^0.51.0", - "@opentelemetry/instrumentation-kafkajs": "^0.12.0", - "@opentelemetry/instrumentation-knex": "^0.48.0", - "@opentelemetry/instrumentation-koa": "^0.51.0", - "@opentelemetry/instrumentation-lru-memoizer": "^0.48.0", - "@opentelemetry/instrumentation-memcached": "^0.47.0", - "@opentelemetry/instrumentation-mongodb": "^0.56.0", - "@opentelemetry/instrumentation-mongoose": "^0.50.0", - "@opentelemetry/instrumentation-mysql": "^0.49.0", - "@opentelemetry/instrumentation-mysql2": "^0.49.0", - "@opentelemetry/instrumentation-nestjs-core": "^0.49.0", - "@opentelemetry/instrumentation-net": "^0.47.0", - "@opentelemetry/instrumentation-oracledb": "^0.29.0", - "@opentelemetry/instrumentation-pg": "^0.55.0", - "@opentelemetry/instrumentation-pino": "^0.50.0", - "@opentelemetry/instrumentation-redis": "^0.51.0", - "@opentelemetry/instrumentation-restify": "^0.49.0", - "@opentelemetry/instrumentation-router": "^0.48.0", - "@opentelemetry/instrumentation-runtime-node": "^0.17.0", - "@opentelemetry/instrumentation-socket.io": "^0.50.0", - "@opentelemetry/instrumentation-tedious": "^0.22.0", - "@opentelemetry/instrumentation-undici": "^0.14.0", - "@opentelemetry/instrumentation-winston": "^0.48.0", - "@opentelemetry/resource-detector-alibaba-cloud": "^0.31.3", - "@opentelemetry/resource-detector-aws": "^2.3.0", - "@opentelemetry/resource-detector-azure": "^0.10.0", - "@opentelemetry/resource-detector-container": "^0.7.3", - "@opentelemetry/resource-detector-gcp": "^0.37.0", + "@opentelemetry/instrumentation": "^0.204.0", + "@opentelemetry/instrumentation-amqplib": "^0.51.0", + "@opentelemetry/instrumentation-aws-lambda": "^0.55.0", + "@opentelemetry/instrumentation-aws-sdk": "^0.59.0", + "@opentelemetry/instrumentation-bunyan": "^0.50.0", + "@opentelemetry/instrumentation-cassandra-driver": "^0.50.0", + "@opentelemetry/instrumentation-connect": "^0.48.0", + "@opentelemetry/instrumentation-cucumber": "^0.20.0", + "@opentelemetry/instrumentation-dataloader": "^0.22.0", + "@opentelemetry/instrumentation-dns": "^0.48.0", + "@opentelemetry/instrumentation-express": "^0.53.0", + "@opentelemetry/instrumentation-fastify": "^0.49.0", + "@opentelemetry/instrumentation-fs": "^0.24.0", + "@opentelemetry/instrumentation-generic-pool": "^0.48.0", + "@opentelemetry/instrumentation-graphql": "^0.52.0", + "@opentelemetry/instrumentation-grpc": "^0.204.0", + "@opentelemetry/instrumentation-hapi": "^0.51.0", + "@opentelemetry/instrumentation-http": "^0.204.0", + "@opentelemetry/instrumentation-ioredis": "^0.52.0", + "@opentelemetry/instrumentation-kafkajs": "^0.14.0", + "@opentelemetry/instrumentation-knex": "^0.49.0", + "@opentelemetry/instrumentation-koa": "^0.52.0", + "@opentelemetry/instrumentation-lru-memoizer": "^0.49.0", + "@opentelemetry/instrumentation-memcached": "^0.48.0", + "@opentelemetry/instrumentation-mongodb": "^0.57.0", + "@opentelemetry/instrumentation-mongoose": "^0.51.0", + "@opentelemetry/instrumentation-mysql": "^0.50.0", + "@opentelemetry/instrumentation-mysql2": "^0.51.0", + "@opentelemetry/instrumentation-nestjs-core": "^0.50.0", + "@opentelemetry/instrumentation-net": "^0.48.0", + "@opentelemetry/instrumentation-oracledb": "^0.30.0", + "@opentelemetry/instrumentation-pg": "^0.57.0", + "@opentelemetry/instrumentation-pino": "^0.51.0", + "@opentelemetry/instrumentation-redis": "^0.53.0", + "@opentelemetry/instrumentation-restify": "^0.50.0", + "@opentelemetry/instrumentation-router": "^0.49.0", + "@opentelemetry/instrumentation-runtime-node": "^0.18.0", + "@opentelemetry/instrumentation-socket.io": "^0.51.0", + "@opentelemetry/instrumentation-tedious": "^0.23.0", + "@opentelemetry/instrumentation-undici": "^0.15.0", + "@opentelemetry/instrumentation-winston": "^0.49.0", + "@opentelemetry/resource-detector-alibaba-cloud": "^0.31.4", + "@opentelemetry/resource-detector-aws": "^2.4.0", + "@opentelemetry/resource-detector-azure": "^0.11.0", + "@opentelemetry/resource-detector-container": "^0.7.4", + "@opentelemetry/resource-detector-gcp": "^0.38.0", "@opentelemetry/resources": "^2.0.0", - "@opentelemetry/sdk-node": "^0.203.0", + "@opentelemetry/sdk-node": "^0.204.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -39905,6 +44370,23 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/auto-instrumentations-web": { @@ -39913,11 +44395,11 @@ "@babel/core": "7.24.6", "@babel/preset-env": "7.24.6", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/instrumentation": "^0.203.0", - "@opentelemetry/instrumentation-document-load": "^0.48.0", - "@opentelemetry/instrumentation-fetch": "^0.203.0", - "@opentelemetry/instrumentation-user-interaction": "^0.48.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", + "@opentelemetry/instrumentation-document-load": "^0.49.0", + "@opentelemetry/instrumentation-fetch": "^0.204.0", + "@opentelemetry/instrumentation-user-interaction": "^0.49.0", + "@opentelemetry/instrumentation-xml-http-request": "^0.204.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -39934,13 +44416,22 @@ "nyc": "17.1.0", "rimraf": "5.0.10", "sinon": "15.1.2", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" }, "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, "sinon": { "version": "15.1.2", "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.1.2.tgz", @@ -39954,6 +44445,21 @@ "nise": "^5.1.4", "supports-color": "^7.2.0" } + }, + "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" + } + }, + "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 } } }, @@ -39961,13 +44467,30 @@ "version": "file:packages/baggage-log-record-processor", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/sdk-logs": "^0.203.0", + "@opentelemetry/sdk-logs": "^0.204.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "expect": "29.2.0", "nyc": "17.1.0", "rimraf": "5.0.10", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/baggage-span-processor": { @@ -39981,18 +44504,35 @@ "nyc": "17.1.0", "rimraf": "5.0.10", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/context-async-hooks": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.0.1.tgz", - "integrity": "sha512-XuY23lSI3d4PEqKA+7SLtAgwqIfc6E/E9eAQWLN1vlpC53ybO3o6jW4BsXo1xvz9lYyyWItfQDDLzezER01mCw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.1.0.tgz", + "integrity": "sha512-zOyetmZppnwTyPrt4S7jMfXiSX9yyfF0hxlA8B5oo2TtKl+/RGCy7fi4DrBfIf3lCPrkKsRBWZZD7RFojK7FDg==", "requires": {} }, "@opentelemetry/context-zone-peer-dep": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-2.0.1.tgz", - "integrity": "sha512-jgN4jGULoJo46HiJx60E8XR8tJEpuY9stQ7KJ936AfEB1vf6YCbgR/a5bC95frLAnbSbYbaP5ti2jCFxormK4A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-zone-peer-dep/-/context-zone-peer-dep-2.1.0.tgz", + "integrity": "sha512-qB1b3p3T6A7Tu1HV//up3/q0mPWkOix12fHA4nvvzBmh82GVt+GgrbMvW4r609F8t3arn6HvCn9pmz6sBJ2Mbg==", "dev": true, "requires": {} }, @@ -40002,171 +44542,188 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^2.0.0", "@opentelemetry/exporter-jaeger": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/resources": "^2.0.0", "@opentelemetry/sdk-metrics": "^2.0.0", - "@opentelemetry/sdk-node": "^0.203.0", + "@opentelemetry/sdk-node": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/node": "18.18.14", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/core": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.1.tgz", - "integrity": "sha512-MaZk9SJIDgo1peKevlbhP6+IwIiNPNmswNL4AF0WaQJLbHXjr9SrZMgS12+iqr9ToV4ZVosCcc0f8Rg67LXjxw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", "requires": { "@opentelemetry/semantic-conventions": "^1.29.0" } }, "@opentelemetry/exporter-jaeger": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-2.0.1.tgz", - "integrity": "sha512-FeHtOp2XMhYxzYhC8sXhsc3gMeoDzjI+CGuPX+vRSyUdHZHDKTMoY9jRfk8ObmZsZDTWmd63Yqcf4X472YtHeA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-jaeger/-/exporter-jaeger-2.1.0.tgz", + "integrity": "sha512-qtUMsp8061pQn6ZN9dngH6okiiF0NlHYBLWprzLeeCmNN7i5UHM+V8GmxvUH4L/zXlNBsySq7p3fZHIIbmK9xg==", "requires": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/sdk-trace-base": "2.0.1", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0", "@opentelemetry/semantic-conventions": "^1.29.0", "jaeger-client": "^3.15.0" } }, "@opentelemetry/exporter-logs-otlp-grpc": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-grpc/-/exporter-logs-otlp-grpc-0.203.0.tgz", - "integrity": "sha512-g/2Y2noc/l96zmM+g0LdeuyYKINyBwN6FJySoU15LHPLcMN/1a0wNk2SegwKcxrRdE7Xsm7fkIR5n6XFe3QpPw==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-grpc/-/exporter-logs-otlp-grpc-0.204.0.tgz", + "integrity": "sha512-0dBqvTU04wvJVze4o5cGxFR2qmMkzJ0rnqL7vt35Xkn+OVrl7CUxmhZtkWxEePuWnyjIWQeCyDIrQUVXeXhQAQ==", "requires": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/otlp-exporter-base": "0.203.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.203.0", - "@opentelemetry/otlp-transformer": "0.203.0", - "@opentelemetry/sdk-logs": "0.203.0" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.204.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.204.0", + "@opentelemetry/otlp-transformer": "0.204.0", + "@opentelemetry/sdk-logs": "0.204.0" } }, "@opentelemetry/exporter-logs-otlp-http": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.203.0.tgz", - "integrity": "sha512-s0hys1ljqlMTbXx2XiplmMJg9wG570Z5lH7wMvrZX6lcODI56sG4HL03jklF63tBeyNwK2RV1/ntXGo3HgG4Qw==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.204.0.tgz", + "integrity": "sha512-cQyIIZxUnXy3M6n9LTW3uhw/cem4WP+k7NtrXp8pf4U3v0RljSCBeD0kA8TRotPJj2YutCjUIDrWOn0u+06PSA==", "requires": { - "@opentelemetry/api-logs": "0.203.0", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/otlp-exporter-base": "0.203.0", - "@opentelemetry/otlp-transformer": "0.203.0", - "@opentelemetry/sdk-logs": "0.203.0" + "@opentelemetry/api-logs": "0.204.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.204.0", + "@opentelemetry/otlp-transformer": "0.204.0", + "@opentelemetry/sdk-logs": "0.204.0" } }, "@opentelemetry/exporter-logs-otlp-proto": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-proto/-/exporter-logs-otlp-proto-0.203.0.tgz", - "integrity": "sha512-nl/7S91MXn5R1aIzoWtMKGvqxgJgepB/sH9qW0rZvZtabnsjbf8OQ1uSx3yogtvLr0GzwD596nQKz2fV7q2RBw==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-proto/-/exporter-logs-otlp-proto-0.204.0.tgz", + "integrity": "sha512-TeinnqCmgAW9WjZJtmzyTlJxu76WMWvGQ+qkYBHXm1yvsRzClHoUcpODD7X7sZqEELGL6bjpfEMUJap7Eh3tlA==", "requires": { - "@opentelemetry/api-logs": "0.203.0", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/otlp-exporter-base": "0.203.0", - "@opentelemetry/otlp-transformer": "0.203.0", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-logs": "0.203.0", - "@opentelemetry/sdk-trace-base": "2.0.1" + "@opentelemetry/api-logs": "0.204.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.204.0", + "@opentelemetry/otlp-transformer": "0.204.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-logs": "0.204.0", + "@opentelemetry/sdk-trace-base": "2.1.0" } }, "@opentelemetry/exporter-metrics-otlp-grpc": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-grpc/-/exporter-metrics-otlp-grpc-0.203.0.tgz", - "integrity": "sha512-FCCj9nVZpumPQSEI57jRAA89hQQgONuoC35Lt+rayWY/mzCAc6BQT7RFyFaZKJ2B7IQ8kYjOCPsF/HGFWjdQkQ==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-grpc/-/exporter-metrics-otlp-grpc-0.204.0.tgz", + "integrity": "sha512-wA4a97B9fGUw9ezrtjcMEh3NPzDXhXzHudEorSrc9JjO7pBdV2kHz8nLB5BG/h955I/5m+yj1bzSf9BiYtJkQw==", "requires": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/exporter-metrics-otlp-http": "0.203.0", - "@opentelemetry/otlp-exporter-base": "0.203.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.203.0", - "@opentelemetry/otlp-transformer": "0.203.0", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-metrics": "2.0.1" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.204.0", + "@opentelemetry/otlp-exporter-base": "0.204.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.204.0", + "@opentelemetry/otlp-transformer": "0.204.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-metrics": "2.1.0" } }, "@opentelemetry/exporter-metrics-otlp-http": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.203.0.tgz", - "integrity": "sha512-HFSW10y8lY6BTZecGNpV3GpoSy7eaO0Z6GATwZasnT4bEsILp8UJXNG5OmEsz4SdwCSYvyCbTJdNbZP3/8LGCQ==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.204.0.tgz", + "integrity": "sha512-E+2GjtHcOdYscUhKBgNI/+9pDRqknm4MwXlW8mDRImDwcwbdalTNbiJGjUUmdFK/1IVNHR5DsI/o9ASLAN6f+w==", "requires": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/otlp-exporter-base": "0.203.0", - "@opentelemetry/otlp-transformer": "0.203.0", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-metrics": "2.0.1" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.204.0", + "@opentelemetry/otlp-transformer": "0.204.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-metrics": "2.1.0" } }, "@opentelemetry/exporter-metrics-otlp-proto": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-proto/-/exporter-metrics-otlp-proto-0.203.0.tgz", - "integrity": "sha512-OZnhyd9npU7QbyuHXFEPVm3LnjZYifuKpT3kTnF84mXeEQ84pJJZgyLBpU4FSkSwUkt/zbMyNAI7y5+jYTWGIg==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-proto/-/exporter-metrics-otlp-proto-0.204.0.tgz", + "integrity": "sha512-3jUOeqwtw1QNo3mtjxYHu5sZQqT08nJbntyt0Irpya0a46+Z2GLwcB13Eg8Lr459vbxC7T+T9hL1YhaRr1b/Cg==", "requires": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/exporter-metrics-otlp-http": "0.203.0", - "@opentelemetry/otlp-exporter-base": "0.203.0", - "@opentelemetry/otlp-transformer": "0.203.0", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-metrics": "2.0.1" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.204.0", + "@opentelemetry/otlp-exporter-base": "0.204.0", + "@opentelemetry/otlp-transformer": "0.204.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-metrics": "2.1.0" } }, "@opentelemetry/exporter-prometheus": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.203.0.tgz", - "integrity": "sha512-2jLuNuw5m4sUj/SncDf/mFPabUxMZmmYetx5RKIMIQyPnl6G6ooFzfeE8aXNRf8YD1ZXNlCnRPcISxjveGJHNg==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.204.0.tgz", + "integrity": "sha512-X+P2Qk2ZBG1etKX0A2T64D5Vj2itmzNavDmzgO4t22C9P6V3yUEsbdcZZLFl04pi7wxUaYe72dCf6EvC3v0R9Q==", "requires": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-metrics": "2.0.1" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-metrics": "2.1.0" } }, "@opentelemetry/exporter-trace-otlp-grpc": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.203.0.tgz", - "integrity": "sha512-322coOTf81bm6cAA8+ML6A+m4r2xTCdmAZzGNTboPXRzhwPt4JEmovsFAs+grpdarObd68msOJ9FfH3jxM6wqA==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.204.0.tgz", + "integrity": "sha512-sBnu+sEmHrHH8FGYFLH4ipfQx8p2KjtXTzbMhfUKEcR7vb4WTfTdNSUhyrVgM7HolKFM3IUbEj3Kahnp5lrRvw==", "requires": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/otlp-exporter-base": "0.203.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.203.0", - "@opentelemetry/otlp-transformer": "0.203.0", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-trace-base": "2.0.1" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.204.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.204.0", + "@opentelemetry/otlp-transformer": "0.204.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0" } }, "@opentelemetry/exporter-trace-otlp-http": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.203.0.tgz", - "integrity": "sha512-ZDiaswNYo0yq/cy1bBLJFe691izEJ6IgNmkjm4C6kE9ub/OMQqDXORx2D2j8fzTBTxONyzusbaZlqtfmyqURPw==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.204.0.tgz", + "integrity": "sha512-yS/yPKJF0p+/9aE3MaZuB12NGTPGeBky1NwE3jUGzSM7cQ8tLxpSTPN3uMtLMoNtHRiGTWgE4nkaGgX2vQIqkA==", "requires": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/otlp-exporter-base": "0.203.0", - "@opentelemetry/otlp-transformer": "0.203.0", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-trace-base": "2.0.1" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.204.0", + "@opentelemetry/otlp-transformer": "0.204.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0" } }, "@opentelemetry/exporter-trace-otlp-proto": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.203.0.tgz", - "integrity": "sha512-1xwNTJ86L0aJmWRwENCJlH4LULMG2sOXWIVw+Szta4fkqKVY50Eo4HoVKKq6U9QEytrWCr8+zjw0q/ZOeXpcAQ==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.204.0.tgz", + "integrity": "sha512-lqoHMT+NgqdjGp+jeRKsdm3fxBayGVUPOMWXFndSE9Q4Ph6LoG5W3o/a4s9df3MAUHLpFsJPUT5ktI0C/mwETg==", "requires": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/otlp-exporter-base": "0.203.0", - "@opentelemetry/otlp-transformer": "0.203.0", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-trace-base": "2.0.1" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.204.0", + "@opentelemetry/otlp-transformer": "0.204.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0" } }, "@opentelemetry/exporter-zipkin": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-2.0.1.tgz", - "integrity": "sha512-a9eeyHIipfdxzCfc2XPrE+/TI3wmrZUDFtG2RRXHSbZZULAny7SyybSvaDvS77a7iib5MPiAvluwVvbGTsHxsw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-2.1.0.tgz", + "integrity": "sha512-0mEI0VDZrrX9t5RE1FhAyGz+jAGt96HSuXu73leswtY3L5YZD11gtcpARY2KAx/s6Z2+rj5Mhj566JsI2C7mfA==", "requires": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-trace-base": "2.0.1", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0", "@opentelemetry/semantic-conventions": "^1.29.0" } }, @@ -40183,6 +44740,23 @@ "sinon": "15.2.0", "systeminformation": "5.23.8", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/id-generator-aws-xray": { @@ -40208,13 +44782,22 @@ "nyc": "17.1.0", "rimraf": "5.0.10", "sinon": "15.1.2", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" }, "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, "sinon": { "version": "15.1.2", "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.1.2.tgz", @@ -40228,15 +44811,30 @@ "nise": "^5.1.4", "supports-color": "^7.2.0" } + }, + "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" + } + }, + "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 } } }, "@opentelemetry/instrumentation": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.203.0.tgz", - "integrity": "sha512-ke1qyM+3AK2zPuBPb6Hk/GCsc5ewbLvPNkEuELx/JmANeEp6ZjnZ+wypPAJSucTw0wvCGrUaibDSdcrGFoWxKQ==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.204.0.tgz", + "integrity": "sha512-vV5+WSxktzoMP8JoYWKeopChy6G3HKk4UQ2hESCRDUUTZqQ3+nM3u8noVG0LmNfRWwcFBnbZ71GKC7vaYYdJ1g==", "requires": { - "@opentelemetry/api-logs": "0.203.0", + "@opentelemetry/api-logs": "0.204.0", "import-in-the-middle": "^1.8.1", "require-in-the-middle": "^7.1.1" } @@ -40245,22 +44843,40 @@ "version": "file:packages/instrumentation-amqplib", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0", - "@types/amqplib": "^0.5.17", + "@types/amqplib": "^0.10.7", "@types/lodash": "4.14.199", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", "amqplib": "0.8.0", + "cross-env": "7.0.3", "expect": "29.2.0", "lodash": "4.17.21", "nyc": "17.1.0", "sinon": "15.2.0", "test-all-versions": "6.1.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-aws-lambda": { @@ -40268,19 +44884,36 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", - "@opentelemetry/propagator-aws-xray": "^2.1.0", - "@opentelemetry/propagator-aws-xray-lambda": "^0.55.0", + "@opentelemetry/instrumentation": "^0.204.0", + "@opentelemetry/propagator-aws-xray": "^2.1.1", + "@opentelemetry/propagator-aws-xray-lambda": "^0.55.1", "@opentelemetry/sdk-metrics": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", - "@types/aws-lambda": "8.10.150", + "@types/aws-lambda": "8.10.152", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "nyc": "17.1.0", "rimraf": "5.0.10", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-aws-sdk": { @@ -40291,17 +44924,18 @@ "@aws-sdk/client-kinesis": "^3.85.0", "@aws-sdk/client-lambda": "^3.85.0", "@aws-sdk/client-s3": "^3.85.0", + "@aws-sdk/client-secrets-manager": "^3.85.0", + "@aws-sdk/client-sfn": "^3.85.0", "@aws-sdk/client-sns": "^3.85.0", "@aws-sdk/client-sqs": "^3.85.0", "@aws-sdk/types": "^3.370.0", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", - "@opentelemetry/propagation-utils": "^0.31.3", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.34.0", - "@smithy/node-http-handler": "2.4.0", + "@smithy/node-http-handler": "4.1.1", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -40313,16 +44947,33 @@ "sinon": "15.2.0", "test-all-versions": "6.1.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-bunyan": { "version": "file:packages/instrumentation-bunyan", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/api-logs": "^0.203.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/api-logs": "^0.204.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/resources": "^2.0.0", - "@opentelemetry/sdk-logs": "^0.203.0", + "@opentelemetry/sdk-logs": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -40336,6 +44987,23 @@ "sinon": "15.2.0", "test-all-versions": "6.1.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-cassandra-driver": { @@ -40343,8 +45011,8 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -40353,10 +45021,28 @@ "@types/semver": "7.5.8", "@types/sinon": "17.0.4", "cassandra-driver": "4.6.4", + "cross-env": "7.0.3", "nyc": "17.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-connect": { @@ -40365,7 +45051,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -40376,16 +45062,33 @@ "nyc": "17.1.0", "rimraf": "5.0.10", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-cucumber": { "version": "file:packages/instrumentation-cucumber", "requires": { - "@cucumber/cucumber": "^11.0.0", - "@cucumber/messages": "^22.0.0", + "@cucumber/cucumber": "^12.0.0", + "@cucumber/messages": "^28.0.0", "@opentelemetry/api": "^1.0.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -40400,6 +45103,47 @@ "sinon": "15.2.0", "test-all-versions": "6.1.0", "typescript": "5.0.4" + }, + "dependencies": { + "@cucumber/messages": { + "version": "28.1.0", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-28.1.0.tgz", + "integrity": "sha512-2LzZtOwYKNlCuNf31ajkrekoy2M4z0Z1QGiPH40n4gf5t8VOUFb7m1ojtR4LmGvZxBGvJZP8voOmRqDWzBzYKA==", + "dev": true, + "requires": { + "@types/uuid": "10.0.0", + "class-transformer": "0.5.1", + "reflect-metadata": "0.2.2", + "uuid": "11.1.0" + } + }, + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "@types/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", + "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 + }, + "uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "dev": true + } } }, "@opentelemetry/instrumentation-dataloader": { @@ -40407,7 +45151,8 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", @@ -40417,6 +45162,23 @@ "rimraf": "5.0.10", "test-all-versions": "6.1.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-dns": { @@ -40424,7 +45186,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", @@ -40436,6 +45198,23 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-document-load": { @@ -40445,7 +45224,7 @@ "@jsdevtools/coverage-istanbul-loader": "3.0.5", "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-web": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -40486,6 +45265,15 @@ "semver": "^6.3.1" } }, + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, "convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", @@ -40497,6 +45285,12 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "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 } } }, @@ -40505,13 +45299,13 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", - "@types/express": "4.17.23", + "@types/express": "5.0.3", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -40521,6 +45315,23 @@ "sinon": "15.2.0", "test-all-versions": "6.1.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-fastify": { @@ -40529,14 +45340,13 @@ "@fastify/express": "^3.0.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", - "@opentelemetry/instrumentation-http": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", + "@opentelemetry/instrumentation-http": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", - "@types/express": "4.17.23", "@types/mocha": "10.0.10", "@types/node": "18.15.3", "@types/semver": "7.5.8", @@ -40557,13 +45367,13 @@ } }, "@opentelemetry/instrumentation-fetch": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.203.0.tgz", - "integrity": "sha512-Z+mls3rOP2BaVykDZLLZPvchjj9l2oj3dYG1GTnrc27Y8o3biE+5M1b0izblycbbQHXjMPHQCpmjHbLMQuWtBg==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fetch/-/instrumentation-fetch-0.204.0.tgz", + "integrity": "sha512-xEsZrkDdfr4aLjMfkEIkc6eQRb9kVNlhoibFtm8PpfF5n0oC05XA0DdcpI8+uoLx0bI2FTk/6J0cgY4LYPQZCQ==", "requires": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/instrumentation": "0.203.0", - "@opentelemetry/sdk-trace-web": "2.0.1", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/instrumentation": "0.204.0", + "@opentelemetry/sdk-trace-web": "2.1.0", "@opentelemetry/semantic-conventions": "^1.29.0" } }, @@ -40573,7 +45383,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/resources": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", @@ -40584,6 +45394,23 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-generic-pool": { @@ -40591,7 +45418,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/generic-pool": "^3.1.9", @@ -40603,13 +45430,30 @@ "rimraf": "5.0.10", "semver": "7.7.2", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-graphql": { "version": "file:packages/instrumentation-graphql", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", @@ -40619,14 +45463,31 @@ "rimraf": "5.0.10", "test-all-versions": "6.1.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-grpc": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.203.0.tgz", - "integrity": "sha512-Qmjx2iwccHYRLoE4RFS46CvQE9JG9Pfeae4EPaNZjvIuJxb/pZa2R9VWzRlTehqQWpAvto/dGhtkw8Tv+o0LTg==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.204.0.tgz", + "integrity": "sha512-K7aBUFNxnMUHFzOJKZ7jarkvpm/WNmtzKv/Ah35+0CVn3R5lK4jpVZDKKmV9OSF3JQq8+uaEveQzxCAxGLyprA==", "requires": { - "@opentelemetry/instrumentation": "0.203.0", + "@opentelemetry/instrumentation": "0.204.0", "@opentelemetry/semantic-conventions": "^1.29.0" } }, @@ -40636,9 +45497,9 @@ "@hapi/hapi": "21.3.12", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -40649,15 +45510,32 @@ "rimraf": "5.0.10", "test-all-versions": "6.1.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-http": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.203.0.tgz", - "integrity": "sha512-y3uQAcCOAwnO6vEuNVocmpVzG3PER6/YZqbPbbffDdJ9te5NkHEkfSMNzlC3+v7KlE+WinPGc3N7MR30G1HY2g==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.204.0.tgz", + "integrity": "sha512-1afJYyGRA4OmHTv0FfNTrTAzoEjPQUYgd+8ih/lX0LlZBnGio/O80vxA0lN3knsJPS7FiDrsDrWq25K7oAzbkw==", "requires": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/instrumentation": "0.203.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/instrumentation": "0.204.0", "@opentelemetry/semantic-conventions": "^1.29.0", "forwarded-parse": "2.1.2" } @@ -40667,8 +45545,8 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/redis-common": "^0.38.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", @@ -40684,14 +45562,31 @@ "sinon": "15.2.0", "test-all-versions": "6.1.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-kafkajs": { "version": "file:packages/instrumentation-kafkajs", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.30.0", "@types/mocha": "10.0.10", @@ -40703,6 +45598,23 @@ "sinon": "15.2.0", "test-all-versions": "6.1.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-knex": { @@ -40710,30 +45622,47 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.33.1", "@types/mocha": "10.0.10", "@types/node": "18.18.14", - "better-sqlite3": "11.0.0", + "better-sqlite3": "^11.10.0", "knex": "3.1.0", "nyc": "17.1.0", "rimraf": "5.0.10", "sqlite3": "5.1.7", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-koa": { "version": "file:packages/instrumentation-koa", "requires": { - "@koa/router": "13.1.1", + "@koa/router": "14.0.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", - "@opentelemetry/instrumentation-http": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", + "@opentelemetry/instrumentation-http": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -40749,6 +45678,23 @@ "sinon": "15.2.0", "test-all-versions": "6.1.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-long-task": { @@ -40758,7 +45704,7 @@ "@babel/preset-env": "7.24.6", "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-web": "^2.0.0", "@types/mocha": "10.0.10", @@ -40777,7 +45723,7 @@ "nyc": "17.1.0", "rimraf": "5.0.10", "sinon": "15.1.2", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", @@ -40785,6 +45731,15 @@ "zone.js": "^0.11.4 || ^0.13.0 || ^0.14.0 || ^0.15.0" }, "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, "sinon": { "version": "15.1.2", "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.1.2.tgz", @@ -40798,6 +45753,21 @@ "nise": "^5.1.4", "supports-color": "^7.2.0" } + }, + "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" + } + }, + "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 } } }, @@ -40805,8 +45775,8 @@ "version": "file:packages/instrumentation-lru-memoizer", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation": "^0.204.0", "@types/lru-cache": "7.10.10", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -40816,6 +45786,23 @@ "rimraf": "5.0.10", "test-all-versions": "6.1.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-memcached": { @@ -40823,8 +45810,8 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -40836,6 +45823,23 @@ "nyc": "17.1.0", "rimraf": "5.0.10", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-mongodb": { @@ -40843,8 +45847,8 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-metrics": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", @@ -40852,97 +45856,28 @@ "@types/bson": "4.0.5", "@types/mocha": "10.0.10", "@types/node": "18.18.14", - "mongodb": "6.15.0", + "cross-env": "7.0.3", + "mongodb": "6.19.0", "nyc": "17.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", "typescript": "5.0.4" }, "dependencies": { - "@types/whatwg-url": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", - "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", "dev": true, "requires": { - "@types/webidl-conversions": "*" + "undici-types": "~5.26.4" } }, - "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==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "debug": "4" - } - }, - "bson": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.3.tgz", - "integrity": "sha512-MTxGsqgYTwfshYWTRdmZRC+M7FnG1b4y7RO7p2k3X24Wq0yv1m77Wsj0BzlPzd/IowgESfsruQCUToa7vbOpPQ==", + "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 - }, - "gaxios": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz", - "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.9" - } - }, - "gcp-metadata": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz", - "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "gaxios": "^5.0.0", - "json-bigint": "^1.0.0" - } - }, - "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==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "mongodb": { - "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", - "bson": "^6.10.3", - "mongodb-connection-string-url": "^3.0.0" - } - }, - "mongodb-connection-string-url": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.2.tgz", - "integrity": "sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==", - "dev": true, - "requires": { - "@types/whatwg-url": "^11.0.2", - "whatwg-url": "^14.1.0 || ^13.0.0" - } } } }, @@ -40950,19 +45885,37 @@ "version": "file:packages/instrumentation-mongoose", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", + "cross-env": "7.0.3", "expect": "29.2.0", "mongoose": "6.13.8", "nyc": "17.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-mysql": { @@ -40970,8 +45923,8 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-metrics": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -40979,11 +45932,29 @@ "@types/mysql": "2.15.27", "@types/node": "18.18.14", "@types/sinon": "17.0.4", + "cross-env": "7.0.3", "mysql": "2.18.1", "nyc": "17.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-mysql2": { @@ -40991,20 +45962,38 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@opentelemetry/sql-common": "^0.41.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/semver": "7.5.8", + "cross-env": "7.0.3", "mysql2": "3.11.5", "nyc": "17.1.0", "rimraf": "5.0.10", "semver": "7.7.2", "test-all-versions": "6.1.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-nestjs-core": { @@ -41015,7 +46004,7 @@ "@nestjs/platform-express": "11.0.10", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.30.0", @@ -41031,6 +46020,23 @@ "semver": "7.7.2", "test-all-versions": "6.1.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-net": { @@ -41038,7 +46044,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -41049,6 +46055,170 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } + } + }, + "@opentelemetry/instrumentation-openai": { + "version": "file:packages/instrumentation-openai", + "requires": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/api-logs": "^0.204.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation": "^0.204.0", + "@opentelemetry/sdk-logs": "^0.204.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", + "@opentelemetry/semantic-conventions": "^1.36.0", + "@types/node": "18.18.14", + "@typescript-eslint/eslint-plugin": "5.8.1", + "@typescript-eslint/parser": "5.8.1", + "cross-env": "7.0.3", + "expect": "29.2.0", + "nock": "^14.0.0", + "nyc": "17.1.0", + "openai": "4.104.0", + "rimraf": "5.0.10", + "safe-stable-stringify": "^2.4.1", + "sinon": "15.2.0", + "test-all-versions": "6.1.0", + "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.8.1.tgz", + "integrity": "sha512-wTZ5oEKrKj/8/366qTM366zqhIKAp6NCMweoRONtfuC07OAU9nVI2GZZdqQ1qD30WAAtcPdkH+npDwtRFdp4Rw==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "5.8.1", + "@typescript-eslint/scope-manager": "5.8.1", + "debug": "^4.3.2", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.2.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.8.1.tgz", + "integrity": "sha512-K1giKHAjHuyB421SoXMXFHHVI4NdNY603uKw92++D3qyxSeYvC10CBJ/GE5Thpo4WTUvu1mmJI2/FFkz38F2Gw==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.8.1", + "@typescript-eslint/types": "5.8.1", + "@typescript-eslint/typescript-estree": "5.8.1", + "debug": "^4.3.2" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.8.1.tgz", + "integrity": "sha512-DGxJkNyYruFH3NIZc3PwrzwOQAg7vvgsHsHCILOLvUpupgkwDZdNq/cXU3BjF4LNrCsVg0qxEyWasys5AiJ85Q==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.8.1", + "@typescript-eslint/visitor-keys": "5.8.1" + } + }, + "@typescript-eslint/types": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.8.1.tgz", + "integrity": "sha512-L/FlWCCgnjKOLefdok90/pqInkomLnAcF9UAzNr+DSqMC3IffzumHTQTrINXhP1gVp9zlHiYYjvozVZDPleLcA==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.8.1.tgz", + "integrity": "sha512-26lQ8l8tTbG7ri7xEcCFT9ijU5Fk+sx/KRRyyzCv7MQ+rZZlqiDPtMKWLC8P7o+dtCnby4c+OlxuX1tp8WfafQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.8.1", + "@typescript-eslint/visitor-keys": "5.8.1", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.8.1.tgz", + "integrity": "sha512-SWgiWIwocK6NralrJarPZlWdr0hZnj5GXHIgfdm8hNkyKvpeQuFyLP6YjSIe9kf3YBIfU6OHSZLYkQ+smZwtNg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.8.1", + "eslint-visitor-keys": "^3.0.0" + } + }, + "nock": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/nock/-/nock-14.0.5.tgz", + "integrity": "sha512-R49fALR9caB6vxuSWUIaK2eBYeTloZQUFBZ4rHO+TbhMGQHtwnhdqKLYki+o+8qMgLvoBYWrp/2KzGPhxL4S6w==", + "dev": true, + "requires": { + "@mswjs/interceptors": "^0.38.7", + "json-stringify-safe": "^5.0.1", + "propagate": "^2.0.0" + } + }, + "openai": { + "version": "4.104.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.104.0.tgz", + "integrity": "sha512-p99EFNsA/yX6UhVO93f5kJsDRLAg+CTA2RBqdHK4RtK8u5IJw32Hyb2dTGKbnnFmnuoBv5r7Z2CURI9sGZpSuA==", + "dev": true, + "requires": { + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7" + } + }, + "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 + }, + "ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "dev": true, + "optional": true, + "peer": true, + "requires": {} + } } }, "@opentelemetry/instrumentation-oracledb": { @@ -41056,8 +46226,8 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -41073,6 +46243,23 @@ "sinon": "15.2.0", "test-all-versions": "6.1.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-pg": { @@ -41080,16 +46267,16 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", - "@opentelemetry/semantic-conventions": "^1.27.0", + "@opentelemetry/semantic-conventions": "^1.34.0", "@opentelemetry/sql-common": "^0.41.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", - "@types/pg": "8.15.4", + "@types/pg": "8.15.5", "@types/pg-pool": "2.0.6", "@types/sinon": "17.0.4", "cross-env": "7.0.3", @@ -41101,16 +46288,33 @@ "sinon": "15.2.0", "test-all-versions": "6.1.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-pino": { "version": "file:packages/instrumentation-pino", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/api-logs": "^0.203.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/api-logs": "^0.204.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -41119,12 +46323,29 @@ "@types/semver": "7.5.8", "@types/sinon": "17.0.4", "nyc": "17.1.0", - "pino": "8.3.1", + "pino": "^8.21.0", "rimraf": "5.0.10", "semver": "7.7.2", "sinon": "15.2.0", "test-all-versions": "6.1.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-redis": { @@ -41132,8 +46353,8 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/redis-common": "^0.38.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", @@ -41142,10 +46363,77 @@ "@types/node": "18.18.14", "cross-env": "7.0.3", "nyc": "17.1.0", - "redis": "^4.7.1", + "redis": "^5.6.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", "typescript": "5.0.4" + }, + "dependencies": { + "@redis/bloom": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-5.6.0.tgz", + "integrity": "sha512-l13/d6BaZDJzogzZJEphIeZ8J0hpQpjkMiozomTm6nJiMNYkoPsNOBOOQua4QsG0fFjyPmLMDJFPAp5FBQtTXg==", + "dev": true, + "requires": {} + }, + "@redis/client": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-5.6.0.tgz", + "integrity": "sha512-wmP9kCFElCSr4MM4+1E4VckDuN4wLtiXSM/J0rKVQppajxQhowci89RGZr2OdLualowb8SRJ/R6OjsXrn9ZNFA==", + "dev": true, + "requires": { + "cluster-key-slot": "1.1.2" + } + }, + "@redis/json": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@redis/json/-/json-5.6.0.tgz", + "integrity": "sha512-YQN9ZqaSDpdLfJqwzcF4WeuJMGru/h4WsV7GeeNtXsSeyQjHTyDxrd48xXfRRJGv7HitA7zGnzdHplNeKOgrZA==", + "dev": true, + "requires": {} + }, + "@redis/search": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@redis/search/-/search-5.6.0.tgz", + "integrity": "sha512-sLgQl92EyMVNHtri5K8Q0j2xt9c0cO9HYurXz667Un4xeUYR+B/Dw5lLG35yqO7VvVxb9amHJo9sAWumkKZYwA==", + "dev": true, + "requires": {} + }, + "@redis/time-series": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-5.6.0.tgz", + "integrity": "sha512-tXABmN1vu4aTNL3WI4Iolpvx/5jgil2Bs31ozvKblT+jkUoRkk8ykmYo9Pv/Mp7Gk6/Qkr/2rMgVminrt/4BBQ==", + "dev": true, + "requires": {} + }, + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "redis": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/redis/-/redis-5.6.0.tgz", + "integrity": "sha512-0x3pM3SlYA5azdNwO8qgfMBzoOqSqr9M+sd1hojbcn0ZDM5zsmKeMM+zpTp6LIY+mbQomIc/RTTQKuBzr8QKzQ==", + "dev": true, + "requires": { + "@redis/bloom": "5.6.0", + "@redis/client": "5.6.0", + "@redis/json": "5.6.0", + "@redis/search": "5.6.0", + "@redis/time-series": "5.6.0" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-restify": { @@ -41154,7 +46442,7 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -41168,6 +46456,23 @@ "semver": "7.7.2", "test-all-versions": "^6.0.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-router": { @@ -41175,7 +46480,7 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -41185,27 +46490,61 @@ "rimraf": "5.0.10", "router": "1.3.8", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-runtime-node": { "version": "file:packages/instrumentation-runtime-node", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-metrics": "^2.0.0", "@types/mocha": "^10.0.6", "@types/node": "18.18.14", "nyc": "^17.0.0", "rimraf": "5.0.10", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-socket.io": { "version": "file:packages/instrumentation-socket.io", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", @@ -41232,6 +46571,15 @@ "chalk": "^4.0.0" } }, + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, "@types/yargs": { "version": "16.0.9", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", @@ -41336,6 +46684,12 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "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 } } }, @@ -41344,28 +46698,46 @@ "requires": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/tedious": "^4.0.14", + "cross-env": "7.0.3", "nyc": "17.1.0", "rimraf": "5.0.10", "semver": "7.7.2", "tedious": "17.0.0", "test-all-versions": "6.1.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-typeorm": { "version": "file:packages/instrumentation-typeorm", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -41376,56 +46748,25 @@ "typescript": "5.0.4" }, "dependencies": { - "@types/whatwg-url": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", - "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/webidl-conversions": "*" - } - }, - "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==", + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", "dev": true, - "optional": true, - "peer": true, "requires": { - "debug": "4" + "undici-types": "~5.26.4" } }, "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "bson": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.3.tgz", - "integrity": "sha512-MTxGsqgYTwfshYWTRdmZRC+M7FnG1b4y7RO7p2k3X24Wq0yv1m77Wsj0BzlPzd/IowgESfsruQCUToa7vbOpPQ==", - "dev": true, - "optional": true, - "peer": true - }, - "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" - } - }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -41449,13 +46790,6 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true }, - "dedent": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz", - "integrity": "sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==", - "dev": true, - "requires": {} - }, "foreground-child": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", @@ -41466,42 +46800,18 @@ "signal-exit": "^3.0.2" } }, - "gaxios": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz", - "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.9" - } - }, - "gcp-metadata": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz", - "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "gaxios": "^5.0.0", - "json-bigint": "^1.0.0" - } - }, - "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==", + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "optional": true, - "peer": true, "requires": { - "agent-base": "6", - "debug": "4" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "minimatch": { @@ -41513,31 +46823,6 @@ "brace-expansion": "^1.1.7" } }, - "mongodb": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.16.0.tgz", - "integrity": "sha512-D1PNcdT0y4Grhou5Zi/qgipZOYeWrhLEpk33n3nm6LGtz61jvO88WlrWCK/bigMjpnOdAUKKQwsGIl0NtWMyYw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@mongodb-js/saslprep": "^1.1.9", - "bson": "^6.10.3", - "mongodb-connection-string-url": "^3.0.0" - } - }, - "mongodb-connection-string-url": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.2.tgz", - "integrity": "sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/whatwg-url": "^11.0.2", - "whatwg-url": "^14.1.0 || ^13.0.0" - } - }, "nyc": { "version": "15.1.0", "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", @@ -41573,20 +46858,6 @@ "yargs": "^15.0.2" }, "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" - } - }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -41595,25 +46866,6 @@ "requires": { "glob": "^7.1.3" } - }, - "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" - } } } }, @@ -41632,32 +46884,10 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "typeorm": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.24.tgz", - "integrity": "sha512-4IrHG7A0tY8l5gEGXfW56VOMfUVWEkWlH/h5wmcyZ+V8oCiLj7iTPp0lEjMEZVrxEkGSdP9ErgTKHKXQApl/oA==", - "dev": true, - "requires": { - "@sqltools/formatter": "^1.2.5", - "ansis": "^3.17.0", - "app-root-path": "^3.1.0", - "buffer": "^6.0.3", - "dayjs": "^1.11.13", - "debug": "^4.4.0", - "dedent": "^1.6.0", - "dotenv": "^16.4.7", - "glob": "^10.4.5", - "sha.js": "^2.4.11", - "sql-highlight": "^6.0.0", - "tslib": "^2.8.1", - "uuid": "^11.1.0", - "yargs": "^17.7.2" - } - }, - "uuid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "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 }, "wrap-ansi": { @@ -41677,6 +46907,25 @@ "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", @@ -41694,7 +46943,7 @@ "requires": { "@opentelemetry/api": "^1.7.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-metrics": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", @@ -41706,6 +46955,23 @@ "test-all-versions": "6.1.0", "typescript": "5.0.4", "undici": "6.21.3" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-user-interaction": { @@ -41716,11 +46982,11 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-zone-peer-dep": "^2.0.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", + "@opentelemetry/instrumentation-xml-http-request": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-web": "^2.0.0", - "@types/jquery": "3.5.32", + "@types/jquery": "3.5.33", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -41737,7 +47003,7 @@ "karma-webpack": "5.0.1", "nyc": "17.1.0", "sinon": "15.1.2", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", @@ -41745,6 +47011,15 @@ "zone.js": "^0.11.4 || ^0.13.0 || ^0.14.0 || ^0.15.0" }, "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, "sinon": { "version": "15.1.2", "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.1.2.tgz", @@ -41758,6 +47033,21 @@ "nise": "^5.1.4", "supports-color": "^7.2.0" } + }, + "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" + } + }, + "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 } } }, @@ -41765,12 +47055,12 @@ "version": "file:packages/instrumentation-winston", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/api-logs": "^0.203.0", + "@opentelemetry/api-logs": "^0.204.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", - "@opentelemetry/winston-transport": "^0.14.0", + "@opentelemetry/winston-transport": "^0.15.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -41782,50 +47072,67 @@ "typescript": "5.0.4", "winston": "3.3.3", "winston2": "npm:winston@2.4.7" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/instrumentation-xml-http-request": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.203.0.tgz", - "integrity": "sha512-PUDlxZ9WmXvbj3DmXoRMSvvfPEwvEbSNaCtKGxF/GZc1HCJlLQtUEyQrOPeJv3Cd/g9ph2236EFXlCd/ttxouQ==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-xml-http-request/-/instrumentation-xml-http-request-0.204.0.tgz", + "integrity": "sha512-x5ukmzpaPx0cVKRVQzuA6r9/j/N8VQ+nzay8/8Ih1DfcaZUFekk6P5xz6Bawb105EUe6e76JnG3HTcdL1ELD8A==", "requires": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/instrumentation": "0.203.0", - "@opentelemetry/sdk-trace-web": "2.0.1", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/instrumentation": "0.204.0", + "@opentelemetry/sdk-trace-web": "2.1.0", "@opentelemetry/semantic-conventions": "^1.29.0" } }, "@opentelemetry/otlp-exporter-base": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.203.0.tgz", - "integrity": "sha512-Wbxf7k+87KyvxFr5D7uOiSq/vHXWommvdnNE7vECO3tAhsA2GfOlpWINCMWUEPdHZ7tCXxw6Epp3vgx3jU7llQ==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.204.0.tgz", + "integrity": "sha512-K1LB1Ht4rGgOtZQ1N8xAwUnE1h9EQBfI4XUbSorbC6OxK6s/fLzl+UAhZX1cmBsDqM5mdx5+/k4QaKlDxX6UXQ==", "requires": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/otlp-transformer": "0.203.0" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-transformer": "0.204.0" } }, "@opentelemetry/otlp-grpc-exporter-base": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.203.0.tgz", - "integrity": "sha512-te0Ze1ueJF+N/UOFl5jElJW4U0pZXQ8QklgSfJ2linHN0JJsuaHG8IabEUi2iqxY8ZBDlSiz1Trfv5JcjWWWwQ==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.204.0.tgz", + "integrity": "sha512-U9EsCWHLflUyZX13CpT7056bvpLTOntdHZamZoOwlzwwosvqaKeuxNzmjGB1KFtsiLyAwcb9NNrKSHNytuVDhg==", "requires": { "@grpc/grpc-js": "^1.7.1", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/otlp-exporter-base": "0.203.0", - "@opentelemetry/otlp-transformer": "0.203.0" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.204.0", + "@opentelemetry/otlp-transformer": "0.204.0" } }, "@opentelemetry/otlp-transformer": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.203.0.tgz", - "integrity": "sha512-Y8I6GgoCna0qDQ2W6GCRtaF24SnvqvA8OfeTi7fqigD23u8Jpb4R5KFv/pRvrlGagcCLICMIyh9wiejp4TXu/A==", - "requires": { - "@opentelemetry/api-logs": "0.203.0", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-logs": "0.203.0", - "@opentelemetry/sdk-metrics": "2.0.1", - "@opentelemetry/sdk-trace-base": "2.0.1", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.204.0.tgz", + "integrity": "sha512-AekB2dgHJ0PMS0b3LH7xA2HDKZ0QqqZW4n5r/AVZy00gKnFoeyVF9t0AUz051fm80G7tKjGSLqOUSazqfTNpVQ==", + "requires": { + "@opentelemetry/api-logs": "0.204.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-logs": "0.204.0", + "@opentelemetry/sdk-metrics": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0", "protobufjs": "^7.3.0" } }, @@ -41835,13 +47142,13 @@ "@babel/core": "7.24.6", "@babel/preset-env": "7.24.6", "@opentelemetry/api": "^1.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/propagator-b3": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-web": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", - "@types/react": "17.0.87", + "@types/react": "17.0.88", "@types/react-addons-test-utils": "0.14.26", "@types/react-dom": "17.0.26", "@types/shimmer": "1.0.3", @@ -41862,13 +47169,22 @@ "rimraf": "5.0.10", "shimmer": "^1.2.1", "sinon": "15.1.2", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" }, "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, "sinon": { "version": "15.1.2", "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.1.2.tgz", @@ -41882,6 +47198,21 @@ "nise": "^5.1.4", "supports-color": "^7.2.0" } + }, + "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" + } + }, + "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 } } }, @@ -41889,7 +47220,7 @@ "version": "file:packages/propagation-utils", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@types/mocha": "^10.0.0", "@types/node": "18.18.14", "@types/sinon": "^17.0.0", @@ -41897,6 +47228,23 @@ "nyc": "17.1.0", "sinon": "15.2.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/propagator-aws-xray": { @@ -41917,13 +47265,22 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "nyc": "17.1.0", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.95.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" }, "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -41941,6 +47298,12 @@ "ajv-keywords": "^3.5.2" } }, + "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 + }, "webpack": { "version": "5.95.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", @@ -41980,7 +47343,7 @@ "@babel/core": "^7.21.8", "@babel/preset-env": "7.24.6", "@opentelemetry/api": "1.9.0", - "@opentelemetry/propagator-aws-xray": "^2.1.0", + "@opentelemetry/propagator-aws-xray": "^2.1.1", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -41988,10 +47351,19 @@ "babel-plugin-istanbul": "7.0.0", "nyc": "17.1.0", "sinon": "15.1.2", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4" }, "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, "sinon": { "version": "15.1.2", "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.1.2.tgz", @@ -42005,15 +47377,30 @@ "nise": "^5.1.4", "supports-color": "^7.2.0" } + }, + "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" + } + }, + "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 } } }, "@opentelemetry/propagator-b3": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-2.0.1.tgz", - "integrity": "sha512-Hc09CaQ8Tf5AGLmf449H726uRoBNGPBL4bjr7AnnUpzWMvhdn61F78z9qb6IqB737TffBsokGAK1XykFEZ1igw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-2.1.0.tgz", + "integrity": "sha512-yOdHmFseIChYanddMMz0mJIFQHyjwbNhoxc65fEAA8yanxcBPwoFDoh1+WBUWAO/Z0NRgk+k87d+aFIzAZhcBw==", "requires": { - "@opentelemetry/core": "2.0.1" + "@opentelemetry/core": "2.1.0" } }, "@opentelemetry/propagator-instana": { @@ -42037,19 +47424,36 @@ "karma-webpack": "5.0.1", "nyc": "17.1.0", "process": "0.11.10", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/propagator-jaeger": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-2.0.1.tgz", - "integrity": "sha512-7PMdPBmGVH2eQNb/AtSJizQNgeNTfh6jQFqys6lfhd6P4r+m/nTh3gKPPpaCXVdRQ+z93vfKk+4UGty390283w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-2.1.0.tgz", + "integrity": "sha512-QYo7vLyMjrBCUTpwQBF/e+rvP7oGskrSELGxhSvLj5gpM0az9oJnu/0O4l2Nm7LEhAff80ntRYKkAcSwVgvSVQ==", "requires": { - "@opentelemetry/core": "2.0.1" + "@opentelemetry/core": "2.1.0" } }, "@opentelemetry/propagator-ot-trace": { @@ -42073,13 +47477,22 @@ "karma-webpack": "5.0.1", "nyc": "17.1.0", "sinon": "15.1.2", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" }, "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, "sinon": { "version": "15.1.2", "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.1.2.tgz", @@ -42093,6 +47506,21 @@ "nise": "^5.1.4", "supports-color": "^7.2.0" } + }, + "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" + } + }, + "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 } } }, @@ -42103,13 +47531,30 @@ "@types/node": "18.18.14", "nyc": "17.1.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/resource-detector-alibaba-cloud": { "version": "file:packages/resource-detector-alibaba-cloud", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/core": "^2.0.0", "@opentelemetry/resources": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", @@ -42122,16 +47567,33 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/resource-detector-aws": { "version": "file:packages/resource-detector-aws", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation-fs": "^0.23.0", - "@opentelemetry/instrumentation-http": "^0.203.0", + "@opentelemetry/instrumentation-fs": "^0.24.0", + "@opentelemetry/instrumentation-http": "^0.204.0", "@opentelemetry/resources": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -42143,15 +47605,32 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/resource-detector-azure": { "version": "file:packages/resource-detector-azure", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation-http": "^0.203.0", + "@opentelemetry/instrumentation-http": "^0.204.0", "@opentelemetry/resources": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -42162,15 +47641,32 @@ "nyc": "17.1.0", "rimraf": "5.0.10", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/resource-detector-container": { "version": "file:packages/resource-detector-container", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation-fs": "^0.23.0", + "@opentelemetry/instrumentation-fs": "^0.24.0", "@opentelemetry/resources": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -42183,15 +47679,32 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/resource-detector-gcp": { "version": "file:packages/resource-detector-gcp", "requires": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation-http": "^0.203.0", + "@opentelemetry/instrumentation-http": "^0.204.0", "@opentelemetry/resources": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -42203,6 +47716,59 @@ "nyc": "17.1.0", "rimraf": "5.0.10", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==" + }, + "gaxios": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", + "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", + "requires": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" + } + }, + "gcp-metadata": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.1.tgz", + "integrity": "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==", + "requires": { + "gaxios": "^6.1.1", + "google-logging-utils": "^0.0.2", + "json-bigint": "^1.0.0" + } + }, + "https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "requires": { + "agent-base": "^7.1.2", + "debug": "4" + } + }, + "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 + } } }, "@opentelemetry/resource-detector-github": { @@ -42217,16 +47783,33 @@ "rimraf": "5.0.10", "sinon": "15.2.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/resource-detector-instana": { "version": "file:packages/resource-detector-instana", "requires": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/core": "^2.0.0", "@opentelemetry/resources": "^2.0.0", - "@opentelemetry/sdk-node": "^0.203.0", + "@opentelemetry/sdk-node": "^0.204.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/semver": "7.5.8", @@ -42234,98 +47817,115 @@ "nyc": "17.1.0", "rimraf": "5.0.10", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/resources": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.0.1.tgz", - "integrity": "sha512-dZOB3R6zvBwDKnHDTB4X1xtMArB/d324VsbiPkX/Yu0Q8T2xceRthoIVFhJdvgVM2QhGVUyX9tzwiNxGtoBJUw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.1.0.tgz", + "integrity": "sha512-1CJjf3LCvoefUOgegxi8h6r4B/wLSzInyhGP2UmIBYNlo4Qk5CZ73e1eEyWmfXvFtm1ybkmfb2DqWvspsYLrWw==", "requires": { - "@opentelemetry/core": "2.0.1", + "@opentelemetry/core": "2.1.0", "@opentelemetry/semantic-conventions": "^1.29.0" } }, "@opentelemetry/sdk-logs": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.203.0.tgz", - "integrity": "sha512-vM2+rPq0Vi3nYA5akQD2f3QwossDnTDLvKbea6u/A2NZ3XDkPxMfo/PNrDoXhDUD/0pPo2CdH5ce/thn9K0kLw==", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.204.0.tgz", + "integrity": "sha512-y32iNNmpMUVFWSqbNrXE8xY/6EMge+HX3PXsMnCDV4cXT4SNT+W/3NgyMDf80KJL0fUK17/a0NmfXcrBhkFWrg==", "requires": { - "@opentelemetry/api-logs": "0.203.0", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/resources": "2.0.1" + "@opentelemetry/api-logs": "0.204.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0" } }, "@opentelemetry/sdk-metrics": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.0.1.tgz", - "integrity": "sha512-wf8OaJoSnujMAHWR3g+/hGvNcsC16rf9s1So4JlMiFaFHiE4HpIA3oUh+uWZQ7CNuK8gVW/pQSkgoa5HkkOl0g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.1.0.tgz", + "integrity": "sha512-J9QX459mzqHLL9Y6FZ4wQPRZG4TOpMCyPOh6mkr/humxE1W2S3Bvf4i75yiMW9uyed2Kf5rxmLhTm/UK8vNkAw==", "requires": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/resources": "2.0.1" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0" } }, "@opentelemetry/sdk-node": { - "version": "0.203.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.203.0.tgz", - "integrity": "sha512-zRMvrZGhGVMvAbbjiNQW3eKzW/073dlrSiAKPVWmkoQzah9wfynpVPeL55f9fVIm0GaBxTLcPeukWGy0/Wj7KQ==", - "requires": { - "@opentelemetry/api-logs": "0.203.0", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/exporter-logs-otlp-grpc": "0.203.0", - "@opentelemetry/exporter-logs-otlp-http": "0.203.0", - "@opentelemetry/exporter-logs-otlp-proto": "0.203.0", - "@opentelemetry/exporter-metrics-otlp-grpc": "0.203.0", - "@opentelemetry/exporter-metrics-otlp-http": "0.203.0", - "@opentelemetry/exporter-metrics-otlp-proto": "0.203.0", - "@opentelemetry/exporter-prometheus": "0.203.0", - "@opentelemetry/exporter-trace-otlp-grpc": "0.203.0", - "@opentelemetry/exporter-trace-otlp-http": "0.203.0", - "@opentelemetry/exporter-trace-otlp-proto": "0.203.0", - "@opentelemetry/exporter-zipkin": "2.0.1", - "@opentelemetry/instrumentation": "0.203.0", - "@opentelemetry/propagator-b3": "2.0.1", - "@opentelemetry/propagator-jaeger": "2.0.1", - "@opentelemetry/resources": "2.0.1", - "@opentelemetry/sdk-logs": "0.203.0", - "@opentelemetry/sdk-metrics": "2.0.1", - "@opentelemetry/sdk-trace-base": "2.0.1", - "@opentelemetry/sdk-trace-node": "2.0.1", + "version": "0.204.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.204.0.tgz", + "integrity": "sha512-HRMTjiA6urw9kLpBJrhe6jxDw+69KdXkqr2tBhmsLgpdN7LlVWWPUQbYUtiUg9nWaEOk1Q1blhV2sGQoFNZk+g==", + "requires": { + "@opentelemetry/api-logs": "0.204.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/exporter-logs-otlp-grpc": "0.204.0", + "@opentelemetry/exporter-logs-otlp-http": "0.204.0", + "@opentelemetry/exporter-logs-otlp-proto": "0.204.0", + "@opentelemetry/exporter-metrics-otlp-grpc": "0.204.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.204.0", + "@opentelemetry/exporter-metrics-otlp-proto": "0.204.0", + "@opentelemetry/exporter-prometheus": "0.204.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.204.0", + "@opentelemetry/exporter-trace-otlp-http": "0.204.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.204.0", + "@opentelemetry/exporter-zipkin": "2.1.0", + "@opentelemetry/instrumentation": "0.204.0", + "@opentelemetry/propagator-b3": "2.1.0", + "@opentelemetry/propagator-jaeger": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-logs": "0.204.0", + "@opentelemetry/sdk-metrics": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0", + "@opentelemetry/sdk-trace-node": "2.1.0", "@opentelemetry/semantic-conventions": "^1.29.0" } }, "@opentelemetry/sdk-trace-base": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.0.1.tgz", - "integrity": "sha512-xYLlvk/xdScGx1aEqvxLwf6sXQLXCjk3/1SQT9X9AoN5rXRhkdvIFShuNNmtTEPRBqcsMbS4p/gJLNI2wXaDuQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.1.0.tgz", + "integrity": "sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==", "requires": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/resources": "2.0.1", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", "@opentelemetry/semantic-conventions": "^1.29.0" } }, "@opentelemetry/sdk-trace-node": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-2.0.1.tgz", - "integrity": "sha512-UhdbPF19pMpBtCWYP5lHbTogLWx9N0EBxtdagvkn5YtsAnCBZzL7SjktG+ZmupRgifsHMjwUaCCaVmqGfSADmA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-2.1.0.tgz", + "integrity": "sha512-SvVlBFc/jI96u/mmlKm86n9BbTCbQ35nsPoOohqJX6DXH92K0kTe73zGY5r8xoI1QkjR9PizszVJLzMC966y9Q==", "requires": { - "@opentelemetry/context-async-hooks": "2.0.1", - "@opentelemetry/core": "2.0.1", - "@opentelemetry/sdk-trace-base": "2.0.1" + "@opentelemetry/context-async-hooks": "2.1.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0" } }, "@opentelemetry/sdk-trace-web": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-2.0.1.tgz", - "integrity": "sha512-R4/i0rISvAujG4Zwk3s6ySyrWG+Db3SerZVM4jZ2lEzjrNylF7nRAy1hVvWe8gTbwIxX+6w6ZvZwdtl2C7UQHQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-2.1.0.tgz", + "integrity": "sha512-2F6ZuZFmJg4CdhRPP8+60DkvEwGLCiU3ffAkgnnqe/ALGEBqGa0HrZaNWFGprXWVivrYHpXhr7AEfasgLZD71g==", "requires": { - "@opentelemetry/core": "2.0.1", - "@opentelemetry/sdk-trace-base": "2.0.1" + "@opentelemetry/core": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0" } }, "@opentelemetry/semantic-conventions": { - "version": "1.34.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.34.0.tgz", - "integrity": "sha512-aKcOkyrorBGlajjRdVoJWHTxfxO1vCNHLJVlSDaRHDIdjU+pX8IYQPvPDkYiujKLbRnWU+1TBwEt0QRgSm4SGA==" + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.37.0.tgz", + "integrity": "sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==" }, "@opentelemetry/sql-common": { "version": "file:packages/sql-common", @@ -42336,12 +47936,29 @@ "@types/node": "18.18.14", "nyc": "17.1.0", "typescript": "5.0.4" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@opentelemetry/winston-transport": { "version": "file:packages/winston-transport", "requires": { - "@opentelemetry/api-logs": "^0.203.0", + "@opentelemetry/api-logs": "^0.204.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -42351,6 +47968,23 @@ "sinon": "15.2.0", "typescript": "5.0.4", "winston-transport": "4.*" + }, + "dependencies": { + "@types/node": { + "version": "18.18.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", + "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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 + } } }, "@pkgjs/parseargs": { @@ -42431,9 +48065,9 @@ }, "dependencies": { "tar-fs": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.8.tgz", - "integrity": "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.0.tgz", + "integrity": "sha512-5Mty5y/sOF1YWj1J6GiBodjlDc05CUR8PKXrsnFAiSG0xA+GHeWLovaZPYUDXkH/1iKRf2+M5+OrRgzC7O9b7w==", "dev": true, "requires": { "bare-fs": "^4.0.1", @@ -42455,6 +48089,82 @@ } } }, + "@redis/bloom": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", + "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", + "dev": true, + "optional": true, + "peer": true, + "requires": {} + }, + "@redis/client": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.6.1.tgz", + "integrity": "sha512-/KCsg3xSlR+nCK8/8ZYSknYxvXHwubJrU82F3Lm1Fp6789VQ0/3RJKfsmRXjqfaTA++23CvC3hqmqe/2GEt6Kw==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "cluster-key-slot": "1.1.2", + "generic-pool": "3.9.0", + "yallist": "4.0.0" + }, + "dependencies": { + "generic-pool": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", + "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==", + "dev": true, + "optional": true, + "peer": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "optional": true, + "peer": true + } + } + }, + "@redis/graph": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.1.tgz", + "integrity": "sha512-FEMTcTHZozZciLRl6GiiIB4zGm5z5F3F6a6FZCyrfxdKOhFlGkiAqlexWMBzCi4DcRoyiOsuLfW+cjlGWyExOw==", + "dev": true, + "optional": true, + "peer": true, + "requires": {} + }, + "@redis/json": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.7.tgz", + "integrity": "sha512-6UyXfjVaTBTJtKNG4/9Z8PSpKE6XgSyEb8iwaqDcy+uKrd/DGYHTWkUdnQDyzm727V7p21WUMhsqz5oy65kPcQ==", + "dev": true, + "optional": true, + "peer": true, + "requires": {} + }, + "@redis/search": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.2.0.tgz", + "integrity": "sha512-tYoDBbtqOVigEDMAcTGsRlMycIIjwMCgD8eR2t0NANeQmgK/lvxNAvYyb6bZDD4frHRhIHkJu2TBRvB0ERkOmw==", + "dev": true, + "optional": true, + "peer": true, + "requires": {} + }, + "@redis/time-series": { + "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, + "optional": true, + "peer": true, + "requires": {} + }, "@rollup/plugin-commonjs": { "version": "26.0.3", "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-26.0.3.tgz", @@ -42483,9 +48193,9 @@ } }, "@rollup/pluginutils": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", - "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.2.0.tgz", + "integrity": "sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==", "dev": true, "requires": { "@types/estree": "^1.0.0", @@ -42494,142 +48204,142 @@ } }, "@rollup/rollup-android-arm-eabi": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.0.tgz", - "integrity": "sha512-KxN+zCjOYHGwCl4UCtSfZ6jrq/qi88JDUtiEFk8LELEHq2Egfc/FgW+jItZiOLRuQfb/3xJSgFuNPC9jzggX+A==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.2.tgz", + "integrity": "sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==", "dev": true, "optional": true }, "@rollup/rollup-android-arm64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.0.tgz", - "integrity": "sha512-yDvqx3lWlcugozax3DItKJI5j05B0d4Kvnjx+5mwiUpWramVvmAByYigMplaoAQ3pvdprGCTCE03eduqE/8mPQ==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.2.tgz", + "integrity": "sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==", "dev": true, "optional": true }, "@rollup/rollup-darwin-arm64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.0.tgz", - "integrity": "sha512-2KOU574vD3gzcPSjxO0eyR5iWlnxxtmW1F5CkNOHmMlueKNCQkxR6+ekgWyVnz6zaZihpUNkGxjsYrkTJKhkaw==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.2.tgz", + "integrity": "sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==", "dev": true, "optional": true }, "@rollup/rollup-darwin-x64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.0.tgz", - "integrity": "sha512-gE5ACNSxHcEZyP2BA9TuTakfZvULEW4YAOtxl/A/YDbIir/wPKukde0BNPlnBiP88ecaN4BJI2TtAd+HKuZPQQ==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.2.tgz", + "integrity": "sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==", "dev": true, "optional": true }, "@rollup/rollup-freebsd-arm64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.0.tgz", - "integrity": "sha512-GSxU6r5HnWij7FoSo7cZg3l5GPg4HFLkzsFFh0N/b16q5buW1NAWuCJ+HMtIdUEi6XF0qH+hN0TEd78laRp7Dg==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.2.tgz", + "integrity": "sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==", "dev": true, "optional": true }, "@rollup/rollup-freebsd-x64": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.0.tgz", - "integrity": "sha512-KGiGKGDg8qLRyOWmk6IeiHJzsN/OYxO6nSbT0Vj4MwjS2XQy/5emsmtoqLAabqrohbgLWJ5GV3s/ljdrIr8Qjg==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.2.tgz", + "integrity": "sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==", "dev": true, "optional": true }, "@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.0.tgz", - "integrity": "sha512-46OzWeqEVQyX3N2/QdiU/CMXYDH/lSHpgfBkuhl3igpZiaB3ZIfSjKuOnybFVBQzjsLwkus2mjaESy8H41SzvA==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.2.tgz", + "integrity": "sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==", "dev": true, "optional": true }, "@rollup/rollup-linux-arm-musleabihf": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.0.tgz", - "integrity": "sha512-lfgW3KtQP4YauqdPpcUZHPcqQXmTmH4nYU0cplNeW583CMkAGjtImw4PKli09NFi2iQgChk4e9erkwlfYem6Lg==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.2.tgz", + "integrity": "sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==", "dev": true, "optional": true }, "@rollup/rollup-linux-arm64-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.0.tgz", - "integrity": "sha512-nn8mEyzMbdEJzT7cwxgObuwviMx6kPRxzYiOl6o/o+ChQq23gfdlZcUNnt89lPhhz3BYsZ72rp0rxNqBSfqlqw==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.2.tgz", + "integrity": "sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==", "dev": true, "optional": true }, "@rollup/rollup-linux-arm64-musl": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.0.tgz", - "integrity": "sha512-l+QK99je2zUKGd31Gh+45c4pGDAqZSuWQiuRFCdHYC2CSiO47qUWsCcenrI6p22hvHZrDje9QjwSMAFL3iwXwQ==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.2.tgz", + "integrity": "sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==", "dev": true, "optional": true }, "@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.0.tgz", - "integrity": "sha512-WbnJaxPv1gPIm6S8O/Wg+wfE/OzGSXlBMbOe4ie+zMyykMOeqmgD1BhPxZQuDqwUN+0T/xOFtL2RUWBspnZj3w==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.2.tgz", + "integrity": "sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==", "dev": true, "optional": true }, - "@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.0.tgz", - "integrity": "sha512-eRDWR5t67/b2g8Q/S8XPi0YdbKcCs4WQ8vklNnUYLaSWF+Cbv2axZsp4jni6/j7eKvMLYCYdcsv8dcU+a6QNFg==", + "@rollup/rollup-linux-ppc64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.2.tgz", + "integrity": "sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==", "dev": true, "optional": true }, "@rollup/rollup-linux-riscv64-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.0.tgz", - "integrity": "sha512-TWrZb6GF5jsEKG7T1IHwlLMDRy2f3DPqYldmIhnA2DVqvvhY2Ai184vZGgahRrg8k9UBWoSlHv+suRfTN7Ua4A==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.2.tgz", + "integrity": "sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==", "dev": true, "optional": true }, "@rollup/rollup-linux-riscv64-musl": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.0.tgz", - "integrity": "sha512-ieQljaZKuJpmWvd8gW87ZmSFwid6AxMDk5bhONJ57U8zT77zpZ/TPKkU9HpnnFrM4zsgr4kiGuzbIbZTGi7u9A==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.2.tgz", + "integrity": "sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==", "dev": true, "optional": true }, "@rollup/rollup-linux-s390x-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.0.tgz", - "integrity": "sha512-/L3pW48SxrWAlVsKCN0dGLB2bi8Nv8pr5S5ocSM+S0XCn5RCVCXqi8GVtHFsOBBCSeR+u9brV2zno5+mg3S4Aw==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.2.tgz", + "integrity": "sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==", "dev": true, "optional": true }, "@rollup/rollup-linux-x64-gnu": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.0.tgz", - "integrity": "sha512-XMLeKjyH8NsEDCRptf6LO8lJk23o9wvB+dJwcXMaH6ZQbbkHu2dbGIUindbMtRN6ux1xKi16iXWu6q9mu7gDhQ==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.2.tgz", + "integrity": "sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==", "dev": true, "optional": true }, "@rollup/rollup-linux-x64-musl": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.0.tgz", - "integrity": "sha512-m/P7LycHZTvSQeXhFmgmdqEiTqSV80zn6xHaQ1JSqwCtD1YGtwEK515Qmy9DcB2HK4dOUVypQxvhVSy06cJPEg==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.2.tgz", + "integrity": "sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==", "dev": true, "optional": true }, "@rollup/rollup-win32-arm64-msvc": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.0.tgz", - "integrity": "sha512-4yodtcOrFHpbomJGVEqZ8fzD4kfBeCbpsUy5Pqk4RluXOdsWdjLnjhiKy2w3qzcASWd04fp52Xz7JKarVJ5BTg==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.2.tgz", + "integrity": "sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==", "dev": true, "optional": true }, "@rollup/rollup-win32-ia32-msvc": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.0.tgz", - "integrity": "sha512-tmazCrAsKzdkXssEc65zIE1oC6xPHwfy9d5Ta25SRCDOZS+I6RypVVShWALNuU9bxIfGA0aqrmzlzoM5wO5SPQ==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.2.tgz", + "integrity": "sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==", "dev": true, "optional": true }, "@rollup/rollup-win32-x64-msvc": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.0.tgz", - "integrity": "sha512-h1J+Yzjo/X+0EAvR2kIXJDuTuyT7drc+t2ALY0nIcGPbTatNOf0VWdhEA2Z4AAjv6X1NJV7SYo5oCTYRJhSlVA==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.2.tgz", + "integrity": "sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==", "dev": true, "optional": true }, @@ -42777,6 +48487,14 @@ "dev": true, "requires": { "type-detect": "4.0.8" + }, + "dependencies": { + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + } } }, "@sinonjs/fake-timers": { @@ -42789,22 +48507,13 @@ } }, "@sinonjs/samsam": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.2.tgz", - "integrity": "sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.3.tgz", + "integrity": "sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ==", "dev": true, "requires": { "@sinonjs/commons": "^3.0.1", - "lodash.get": "^4.4.2", "type-detect": "^4.1.0" - }, - "dependencies": { - "type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "dev": true - } } }, "@sinonjs/text-encoding": { @@ -42814,24 +48523,13 @@ "dev": true }, "@smithy/abort-controller": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.2.0.tgz", - "integrity": "sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.5.tgz", + "integrity": "sha512-jcrqdTQurIrBbUm4W2YdLVMQDoL0sA9DTxYd2s+R/y+2U9NLOP7Xf/YqfSg1FZhlZIYEnvk2mwbyvIfdLEPo8g==", "dev": true, "requires": { - "@smithy/types": "^2.12.0", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" - }, - "dependencies": { - "@smithy/types": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", - "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", - "dev": true, - "requires": { - "tslib": "^2.6.2" - } - } } }, "@smithy/chunked-blob-reader": { @@ -42854,157 +48552,160 @@ } }, "@smithy/config-resolver": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.1.2.tgz", - "integrity": "sha512-7r6mZGwb5LmLJ+zPtkLoznf2EtwEuSWdtid10pjGl/7HefCE4mueOkrfki8JCUm99W6UfP47/r3tbxx9CfBN5A==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.1.5.tgz", + "integrity": "sha512-viuHMxBAqydkB0AfWwHIdwf/PRH2z5KHGUzqyRtS/Wv+n3IHI993Sk76VCA7dD/+GzgGOmlJDITfPcJC1nIVIw==", "dev": true, "requires": { - "@smithy/node-config-provider": "^4.1.1", - "@smithy/types": "^4.2.0", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/types": "^4.3.2", "@smithy/util-config-provider": "^4.0.0", - "@smithy/util-middleware": "^4.0.2", + "@smithy/util-middleware": "^4.0.5", "tslib": "^2.6.2" } }, "@smithy/core": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.3.3.tgz", - "integrity": "sha512-CiJNc0b/WdnttAfQ6uMkxPQ3Z8hG/ba8wF89x9KtBBLDdZk6CX52K4F8hbe94uNbc8LDUuZFtbqfdhM3T21naw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.8.0.tgz", + "integrity": "sha512-EYqsIYJmkR1VhVE9pccnk353xhs+lB6btdutJEtsp7R055haMJp2yE16eSxw8fv+G0WUY6vqxyYOP8kOqawxYQ==", "dev": true, "requires": { - "@smithy/middleware-serde": "^4.0.5", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@smithy/middleware-serde": "^4.0.9", + "@smithy/protocol-http": "^5.1.3", + "@smithy/types": "^4.3.2", + "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-stream": "^4.2.0", + "@smithy/util-middleware": "^4.0.5", + "@smithy/util-stream": "^4.2.4", "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" + "@types/uuid": "^9.0.1", + "tslib": "^2.6.2", + "uuid": "^9.0.1" } }, "@smithy/credential-provider-imds": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.4.tgz", - "integrity": "sha512-jN6M6zaGVyB8FmNGG+xOPQB4N89M1x97MMdMnm1ESjljLS3Qju/IegQizKujaNcy2vXAvrz0en8bobe6E55FEA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.7.tgz", + "integrity": "sha512-dDzrMXA8d8riFNiPvytxn0mNwR4B3h8lgrQ5UjAGu6T9z/kRg/Xncf4tEQHE/+t25sY8IH3CowcmWi+1U5B1Gw==", "dev": true, "requires": { - "@smithy/node-config-provider": "^4.1.1", - "@smithy/property-provider": "^4.0.2", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/property-provider": "^4.0.5", + "@smithy/types": "^4.3.2", + "@smithy/url-parser": "^4.0.5", "tslib": "^2.6.2" } }, "@smithy/eventstream-codec": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.0.2.tgz", - "integrity": "sha512-p+f2kLSK7ZrXVfskU/f5dzksKTewZk8pJLPvER3aFHPt76C2MxD9vNatSfLzzQSQB4FNO96RK4PSXfhD1TTeMQ==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.0.4.tgz", + "integrity": "sha512-7XoWfZqWb/QoR/rAU4VSi0mWnO2vu9/ltS6JZ5ZSZv0eovLVfDfu0/AX4ub33RsJTOth3TiFWSHS5YdztvFnig==", "dev": true, "requires": { "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.1", "@smithy/util-hex-encoding": "^4.0.0", "tslib": "^2.6.2" } }, "@smithy/eventstream-serde-browser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.0.2.tgz", - "integrity": "sha512-CepZCDs2xgVUtH7ZZ7oDdZFH8e6Y2zOv8iiX6RhndH69nlojCALSKK+OXwZUgOtUZEUaZ5e1hULVCHYbCn7pug==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.0.4.tgz", + "integrity": "sha512-3fb/9SYaYqbpy/z/H3yIi0bYKyAa89y6xPmIqwr2vQiUT2St+avRt8UKwsWt9fEdEasc5d/V+QjrviRaX1JRFA==", "dev": true, "requires": { - "@smithy/eventstream-serde-universal": "^4.0.2", - "@smithy/types": "^4.2.0", + "@smithy/eventstream-serde-universal": "^4.0.4", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "@smithy/eventstream-serde-config-resolver": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.1.0.tgz", - "integrity": "sha512-1PI+WPZ5TWXrfj3CIoKyUycYynYJgZjuQo8U+sphneOtjsgrttYybdqESFReQrdWJ+LKt6NEdbYzmmfDBmjX2A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.1.2.tgz", + "integrity": "sha512-JGtambizrWP50xHgbzZI04IWU7LdI0nh/wGbqH3sJesYToMi2j/DcoElqyOcqEIG/D4tNyxgRuaqBXWE3zOFhQ==", "dev": true, "requires": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "@smithy/eventstream-serde-node": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.0.2.tgz", - "integrity": "sha512-C5bJ/C6x9ENPMx2cFOirspnF9ZsBVnBMtP6BdPl/qYSuUawdGQ34Lq0dMcf42QTjUZgWGbUIZnz6+zLxJlb9aw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.0.4.tgz", + "integrity": "sha512-RD6UwNZ5zISpOWPuhVgRz60GkSIp0dy1fuZmj4RYmqLVRtejFqQ16WmfYDdoSoAjlp1LX+FnZo+/hkdmyyGZ1w==", "dev": true, "requires": { - "@smithy/eventstream-serde-universal": "^4.0.2", - "@smithy/types": "^4.2.0", + "@smithy/eventstream-serde-universal": "^4.0.4", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "@smithy/eventstream-serde-universal": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.0.2.tgz", - "integrity": "sha512-St8h9JqzvnbB52FtckiHPN4U/cnXcarMniXRXTKn0r4b4XesZOGiAyUdj1aXbqqn1icSqBlzzUsCl6nPB018ng==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.0.4.tgz", + "integrity": "sha512-UeJpOmLGhq1SLox79QWw/0n2PFX+oPRE1ZyRMxPIaFEfCqWaqpB7BU9C8kpPOGEhLF7AwEqfFbtwNxGy4ReENA==", "dev": true, "requires": { - "@smithy/eventstream-codec": "^4.0.2", - "@smithy/types": "^4.2.0", + "@smithy/eventstream-codec": "^4.0.4", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "@smithy/fetch-http-handler": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.0.2.tgz", - "integrity": "sha512-+9Dz8sakS9pe7f2cBocpJXdeVjMopUDLgZs1yWeu7h++WqSbjUYv/JAJwKwXw1HV6gq1jyWjxuyn24E2GhoEcQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.1.1.tgz", + "integrity": "sha512-61WjM0PWmZJR+SnmzaKI7t7G0UkkNFboDpzIdzSoy7TByUzlxo18Qlh9s71qug4AY4hlH/CwXdubMtkcNEb/sQ==", "dev": true, "requires": { - "@smithy/protocol-http": "^5.1.0", - "@smithy/querystring-builder": "^4.0.2", - "@smithy/types": "^4.2.0", + "@smithy/protocol-http": "^5.1.3", + "@smithy/querystring-builder": "^4.0.5", + "@smithy/types": "^4.3.2", "@smithy/util-base64": "^4.0.0", "tslib": "^2.6.2" } }, "@smithy/hash-blob-browser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.0.2.tgz", - "integrity": "sha512-3g188Z3DyhtzfBRxpZjU8R9PpOQuYsbNnyStc/ZVS+9nVX1f6XeNOa9IrAh35HwwIZg+XWk8bFVtNINVscBP+g==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.0.4.tgz", + "integrity": "sha512-WszRiACJiQV3QG6XMV44i5YWlkrlsM5Yxgz4jvsksuu7LDXA6wAtypfPajtNTadzpJy3KyJPoWehYpmZGKUFIQ==", "dev": true, "requires": { "@smithy/chunked-blob-reader": "^5.0.0", "@smithy/chunked-blob-reader-native": "^4.0.0", - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "@smithy/hash-node": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.0.2.tgz", - "integrity": "sha512-VnTpYPnRUE7yVhWozFdlxcYknv9UN7CeOqSrMH+V877v4oqtVYuoqhIhtSjmGPvYrYnAkaM61sLMKHvxL138yg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.0.5.tgz", + "integrity": "sha512-cv1HHkKhpyRb6ahD8Vcfb2Hgz67vNIXEp2vnhzfxLFGRukLCNEA5QdsorbUEzXma1Rco0u3rx5VTqbM06GcZqQ==", "dev": true, "requires": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.2", "@smithy/util-buffer-from": "^4.0.0", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" } }, "@smithy/hash-stream-node": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.0.2.tgz", - "integrity": "sha512-POWDuTznzbIwlEXEvvXoPMS10y0WKXK790soe57tFRfvf4zBHyzE529HpZMqmDdwG9MfFflnyzndUQ8j78ZdSg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.0.4.tgz", + "integrity": "sha512-wHo0d8GXyVmpmMh/qOR0R7Y46/G1y6OR8U+bSTB4ppEzRxd1xVAQ9xOE9hOc0bSjhz0ujCPAbfNLkLrpa6cevg==", "dev": true, "requires": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.1", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" } }, "@smithy/invalid-dependency": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.0.2.tgz", - "integrity": "sha512-GatB4+2DTpgWPday+mnUkoumP54u/MDM/5u44KF9hIu8jF0uafZtQLcdfIKkIcUNuF/fBojpLEHZS/56JqPeXQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.0.5.tgz", + "integrity": "sha512-IVnb78Qtf7EJpoEVo7qJ8BEXQwgC4n3igeJNNKEj/MLYtapnx8A67Zt/J3RXAj2xSO1910zk0LdFiygSemuLow==", "dev": true, "requires": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, @@ -43018,255 +48719,215 @@ } }, "@smithy/md5-js": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.0.2.tgz", - "integrity": "sha512-Hc0R8EiuVunUewCse2syVgA2AfSRco3LyAv07B/zCOMa+jpXI9ll+Q21Nc6FAlYPcpNcAXqBzMhNs1CD/pP2bA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.0.4.tgz", + "integrity": "sha512-uGLBVqcOwrLvGh/v/jw423yWHq/ofUGK1W31M2TNspLQbUV1Va0F5kTxtirkoHawODAZcjXTSGi7JwbnPcDPJg==", "dev": true, "requires": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.1", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" } }, "@smithy/middleware-content-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.0.2.tgz", - "integrity": "sha512-hAfEXm1zU+ELvucxqQ7I8SszwQ4znWMbNv6PLMndN83JJN41EPuS93AIyh2N+gJ6x8QFhzSO6b7q2e6oClDI8A==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.0.5.tgz", + "integrity": "sha512-l1jlNZoYzoCC7p0zCtBDE5OBXZ95yMKlRlftooE5jPWQn4YBPLgsp+oeHp7iMHaTGoUdFqmHOPa8c9G3gBsRpQ==", "dev": true, "requires": { - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@smithy/protocol-http": "^5.1.3", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "@smithy/middleware-endpoint": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.6.tgz", - "integrity": "sha512-Zdieg07c3ua3ap5ungdcyNnY1OsxmsXXtKDTk28+/YbwIPju0Z1ZX9X5AnkjmDE3+AbqgvhtC/ZuCMSr6VSfPw==", + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.18.tgz", + "integrity": "sha512-ZhvqcVRPZxnZlokcPaTwb+r+h4yOIOCJmx0v2d1bpVlmP465g3qpVSf7wxcq5zZdu4jb0H4yIMxuPwDJSQc3MQ==", "dev": true, "requires": { - "@smithy/core": "^3.3.3", - "@smithy/middleware-serde": "^4.0.5", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", - "@smithy/url-parser": "^4.0.2", - "@smithy/util-middleware": "^4.0.2", + "@smithy/core": "^3.8.0", + "@smithy/middleware-serde": "^4.0.9", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/shared-ini-file-loader": "^4.0.5", + "@smithy/types": "^4.3.2", + "@smithy/url-parser": "^4.0.5", + "@smithy/util-middleware": "^4.0.5", "tslib": "^2.6.2" } }, "@smithy/middleware-retry": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.1.7.tgz", - "integrity": "sha512-lFIFUJ0E/4I0UaIDY5usNUzNKAghhxO0lDH4TZktXMmE+e4ActD9F154Si0Unc01aCPzcwd+NcOwQw6AfXXRRQ==", - "dev": true, - "requires": { - "@smithy/node-config-provider": "^4.1.1", - "@smithy/protocol-http": "^5.1.0", - "@smithy/service-error-classification": "^4.0.3", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", - "@smithy/util-middleware": "^4.0.2", - "@smithy/util-retry": "^4.0.3", + "version": "4.1.19", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.1.19.tgz", + "integrity": "sha512-X58zx/NVECjeuUB6A8HBu4bhx72EoUz+T5jTMIyeNKx2lf+Gs9TmWPNNkH+5QF0COjpInP/xSpJGJ7xEnAklQQ==", + "dev": true, + "requires": { + "@smithy/node-config-provider": "^4.1.4", + "@smithy/protocol-http": "^5.1.3", + "@smithy/service-error-classification": "^4.0.7", + "@smithy/smithy-client": "^4.4.10", + "@smithy/types": "^4.3.2", + "@smithy/util-middleware": "^4.0.5", + "@smithy/util-retry": "^4.0.7", + "@types/uuid": "^9.0.1", "tslib": "^2.6.2", "uuid": "^9.0.1" } }, "@smithy/middleware-serde": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.0.5.tgz", - "integrity": "sha512-yREC3q/HXqQigq29xX3hiy6tFi+kjPKXoYUQmwQdgPORLbQ0n6V2Z/Iw9Nnlu66da9fM/WhDtGvYvqwecrCljQ==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.0.9.tgz", + "integrity": "sha512-uAFFR4dpeoJPGz8x9mhxp+RPjo5wW0QEEIPPPbLXiRRWeCATf/Km3gKIVR5vaP8bN1kgsPhcEeh+IZvUlBv6Xg==", "dev": true, "requires": { - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@smithy/protocol-http": "^5.1.3", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "@smithy/middleware-stack": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.0.2.tgz", - "integrity": "sha512-eSPVcuJJGVYrFYu2hEq8g8WWdJav3sdrI4o2c6z/rjnYDd3xH9j9E7deZQCzFn4QvGPouLngH3dQ+QVTxv5bOQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.0.5.tgz", + "integrity": "sha512-/yoHDXZPh3ocRVyeWQFvC44u8seu3eYzZRveCMfgMOBcNKnAmOvjbL9+Cp5XKSIi9iYA9PECUuW2teDAk8T+OQ==", "dev": true, "requires": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "@smithy/node-config-provider": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.1.1.tgz", - "integrity": "sha512-1slS5jf5icHETwl5hxEVBj+mh6B+LbVW4yRINsGtUKH+nxM5Pw2H59+qf+JqYFCHp9jssG4vX81f5WKnjMN3Vw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.1.4.tgz", + "integrity": "sha512-+UDQV/k42jLEPPHSn39l0Bmc4sB1xtdI9Gd47fzo/0PbXzJ7ylgaOByVjF5EeQIumkepnrJyfx86dPa9p47Y+w==", "dev": true, "requires": { - "@smithy/property-provider": "^4.0.2", - "@smithy/shared-ini-file-loader": "^4.0.2", - "@smithy/types": "^4.2.0", + "@smithy/property-provider": "^4.0.5", + "@smithy/shared-ini-file-loader": "^4.0.5", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "@smithy/node-http-handler": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.4.0.tgz", - "integrity": "sha512-Mf2f7MMy31W8LisJ9O+7J5cKiNwBwBBLU6biQ7/sFSFdhuOxPN7hOPoZ8vlaFjvrpfOUJw9YOpjGyNTKuvomOQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.1.1.tgz", + "integrity": "sha512-RHnlHqFpoVdjSPPiYy/t40Zovf3BBHc2oemgD7VsVTFFZrU5erFFe0n52OANZZ/5sbshgD93sOh5r6I35Xmpaw==", "dev": true, "requires": { - "@smithy/abort-controller": "^2.1.2", - "@smithy/protocol-http": "^3.2.0", - "@smithy/querystring-builder": "^2.1.2", - "@smithy/types": "^2.10.0", - "tslib": "^2.5.0" - }, - "dependencies": { - "@smithy/protocol-http": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.3.0.tgz", - "integrity": "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==", - "dev": true, - "requires": { - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" - } - }, - "@smithy/querystring-builder": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.2.0.tgz", - "integrity": "sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==", - "dev": true, - "requires": { - "@smithy/types": "^2.12.0", - "@smithy/util-uri-escape": "^2.2.0", - "tslib": "^2.6.2" - } - }, - "@smithy/types": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", - "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", - "dev": true, - "requires": { - "tslib": "^2.6.2" - } - }, - "@smithy/util-uri-escape": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.2.0.tgz", - "integrity": "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==", - "dev": true, - "requires": { - "tslib": "^2.6.2" - } - } + "@smithy/abort-controller": "^4.0.5", + "@smithy/protocol-http": "^5.1.3", + "@smithy/querystring-builder": "^4.0.5", + "@smithy/types": "^4.3.2", + "tslib": "^2.6.2" } }, "@smithy/property-provider": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.0.2.tgz", - "integrity": "sha512-wNRoQC1uISOuNc2s4hkOYwYllmiyrvVXWMtq+TysNRVQaHm4yoafYQyjN/goYZS+QbYlPIbb/QRjaUZMuzwQ7A==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.0.5.tgz", + "integrity": "sha512-R/bswf59T/n9ZgfgUICAZoWYKBHcsVDurAGX88zsiUtOTA/xUAPyiT+qkNCPwFn43pZqN84M4MiUsbSGQmgFIQ==", "dev": true, "requires": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "@smithy/protocol-http": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.1.1.tgz", - "integrity": "sha512-Vsay2mzq05DwNi9jK01yCFtfvu9HimmgC7a4HTs7lhX12Sx8aWsH0mfz6q/02yspSp+lOB+Q2HJwi4IV2GKz7A==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.1.3.tgz", + "integrity": "sha512-fCJd2ZR7D22XhDY0l+92pUag/7je2BztPRQ01gU5bMChcyI0rlly7QFibnYHzcxDvccMjlpM/Q1ev8ceRIb48w==", "dev": true, "requires": { - "@smithy/types": "^4.3.0", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "@smithy/querystring-builder": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.0.3.tgz", - "integrity": "sha512-UUzIWMVfPmDZcOutk2/r1vURZqavvQW0OHvgsyNV0cKupChvqg+/NKPRMaMEe+i8tP96IthMFeZOZWpV+E4RAw==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.0.5.tgz", + "integrity": "sha512-NJeSCU57piZ56c+/wY+AbAw6rxCCAOZLCIniRE7wqvndqxcKKDOXzwWjrY7wGKEISfhL9gBbAaWWgHsUGedk+A==", "dev": true, "requires": { - "@smithy/types": "^4.3.0", + "@smithy/types": "^4.3.2", "@smithy/util-uri-escape": "^4.0.0", "tslib": "^2.6.2" } }, "@smithy/querystring-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.0.2.tgz", - "integrity": "sha512-v6w8wnmZcVXjfVLjxw8qF7OwESD9wnpjp0Dqry/Pod0/5vcEA3qxCr+BhbOHlxS8O+29eLpT3aagxXGwIoEk7Q==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.0.5.tgz", + "integrity": "sha512-6SV7md2CzNG/WUeTjVe6Dj8noH32r4MnUeFKZrnVYsQxpGSIcphAanQMayi8jJLZAWm6pdM9ZXvKCpWOsIGg0w==", "dev": true, "requires": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "@smithy/service-error-classification": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.0.3.tgz", - "integrity": "sha512-FTbcajmltovWMjj3tksDQdD23b2w6gH+A0DYA1Yz3iSpjDj8fmkwy62UnXcWMy4d5YoMoSyLFHMfkEVEzbiN8Q==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.0.7.tgz", + "integrity": "sha512-XvRHOipqpwNhEjDf2L5gJowZEm5nsxC16pAZOeEcsygdjv9A2jdOh3YoDQvOXBGTsaJk6mNWtzWalOB9976Wlg==", "dev": true, "requires": { - "@smithy/types": "^4.2.0" + "@smithy/types": "^4.3.2" } }, "@smithy/shared-ini-file-loader": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.2.tgz", - "integrity": "sha512-J9/gTWBGVuFZ01oVA6vdb4DAjf1XbDhK6sLsu3OS9qmLrS6KB5ygpeHiM3miIbj1qgSJ96GYszXFWv6ErJ8QEw==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.5.tgz", + "integrity": "sha512-YVVwehRDuehgoXdEL4r1tAAzdaDgaC9EQvhK0lEbfnbrd0bd5+CTQumbdPryX3J2shT7ZqQE+jPW4lmNBAB8JQ==", "dev": true, "requires": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "@smithy/signature-v4": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.1.0.tgz", - "integrity": "sha512-4t5WX60sL3zGJF/CtZsUQTs3UrZEDO2P7pEaElrekbLqkWPYkgqNW1oeiNYC6xXifBnT9dVBOnNQRvOE9riU9w==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.1.3.tgz", + "integrity": "sha512-mARDSXSEgllNzMw6N+mC+r1AQlEBO3meEAkR/UlfAgnMzJUB3goRBWgip1EAMG99wh36MDqzo86SfIX5Y+VEaw==", "dev": true, "requires": { "@smithy/is-array-buffer": "^4.0.0", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", + "@smithy/protocol-http": "^5.1.3", + "@smithy/types": "^4.3.2", "@smithy/util-hex-encoding": "^4.0.0", - "@smithy/util-middleware": "^4.0.2", + "@smithy/util-middleware": "^4.0.5", "@smithy/util-uri-escape": "^4.0.0", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" } }, "@smithy/smithy-client": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.2.6.tgz", - "integrity": "sha512-WEqP0wQ1N/lVS4pwNK1Vk+0i6QIr66cq/xbu1dVy1tM0A0qYwAYyz0JhbquzM5pMa8s89lyDBtoGKxo7iG74GA==", + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.4.10.tgz", + "integrity": "sha512-iW6HjXqN0oPtRS0NK/zzZ4zZeGESIFcxj2FkWed3mcK8jdSdHzvnCKXSjvewESKAgGKAbJRA+OsaqKhkdYRbQQ==", "dev": true, "requires": { - "@smithy/core": "^3.3.3", - "@smithy/middleware-endpoint": "^4.1.6", - "@smithy/middleware-stack": "^4.0.2", - "@smithy/protocol-http": "^5.1.0", - "@smithy/types": "^4.2.0", - "@smithy/util-stream": "^4.2.0", + "@smithy/core": "^3.8.0", + "@smithy/middleware-endpoint": "^4.1.18", + "@smithy/middleware-stack": "^4.0.5", + "@smithy/protocol-http": "^5.1.3", + "@smithy/types": "^4.3.2", + "@smithy/util-stream": "^4.2.4", "tslib": "^2.6.2" } }, "@smithy/types": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.0.tgz", - "integrity": "sha512-+1iaIQHthDh9yaLhRzaoQxRk+l9xlk+JjMFxGRhNLz+m9vKOkjNeU8QuB4w3xvzHyVR/BVlp/4AXDHjoRIkfgQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.2.tgz", + "integrity": "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw==", "dev": true, "requires": { "tslib": "^2.6.2" } }, "@smithy/url-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.0.2.tgz", - "integrity": "sha512-Bm8n3j2ScqnT+kJaClSVCMeiSenK6jVAzZCNewsYWuZtnBehEz4r2qP0riZySZVfzB+03XZHJeqfmJDkeeSLiQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.0.5.tgz", + "integrity": "sha512-j+733Um7f1/DXjYhCbvNXABV53NyCRRA54C7bNEIxNPs0YjfRxeMKjjgm2jvTYrciZyCjsicHwQ6Q0ylo+NAUw==", "dev": true, "requires": { - "@smithy/querystring-parser": "^4.0.2", - "@smithy/types": "^4.2.0", + "@smithy/querystring-parser": "^4.0.5", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, @@ -43319,41 +48980,41 @@ } }, "@smithy/util-defaults-mode-browser": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.14.tgz", - "integrity": "sha512-l7QnMX8VcDOH6n/fBRu4zqguSlOBZxFzWqp58dXFSARFBjNlmEDk5G/z4T7BMGr+rI0Pg8MkhmMUfEtHFgpy2g==", + "version": "4.0.26", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.26.tgz", + "integrity": "sha512-xgl75aHIS/3rrGp7iTxQAOELYeyiwBu+eEgAk4xfKwJJ0L8VUjhO2shsDpeil54BOFsqmk5xfdesiewbUY5tKQ==", "dev": true, "requires": { - "@smithy/property-provider": "^4.0.2", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", + "@smithy/property-provider": "^4.0.5", + "@smithy/smithy-client": "^4.4.10", + "@smithy/types": "^4.3.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "@smithy/util-defaults-mode-node": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.14.tgz", - "integrity": "sha512-Ujs1gsWDo3m/T63VWBTBmHLTD2UlU6J6FEokLCEp7OZQv45jcjLHoxTwgWsi8ULpsYozvH4MTWkRP+bhwr0vDg==", + "version": "4.0.26", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.26.tgz", + "integrity": "sha512-z81yyIkGiLLYVDetKTUeCZQ8x20EEzvQjrqJtb/mXnevLq2+w3XCEWTJ2pMp401b6BkEkHVfXb/cROBpVauLMQ==", "dev": true, "requires": { - "@smithy/config-resolver": "^4.1.2", - "@smithy/credential-provider-imds": "^4.0.4", - "@smithy/node-config-provider": "^4.1.1", - "@smithy/property-provider": "^4.0.2", - "@smithy/smithy-client": "^4.2.6", - "@smithy/types": "^4.2.0", + "@smithy/config-resolver": "^4.1.5", + "@smithy/credential-provider-imds": "^4.0.7", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/property-provider": "^4.0.5", + "@smithy/smithy-client": "^4.4.10", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "@smithy/util-endpoints": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.0.4.tgz", - "integrity": "sha512-VfFATC1bmZLV2858B/O1NpMcL32wYo8DPPhHxYxDCodDl3f3mSZ5oJheW1IF91A0EeAADz2WsakM/hGGPGNKLg==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.0.7.tgz", + "integrity": "sha512-klGBP+RpBp6V5JbrY2C/VKnHXn3d5V2YrifZbmMY8os7M6m8wdYFoO6w/fe5VkP+YVwrEktW3IWYaSQVNZJ8oQ==", "dev": true, "requires": { - "@smithy/node-config-provider": "^4.1.1", - "@smithy/types": "^4.2.0", + "@smithy/node-config-provider": "^4.1.4", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, @@ -43367,65 +49028,40 @@ } }, "@smithy/util-middleware": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.0.2.tgz", - "integrity": "sha512-6GDamTGLuBQVAEuQ4yDQ+ti/YINf/MEmIegrEeg7DdB/sld8BX1lqt9RRuIcABOhAGTA50bRbPzErez7SlDtDQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.0.5.tgz", + "integrity": "sha512-N40PfqsZHRSsByGB81HhSo+uvMxEHT+9e255S53pfBw/wI6WKDI7Jw9oyu5tJTLwZzV5DsMha3ji8jk9dsHmQQ==", "dev": true, "requires": { - "@smithy/types": "^4.2.0", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "@smithy/util-retry": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.0.3.tgz", - "integrity": "sha512-DPuYjZQDXmKr/sNvy9Spu8R/ESa2e22wXZzSAY6NkjOLj6spbIje/Aq8rT97iUMdDj0qHMRIe+bTxvlU74d9Ng==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.0.7.tgz", + "integrity": "sha512-TTO6rt0ppK70alZpkjwy+3nQlTiqNfoXja+qwuAchIEAIoSZW8Qyd76dvBv3I5bCpE38APafG23Y/u270NspiQ==", "dev": true, "requires": { - "@smithy/service-error-classification": "^4.0.3", - "@smithy/types": "^4.2.0", + "@smithy/service-error-classification": "^4.0.7", + "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "@smithy/util-stream": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.2.0.tgz", - "integrity": "sha512-Vj1TtwWnuWqdgQI6YTUF5hQ/0jmFiOYsc51CSMgj7QfyO+RF4EnT2HNjoviNlOOmgzgvf3f5yno+EiC4vrnaWQ==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.2.4.tgz", + "integrity": "sha512-vSKnvNZX2BXzl0U2RgCLOwWaAP9x/ddd/XobPK02pCbzRm5s55M53uwb1rl/Ts7RXZvdJZerPkA+en2FDghLuQ==", "dev": true, "requires": { - "@smithy/fetch-http-handler": "^5.0.2", - "@smithy/node-http-handler": "^4.0.4", - "@smithy/types": "^4.2.0", + "@smithy/fetch-http-handler": "^5.1.1", + "@smithy/node-http-handler": "^4.1.1", + "@smithy/types": "^4.3.2", "@smithy/util-base64": "^4.0.0", "@smithy/util-buffer-from": "^4.0.0", "@smithy/util-hex-encoding": "^4.0.0", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" - }, - "dependencies": { - "@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", - "dev": true, - "requires": { - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - } - }, - "@smithy/node-http-handler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.5.tgz", - "integrity": "sha512-T7QglZC1vS7SPT44/1qSIAQEx5bFKb3LfO6zw/o4Xzt1eC5HNoH1TkS4lMYA9cWFbacUhx4hRl/blLun4EOCkg==", - "dev": true, - "requires": { - "@smithy/abort-controller": "^4.0.3", - "@smithy/protocol-http": "^5.1.1", - "@smithy/querystring-builder": "^4.0.3", - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - } - } } }, "@smithy/util-uri-escape": { @@ -43448,26 +49084,14 @@ } }, "@smithy/util-waiter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.0.3.tgz", - "integrity": "sha512-JtaY3FxmD+te+KSI2FJuEcfNC9T/DGGVf551babM7fAaXhjJUt7oSYurH1Devxd2+BOSUACCgt3buinx4UnmEA==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.0.6.tgz", + "integrity": "sha512-slcr1wdRbX7NFphXZOxtxRNA7hXAAtJAXJDE/wdoMAos27SIquVCKiSqfB6/28YzQ8FCsB5NKkhdM5gMADbqxg==", "dev": true, "requires": { - "@smithy/abort-controller": "^4.0.2", - "@smithy/types": "^4.2.0", + "@smithy/abort-controller": "^4.0.4", + "@smithy/types": "^4.3.1", "tslib": "^2.6.2" - }, - "dependencies": { - "@smithy/abort-controller": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.3.tgz", - "integrity": "sha512-AqXFf6DXnuRBXy4SoK/n1mfgHaKaq36bmkphmD1KO0nHq6xK/g9KHSW4HEsPQUBCGdIEfuJifGHwxFXPIFay9Q==", - "dev": true, - "requires": { - "@smithy/types": "^4.3.0", - "tslib": "^2.6.2" - } - } } }, "@socket.io/component-emitter": { @@ -43559,19 +49183,18 @@ } }, "@types/amqplib": { - "version": "0.5.17", - "resolved": "https://registry.npmjs.org/@types/amqplib/-/amqplib-0.5.17.tgz", - "integrity": "sha512-RImqiLP1swDqWBW8UX9iBXVEOw6MYzNmxdXqfemDfdwtUvdTM/W0s2RlSuMVIGkRhaWvpkC9O/N81VzzQwfAbw==", + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/@types/amqplib/-/amqplib-0.10.7.tgz", + "integrity": "sha512-IVj3avf9AQd2nXCx0PGk/OYq7VmHiyNxWFSb5HhU9ATh+i+gHWvVcljFTcTWQ/dyHJCTrzCixde+r/asL2ErDA==", "dev": true, "requires": { - "@types/bluebird": "*", "@types/node": "*" } }, "@types/aws-lambda": { - "version": "8.10.150", - "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.150.tgz", - "integrity": "sha512-AX+AbjH/rH5ezX1fbK8onC/a+HyQHo7QGmvoxAE42n22OsciAxvZoZNEr22tbXs8WfP1nIsBjKDpgPm3HjOZbA==" + "version": "8.10.152", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.152.tgz", + "integrity": "sha512-soT/c2gYBnT5ygwiHPmd9a1bftj462NWVk2tKCc1PYHSIacB2UwbTS2zYG4jzag1mRDuzg/OjtxQjQ2NKRB6Rw==" }, "@types/babel__code-frame": { "version": "7.0.6", @@ -43579,16 +49202,10 @@ "integrity": "sha512-Anitqkl3+KrzcW2k77lRlg/GfLZLWXBuNgbEcIOU6M92yw42vsd3xV/Z/yAHEj8m+KUjL6bWOVOFqX8PFPJ4LA==", "dev": true }, - "@types/bluebird": { - "version": "3.5.42", - "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.42.tgz", - "integrity": "sha512-Jhy+MWRlro6UjVi578V/4ZGNfeCOcNCp0YaFNIUGFKlImowqwb1O/22wDVk3FDGMLqxdpOV3qQHD5fPEH4hK6A==", - "dev": true - }, "@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", "dev": true, "requires": { "@types/connect": "*", @@ -43643,9 +49260,9 @@ } }, "@types/content-disposition": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.8.tgz", - "integrity": "sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==", + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.9.tgz", + "integrity": "sha512-8uYXI3Gw35MhiVYhG3s295oihrxRyytcRHjSjqnqZVDDy/xcGBRny7+Xj1Wgfhv5QzRtN2hB2dVRBUX9XW3UcQ==", "dev": true }, "@types/convert-source-map": { @@ -43655,9 +49272,9 @@ "dev": true }, "@types/cookies": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.9.0.tgz", - "integrity": "sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.9.1.tgz", + "integrity": "sha512-E/DPgzifH4sM1UMadJMWd6mO2jOd4g1Ejwzx8/uRCDpJis1IrlyQEcGAYEomtAqRYmD5ORbNXMeI9U0RiVGZbg==", "dev": true, "requires": { "@types/connect": "*", @@ -43667,9 +49284,9 @@ } }, "@types/cors": { - "version": "2.8.18", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.18.tgz", - "integrity": "sha512-nX3d0sxJW41CqQvfOzVG1NCTXfFDrDWIghCZncpHeWlVFd81zxB/DLhg7avFg6eHLCRX7ckBmoIIcqa++upvJA==", + "version": "2.8.19", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", "dev": true, "requires": { "@types/node": "*" @@ -43682,27 +49299,26 @@ "dev": true }, "@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true }, "@types/express": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz", - "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.3.tgz", + "integrity": "sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==", "dev": true, "requires": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", + "@types/express-serve-static-core": "^5.0.0", "@types/serve-static": "*" } }, "@types/express-serve-static-core": { - "version": "4.19.6", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", - "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.7.tgz", + "integrity": "sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==", "dev": true, "requires": { "@types/node": "*", @@ -43727,9 +49343,9 @@ "dev": true }, "@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", "dev": true }, "@types/ioredis4": { @@ -43766,9 +49382,9 @@ } }, "@types/jquery": { - "version": "3.5.32", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.32.tgz", - "integrity": "sha512-b9Xbf4CkMqS02YH8zACqN1xzdxc3cO735Qe5AbSUFmyOiaWAbcpqh9Wna+Uk0vgACvoQHpWDg2rGdHkYPLmCiQ==", + "version": "3.5.33", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.33.tgz", + "integrity": "sha512-SeyVJXlCZpEki5F0ghuYe+L+PprQta6nRZqhONt9F13dWBtR/ftoaIbdRQ7cis7womE+X2LKhsDdDtkkDhJS6g==", "dev": true, "requires": { "@types/sizzle": "*" @@ -43888,11 +49504,21 @@ } }, "@types/node": { - "version": "18.18.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.14.tgz", - "integrity": "sha512-iSOeNeXYNYNLLOMDSVPvIFojclvMZ/HDY2dU17kUlcsOsSQETbWIslJbYLZgA+ox8g2XQwSHKTkght1a5X26lQ==", + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.1.0.tgz", + "integrity": "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==", "requires": { - "undici-types": "~5.26.4" + "undici-types": "~7.8.0" + } + }, + "@types/node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==", + "dev": true, + "requires": { + "@types/node": "*", + "form-data": "^4.0.0" } }, "@types/normalize-package-data": { @@ -43916,50 +49542,13 @@ "dev": true }, "@types/pg": { - "version": "8.15.4", - "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.15.4.tgz", - "integrity": "sha512-I6UNVBAoYbvuWkkU3oosC8yxqH21f4/Jc4DK71JLG3dT2mdlGe1z+ep/LQGXaKaOgcvUrsQoPRqfgtMcvZiJhg==", + "version": "8.15.5", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.15.5.tgz", + "integrity": "sha512-LF7lF6zWEKxuT3/OR8wAZGzkg4ENGXFNyiV/JeOt9z5B+0ZVwbql9McqX5c/WStFq1GaGso7H1AzP/qSzmlCKQ==", "requires": { "@types/node": "*", "pg-protocol": "*", "pg-types": "^2.2.0" - }, - "dependencies": { - "pg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "requires": { - "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" - } - }, - "postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" - }, - "postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==" - }, - "postgres-date": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" - }, - "postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "requires": { - "xtend": "^4.0.0" - } - } } }, "@types/pg-pool": { @@ -43971,9 +49560,9 @@ } }, "@types/prop-types": { - "version": "15.7.14", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", - "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", "dev": true }, "@types/qs": { @@ -43989,9 +49578,9 @@ "dev": true }, "@types/react": { - "version": "17.0.87", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.87.tgz", - "integrity": "sha512-wpg9AbtJ6agjA+BKYmhG6dRWEU/2DHYwMzCaBzsz137ft6IyuqZ5fI4ic1DWL4DrI03Zy78IyVE6ucrXl0mu4g==", + "version": "17.0.88", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.88.tgz", + "integrity": "sha512-HEOvpzcFWkEcHq4EsTChnpimRc3Lz1/qzYRDFtobFp4obVa6QVjCDMjWmkgxgaTYttNvyjnldY8MUflGp5YiUw==", "dev": true, "requires": { "@types/prop-types": "*", @@ -44016,21 +49605,12 @@ "requires": {} }, "@types/readable-stream": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.18.tgz", - "integrity": "sha512-21jK/1j+Wg+7jVw1xnSwy/2Q1VgVjWuFssbYGTREPUBeZ+rqVFl2udq0IkxzPC0ZhOzVceUbyIACFZKLqKEBlA==", + "version": "4.0.21", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.21.tgz", + "integrity": "sha512-19eKVv9tugr03IgfXlA9UVUVRbW6IuqRO5B92Dl4a6pT7K8uaGrNS0GkxiZD0BOk6PLuXl5FhWl//eX/pzYdTQ==", "dev": true, "requires": { - "@types/node": "*", - "safe-buffer": "~5.1.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } + "@types/node": "*" } }, "@types/resolve": { @@ -44062,9 +49642,9 @@ "dev": true }, "@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "version": "0.17.5", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", + "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", "dev": true, "requires": { "@types/mime": "^1", @@ -44072,9 +49652,9 @@ } }, "@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz", + "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==", "dev": true, "requires": { "@types/http-errors": "*", @@ -44129,9 +49709,9 @@ "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==" }, "@types/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==", + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", "dev": true }, "@types/webidl-conversions": { @@ -44147,12 +49727,11 @@ "dev": true }, "@types/whatwg-url": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", - "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", + "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", "dev": true, "requires": { - "@types/node": "*", "@types/webidl-conversions": "*" } }, @@ -44206,32 +49785,61 @@ "natural-compare-lite": "^1.4.0", "semver": "^7.3.7", "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.8.1.tgz", + "integrity": "sha512-fbodVnjIDU4JpeXWRDsG5IfIjYBxEvs8EBO8W1+YVdtrc2B9ppfof5sZhVEDOtgTfFHnYQJDI8+qdqLYO4ceww==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.8.1", + "@typescript-eslint/types": "5.8.1", + "@typescript-eslint/typescript-estree": "5.8.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" }, "dependencies": { "@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.8.1.tgz", + "integrity": "sha512-DGxJkNyYruFH3NIZc3PwrzwOQAg7vvgsHsHCILOLvUpupgkwDZdNq/cXU3BjF4LNrCsVg0qxEyWasys5AiJ85Q==", "dev": true, "requires": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" + "@typescript-eslint/types": "5.8.1", + "@typescript-eslint/visitor-keys": "5.8.1" } }, "@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.8.1.tgz", + "integrity": "sha512-L/FlWCCgnjKOLefdok90/pqInkomLnAcF9UAzNr+DSqMC3IffzumHTQTrINXhP1gVp9zlHiYYjvozVZDPleLcA==", "dev": true }, + "@typescript-eslint/typescript-estree": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.8.1.tgz", + "integrity": "sha512-26lQ8l8tTbG7ri7xEcCFT9ijU5Fk+sx/KRRyyzCv7MQ+rZZlqiDPtMKWLC8P7o+dtCnby4c+OlxuX1tp8WfafQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.8.1", + "@typescript-eslint/visitor-keys": "5.8.1", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, "@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.8.1.tgz", + "integrity": "sha512-SWgiWIwocK6NralrJarPZlWdr0hZnj5GXHIgfdm8hNkyKvpeQuFyLP6YjSIe9kf3YBIfU6OHSZLYkQ+smZwtNg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "5.8.1", + "eslint-visitor-keys": "^3.0.0" } } } @@ -44246,49 +49854,16 @@ "@typescript-eslint/types": "5.62.0", "@typescript-eslint/typescript-estree": "5.62.0", "debug": "^4.3.4" - }, - "dependencies": { - "@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - } - }, - "@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - } - } + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" } }, "@typescript-eslint/type-utils": { @@ -44301,39 +49876,27 @@ "@typescript-eslint/utils": "5.62.0", "debug": "^4.3.4", "tsutils": "^3.21.0" - }, - "dependencies": { - "@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - } - } + } + }, + "@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" } }, "@typescript-eslint/utils": { @@ -44350,55 +49913,22 @@ "@typescript-eslint/typescript-estree": "5.62.0", "eslint-scope": "^5.1.1", "semver": "^7.3.7" - }, - "dependencies": { - "@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - } - }, - "@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - } - } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" } }, "@typespec/ts-http-runtime": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.2.2.tgz", - "integrity": "sha512-Gz/Sm64+Sq/vklJu1tt9t+4R2lvnud8NbTD/ZfpZtMiUX7YeVpCA8j6NSW8ptwcoLL+NmYANwqP8DV0q/bwl2w==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.0.tgz", + "integrity": "sha512-sOx1PKSuFwnIl7z4RN0Ls7N9AQawmR9r66eI5rFCzLDIs8HTIYrIpH9QjYWoX0lkgGrkLxXhi4QnK7MizPRrIg==", "dev": true, "requires": { "http-proxy-agent": "^7.0.0", @@ -44406,6 +49936,12 @@ "tslib": "^2.6.2" }, "dependencies": { + "agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true + }, "http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", @@ -44415,6 +49951,16 @@ "agent-base": "^7.1.0", "debug": "^4.3.4" } + }, + "https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "requires": { + "agent-base": "^7.1.2", + "debug": "4" + } } } }, @@ -44935,9 +50481,9 @@ } }, "acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==" + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==" }, "acorn-import-attributes": { "version": "1.9.5", @@ -44980,9 +50526,13 @@ "dev": true }, "agent-base": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==" + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } }, "agentkeepalive": { "version": "4.6.0", @@ -45108,6 +50658,14 @@ "dev": true, "requires": { "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } } }, "ansi-regex": { @@ -45272,17 +50830,19 @@ "dev": true }, "array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", "dev": true, "requires": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "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" + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" } }, "array-union": { @@ -45462,13 +51022,13 @@ "dev": true }, "axios": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", - "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz", + "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==", "dev": true, "requires": { "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", + "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, @@ -45519,13 +51079,13 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz", - "integrity": "sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==", + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", "dev": true, "requires": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.4", + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", "semver": "^6.3.1" }, "dependencies": { @@ -45548,12 +51108,12 @@ } }, "babel-plugin-polyfill-regenerator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz", - "integrity": "sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.6.4" + "@babel/helper-define-polyfill-provider": "^0.6.5" } }, "balanced-match": { @@ -45563,16 +51123,16 @@ "dev": true }, "bare-events": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", - "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.6.0.tgz", + "integrity": "sha512-EKZ5BTXYExaNqi3I3f9RtEsaI/xBSGjE0XZCZilPzFAV/goswFHuPd9jEZlPIZ/iNZJwDSao9qRiScySz7MbQg==", "dev": true, "optional": true }, "bare-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.5.tgz", - "integrity": "sha512-1zccWBMypln0jEE05LzZt+V/8y8AQsQQqxtklqaIyg5nu6OAYFhZxPXinJTSG+kU5qyNmeLgcn9AW7eHiCHVLA==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.6.tgz", + "integrity": "sha512-25RsLF33BqooOEFNdMcEhMpJy8EoR88zSMrnOQOaM3USnOK2VmaJ1uaQEwPA6AQjrv1lXChScosN6CzbwbO9OQ==", "dev": true, "optional": true, "requires": { @@ -45642,9 +51202,9 @@ "dev": true }, "better-sqlite3": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.0.0.tgz", - "integrity": "sha512-1NnNhmT3EZTsKtofJlMox1jkMxdedILury74PwUbQBjWgo4tL4kf7uTAjU55mgQwjdzqakSTjkf+E1imrFwjnA==", + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.10.0.tgz", + "integrity": "sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ==", "dev": true, "requires": { "bindings": "^1.5.0", @@ -45658,9 +51218,9 @@ "dev": true }, "bignumber.js": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", - "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==" + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", + "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==" }, "bin-links": { "version": "4.0.4", @@ -45826,9 +51386,9 @@ "dev": true }, "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "requires": { "balanced-match": "^1.0.0" @@ -45850,25 +51410,22 @@ "dev": true }, "browserslist": { - "version": "4.24.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.5.tgz", - "integrity": "sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==", + "version": "4.25.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", + "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001716", - "electron-to-chromium": "^1.5.149", + "caniuse-lite": "^1.0.30001726", + "electron-to-chromium": "^1.5.173", "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.3" } }, "bson": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", - "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", - "dev": true, - "requires": { - "buffer": "^5.6.0" - } + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.4.tgz", + "integrity": "sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==", + "dev": true }, "buffer": { "version": "5.7.1", @@ -45979,15 +51536,6 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true - }, - "minipass-collect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", - "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", - "dev": true, - "requires": { - "minipass": "^7.0.3" - } } } }, @@ -46097,9 +51645,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001718", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz", - "integrity": "sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==", + "version": "1.0.30001731", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001731.tgz", + "integrity": "sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg==", "dev": true }, "capital-case": { @@ -46146,14 +51694,6 @@ "loupe": "^2.3.6", "pathval": "^1.1.1", "type-detect": "^4.1.0" - }, - "dependencies": { - "type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "dev": true - } } }, "chalk": { @@ -46164,6 +51704,17 @@ "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" + }, + "dependencies": { + "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" + } + } } }, "chalk-template": { @@ -46280,12 +51831,34 @@ "yargs": "^16.0.0" }, "dependencies": { + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "parse5": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", "dev": true }, + "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, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, "yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -46300,6 +51873,12 @@ "y18n": "^5.0.5", "yargs-parser": "^20.2.2" } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true } } }, @@ -46326,13 +51905,12 @@ "dev": true }, "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "requires": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" }, "dependencies": { @@ -46340,7 +51918,6 @@ "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, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -46364,23 +51941,12 @@ "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", "shallow-clone": "^3.0.0" - }, - "dependencies": { - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - } } }, "cluster-key-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz", - "integrity": "sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", "dev": true }, "cmd-shim": { @@ -46611,12 +52177,6 @@ } } }, - "confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true - }, "connect": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", @@ -46832,18 +52392,18 @@ } }, "core-js-compat": { - "version": "3.42.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.42.0.tgz", - "integrity": "sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ==", + "version": "3.44.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.44.0.tgz", + "integrity": "sha512-JepmAj2zfl6ogy34qfWtcE7nHKAJnKsQFRn++scjVS2bZFllwptzw61BZcZFYBPpUznLfAvh0LGhxKppk04ClA==", "dev": true, "requires": { - "browserslist": "^4.24.4" + "browserslist": "^4.25.1" } }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "cors": { @@ -46924,33 +52484,33 @@ "dev": true }, "csv": { - "version": "6.3.11", - "resolved": "https://registry.npmjs.org/csv/-/csv-6.3.11.tgz", - "integrity": "sha512-a8bhT76Q546jOElHcTrkzWY7Py925mfLO/jqquseH61ThOebYwOjLbWHBqdRB4K1VpU36sTyIei6Jwj7QdEZ7g==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/csv/-/csv-6.4.1.tgz", + "integrity": "sha512-ajGosmTGnTwYyGl8STqZDu7R6LkDf3xL39XiOmliV/GufQeVUxHzTKIm4NOBCwmEuujK7B6isxs4Uqt9GcRCvA==", "dev": true, "requires": { - "csv-generate": "^4.4.2", - "csv-parse": "^5.6.0", - "csv-stringify": "^6.5.2", - "stream-transform": "^3.3.3" + "csv-generate": "^4.5.0", + "csv-parse": "^6.1.0", + "csv-stringify": "^6.6.0", + "stream-transform": "^3.4.0" } }, "csv-generate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/csv-generate/-/csv-generate-4.4.2.tgz", - "integrity": "sha512-W6nVsf+rz0J3yo9FOjeer7tmzBJKaTTxf7K0uw6GZgRocZYPVpuSWWa5/aoWWrjQZj4/oNIKTYapOM7hiNjVMA==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/csv-generate/-/csv-generate-4.5.0.tgz", + "integrity": "sha512-aQr/vmOKyBSBHNwYhAoXw1+kUsPnMSwmYgpNoo36rIXoG1ecWILnvPGZeQ6oUjzrWknZAD3+jfpqYOBAl4x15A==", "dev": true }, "csv-parse": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.6.0.tgz", - "integrity": "sha512-l3nz3euub2QMg5ouu5U09Ew9Wf6/wQ8I++ch1loQ0ljmzhmfZYrH9fflS22i/PQEvsPvxCwxgz5q7UB8K1JO4Q==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-6.1.0.tgz", + "integrity": "sha512-CEE+jwpgLn+MmtCpVcPtiCZpVtB6Z2OKPTr34pycYYoL7sxdOkXDdQ4lRiw6ioC0q6BLqhc6cKweCVvral8yhw==", "dev": true }, "csv-stringify": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.5.2.tgz", - "integrity": "sha512-RFPahj0sXcmUyjrObAK+DOWtMvMIFV328n4qZJhgX3x2RqkQgOTU2mCUmiFR0CzM6AzChlRSUErjiJeEt8BaQA==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.6.0.tgz", + "integrity": "sha512-YW32lKOmIBgbxtu3g5SaiqWNwa/9ISQt2EcgOq0+RAIFufFp9is6tqNnKahqE5kuKvrnYAzs28r+s6pXJR8Vcw==", "dev": true }, "custom-event": { @@ -47412,9 +52972,9 @@ } }, "electron-to-chromium": { - "version": "1.5.155", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.155.tgz", - "integrity": "sha512-ps5KcGGmwL8VaeJlvlDlu4fORQpv3+GIcF5I3f9tUKUlJ/wsysh6HU8P5L1XWRYeXfA0oJd4PyM8ds8zTFf6Ng==", + "version": "1.5.194", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.194.tgz", + "integrity": "sha512-SdnWJwSUot04UR51I2oPD8kuP2VI37/CADR1OHsFOUzZIvfWJBO6q11k5P/uKNyTT3cdOsnyjkrZ+DDShqYqJA==", "dev": true }, "emoji-regex": { @@ -47450,9 +53010,9 @@ } }, "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==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "dev": true, "requires": { "once": "^1.4.0" @@ -47547,9 +53107,9 @@ "dev": true }, "enhanced-resolve": { - "version": "5.18.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", - "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz", + "integrity": "sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -47635,27 +53195,27 @@ "dev": true }, "es-abstract": { - "version": "1.23.9", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", - "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", "dev": true, "requires": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.3", + "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", + "es-object-atoms": "^1.1.1", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.0", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", @@ -47667,21 +53227,24 @@ "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", + "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.0", + "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.3", + "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.3", + "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", @@ -47690,21 +53253,21 @@ "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.18" + "which-typed-array": "^1.1.19" } }, "es-aggregate-error": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/es-aggregate-error/-/es-aggregate-error-1.0.13.tgz", - "integrity": "sha512-KkzhUUuD2CUMqEc8JEqsXEMDHzDPE8RCjZeUBitsnB1eNcAJWQPiciKsMXe3Yytj4Flw1XLl46Qcf9OxvZha7A==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/es-aggregate-error/-/es-aggregate-error-1.0.14.tgz", + "integrity": "sha512-3YxX6rVb07B5TV11AV5wsL7nQCHXNwoHPsQC8S4AmBiqYhyNCJ5BRKXkXyDJvs8QzXN20NgRtxe3dEEQD9NLHA==", "dev": true, "requires": { "define-data-property": "^1.1.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", + "es-abstract": "^1.24.0", "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "globalthis": "^1.0.3", + "globalthis": "^1.0.4", "has-property-descriptors": "^1.0.2", "set-function-name": "^2.0.2" } @@ -47781,36 +53344,37 @@ "dev": true }, "esbuild": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz", - "integrity": "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==", - "dev": true, - "requires": { - "@esbuild/aix-ppc64": "0.25.4", - "@esbuild/android-arm": "0.25.4", - "@esbuild/android-arm64": "0.25.4", - "@esbuild/android-x64": "0.25.4", - "@esbuild/darwin-arm64": "0.25.4", - "@esbuild/darwin-x64": "0.25.4", - "@esbuild/freebsd-arm64": "0.25.4", - "@esbuild/freebsd-x64": "0.25.4", - "@esbuild/linux-arm": "0.25.4", - "@esbuild/linux-arm64": "0.25.4", - "@esbuild/linux-ia32": "0.25.4", - "@esbuild/linux-loong64": "0.25.4", - "@esbuild/linux-mips64el": "0.25.4", - "@esbuild/linux-ppc64": "0.25.4", - "@esbuild/linux-riscv64": "0.25.4", - "@esbuild/linux-s390x": "0.25.4", - "@esbuild/linux-x64": "0.25.4", - "@esbuild/netbsd-arm64": "0.25.4", - "@esbuild/netbsd-x64": "0.25.4", - "@esbuild/openbsd-arm64": "0.25.4", - "@esbuild/openbsd-x64": "0.25.4", - "@esbuild/sunos-x64": "0.25.4", - "@esbuild/win32-arm64": "0.25.4", - "@esbuild/win32-ia32": "0.25.4", - "@esbuild/win32-x64": "0.25.4" + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz", + "integrity": "sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.25.8", + "@esbuild/android-arm": "0.25.8", + "@esbuild/android-arm64": "0.25.8", + "@esbuild/android-x64": "0.25.8", + "@esbuild/darwin-arm64": "0.25.8", + "@esbuild/darwin-x64": "0.25.8", + "@esbuild/freebsd-arm64": "0.25.8", + "@esbuild/freebsd-x64": "0.25.8", + "@esbuild/linux-arm": "0.25.8", + "@esbuild/linux-arm64": "0.25.8", + "@esbuild/linux-ia32": "0.25.8", + "@esbuild/linux-loong64": "0.25.8", + "@esbuild/linux-mips64el": "0.25.8", + "@esbuild/linux-ppc64": "0.25.8", + "@esbuild/linux-riscv64": "0.25.8", + "@esbuild/linux-s390x": "0.25.8", + "@esbuild/linux-x64": "0.25.8", + "@esbuild/netbsd-arm64": "0.25.8", + "@esbuild/netbsd-x64": "0.25.8", + "@esbuild/openbsd-arm64": "0.25.8", + "@esbuild/openbsd-x64": "0.25.8", + "@esbuild/openharmony-arm64": "0.25.8", + "@esbuild/sunos-x64": "0.25.8", + "@esbuild/win32-arm64": "0.25.8", + "@esbuild/win32-ia32": "0.25.8", + "@esbuild/win32-x64": "0.25.8" } }, "escalade": { @@ -47913,9 +53477,9 @@ "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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -47938,15 +53502,6 @@ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, - "globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -47964,32 +53519,6 @@ "requires": { "brace-expansion": "^1.1.7" } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "eslint-config-airbnb-base": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", - "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", - "dev": true, - "requires": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5", - "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 } } }, @@ -48023,9 +53552,9 @@ } }, "eslint-module-utils": { - "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==", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", "dev": true, "requires": { "debug": "^3.2.7" @@ -48100,9 +53629,9 @@ }, "dependencies": { "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -48159,9 +53688,9 @@ }, "dependencies": { "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -48201,9 +53730,9 @@ } }, "eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.5.tgz", + "integrity": "sha512-9Ni+xgemM2IWLq6aXEpP2+V/V30GeA/46Ar629vcMqVPodFFWC9skHu/D1phvuqtS8bJCFnNf01/qcmqYEwNfg==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -48351,9 +53880,9 @@ } }, "execa": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "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", @@ -48713,12 +54242,12 @@ "dev": true }, "fast-xml-parser": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", - "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", + "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", "dev": true, "requires": { - "strnum": "^1.0.5" + "strnum": "^2.1.0" } }, "fastest-levenshtein": { @@ -48749,83 +54278,6 @@ "secure-json-parse": "^2.5.0", "semver": "^7.5.0", "tiny-lru": "^11.0.1" - }, - "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" - } - }, - "pino": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-8.21.0.tgz", - "integrity": "sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==", - "dev": true, - "requires": { - "atomic-sleep": "^1.0.0", - "fast-redact": "^3.1.1", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^1.2.0", - "pino-std-serializers": "^6.0.0", - "process-warning": "^3.0.0", - "quick-format-unescaped": "^4.0.3", - "real-require": "^0.2.0", - "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 - } - } - }, - "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" - } - }, - "readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "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 - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - } } }, "fastify-plugin": { @@ -49043,9 +54495,9 @@ }, "dependencies": { "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -49099,9 +54551,9 @@ "dev": true }, "follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "dev": true }, "for-each": { @@ -49124,17 +54576,34 @@ } }, "form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, + "form-data-encoder": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", + "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==", + "dev": true + }, + "formdata-node": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", + "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", + "dev": true, + "requires": { + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" + } + }, "formidable": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", @@ -49270,24 +54739,28 @@ } }, "gaxios": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", - "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz", + "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==", + "dev": true, + "optional": true, + "peer": true, "requires": { "extend": "^3.0.2", - "https-proxy-agent": "^7.0.1", + "https-proxy-agent": "^5.0.0", "is-stream": "^2.0.0", - "node-fetch": "^2.6.9", - "uuid": "^9.0.1" + "node-fetch": "^2.6.9" } }, "gcp-metadata": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.1.tgz", - "integrity": "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz", + "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==", + "dev": true, + "optional": true, + "peer": true, "requires": { - "gaxios": "^6.1.1", - "google-logging-utils": "^0.0.2", + "gaxios": "^5.0.0", "json-bigint": "^1.0.0" } }, @@ -49359,6 +54832,17 @@ "yargs": "^16.2.0" }, "dependencies": { + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -49377,6 +54861,17 @@ "yallist": "^4.0.0" } }, + "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, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -49397,6 +54892,12 @@ "y18n": "^5.0.5", "yargs-parser": "^20.2.2" } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true } } }, @@ -49417,9 +54918,9 @@ } }, "get-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", - "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", + "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 }, "get-symbol-description": { @@ -49434,9 +54935,9 @@ } }, "get-uri": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz", - "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", + "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", "dev": true, "requires": { "basic-ftp": "^5.0.2", @@ -49579,10 +55080,21 @@ } }, "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + }, + "dependencies": { + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } }, "globalthis": { "version": "1.0.4", @@ -49935,6 +55447,14 @@ "setprototypeof": "1.2.0", "statuses": "2.0.1", "toidentifier": "1.0.1" + }, + "dependencies": { + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } } }, "http-proxy": { @@ -49957,17 +55477,6 @@ "@tootallnate/once": "1", "agent-base": "6", "debug": "4" - }, - "dependencies": { - "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==", - "dev": true, - "requires": { - "debug": "4" - } - } } }, "http-signature": { @@ -49982,11 +55491,12 @@ } }, "https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "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": "^7.1.2", + "agent-base": "6", "debug": "4" } }, @@ -50054,9 +55564,9 @@ } }, "import-in-the-middle": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.13.2.tgz", - "integrity": "sha512-Yjp9X7s2eHSXvZYQ0aye6UvwYPrVB5C2k47fuXjFKnYinAByaDZjh4t9MT2wEga9775n6WaIqyHnQhBxYtX2mg==", + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.14.2.tgz", + "integrity": "sha512-5tCuY9BV8ujfOpwtAGgsTx9CGUapcFMEEyByLv1B+v2+6DhAcw+Zr0nhQT7uwaZ7DiourxFEscghOR8e1aPLQw==", "requires": { "acorn": "^8.14.0", "acorn-import-attributes": "^1.9.5", @@ -50141,9 +55651,9 @@ } }, "inquirer": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", - "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", @@ -50160,13 +55670,13 @@ "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6", - "wrap-ansi": "^7.0.0" + "wrap-ansi": "^6.0.1" }, "dependencies": { "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==", + "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", @@ -50464,6 +55974,18 @@ "define-properties": "^1.1.3" } }, + "is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true + }, + "is-node-process": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", + "dev": true + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -50498,6 +56020,15 @@ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, "is-promise": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", @@ -50556,9 +56087,9 @@ } }, "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" }, "is-string": { "version": "1.1.1", @@ -50731,9 +56262,9 @@ }, "dependencies": { "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -50808,6 +56339,15 @@ "requires": { "semver": "^7.5.3" } + }, + "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" + } } } }, @@ -50897,9 +56437,9 @@ }, "dependencies": { "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -51001,17 +56541,6 @@ "@types/node": "*", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "joi": { @@ -51079,9 +56608,9 @@ "dev": true }, "jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true }, "json-bigint": { @@ -51344,9 +56873,9 @@ } }, "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -51369,6 +56898,17 @@ "readdirp": "~3.6.0" } }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -51416,6 +56956,12 @@ "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", "dev": true }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -51485,6 +57031,17 @@ "integrity": "sha512-us1E3K+3jJppDBa3Tl0L3MOJiGhe1C6P0+nIvQAFYbxlMAx0h81eOwLmU57xgqToduDDPx3y5QsdjPfDu+FgOQ==", "dev": true }, + "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, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, "yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -51499,6 +57056,12 @@ "y18n": "^5.0.5", "yargs-parser": "^20.2.2" } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true } } }, @@ -51537,9 +57100,9 @@ }, "dependencies": { "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -51613,9 +57176,9 @@ }, "dependencies": { "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -52031,6 +57594,29 @@ "supports-color": "^7.1.0" } }, + "execa": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "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.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", + "dev": true + }, "glob": { "version": "9.3.5", "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", @@ -52069,6 +57655,12 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -52126,6 +57718,15 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "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" + } + }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -52153,12 +57754,6 @@ "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true } } }, @@ -52250,9 +57845,9 @@ }, "dependencies": { "ci-info": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz", - "integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.0.tgz", + "integrity": "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==", "dev": true } } @@ -52399,12 +57994,6 @@ "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", "dev": true }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "dev": true - }, "lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", @@ -52471,6 +58060,12 @@ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "dev": true }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true + }, "log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -52686,29 +58281,10 @@ "semver": "^7.3.5" } }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "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==", - "dev": true, - "requires": { - "debug": "4" - } - }, "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -52764,16 +58340,6 @@ "path-is-absolute": "^1.0.0" } }, - "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==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -52801,6 +58367,15 @@ "yallist": "^4.0.0" } }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -53144,6 +58719,12 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true } } }, @@ -53207,9 +58788,9 @@ } }, "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", "dev": true }, "mime-db": { @@ -53291,29 +58872,12 @@ "dev": true }, "minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", "dev": true, "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } + "minipass": "^7.0.3" } }, "minipass-fetch": { @@ -53478,30 +59042,30 @@ } }, "mocha": { - "version": "10.8.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", + "version": "11.7.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.2.tgz", + "integrity": "sha512-lkqVJPmqqG/w5jmmFtiRvtA2jkDyNVUcefFJKb2uyX4dekk8Okgqop3cgbFiaIvj8uCRJVTP5x9dfxGyXm2jvQ==", "dev": true, "requires": { - "ansi-colors": "^4.1.3", "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", + "chokidar": "^4.0.1", "debug": "^4.3.5", - "diff": "^5.2.0", + "diff": "^7.0.0", "escape-string-regexp": "^4.0.0", "find-up": "^5.0.0", - "glob": "^8.1.0", + "glob": "^10.4.5", "he": "^1.2.0", "js-yaml": "^4.1.0", "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", + "minimatch": "^9.0.5", "ms": "^2.1.3", + "picocolors": "^1.1.1", "serialize-javascript": "^6.0.2", "strip-json-comments": "^3.1.1", "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", + "workerpool": "^9.2.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", "yargs-unparser": "^2.0.0" }, "dependencies": { @@ -53511,21 +59075,11 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } + "diff": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "dev": true }, "find-up": { "version": "5.0.0", @@ -53537,28 +59091,6 @@ "path-exists": "^4.0.0" } }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -53577,15 +59109,6 @@ "p-locate": "^5.0.0" } }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -53603,45 +59126,6 @@ "requires": { "p-limit": "^3.0.2" } - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } } } }, @@ -53664,28 +59148,83 @@ "optional": true }, "mongodb": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.17.2.tgz", - "integrity": "sha512-mLV7SEiov2LHleRJPMPrK2PMyhXFZt2UQLC4VD4pnth3jMjYKHhtqfwwkkvS/NXuo/Fp3vbhaNcXrIDaLRb9Tg==", + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.19.0.tgz", + "integrity": "sha512-H3GtYujOJdeKIMLKBT9PwlDhGrQfplABNF1G904w6r5ZXKWyv77aB0X9B+rhmaAwjtllHzaEkvi9mkGVZxs2Bw==", "dev": true, "requires": { - "@aws-sdk/credential-providers": "^3.186.0", - "@mongodb-js/saslprep": "^1.1.0", - "bson": "^4.7.2", - "mongodb-connection-string-url": "^2.6.0", - "socks": "^2.7.1" + "@mongodb-js/saslprep": "^1.1.9", + "bson": "^6.10.4", + "mongodb-connection-string-url": "^3.0.0" } }, "mongodb-connection-string-url": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", - "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.2.tgz", + "integrity": "sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==", "dev": true, "requires": { - "@types/whatwg-url": "^8.2.1", - "whatwg-url": "^11.0.0" + "@types/whatwg-url": "^11.0.2", + "whatwg-url": "^14.1.0 || ^13.0.0" + } + }, + "mongoose": { + "version": "6.13.8", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.13.8.tgz", + "integrity": "sha512-JHKco/533CyVrqCbyQsnqMpLn8ZCiKrPDTd2mvo2W7ygIvhygWjX2wj+RPjn6upZZgw0jC6U51RD7kUsyK8NBg==", + "dev": true, + "requires": { + "bson": "^4.7.2", + "kareem": "2.5.1", + "mongodb": "4.17.2", + "mpath": "0.9.0", + "mquery": "4.0.3", + "ms": "2.1.3", + "sift": "16.0.1" }, "dependencies": { + "@types/whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "bson": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", + "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", + "dev": true, + "requires": { + "buffer": "^5.6.0" + } + }, + "mongodb": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.17.2.tgz", + "integrity": "sha512-mLV7SEiov2LHleRJPMPrK2PMyhXFZt2UQLC4VD4pnth3jMjYKHhtqfwwkkvS/NXuo/Fp3vbhaNcXrIDaLRb9Tg==", + "dev": true, + "requires": { + "@aws-sdk/credential-providers": "^3.186.0", + "@mongodb-js/saslprep": "^1.1.0", + "bson": "^4.7.2", + "mongodb-connection-string-url": "^2.6.0", + "socks": "^2.7.1" + } + }, + "mongodb-connection-string-url": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", + "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", + "dev": true, + "requires": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + } + }, "punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -53713,21 +59252,6 @@ } } }, - "mongoose": { - "version": "6.13.8", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.13.8.tgz", - "integrity": "sha512-JHKco/533CyVrqCbyQsnqMpLn8ZCiKrPDTd2mvo2W7ygIvhygWjX2wj+RPjn6upZZgw0jC6U51RD7kUsyK8NBg==", - "dev": true, - "requires": { - "bson": "^4.7.2", - "kareem": "2.5.1", - "mongodb": "4.17.2", - "mpath": "0.9.0", - "mquery": "4.0.3", - "ms": "2.1.3", - "sift": "16.0.1" - } - }, "mpath": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", @@ -53842,9 +59366,9 @@ "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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -53881,9 +59405,9 @@ }, "dependencies": { "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "optional": true, "requires": { @@ -53949,6 +59473,12 @@ "sqlstring": "2.3.1" }, "dependencies": { + "bignumber.js": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -54041,9 +59571,9 @@ } }, "nan": { - "version": "2.22.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz", - "integrity": "sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==", + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.23.0.tgz", + "integrity": "sha512-1UxuyYGdoQHcGg87Lkqm3FzefucTa0NAiOcuRsDmysep3c1LVCRK2krrUDafMWtjSG04htvAmvg96+SDknOmgQ==", "dev": true, "optional": true }, @@ -54169,6 +59699,18 @@ "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", "dev": true }, + "node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true + }, + "node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true + }, "node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -54522,17 +60064,6 @@ "yargs-parser": "21.1.1" }, "dependencies": { - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, "jsonc-parser": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", @@ -54580,23 +60111,6 @@ "minimist": "^1.2.6", "strip-bom": "^3.0.0" } - }, - "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, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true } } }, @@ -54636,9 +60150,9 @@ }, "dependencies": { "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -54818,18 +60332,6 @@ "object-keys": "^1.1.1" } }, - "object.entries": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", - "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", - "dev": true, - "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.1.1" - } - }, "object.values": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", @@ -54950,9 +60452,9 @@ } }, "oracledb": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/oracledb/-/oracledb-6.8.0.tgz", - "integrity": "sha512-A4ds4n4xtjPTzk1gwrHWuMeWsEcrScF0GFgVebGrhNpHSAzn6eDwMKcSbakZODKfFcI099iqhmqWsgko8D+7Ww==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/oracledb/-/oracledb-6.9.0.tgz", + "integrity": "sha512-NwPbIGPv6m0GTFSbyy4/5WEjsKMiiJRxztLmYUcfD3oyh/uXdmVmKOwEWr84wFwWJ/0wQrYQh4PjnzvShibRaA==", "dev": true }, "os-tmpdir": { @@ -54961,6 +60463,12 @@ "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true }, + "outvariant": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", + "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", + "dev": true + }, "own-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", @@ -55082,6 +60590,12 @@ "socks-proxy-agent": "^8.0.5" }, "dependencies": { + "agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true + }, "http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", @@ -55092,6 +60606,16 @@ "debug": "^4.3.4" } }, + "https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "requires": { + "agent-base": "^7.1.2", + "debug": "4" + } + }, "socks-proxy-agent": { "version": "8.0.5", "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", @@ -55342,48 +60866,6 @@ "pg-protocol": "^1.5.0", "pg-types": "^2.1.0", "pgpass": "1.x" - }, - "dependencies": { - "pg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "dev": true, - "requires": { - "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" - } - }, - "postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", - "dev": true - }, - "postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", - "dev": true - }, - "postgres-date": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", - "dev": true - }, - "postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "dev": true, - "requires": { - "xtend": "^4.0.0" - } - } } }, "pg-connection-string": { @@ -55405,9 +60887,21 @@ "requires": {} }, "pg-protocol": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.0.tgz", - "integrity": "sha512-IpdytjudNuLv8nhlHs/UrVBhU0e78J0oIS/0AVdTbWxSOkFUVdsHC/NrorO6nXsQNDTT1kzDSOMJubBQviX18Q==" + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.3.tgz", + "integrity": "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==" + }, + "pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "requires": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + } }, "pgpass": { "version": "1.0.5", @@ -55433,9 +60927,9 @@ "dev": true }, "picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true }, "pidusage": { @@ -55454,28 +60948,36 @@ "dev": true }, "pino": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/pino/-/pino-8.3.1.tgz", - "integrity": "sha512-G5KDVXr8viwc/n7iKfDyqqRZflY7OpJn0SDq1wagUhXkcPodZuSymLFziSuD/gCEcVG65IN5MPDY4ZMT9OJWfg==", + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.21.0.tgz", + "integrity": "sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==", "dev": true, "requires": { "atomic-sleep": "^1.0.0", "fast-redact": "^3.1.1", "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "v1.0.0", + "pino-abstract-transport": "^1.2.0", "pino-std-serializers": "^6.0.0", - "process-warning": "^2.0.0", + "process-warning": "^3.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^3.1.0", - "thread-stream": "^2.0.0" + "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 + } } }, "pino-abstract-transport": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz", - "integrity": "sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==", + "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", @@ -55563,6 +61065,29 @@ "util-deprecate": "^1.0.2" } }, + "postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" + }, + "postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==" + }, + "postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" + }, + "postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "requires": { + "xtend": "^4.0.0" + } + }, "prebuild-install": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", @@ -55726,9 +61251,9 @@ "dev": true }, "protobufjs": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.3.tgz", - "integrity": "sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.4.tgz", + "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==", "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -55776,6 +61301,12 @@ "socks-proxy-agent": "^8.0.5" }, "dependencies": { + "agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true + }, "http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", @@ -55786,6 +61317,16 @@ "debug": "^4.3.4" } }, + "https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "requires": { + "agent-base": "^7.1.2", + "debug": "4" + } + }, "lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", @@ -55818,9 +61359,9 @@ "dev": true }, "pump": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", - "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", "dev": true, "requires": { "end-of-stream": "^1.1.0", @@ -55853,9 +61394,9 @@ }, "dependencies": { "ws": { - "version": "8.18.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", - "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "dev": true, "requires": {} } @@ -56058,12 +61599,6 @@ "type-fest": "^4.6.0", "unicorn-magic": "^0.1.0" } - }, - "type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "dev": true } } }, @@ -56256,6 +61791,8 @@ "resolved": "https://registry.npmjs.org/redis/-/redis-4.7.1.tgz", "integrity": "sha512-S1bJDnqLftzHXHP8JsT5II/CtHWQrASX5K96REjWjlmWKrviSOLWmM7QnRLstAWsu1VBBV1ffV6DzCvxNP0UJQ==", "dev": true, + "optional": true, + "peer": true, "requires": { "@redis/bloom": "1.2.0", "@redis/client": "1.6.1", @@ -56263,72 +61800,6 @@ "@redis/json": "1.0.7", "@redis/search": "1.2.0", "@redis/time-series": "1.1.0" - }, - "dependencies": { - "@redis/bloom": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", - "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", - "dev": true, - "requires": {} - }, - "@redis/client": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.6.1.tgz", - "integrity": "sha512-/KCsg3xSlR+nCK8/8ZYSknYxvXHwubJrU82F3Lm1Fp6789VQ0/3RJKfsmRXjqfaTA++23CvC3hqmqe/2GEt6Kw==", - "dev": true, - "requires": { - "cluster-key-slot": "1.1.2", - "generic-pool": "3.9.0", - "yallist": "4.0.0" - } - }, - "@redis/graph": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.1.tgz", - "integrity": "sha512-FEMTcTHZozZciLRl6GiiIB4zGm5z5F3F6a6FZCyrfxdKOhFlGkiAqlexWMBzCi4DcRoyiOsuLfW+cjlGWyExOw==", - "dev": true, - "requires": {} - }, - "@redis/json": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.7.tgz", - "integrity": "sha512-6UyXfjVaTBTJtKNG4/9Z8PSpKE6XgSyEb8iwaqDcy+uKrd/DGYHTWkUdnQDyzm727V7p21WUMhsqz5oy65kPcQ==", - "dev": true, - "requires": {} - }, - "@redis/search": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.2.0.tgz", - "integrity": "sha512-tYoDBbtqOVigEDMAcTGsRlMycIIjwMCgD8eR2t0NANeQmgK/lvxNAvYyb6bZDD4frHRhIHkJu2TBRvB0ERkOmw==", - "dev": true, - "requires": {} - }, - "@redis/time-series": { - "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, - "requires": {} - }, - "cluster-key-slot": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", - "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", - "dev": true - }, - "generic-pool": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", - "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } } }, "redis-errors": { @@ -56445,6 +61916,14 @@ "dev": true, "requires": { "jsesc": "~3.0.2" + }, + "dependencies": { + "jsesc": { + "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 + } } }, "release-zalgo": { @@ -56604,16 +62083,6 @@ "vasync": "^2.2.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" - } - }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -56649,66 +62118,12 @@ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true }, - "mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "dev": true - }, "negotiator": { "version": "0.6.4", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", "dev": true }, - "pino": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-8.21.0.tgz", - "integrity": "sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==", - "dev": true, - "requires": { - "atomic-sleep": "^1.0.0", - "fast-redact": "^3.1.1", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^1.2.0", - "pino-std-serializers": "^6.0.0", - "process-warning": "^3.0.0", - "quick-format-unescaped": "^4.0.3", - "real-require": "^0.2.0", - "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^3.7.0", - "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.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "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" - } - }, "send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", @@ -56738,20 +62153,11 @@ } } }, - "split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } } } }, @@ -56819,32 +62225,32 @@ } }, "rollup": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.0.tgz", - "integrity": "sha512-HqMFpUbWlf/tvcxBFNKnJyzc7Lk+XO3FGc3pbNBLqEbOz0gPLRgcrlS3UF4MfUrVlstOaP/q0kM6GVvi+LrLRg==", - "dev": true, - "requires": { - "@rollup/rollup-android-arm-eabi": "4.41.0", - "@rollup/rollup-android-arm64": "4.41.0", - "@rollup/rollup-darwin-arm64": "4.41.0", - "@rollup/rollup-darwin-x64": "4.41.0", - "@rollup/rollup-freebsd-arm64": "4.41.0", - "@rollup/rollup-freebsd-x64": "4.41.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.41.0", - "@rollup/rollup-linux-arm-musleabihf": "4.41.0", - "@rollup/rollup-linux-arm64-gnu": "4.41.0", - "@rollup/rollup-linux-arm64-musl": "4.41.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.41.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.41.0", - "@rollup/rollup-linux-riscv64-gnu": "4.41.0", - "@rollup/rollup-linux-riscv64-musl": "4.41.0", - "@rollup/rollup-linux-s390x-gnu": "4.41.0", - "@rollup/rollup-linux-x64-gnu": "4.41.0", - "@rollup/rollup-linux-x64-musl": "4.41.0", - "@rollup/rollup-win32-arm64-msvc": "4.41.0", - "@rollup/rollup-win32-ia32-msvc": "4.41.0", - "@rollup/rollup-win32-x64-msvc": "4.41.0", - "@types/estree": "1.0.7", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.2.tgz", + "integrity": "sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==", + "dev": true, + "requires": { + "@rollup/rollup-android-arm-eabi": "4.46.2", + "@rollup/rollup-android-arm64": "4.46.2", + "@rollup/rollup-darwin-arm64": "4.46.2", + "@rollup/rollup-darwin-x64": "4.46.2", + "@rollup/rollup-freebsd-arm64": "4.46.2", + "@rollup/rollup-freebsd-x64": "4.46.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.46.2", + "@rollup/rollup-linux-arm-musleabihf": "4.46.2", + "@rollup/rollup-linux-arm64-gnu": "4.46.2", + "@rollup/rollup-linux-arm64-musl": "4.46.2", + "@rollup/rollup-linux-loongarch64-gnu": "4.46.2", + "@rollup/rollup-linux-ppc64-gnu": "4.46.2", + "@rollup/rollup-linux-riscv64-gnu": "4.46.2", + "@rollup/rollup-linux-riscv64-musl": "4.46.2", + "@rollup/rollup-linux-s390x-gnu": "4.46.2", + "@rollup/rollup-linux-x64-gnu": "4.46.2", + "@rollup/rollup-linux-x64-musl": "4.46.2", + "@rollup/rollup-win32-arm64-msvc": "4.46.2", + "@rollup/rollup-win32-ia32-msvc": "4.46.2", + "@rollup/rollup-win32-x64-msvc": "4.46.2", + "@types/estree": "1.0.8", "fsevents": "~2.3.2" } }, @@ -57156,13 +62562,14 @@ "dev": true }, "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" } }, "shallow-clone": { @@ -57320,6 +62727,17 @@ "diff": "^5.1.0", "nise": "^5.1.4", "supports-color": "^7.2.0" + }, + "dependencies": { + "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" + } + } } }, "slash": { @@ -57460,9 +62878,9 @@ } }, "socks": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", - "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.6.tgz", + "integrity": "sha512-pe4Y2yzru68lXCb38aAqRf5gvN8YdjP1lok5o0J7BOHljkyCGKVz7H3vpVIXKD27rj2giOJ7DwVyk/GWrPHDWA==", "dev": true, "requires": { "ip-address": "^9.0.5", @@ -57478,17 +62896,6 @@ "agent-base": "^6.0.2", "debug": "^4.3.3", "socks": "^2.6.2" - }, - "dependencies": { - "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==", - "dev": true, - "requires": { - "debug": "4" - } - } } }, "sonic-boom": { @@ -57510,9 +62917,9 @@ } }, "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", "dev": true }, "source-map-support": { @@ -57577,9 +62984,9 @@ }, "dependencies": { "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -57764,9 +63171,9 @@ "dev": true }, "sql-highlight": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/sql-highlight/-/sql-highlight-6.0.0.tgz", - "integrity": "sha512-+fLpbAbWkQ+d0JEchJT/NrRRXbYRNbG15gFpANx73EwxQB1PRjj+k/OI0GTU0J63g8ikGkJECQp9z8XEJZvPRw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sql-highlight/-/sql-highlight-6.1.0.tgz", + "integrity": "sha512-ed7OK4e9ywpE7pgRMkMQmZDPKSVdm0oX5IEtZiKnFucSF0zu6c80GZBe38UqHuVhTWJ9xsKgSMjCG2bml86KvA==", "dev": true }, "sqlite3": { @@ -57790,9 +63197,9 @@ "optional": 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": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "optional": true, "requires": { @@ -57825,12 +63232,6 @@ "brace-expansion": "^1.1.7" } }, - "node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true - }, "node-gyp": { "version": "8.4.1", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", @@ -57948,11 +63349,21 @@ "dev": true }, "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "dev": true }, + "stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + } + }, "stoppable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", @@ -57960,9 +63371,9 @@ "dev": true }, "stream-transform": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/stream-transform/-/stream-transform-3.3.3.tgz", - "integrity": "sha512-dALXrXe+uq4aO5oStdHKlfCM/b3NBdouigvxVPxCdrMRAU6oHh3KNss20VbTPQNQmjAHzZGKGe66vgwegFEIog==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/stream-transform/-/stream-transform-3.4.0.tgz", + "integrity": "sha512-QO3OGhKyeIV8p6eRQdG+W6WounFw519zk690hHCNfhgfP9bylVS+NTXsuBc7n+RsGn31UgFPGrWYIgoAbArKEw==", "dev": true }, "streamroller": { @@ -58011,9 +63422,9 @@ "dev": true }, "streamx": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz", - "integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==", + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz", + "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==", "dev": true, "requires": { "bare-events": "^2.2.0", @@ -58021,12 +63432,24 @@ "text-decoder": "^1.1.0" } }, + "strict-event-emitter": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", + "dev": true + }, "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", "dev": true }, + "string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true + }, "string-template": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", @@ -58151,15 +63574,15 @@ "dev": true }, "strnum": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", - "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", "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==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -58194,9 +63617,9 @@ } }, "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", + "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", "dev": true }, "tar": { @@ -58254,9 +63677,9 @@ } }, "tar-fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz", - "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.3.tgz", + "integrity": "sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==", "dev": true, "requires": { "chownr": "^1.1.1", @@ -58334,9 +63757,9 @@ }, "dependencies": { "bl": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-6.1.0.tgz", - "integrity": "sha512-ClDyJGQkc8ZtzdAAbAwBmhMSpwN/sC9HA8jxdYm6nVUbCfZbe2mgza4qh7AuEYyEPB/c4Kznf9s66bnsKMQDjw==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-6.1.1.tgz", + "integrity": "sha512-yYc8UIHrd1ZTLgNBIE7JjMzUPZH+dec3q7nWkrSHEbtvkQ3h6WKC63W9K5jthcL5EXFyMuWYq+2pq5WMSIgFHw==", "dev": true, "requires": { "@types/readable-stream": "^4.0.0", @@ -58392,9 +63815,9 @@ "dev": true }, "terser": { - "version": "5.39.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.2.tgz", - "integrity": "sha512-yEPUmWve+VA78bI71BW70Dh0TuV4HHd+I5SHOAfS1+QBOmvmCiiffgjR8ryyEd3KIfvPGFqoADt8LdQ6XpXIvg==", + "version": "5.43.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz", + "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==", "dev": true, "requires": { "@jridgewell/source-map": "^0.3.3", @@ -58530,9 +63953,9 @@ }, "dependencies": { "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -58702,9 +64125,9 @@ "dev": true }, "tiny-lru": { - "version": "11.3.1", - "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-11.3.1.tgz", - "integrity": "sha512-18e6DmpCUtUub2rbBQgtV/COvo2XtaqG5ECvguDRO3Cv7sm0CD9w09zJcRLvoQc3Mgn9ejAHZUX6Y2ZQII4fLw==", + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-11.3.4.tgz", + "integrity": "sha512-UxWEfRKpFCabAf6fkTNdlfSw/RDUJ/4C6i1aLZaDnGF82PERHyYhz5CMCVYXtLt34LbqgfpJ2bjmgGKgxuF/6A==", "dev": true }, "tinyglobby": { @@ -58723,6 +64146,25 @@ "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", "dev": true }, + "to-buffer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.1.tgz", + "integrity": "sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==", + "dev": true, + "requires": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -58779,9 +64221,9 @@ "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==" }, "ts-loader": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.2.tgz", - "integrity": "sha512-Qo4piXvOTWcMGIgRiuFa6nHNm+54HbYaZCKqc9eeZCLRy3XqafQgwX2F7mofrbJG3g7EEb+lkiR+z2Lic2s3Zw==", + "version": "9.5.4", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz", + "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -58954,15 +64396,15 @@ } }, "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "dev": true }, "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true }, "type-is": { @@ -59043,6 +64485,53 @@ "is-typedarray": "^1.0.0" } }, + "typeorm": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.25.tgz", + "integrity": "sha512-fTKDFzWXKwAaBdEMU4k661seZewbNYET4r1J/z3Jwf+eAvlzMVpTLKAVcAzg75WwQk7GDmtsmkZ5MfkmXCiFWg==", + "dev": true, + "requires": { + "@sqltools/formatter": "^1.2.5", + "ansis": "^3.17.0", + "app-root-path": "^3.1.0", + "buffer": "^6.0.3", + "dayjs": "^1.11.13", + "debug": "^4.4.0", + "dedent": "^1.6.0", + "dotenv": "^16.4.7", + "glob": "^10.4.5", + "sha.js": "^2.4.11", + "sql-highlight": "^6.0.0", + "tslib": "^2.8.1", + "uuid": "^11.1.0", + "yargs": "^17.7.2" + }, + "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" + } + }, + "dedent": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz", + "integrity": "sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==", + "dev": true, + "requires": {} + }, + "uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "dev": true + } + } + }, "typescript": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", @@ -59112,9 +64601,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": "7.8.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", + "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==" }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.1", @@ -59280,9 +64769,9 @@ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" }, "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", "dev": true }, "v8-compile-cache-lib": { @@ -59342,6 +64831,14 @@ "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + } } }, "void-elements": { @@ -59357,9 +64854,9 @@ "dev": true }, "watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", + "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", "dev": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -59384,6 +64881,12 @@ "defaults": "^1.0.3" } }, + "web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "dev": true + }, "webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -59481,9 +64984,9 @@ } }, "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", + "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", "dev": true }, "whatwg-url": { @@ -59714,9 +65217,9 @@ "dev": true }, "workerpool": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", - "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.3.tgz", + "integrity": "sha512-slxCaKbYjEdFT/o2rH9xS1hf4uRDch1w7Uo+apxhZ+sf/1d9e0ZVkn42kPNGP2dgjIx6YFvSevj0zHvbWe2jdw==", "dev": true }, "wrap-ansi": { @@ -59929,40 +65432,12 @@ "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" - }, - "dependencies": { - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "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==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" - } } }, "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" }, "yargs-unparser": { "version": "2.0.0", @@ -60045,9 +65520,9 @@ "dev": true }, "zone.js": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.0.tgz", - "integrity": "sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==" + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.1.tgz", + "integrity": "sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==" } } } diff --git a/package.json b/package.json index 9d16879251..f80f605033 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "opentelemetry-contrib", + "name": "opentelemetry-js-contrib", "version": "0.1.0", "description": "This is a repository for OpenTelemetry JavaScript contributions.", "repository": { @@ -9,25 +9,29 @@ "publishConfig": { "access": "public" }, - "main": "build/src/index.js", - "types": "build/src/index.d.ts", "scripts": { "clean": "nx run-many -t clean", "version:update": "nx run-many -t version:update", "compile": "nx run-many -t compile", + "compile:ci:affected": "nx affected -t compile", + "list:affected": "nx affected -t test-all-versions --graph=stdout | jq -c '.tasks.tasks[].target.project'", "test": "nx run-many -t test", + "test:ci:affected": "nx affected -t test", "test:browser": "nx run-many -t test:browser", - "test:ci:changed": "nx affected -t test --base=origin/main --head=HEAD", - "test-all-versions": "nx run-many -t test-all-versions", + "test:browser:ci:affected": "nx affected -t test:browser", + "test-all-versions": "npm run --if-present test-all-versions --workspaces", + "test-all-versions:ci:affected": "npm run list:affected | tail -n +5 | xargs -I {} -t npm run --if-present test-all-versions -w {}", + "test-merge-coverage:ci:affected": "nx affected -t test-merge-coverage", "test-services:start": "docker compose -f ./test/docker-compose.yaml up -d --wait", "test-services:stop": "docker compose -f ./test/docker-compose.yaml down", "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=./test/test-services.env npm test", + "test-all-versions:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=./test/test-services.env npm run test-all-versions", "changelog": "lerna-changelog", - "lint": "nx run-many -t lint && npm run lint:deps && npm run lint:readme && npm run lint:markdown && npm run lint:semconv-deps", + "lint": "nx run-many -t lint && npm run lint:deps && npm run lint:readme && npm run lint:markdown && npm run lint:semconv-deps && npm run lint:examples", "lint:fix": "nx run-many -t lint:fix && npm run lint:markdown:fix", "lint:deps": "npx --yes knip@5.33.3 --dependencies --production --tags=-knipignore", - "lint:examples": "eslint ./examples/**/*.js", - "lint:examples:fix": "eslint ./examples/**/*.js --fix", + "lint:examples": "./scripts/npm-run-in-examples.js --if-present lint", + "lint:examples:fix": "./scripts/npm-run-in-examples.js --if-present lint:fix", "lint:markdown": "markdownlint-cli2 $(git ls-files '*.md')", "lint:markdown:fix": "markdownlint-cli2 --fix $(git ls-files '*.md')", "lint:readme": "nx run-many -t lint:readme", @@ -48,22 +52,22 @@ "@typescript-eslint/parser": "5.62.0", "cross-env": "^7.0.3", "eslint": "8.7.0", - "eslint-config-airbnb-base": "15.0.0", "eslint-config-prettier": "8.8.0", "eslint-plugin-header": "3.1.1", "eslint-plugin-import": "2.27.5", "eslint-plugin-node": "11.1.0", - "eslint-plugin-prettier": "4.2.1", + "eslint-plugin-prettier": "4.2.5", "glob": "^10.4.5", "lerna": "8.2.3", "lerna-changelog": "2.2.0", "markdownlint-cli2": "0.13.0", "minimatch": "^9.0.3", - "mocha": "^10.7.3", + "mocha": "^11.0.0", "prettier": "2.8.8", "process": "0.11.10", "semver": "^7.6.0", "ts-node": "10.9.2", + "typescript": "5.0.4", "util": "0.12.5" }, "changelog": { diff --git a/packages/auto-configuration-propagators/CHANGELOG.md b/packages/auto-configuration-propagators/CHANGELOG.md index 2707e343ad..7ad6e16d81 100644 --- a/packages/auto-configuration-propagators/CHANGELOG.md +++ b/packages/auto-configuration-propagators/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## [0.4.2](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-configuration-propagators-v0.4.1...auto-configuration-propagators-v0.4.2) (2025-09-01) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/propagator-aws-xray bumped from ^2.1.0 to ^2.1.1 + * @opentelemetry/propagator-aws-xray-lambda bumped from ^0.55.0 to ^0.55.1 + * @opentelemetry/propagator-ot-trace bumped from ^0.28.0 to ^0.28.1 + ## [0.4.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-configuration-propagators-v0.4.0...auto-configuration-propagators-v0.4.1) (2025-05-02) diff --git a/packages/auto-configuration-propagators/package.json b/packages/auto-configuration-propagators/package.json index 29da658e78..2e24cdbdeb 100644 --- a/packages/auto-configuration-propagators/package.json +++ b/packages/auto-configuration-propagators/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/auto-configuration-propagators", - "version": "0.4.1", + "version": "0.4.2", "description": "Metapackage which bundles known propagators for configuration via an env variable.", "author": "OpenTelemetry Authors", "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/auto-configuration-propagators#readme", @@ -20,10 +20,10 @@ }, "scripts": { "clean": "rimraf build/*", - "setup:dev": "nx run-many -t compile -p @opentelemetry/auto-configuration-propagators", "compile": "tsc -p .", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/auto-configuration-propagators", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", "tdd": "npm run test -- --watch-extensions ts --watch", "test": "nyc mocha 'test/**/*.ts'", @@ -47,11 +47,11 @@ }, "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/propagator-aws-xray": "^2.1.0", - "@opentelemetry/propagator-aws-xray-lambda": "^0.55.0", + "@opentelemetry/propagator-aws-xray": "^2.1.1", + "@opentelemetry/propagator-aws-xray-lambda": "^0.55.1", "@opentelemetry/propagator-b3": "^2.0.0", "@opentelemetry/propagator-jaeger": "^2.0.0", - "@opentelemetry/propagator-ot-trace": "^0.28.0" + "@opentelemetry/propagator-ot-trace": "^0.28.1" }, "files": [ "build/src/**/*.js", diff --git a/packages/auto-instrumentations-node/CHANGELOG.md b/packages/auto-instrumentations-node/CHANGELOG.md index 180d993ec5..1074f475ca 100644 --- a/packages/auto-instrumentations-node/CHANGELOG.md +++ b/packages/auto-instrumentations-node/CHANGELOG.md @@ -1,5 +1,91 @@ # Changelog +## [0.63.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-node-v0.62.2...auto-instrumentations-node-v0.63.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/instrumentation-amqplib bumped from ^0.50.0 to ^0.51.0 + * @opentelemetry/instrumentation-aws-lambda bumped from ^0.54.1 to ^0.55.0 + * @opentelemetry/instrumentation-aws-sdk bumped from ^0.58.0 to ^0.59.0 + * @opentelemetry/instrumentation-bunyan bumped from ^0.49.0 to ^0.50.0 + * @opentelemetry/instrumentation-cassandra-driver bumped from ^0.49.0 to ^0.50.0 + * @opentelemetry/instrumentation-connect bumped from ^0.47.0 to ^0.48.0 + * @opentelemetry/instrumentation-cucumber bumped from ^0.19.0 to ^0.20.0 + * @opentelemetry/instrumentation-dataloader bumped from ^0.21.1 to ^0.22.0 + * @opentelemetry/instrumentation-dns bumped from ^0.47.0 to ^0.48.0 + * @opentelemetry/instrumentation-express bumped from ^0.52.0 to ^0.53.0 + * @opentelemetry/instrumentation-fastify bumped from ^0.48.0 to ^0.49.0 + * @opentelemetry/instrumentation-fs bumped from ^0.23.0 to ^0.24.0 + * @opentelemetry/instrumentation-generic-pool bumped from ^0.47.0 to ^0.48.0 + * @opentelemetry/instrumentation-graphql bumped from ^0.51.0 to ^0.52.0 + * @opentelemetry/instrumentation-hapi bumped from ^0.50.0 to ^0.51.0 + * @opentelemetry/instrumentation-ioredis bumped from ^0.51.0 to ^0.52.0 + * @opentelemetry/instrumentation-kafkajs bumped from ^0.13.0 to ^0.14.0 + * @opentelemetry/instrumentation-knex bumped from ^0.48.0 to ^0.49.0 + * @opentelemetry/instrumentation-koa bumped from ^0.51.0 to ^0.52.0 + * @opentelemetry/instrumentation-lru-memoizer bumped from ^0.48.0 to ^0.49.0 + * @opentelemetry/instrumentation-memcached bumped from ^0.47.0 to ^0.48.0 + * @opentelemetry/instrumentation-mongodb bumped from ^0.56.0 to ^0.57.0 + * @opentelemetry/instrumentation-mongoose bumped from ^0.50.0 to ^0.51.0 + * @opentelemetry/instrumentation-mysql bumped from ^0.49.0 to ^0.50.0 + * @opentelemetry/instrumentation-mysql2 bumped from ^0.50.0 to ^0.51.0 + * @opentelemetry/instrumentation-nestjs-core bumped from ^0.49.0 to ^0.50.0 + * @opentelemetry/instrumentation-net bumped from ^0.47.0 to ^0.48.0 + * @opentelemetry/instrumentation-oracledb bumped from ^0.29.0 to ^0.30.0 + * @opentelemetry/instrumentation-pg bumped from ^0.56.1 to ^0.57.0 + * @opentelemetry/instrumentation-pino bumped from ^0.50.1 to ^0.51.0 + * @opentelemetry/instrumentation-redis bumped from ^0.52.0 to ^0.53.0 + * @opentelemetry/instrumentation-restify bumped from ^0.49.0 to ^0.50.0 + * @opentelemetry/instrumentation-router bumped from ^0.48.0 to ^0.49.0 + * @opentelemetry/instrumentation-runtime-node bumped from ^0.17.1 to ^0.18.0 + * @opentelemetry/instrumentation-socket.io bumped from ^0.50.0 to ^0.51.0 + * @opentelemetry/instrumentation-tedious bumped from ^0.22.0 to ^0.23.0 + * @opentelemetry/instrumentation-undici bumped from ^0.14.0 to ^0.15.0 + * @opentelemetry/instrumentation-winston bumped from ^0.48.1 to ^0.49.0 + * @opentelemetry/resource-detector-alibaba-cloud bumped from ^0.31.3 to ^0.31.4 + * @opentelemetry/resource-detector-aws bumped from ^2.3.0 to ^2.4.0 + * @opentelemetry/resource-detector-azure bumped from ^0.10.0 to ^0.11.0 + * @opentelemetry/resource-detector-container bumped from ^0.7.3 to ^0.7.4 + * @opentelemetry/resource-detector-gcp bumped from ^0.37.0 to ^0.38.0 + +## [0.62.2](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-node-v0.62.1...auto-instrumentations-node-v0.62.2) (2025-09-01) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/instrumentation-aws-lambda bumped from ^0.54.0 to ^0.54.1 + * @opentelemetry/instrumentation-aws-sdk bumped from ^0.57.0 to ^0.58.0 + * @opentelemetry/instrumentation-cucumber bumped from ^0.18.1 to ^0.19.0 + * @opentelemetry/instrumentation-pg bumped from ^0.56.0 to ^0.56.1 + * @opentelemetry/instrumentation-pino bumped from ^0.50.0 to ^0.50.1 + * @opentelemetry/instrumentation-redis bumped from ^0.51.0 to ^0.52.0 + +## [0.62.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-node-v0.62.0...auto-instrumentations-node-v0.62.1) (2025-08-13) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/instrumentation-aws-sdk bumped from ^0.56.0 to ^0.57.0 + * @opentelemetry/instrumentation-cucumber bumped from ^0.18.0 to ^0.18.1 + * @opentelemetry/instrumentation-dataloader bumped from ^0.21.0 to ^0.21.1 + * @opentelemetry/instrumentation-kafkajs bumped from ^0.12.0 to ^0.13.0 + * @opentelemetry/instrumentation-mysql2 bumped from ^0.49.0 to ^0.50.0 + * @opentelemetry/instrumentation-pg bumped from ^0.55.0 to ^0.56.0 + * @opentelemetry/instrumentation-runtime-node bumped from ^0.17.0 to ^0.17.1 + * @opentelemetry/instrumentation-winston bumped from ^0.48.0 to ^0.48.1 + ## [0.62.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-node-v0.61.0...auto-instrumentations-node-v0.62.0) (2025-07-09) diff --git a/packages/auto-instrumentations-node/package.json b/packages/auto-instrumentations-node/package.json index e9fe0040f7..1eb1e1fc22 100644 --- a/packages/auto-instrumentations-node/package.json +++ b/packages/auto-instrumentations-node/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/auto-instrumentations-node", - "version": "0.62.0", + "version": "0.63.0", "description": "Metapackage which bundles opentelemetry node core and contrib instrumentations", "author": "OpenTelemetry Authors", "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/auto-instrumentations-node#readme", @@ -24,10 +24,10 @@ }, "scripts": { "clean": "rimraf build/*", - "setup:dev": "nx run-many -t compile -p @opentelemetry/auto-instrumentations-node", "compile": "tsc -p .", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/auto-instrumentations-node", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", "tdd": "yarn test -- --watch-extensions ts --watch", "test": "nyc mocha 'test/**/*.ts'", @@ -52,54 +52,54 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", - "@opentelemetry/instrumentation-amqplib": "^0.50.0", - "@opentelemetry/instrumentation-aws-lambda": "^0.54.0", - "@opentelemetry/instrumentation-aws-sdk": "^0.56.0", - "@opentelemetry/instrumentation-bunyan": "^0.49.0", - "@opentelemetry/instrumentation-cassandra-driver": "^0.49.0", - "@opentelemetry/instrumentation-connect": "^0.47.0", - "@opentelemetry/instrumentation-cucumber": "^0.18.0", - "@opentelemetry/instrumentation-dataloader": "^0.21.0", - "@opentelemetry/instrumentation-dns": "^0.47.0", - "@opentelemetry/instrumentation-express": "^0.52.0", - "@opentelemetry/instrumentation-fastify": "^0.48.0", - "@opentelemetry/instrumentation-fs": "^0.23.0", - "@opentelemetry/instrumentation-generic-pool": "^0.47.0", - "@opentelemetry/instrumentation-graphql": "^0.51.0", - "@opentelemetry/instrumentation-grpc": "^0.203.0", - "@opentelemetry/instrumentation-hapi": "^0.50.0", - "@opentelemetry/instrumentation-http": "^0.203.0", - "@opentelemetry/instrumentation-ioredis": "^0.51.0", - "@opentelemetry/instrumentation-kafkajs": "^0.12.0", - "@opentelemetry/instrumentation-knex": "^0.48.0", - "@opentelemetry/instrumentation-koa": "^0.51.0", - "@opentelemetry/instrumentation-lru-memoizer": "^0.48.0", - "@opentelemetry/instrumentation-memcached": "^0.47.0", - "@opentelemetry/instrumentation-mongodb": "^0.56.0", - "@opentelemetry/instrumentation-mongoose": "^0.50.0", - "@opentelemetry/instrumentation-mysql": "^0.49.0", - "@opentelemetry/instrumentation-mysql2": "^0.49.0", - "@opentelemetry/instrumentation-nestjs-core": "^0.49.0", - "@opentelemetry/instrumentation-net": "^0.47.0", - "@opentelemetry/instrumentation-oracledb": "^0.29.0", - "@opentelemetry/instrumentation-pg": "^0.55.0", - "@opentelemetry/instrumentation-pino": "^0.50.0", - "@opentelemetry/instrumentation-redis": "^0.51.0", - "@opentelemetry/instrumentation-restify": "^0.49.0", - "@opentelemetry/instrumentation-router": "^0.48.0", - "@opentelemetry/instrumentation-runtime-node": "^0.17.0", - "@opentelemetry/instrumentation-socket.io": "^0.50.0", - "@opentelemetry/instrumentation-tedious": "^0.22.0", - "@opentelemetry/instrumentation-undici": "^0.14.0", - "@opentelemetry/instrumentation-winston": "^0.48.0", - "@opentelemetry/resource-detector-alibaba-cloud": "^0.31.3", - "@opentelemetry/resource-detector-aws": "^2.3.0", - "@opentelemetry/resource-detector-azure": "^0.10.0", - "@opentelemetry/resource-detector-container": "^0.7.3", - "@opentelemetry/resource-detector-gcp": "^0.37.0", + "@opentelemetry/instrumentation": "^0.204.0", + "@opentelemetry/instrumentation-amqplib": "^0.51.0", + "@opentelemetry/instrumentation-aws-lambda": "^0.55.0", + "@opentelemetry/instrumentation-aws-sdk": "^0.59.0", + "@opentelemetry/instrumentation-bunyan": "^0.50.0", + "@opentelemetry/instrumentation-cassandra-driver": "^0.50.0", + "@opentelemetry/instrumentation-connect": "^0.48.0", + "@opentelemetry/instrumentation-cucumber": "^0.20.0", + "@opentelemetry/instrumentation-dataloader": "^0.22.0", + "@opentelemetry/instrumentation-dns": "^0.48.0", + "@opentelemetry/instrumentation-express": "^0.53.0", + "@opentelemetry/instrumentation-fastify": "^0.49.0", + "@opentelemetry/instrumentation-fs": "^0.24.0", + "@opentelemetry/instrumentation-generic-pool": "^0.48.0", + "@opentelemetry/instrumentation-graphql": "^0.52.0", + "@opentelemetry/instrumentation-grpc": "^0.204.0", + "@opentelemetry/instrumentation-hapi": "^0.51.0", + "@opentelemetry/instrumentation-http": "^0.204.0", + "@opentelemetry/instrumentation-ioredis": "^0.52.0", + "@opentelemetry/instrumentation-kafkajs": "^0.14.0", + "@opentelemetry/instrumentation-knex": "^0.49.0", + "@opentelemetry/instrumentation-koa": "^0.52.0", + "@opentelemetry/instrumentation-lru-memoizer": "^0.49.0", + "@opentelemetry/instrumentation-memcached": "^0.48.0", + "@opentelemetry/instrumentation-mongodb": "^0.57.0", + "@opentelemetry/instrumentation-mongoose": "^0.51.0", + "@opentelemetry/instrumentation-mysql": "^0.50.0", + "@opentelemetry/instrumentation-mysql2": "^0.51.0", + "@opentelemetry/instrumentation-nestjs-core": "^0.50.0", + "@opentelemetry/instrumentation-net": "^0.48.0", + "@opentelemetry/instrumentation-oracledb": "^0.30.0", + "@opentelemetry/instrumentation-pg": "^0.57.0", + "@opentelemetry/instrumentation-pino": "^0.51.0", + "@opentelemetry/instrumentation-redis": "^0.53.0", + "@opentelemetry/instrumentation-restify": "^0.50.0", + "@opentelemetry/instrumentation-router": "^0.49.0", + "@opentelemetry/instrumentation-runtime-node": "^0.18.0", + "@opentelemetry/instrumentation-socket.io": "^0.51.0", + "@opentelemetry/instrumentation-tedious": "^0.23.0", + "@opentelemetry/instrumentation-undici": "^0.15.0", + "@opentelemetry/instrumentation-winston": "^0.49.0", + "@opentelemetry/resource-detector-alibaba-cloud": "^0.31.4", + "@opentelemetry/resource-detector-aws": "^2.4.0", + "@opentelemetry/resource-detector-azure": "^0.11.0", + "@opentelemetry/resource-detector-container": "^0.7.4", + "@opentelemetry/resource-detector-gcp": "^0.38.0", "@opentelemetry/resources": "^2.0.0", - "@opentelemetry/sdk-node": "^0.203.0" + "@opentelemetry/sdk-node": "^0.204.0" }, "files": [ "build/src/**/*.js", diff --git a/packages/auto-instrumentations-node/test/test-app/app.js b/packages/auto-instrumentations-node/test/test-app/app.js index 1057acbce3..7a5ea6bf23 100644 --- a/packages/auto-instrumentations-node/test/test-app/app.js +++ b/packages/auto-instrumentations-node/test/test-app/app.js @@ -21,7 +21,7 @@ const options = { hostname: 'example.com', port: 80, path: '/', - method: 'GET' + method: 'GET', }; const req = http.request(options); diff --git a/packages/auto-instrumentations-web/CHANGELOG.md b/packages/auto-instrumentations-web/CHANGELOG.md index 958f864e3a..6a88131bc8 100644 --- a/packages/auto-instrumentations-web/CHANGELOG.md +++ b/packages/auto-instrumentations-web/CHANGELOG.md @@ -1,5 +1,34 @@ # Changelog +## [0.50.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-web-v0.49.1...auto-instrumentations-web-v0.50.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/instrumentation-document-load bumped from ^0.48.0 to ^0.49.0 + * @opentelemetry/instrumentation-user-interaction bumped from ^0.48.1 to ^0.49.0 + +## [0.49.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-web-v0.49.0...auto-instrumentations-web-v0.49.1) (2025-09-01) + + +### Bug Fixes + +* **deps:** update all patch versions ([#2948](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2948)) ([5836d7a](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/5836d7ab3244adef62b715ef22a26b54dba6719b)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/instrumentation-user-interaction bumped from ^0.48.0 to ^0.48.1 + ## [0.49.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/auto-instrumentations-web-v0.48.1...auto-instrumentations-web-v0.49.0) (2025-07-09) diff --git a/packages/auto-instrumentations-web/karma.conf.js b/packages/auto-instrumentations-web/karma.conf.js index edcd9f055f..25e450db5d 100644 --- a/packages/auto-instrumentations-web/karma.conf.js +++ b/packages/auto-instrumentations-web/karma.conf.js @@ -1,11 +1,11 @@ -/*! - * Copyright 2020, OpenTelemetry Authors +/* + * Copyright The OpenTelemetry Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -17,8 +17,10 @@ const karmaWebpackConfig = require('../../karma.webpack'); const karmaBaseConfig = require('../../karma.base'); -module.exports = (config) => { - config.set(Object.assign({}, karmaBaseConfig, { - webpack: karmaWebpackConfig - })) +module.exports = config => { + config.set( + Object.assign({}, karmaBaseConfig, { + webpack: karmaWebpackConfig, + }) + ); }; diff --git a/packages/auto-instrumentations-web/package.json b/packages/auto-instrumentations-web/package.json index 4f2c222667..4c138074aa 100644 --- a/packages/auto-instrumentations-web/package.json +++ b/packages/auto-instrumentations-web/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/auto-instrumentations-web", - "version": "0.49.0", + "version": "0.50.0", "description": "Metapackage which bundles opentelemetry node core and contrib instrumentations", "author": "OpenTelemetry Authors", "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/auto-instrumentations-web#readme", @@ -22,10 +22,10 @@ }, "scripts": { "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "setup:dev": "nx run-many -t compile -p @opentelemetry/auto-instrumentations-web", "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/auto-instrumentations-web", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", "test:browser": "nyc karma start --single-run", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json" @@ -57,18 +57,18 @@ "nyc": "17.1.0", "rimraf": "5.0.10", "sinon": "15.1.2", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", "webpack-merge": "5.10.0" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", - "@opentelemetry/instrumentation-document-load": "^0.48.0", - "@opentelemetry/instrumentation-fetch": "^0.203.0", - "@opentelemetry/instrumentation-user-interaction": "^0.48.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0", + "@opentelemetry/instrumentation-document-load": "^0.49.0", + "@opentelemetry/instrumentation-fetch": "^0.204.0", + "@opentelemetry/instrumentation-user-interaction": "^0.49.0", + "@opentelemetry/instrumentation-xml-http-request": "^0.204.0" }, "files": [ "build/src/**/*.js", diff --git a/packages/baggage-log-record-processor/.eslintrc.js b/packages/baggage-log-record-processor/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/baggage-log-record-processor/.eslintrc.js +++ b/packages/baggage-log-record-processor/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/baggage-log-record-processor/CHANGELOG.md b/packages/baggage-log-record-processor/CHANGELOG.md index b10356b13c..f6d74ee3b0 100644 --- a/packages/baggage-log-record-processor/CHANGELOG.md +++ b/packages/baggage-log-record-processor/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.5.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/baggage-log-record-processor-v0.4.0...baggage-log-record-processor-v0.5.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + ## [0.4.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/baggage-log-record-processor-v0.3.0...baggage-log-record-processor-v0.4.0) (2025-07-09) diff --git a/packages/baggage-log-record-processor/package.json b/packages/baggage-log-record-processor/package.json index e278975097..077b779cdb 100644 --- a/packages/baggage-log-record-processor/package.json +++ b/packages/baggage-log-record-processor/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/baggage-log-record-processor", - "version": "0.4.0", + "version": "0.5.0", "description": "OpenTelemetry Baggage Log Record Processor", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -11,10 +11,10 @@ }, "scripts": { "clean": "rimraf build/*", - "setup:dev": "nx run-many -t compile -p @opentelemetry/baggage-log-record-processor", "compile": "tsc -p .", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/baggage-log-record-processor", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prewatch": "npm run precompile", "prepublishOnly": "npm run compile", "tdd": "npm run test -- --watch-extensions ts --watch", @@ -46,7 +46,7 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/sdk-logs": "^0.203.0" + "@opentelemetry/sdk-logs": "^0.204.0" }, "devDependencies": { "@opentelemetry/api": "^1.0.0", diff --git a/packages/baggage-span-processor/.eslintrc.js b/packages/baggage-span-processor/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/baggage-span-processor/.eslintrc.js +++ b/packages/baggage-span-processor/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/baggage-span-processor/package.json b/packages/baggage-span-processor/package.json index eb29241698..3e0caa8642 100644 --- a/packages/baggage-span-processor/package.json +++ b/packages/baggage-span-processor/package.json @@ -11,10 +11,10 @@ }, "scripts": { "clean": "rimraf build/*", - "setup:dev": "nx run-many -t compile -p @opentelemetry/baggage-span-processor", "compile": "tsc -p .", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/baggage-span-processor", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", "tdd": "npm run test -- --watch-extensions ts --watch", "test": "nyc mocha test/**/*.test.ts", diff --git a/packages/contrib-test-utils/.eslintrc.js b/packages/contrib-test-utils/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/contrib-test-utils/.eslintrc.js +++ b/packages/contrib-test-utils/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/contrib-test-utils/CHANGELOG.md b/packages/contrib-test-utils/CHANGELOG.md index 598da49755..d53cafee8e 100644 --- a/packages/contrib-test-utils/CHANGELOG.md +++ b/packages/contrib-test-utils/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.50.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/contrib-test-utils-v0.49.0...contrib-test-utils-v0.50.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + ## [0.49.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/contrib-test-utils-v0.48.0...contrib-test-utils-v0.49.0) (2025-07-09) diff --git a/packages/contrib-test-utils/package.json b/packages/contrib-test-utils/package.json index 9432b23d54..82fa9285fd 100644 --- a/packages/contrib-test-utils/package.json +++ b/packages/contrib-test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/contrib-test-utils", - "version": "0.49.0", + "version": "0.50.0", "description": "Test utilities for opentelemetry components", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -8,10 +8,10 @@ "access": "public" }, "scripts": { - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "setup:dev": "nx run-many -t compile -p @opentelemetry/contrib-test-utils", "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/contrib-test-utils", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", "watch": "tsc -w" }, @@ -49,10 +49,10 @@ "dependencies": { "@opentelemetry/core": "^2.0.0", "@opentelemetry/exporter-jaeger": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/resources": "^2.0.0", "@opentelemetry/sdk-metrics": "^2.0.0", - "@opentelemetry/sdk-node": "^0.203.0", + "@opentelemetry/sdk-node": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0" diff --git a/packages/contrib-test-utils/src/index.ts b/packages/contrib-test-utils/src/index.ts index 6853e6970c..005d2c9f1a 100644 --- a/packages/contrib-test-utils/src/index.ts +++ b/packages/contrib-test-utils/src/index.ts @@ -34,10 +34,8 @@ export type { TestSpan, RunTestFixtureOptions } from './test-fixtures'; export { assertPropagation, assertSpan, - cleanUpDocker, getPackageVersion, initMeterProvider, - startDocker, TestMetricReader, } from './test-utils'; export type { TimedEvent } from './test-utils'; diff --git a/packages/contrib-test-utils/src/test-utils.ts b/packages/contrib-test-utils/src/test-utils.ts index fdcc0b6e4a..56a9bafbe5 100644 --- a/packages/contrib-test-utils/src/test-utils.ts +++ b/packages/contrib-test-utils/src/test-utils.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import * as childProcess from 'child_process'; import { HrTime, Span, @@ -33,62 +32,6 @@ import * as path from 'path'; import * as fs from 'fs'; import { InstrumentationBase } from '@opentelemetry/instrumentation'; -const dockerRunCmds = { - cassandra: - 'docker run --rm -d --name otel-cassandra -p 9042:9042 bitnami/cassandra:3', - memcached: - 'docker run --rm -d --name otel-memcached -p 11211:11211 memcached:1.6.9-alpine', - mssql: - 'docker run --rm -d --name otel-mssql -p 1433:1433 -e MSSQL_SA_PASSWORD=mssql_passw0rd -e ACCEPT_EULA=Y mcr.microsoft.com/mssql/server:2022-latest', - mysql: - 'docker run --rm -d --name otel-mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=rootpw -e MYSQL_DATABASE=test_db -e MYSQL_USER=otel -e MYSQL_PASSWORD=secret mysql:5.7 --log_output=TABLE --general_log=ON', - oracledb: - 'docker run --rm -d --name otel-oracledb -p 1521:1521 -e ORACLE_PASSWORD=oracle -e APP_USER=otel -e APP_USER_PASSWORD=secret gvenzl/oracle-free:slim', - postgres: - 'docker run --rm -d --name otel-postgres -p 54320:5432 -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=otel_pg_database postgres:16-alpine', - redis: 'docker run --rm -d --name otel-redis -p 63790:6379 redis:alpine', -}; - -export function startDocker(db: keyof typeof dockerRunCmds) { - const tasks = [run(dockerRunCmds[db])]; - - for (let i = 0; i < tasks.length; i++) { - const task = tasks[i]; - if (task && task.code !== 0) { - console.error('Failed to start container!'); - console.error(task.output); - return false; - } - } - return true; -} - -export function cleanUpDocker(db: keyof typeof dockerRunCmds) { - run(`docker stop otel-${db}`); -} - -function run(cmd: string) { - try { - const proc = childProcess.spawnSync(cmd, { - shell: true, - }); - const output = Buffer.concat( - proc.output.filter(c => c) as Buffer[] - ).toString('utf8'); - if (proc.status !== 0) { - console.error('Failed run command:', cmd); - console.error(output); - } - return { - code: proc.status, - output, - }; - } catch (e) { - console.log(e); - return; - } -} - export const assertSpan = ( span: ReadableSpan, kind: SpanKind, diff --git a/packages/host-metrics/.eslintrc.js b/packages/host-metrics/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/host-metrics/.eslintrc.js +++ b/packages/host-metrics/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/host-metrics/package.json b/packages/host-metrics/package.json index 1d93e5723b..93b20b22b9 100644 --- a/packages/host-metrics/package.json +++ b/packages/host-metrics/package.json @@ -11,10 +11,10 @@ }, "scripts": { "clean": "rimraf build/*", - "setup:dev": "nx run-many -t compile -p @opentelemetry/host-metrics", "compile": "tsc -p .", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/host-metrics", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", "tdd": "npm run test -- --watch-extensions ts --watch", "test": "nyc mocha test/**/*.test.ts", diff --git a/packages/id-generator-aws-xray/.eslintrc.js b/packages/id-generator-aws-xray/.eslintrc.js index 9dfe62f9b8..dd021c00fb 100644 --- a/packages/id-generator-aws-xray/.eslintrc.js +++ b/packages/id-generator-aws-xray/.eslintrc.js @@ -1,9 +1,24 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "commonjs": true, - "node": true, - "browser": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + commonjs: true, + node: true, + browser: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/id-generator-aws-xray/CHANGELOG.md b/packages/id-generator-aws-xray/CHANGELOG.md index f81fc1a14f..f2e3874096 100644 --- a/packages/id-generator-aws-xray/CHANGELOG.md +++ b/packages/id-generator-aws-xray/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [2.0.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/id-generator-aws-xray-v2.0.0...id-generator-aws-xray-v2.0.1) (2025-09-01) + + +### Bug Fixes + +* **deps:** update all patch versions ([#2948](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2948)) ([5836d7a](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/5836d7ab3244adef62b715ef22a26b54dba6719b)) + ## [2.0.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/id-generator-aws-xray-v1.2.3...id-generator-aws-xray-v2.0.0) (2025-03-18) diff --git a/packages/id-generator-aws-xray/karma.conf.js b/packages/id-generator-aws-xray/karma.conf.js index f1a1f3a7e8..25e450db5d 100644 --- a/packages/id-generator-aws-xray/karma.conf.js +++ b/packages/id-generator-aws-xray/karma.conf.js @@ -1,11 +1,11 @@ -/*! +/* * Copyright The OpenTelemetry Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/packages/id-generator-aws-xray/package.json b/packages/id-generator-aws-xray/package.json index 0b8aac94ab..6e53d4f281 100644 --- a/packages/id-generator-aws-xray/package.json +++ b/packages/id-generator-aws-xray/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/id-generator-aws-xray", - "version": "2.0.0", + "version": "2.0.1", "description": "AWS X-Ray ID generator for OpenTelemetry", "main": "build/src/index.js", "publishConfig": { @@ -19,13 +19,13 @@ "directory": "packages/id-generator-aws-xray" }, "scripts": { - "setup:dev": "nx run-many -t compile -p @opentelemetry/id-generator-aws-xray", - "compile": "tsc --build tsconfig.json tsconfig.esm.json", "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json", + "compile": "tsc --build tsconfig.json tsconfig.esm.json", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/id-generator-aws-xray", "test": "nyc mocha test/**/*.test.ts", "test:browser": "nyc karma start --single-run", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json", "prepublishOnly": "npm run compile" }, @@ -73,7 +73,7 @@ "nyc": "17.1.0", "rimraf": "5.0.10", "sinon": "15.1.2", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", diff --git a/packages/instrumentation-amqplib/.eslintrc.js b/packages/instrumentation-amqplib/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-amqplib/.eslintrc.js +++ b/packages/instrumentation-amqplib/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-amqplib/CHANGELOG.md b/packages/instrumentation-amqplib/CHANGELOG.md index 2f3a14c3b2..0e57c6f592 100644 --- a/packages/instrumentation-amqplib/CHANGELOG.md +++ b/packages/instrumentation-amqplib/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.51.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-amqplib-v0.50.0...instrumentation-amqplib-v0.51.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + ## [0.50.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-amqplib-v0.49.0...instrumentation-amqplib-v0.50.0) (2025-07-09) diff --git a/packages/instrumentation-amqplib/package.json b/packages/instrumentation-amqplib/package.json index 9553ae6be0..f5b86e70ce 100644 --- a/packages/instrumentation-amqplib/package.json +++ b/packages/instrumentation-amqplib/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-amqplib", - "version": "0.50.0", + "version": "0.51.0", "description": "OpenTelemetry instrumentation for the `amqplib` messaging client for RabbitMQ", "keywords": [ "amqplib", @@ -31,36 +31,41 @@ }, "scripts": { "clean": "rimraf build/*", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-amqplib", "compile": "tsc -p .", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-amqplib", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", "tdd": "npm run test -- --watch-extensions ts --watch", - "test": "nyc mocha --require '@opentelemetry/contrib-test-utils' 'test/**/*.test.ts'", + "test": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' 'test/**/*.test.ts'", + "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm test", "test-all-versions": "tav", + "test-all-versions:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm run test-all-versions", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "test-services:start": "cd ../.. && npm run test-services:start rabbitmq", + "test-services:stop": "cd ../.. && npm run test-services:stop rabbitmq", "version:update": "node ../../scripts/version-update.js", - "watch": "tsc -w", - "test:docker:run": "docker run -d --hostname demo-amqplib-rabbit --name amqplib-unittests -p 22221:5672 --env RABBITMQ_DEFAULT_USER=username --env RABBITMQ_DEFAULT_PASS=password rabbitmq:3" + "watch": "tsc -w" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" }, "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@types/amqplib": "^0.5.17", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@types/amqplib": "^0.10.7", "@types/lodash": "4.14.199", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", "amqplib": "0.8.0", + "cross-env": "7.0.3", "expect": "29.2.0", "lodash": "4.17.21", "nyc": "17.1.0", diff --git a/packages/instrumentation-amqplib/src/amqplib.ts b/packages/instrumentation-amqplib/src/amqplib.ts index bcdf9c7acb..886467f326 100644 --- a/packages/instrumentation-amqplib/src/amqplib.ts +++ b/packages/instrumentation-amqplib/src/amqplib.ts @@ -65,7 +65,9 @@ import { CONNECTION_ATTRIBUTES, getConnectionAttributesFromServer, getConnectionAttributesFromUrl, + InstrumentationConnection, InstrumentationConsumeChannel, + InstrumentationConsumeMessage, InstrumentationMessage, InstrumentationPublishChannel, isConfirmChannelTracing, @@ -253,18 +255,11 @@ export class AmqplibInstrumentation extends InstrumentationBase { const product = conn.serverProperties.product?.toLowerCase?.(); if (product) { diff --git a/packages/instrumentation-amqplib/test/amqplib-promise.test.ts b/packages/instrumentation-amqplib/test/amqplib-promise.test.ts index bd9277b995..edbe71b4c2 100644 --- a/packages/instrumentation-amqplib/test/amqplib-promise.test.ts +++ b/packages/instrumentation-amqplib/test/amqplib-promise.test.ts @@ -68,7 +68,7 @@ const CHANNEL_CLOSED_IN_TEST = Symbol( ); describe('amqplib instrumentation promise model', () => { - let conn: amqp.Connection; + let conn: amqp.ChannelModel; before(async function () { if (!shouldTest) { this.skip(); diff --git a/packages/instrumentation-amqplib/test/utils.test.ts b/packages/instrumentation-amqplib/test/utils.test.ts index 6369398969..9e538942ec 100644 --- a/packages/instrumentation-amqplib/test/utils.test.ts +++ b/packages/instrumentation-amqplib/test/utils.test.ts @@ -33,7 +33,7 @@ import { rabbitMqUrl } from './config'; describe('utils', () => { describe('getConnectionAttributesFromServer', () => { - let conn: amqp.Connection; + let conn: amqp.ChannelModel; before(async function () { if (!shouldTest) { this.skip(); diff --git a/packages/instrumentation-aws-lambda/.eslintrc.js b/packages/instrumentation-aws-lambda/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-aws-lambda/.eslintrc.js +++ b/packages/instrumentation-aws-lambda/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-aws-lambda/CHANGELOG.md b/packages/instrumentation-aws-lambda/CHANGELOG.md index 0f2a739572..5eaaa5fe43 100644 --- a/packages/instrumentation-aws-lambda/CHANGELOG.md +++ b/packages/instrumentation-aws-lambda/CHANGELOG.md @@ -1,5 +1,27 @@ # Changelog +## [0.55.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-aws-lambda-v0.54.1...instrumentation-aws-lambda-v0.55.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + +## [0.54.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-aws-lambda-v0.54.0...instrumentation-aws-lambda-v0.54.1) (2025-09-01) + + +### Bug Fixes + +* **deps:** update all patch versions ([#2948](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2948)) ([5836d7a](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/5836d7ab3244adef62b715ef22a26b54dba6719b)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/propagator-aws-xray bumped from ^2.1.0 to ^2.1.1 + * @opentelemetry/propagator-aws-xray-lambda bumped from ^0.55.0 to ^0.55.1 + ## [0.54.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-aws-lambda-v0.53.1...instrumentation-aws-lambda-v0.54.0) (2025-07-09) diff --git a/packages/instrumentation-aws-lambda/package.json b/packages/instrumentation-aws-lambda/package.json index 20234eaf65..2a788df9b3 100644 --- a/packages/instrumentation-aws-lambda/package.json +++ b/packages/instrumentation-aws-lambda/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-aws-lambda", - "version": "0.54.0", + "version": "0.55.0", "description": "OpenTelemetry instrumentation for AWS Lambda function invocations", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,16 +10,17 @@ "directory": "packages/instrumentation-aws-lambda" }, "scripts": { - "test": "nyc mocha 'test/**/*.test.ts'", - "tdd": "npm run test -- --watch-extensions ts --watch", "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-aws-lambda", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", - "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-aws-lambda", - "compile": "tsc -p ." + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "version:update": "node ../../scripts/version-update.js" }, "keywords": [ "aws-lambda", @@ -48,8 +49,8 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/propagator-aws-xray": "^2.1.0", - "@opentelemetry/propagator-aws-xray-lambda": "^0.55.0", + "@opentelemetry/propagator-aws-xray": "^2.1.1", + "@opentelemetry/propagator-aws-xray-lambda": "^0.55.1", "@opentelemetry/sdk-metrics": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", @@ -60,9 +61,9 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0", - "@types/aws-lambda": "8.10.150" + "@types/aws-lambda": "8.10.152" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-aws-lambda#readme" } diff --git a/packages/instrumentation-aws-lambda/test/lambda-test/async.js b/packages/instrumentation-aws-lambda/test/lambda-test/async.js index c6c2e529cf..400fa7ed94 100644 --- a/packages/instrumentation-aws-lambda/test/lambda-test/async.js +++ b/packages/instrumentation-aws-lambda/test/lambda-test/async.js @@ -21,17 +21,19 @@ exports.handler = async function (event, context) { exports.error = async function (event, context) { throw new Error('handler error'); -} +}; exports.stringerror = async function (event, context) { throw 'handler error'; -} +}; exports.context = async function (event, context) { return api.trace.getSpan(api.context.active()).spanContext().traceId; }; exports.handler_return_baggage = async function (event, context) { - const [baggageEntryKey, baggageEntryValue] = api.propagation.getBaggage(api.context.active()).getAllEntries()[0]; + const [baggageEntryKey, baggageEntryValue] = api.propagation + .getBaggage(api.context.active()) + .getAllEntries()[0]; return `${baggageEntryKey}=${baggageEntryValue.value}`; -} +}; diff --git a/packages/instrumentation-aws-lambda/test/lambda-test/sync.js b/packages/instrumentation-aws-lambda/test/lambda-test/sync.js index e9f38d8ea7..521c5f6ea4 100644 --- a/packages/instrumentation-aws-lambda/test/lambda-test/sync.js +++ b/packages/instrumentation-aws-lambda/test/lambda-test/sync.js @@ -21,19 +21,19 @@ exports.handler = function (event, context, callback) { exports.error = function (event, context, callback) { throw new Error('handler error'); -} +}; exports.callbackerror = function (event, context, callback) { callback(new Error('handler error')); -} +}; exports.stringerror = function (event, context, callback) { throw 'handler error'; -} +}; exports.callbackstringerror = function (event, context, callback) { callback('handler error'); -} +}; exports.context = function (event, context, callback) { callback(null, api.trace.getSpan(api.context.active()).spanContext().traceId); diff --git a/packages/instrumentation-aws-sdk/.eslintrc.js b/packages/instrumentation-aws-sdk/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-aws-sdk/.eslintrc.js +++ b/packages/instrumentation-aws-sdk/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-aws-sdk/CHANGELOG.md b/packages/instrumentation-aws-sdk/CHANGELOG.md index 67db2958ca..022e382879 100644 --- a/packages/instrumentation-aws-sdk/CHANGELOG.md +++ b/packages/instrumentation-aws-sdk/CHANGELOG.md @@ -1,5 +1,44 @@ # Changelog +## [0.59.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-aws-sdk-v0.58.0...instrumentation-aws-sdk-v0.59.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + +## [0.58.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-aws-sdk-v0.57.0...instrumentation-aws-sdk-v0.58.0) (2025-09-01) + + +### ⚠ BREAKING CHANGES + +* **aws-sdk:** SQS receive: use span links instead of processing spans ([#2345](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2345)) + +### Features + +* **aws-sdk:** SQS receive: use span links instead of processing spans ([#2345](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2345)) ([bd9e782](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/bd9e782e06b17f471b12f8ad54c18cf5b27e35a9)) +* **instrumentation-aws-sdk:** Add Semantic Convention Support for Amazon Secrets Manager Attributes ([#2971](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2971)) ([0c59990](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/0c5999052e01d3b14d797e22361d495d7e4eeff1)) +* **instrumentation-aws-sdk:** Add semconv attributes for AWS Step Functions ([#2977](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2977)) ([c7a91fc](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/c7a91fc64d0ac819e8df7c096a25af60fd7c2f7e)) + + +### Bug Fixes + +* **deps:** update all patch versions ([#2948](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2948)) ([5836d7a](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/5836d7ab3244adef62b715ef22a26b54dba6719b)) + +## [0.57.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-aws-sdk-v0.56.0...instrumentation-aws-sdk-v0.57.0) (2025-08-13) + + +### Features + +* **aws-sdk:** add exception hook ([#2398](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2398)) ([bf302a5](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/bf302a5716b79f28690dd82eb5ef50eae0a557fd)) + ## [0.56.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-aws-sdk-v0.55.0...instrumentation-aws-sdk-v0.56.0) (2025-07-09) diff --git a/packages/instrumentation-aws-sdk/README.md b/packages/instrumentation-aws-sdk/README.md index 52a23efcc1..d8ad71041c 100644 --- a/packages/instrumentation-aws-sdk/README.md +++ b/packages/instrumentation-aws-sdk/README.md @@ -52,7 +52,7 @@ aws-sdk instrumentation has few options available to choose from. You can set th | ----------------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `preRequestHook` | `AwsSdkRequestCustomAttributeFunction` | Hook called before request send, which allow to add custom attributes to span. | | `responseHook` | `AwsSdkResponseCustomAttributeFunction` | Hook for adding custom attributes when response is received from aws. | -| `sqsProcessHook` | `AwsSdkSqsProcessCustomAttributeFunction` | Hook called after starting sqs `process` span (for each sqs received message), which allow to add custom attributes to it. | +| `exceptionHook` | `AwsSdkExceptionCustomAttributeFunction` | Hook for adding custom attributes when exception is received from aws. | | `suppressInternalInstrumentation` | `boolean` | Most aws operation use http requests under the hood. Set this to `true` to hide all underlying http spans. | | `sqsExtractContextPropagationFromPayload` | `boolean` | Will parse and extract context propagation headers from SQS Payload, false by default. [When should it be used?](./doc/sns.md#integration-with-sqs) | | `dynamoDBStatementSerializer` | `AwsSdkDynamoDBStatementSerializer` | AWS SDK instrumentation will serialize DynamoDB commands to the `db.statement` attribute using the specified function. Defaults to using a serializer that returns `undefined`. | diff --git a/packages/instrumentation-aws-sdk/doc/sqs.md b/packages/instrumentation-aws-sdk/doc/sqs.md index 5631a8a472..eca579424b 100644 --- a/packages/instrumentation-aws-sdk/doc/sqs.md +++ b/packages/instrumentation-aws-sdk/doc/sqs.md @@ -1,6 +1,6 @@ # SQS -SQS is amazon's managed message queue. Thus, it should follow the [OpenTelemetry specification for Messaging systems](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/messaging.md). +SQS is Amazon's managed message queue. Thus, it should follow the [OpenTelemetry specification for Messaging systems](https://opentelemetry.io/docs/specs/semconv/messaging/messaging-spans/). ## Specific trace semantic @@ -8,61 +8,12 @@ The following methods are automatically enhanced: ### sendMessage / sendMessageBatch -- [Messaging Attributes](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/messaging.md#messaging-attributes) are added by this instrumentation according to the spec. +- [Messaging Attributes](https://opentelemetry.io/docs/specs/semconv/messaging/messaging-spans/#messaging-attributes) are added by this instrumentation according to the spec. - OpenTelemetry trace context is injected as SQS MessageAttributes, so the service receiving the message can link cascading spans to the trace which created the message. ### receiveMessage -- [Messaging Attributes](https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/semantic_conventions/messaging.md#messaging-attributes) are added by this instrumentation according to the spec. -- Additional "processing spans" are created for each message received by the application. - If an application invoked `receiveMessage`, and received a 10 messages batch, a single `messaging.operation` = `receive` span will be created for the `receiveMessage` operation, and 10 `messaging.operation` = `process` spans will be created, one for each message. - Those processing spans are created by the library. This behavior is partially implemented, [See discussion below](#processing-spans). -- Sets the inter process context correctly, so that additional spans created through the process will be linked to parent spans correctly. - This behavior is partially implemented, [See discussion below](#processing-spans). +- [Messaging Attributes](https://opentelemetry.io/docs/specs/semconv/messaging/messaging-spans/#messaging-attributes) are added by this instrumentation according to the spec. +- Sets the inter process context correctly, so that additional spans created through the process will be linked to parent spans correctly. + When multiple messages are received, the instrumentation will attach spank links to the receiving span containing the trace context and message ID of each message. - Extract trace context from SQS MessageAttributes, and set span's `parent` and `links` correctly according to the spec. - -#### Processing Spans - -See GH issue [here](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/707) - -According to OpenTelemetry specification (and to reasonable expectation for trace structure), user of this library would expect to see one span for the operation of receiving messages batch from SQS, and then, **for each message**, a span with it's own sub-tree for the processing of this specific message. - -For example, if a `receiveMessages` returned 2 messages: - -- `msg1` resulting in storing something to a DB. -- `msg2` resulting in calling an external HTTP endpoint. - -This will result in a creating a DB span that would be the child of `msg1` process span, and an HTTP span that would be the child of `msg2` process span (in opposed to mixing all those operations under the single `receive` span, or start a new trace for each of them). - -Unfortunately, this is not so easy to implement in JS: - -1. The SDK is calling a single callback for the messages batch, and it's not straightforward to understand when each individual message processing starts and ends (and set the context correctly for cascading spans). -2. If async/await is used, context can be lost when returning data from async functions, for example: - -```js -async function asyncRecv() { - const data = await sqs.receiveMessage(recvParams).promise(); - // context of receiveMessage is set here - return data; -} - -async function poll() { - const result = await asyncRecv(); - // context is lost when asyncRecv returns. following spans are created with root context. - await Promise.all( - result.Messages.map((message) => this.processMessage(message)) - ); -} -``` - -Current implementation partially solves this issue by patching the `map` \ `forEach` \ `Filter` functions on the `Messages` array of `receiveMessage` result. This handles issues like the one above, but will not handle situations where the processing is done in other patterns (multiple map\forEach calls, index access to the array, other array operations, etc). This is currently an open issue in the instrumentation. - -User can add custom attributes to the `process` span, by setting a function to `sqsProcessHook` in instrumentation config. For example: - -```js -awsInstrumentationConfig = { - sqsProcessHook: (span, message) => { - span.setAttribute("sqs.receipt_handle", message.params?.ReceiptHandle); - }, -}; -``` diff --git a/packages/instrumentation-aws-sdk/package.json b/packages/instrumentation-aws-sdk/package.json index f5d5623fe0..f5f0c295ad 100644 --- a/packages/instrumentation-aws-sdk/package.json +++ b/packages/instrumentation-aws-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-aws-sdk", - "version": "0.56.0", + "version": "0.59.0", "description": "OpenTelemetry instrumentation for `aws-sdk` and `@aws-sdk/client-*` clients for various AWS services", "keywords": [ "aws", @@ -32,15 +32,16 @@ }, "scripts": { "clean": "rimraf build/*", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-aws-sdk", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-aws-sdk", "compile": "tsc -p .", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", "tdd": "npm run test -- --watch-extensions ts --watch", - "test": "nyc mocha --require '@opentelemetry/contrib-test-utils' 'test/**/*.test.ts'", + "test": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' 'test/**/*.test.ts'", "test-all-versions": "tav", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", "version:update": "node ../../scripts/version-update.js", "watch": "tsc -w" }, @@ -49,8 +50,7 @@ }, "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", - "@opentelemetry/propagation-utils": "^0.31.3", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.34.0" }, "devDependencies": { @@ -59,13 +59,15 @@ "@aws-sdk/client-kinesis": "^3.85.0", "@aws-sdk/client-lambda": "^3.85.0", "@aws-sdk/client-s3": "^3.85.0", + "@aws-sdk/client-secrets-manager": "^3.85.0", + "@aws-sdk/client-sfn": "^3.85.0", "@aws-sdk/client-sns": "^3.85.0", "@aws-sdk/client-sqs": "^3.85.0", "@aws-sdk/types": "^3.370.0", "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", - "@smithy/node-http-handler": "2.4.0", + "@smithy/node-http-handler": "4.1.1", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", diff --git a/packages/instrumentation-aws-sdk/src/aws-sdk.ts b/packages/instrumentation-aws-sdk/src/aws-sdk.ts index 450c5c2f93..24c2757f96 100644 --- a/packages/instrumentation-aws-sdk/src/aws-sdk.ts +++ b/packages/instrumentation-aws-sdk/src/aws-sdk.ts @@ -233,6 +233,30 @@ export class AwsInstrumentation extends InstrumentationBase exceptionHook(span, requestInfo, err), + (e: Error | undefined) => { + if (e) + diag.error( + `${AwsInstrumentation.component} instrumentation: exceptionHook error`, + e + ); + }, + true + ); + } + private _getV3ConstructStackPatch( moduleVersion: string | undefined, original: (...args: unknown[]) => MiddlewareStack @@ -443,6 +467,11 @@ export class AwsInstrumentation extends InstrumentationBase { diff --git a/packages/instrumentation-aws-sdk/src/index.ts b/packages/instrumentation-aws-sdk/src/index.ts index 410c1c393d..0d7b67b1f8 100644 --- a/packages/instrumentation-aws-sdk/src/index.ts +++ b/packages/instrumentation-aws-sdk/src/index.ts @@ -21,8 +21,6 @@ export type { AwsSdkRequestHookInformation, AwsSdkResponseCustomAttributeFunction, AwsSdkResponseHookInformation, - AwsSdkSqsProcessCustomAttributeFunction, - AwsSdkSqsProcessHookInformation, CommandInput, NormalizedRequest, NormalizedResponse, diff --git a/packages/instrumentation-aws-sdk/src/semconv.ts b/packages/instrumentation-aws-sdk/src/semconv.ts index baf772142d..066d4eb52a 100644 --- a/packages/instrumentation-aws-sdk/src/semconv.ts +++ b/packages/instrumentation-aws-sdk/src/semconv.ts @@ -20,6 +20,45 @@ * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv */ +/** + * The ARN of the Secret stored in the Secrets Mangger + * + * @example arn:aws:secretsmanager:us-east-1:123456789012:secret:SecretName-6RandomCharacters + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_SECRETSMANAGER_SECRET_ARN = + 'aws.secretsmanager.secret.arn' as const; + +/** + * The ARN of the AWS SNS Topic. An Amazon SNS [topic](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) is a logical access point that acts as a communication channel. + * + * @example arn:aws:sns:us-east-1:123456789012:mystack-mytopic-NZJ5JSMVGFIE + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_SNS_TOPIC_ARN = 'aws.sns.topic.arn' as const; + +/** + * The ARN of the AWS Step Functions Activity. + * + * @example arn:aws:states:us-east-1:123456789012:activity:get-greeting + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_STEP_FUNCTIONS_ACTIVITY_ARN = + 'aws.step_functions.activity.arn' as const; + +/** + * The ARN of the AWS Step Functions State Machine. + * + * @example arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachine:1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN = + 'aws.step_functions.state_machine.arn' as const; + /** * The name of the operation being performed. * @@ -139,32 +178,84 @@ export const ATTR_GEN_AI_USAGE_INPUT_TOKENS = export const ATTR_GEN_AI_USAGE_OUTPUT_TOKENS = 'gen_ai.usage.output_tokens' as const; +/** + * The number of messages sent, received, or processed in the scope of the batching operation. + * + * @example 0 + * @example 1 + * @example 2 + * + * @note Instrumentations **SHOULD NOT** set `messaging.batch.message_count` on spans that operate with a single message. When a messaging client library supports both batch and single-message API for the same operation, instrumentations **SHOULD** use `messaging.batch.message_count` for batching APIs and **SHOULD NOT** use it for single-message APIs. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_BATCH_MESSAGE_COUNT = + 'messaging.batch.message_count' as const; + +/** + * The message destination name + * + * @example MyQueue + * @example MyTopic + * + * @note Destination name **SHOULD** uniquely identify a specific queue, topic or other entity within the broker. If + * the broker doesn't have such notion, the destination name **SHOULD** uniquely identify the broker. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_DESTINATION_NAME = + 'messaging.destination.name' as const; + +/** + * A value used by the messaging system as an identifier for the message, represented as a string. + * + * @example "452a7c7c7c7048c2f887f61572b18fc2" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_MESSAGE_ID = 'messaging.message.id' as const; + +/** + * A string identifying the type of the messaging operation. + * + * @note If a custom value is used, it **MUST** be of low cardinality. + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_MESSAGING_OPERATION_TYPE = + 'messaging.operation.type' as const; + /** * Enum value "chat" for attribute {@link ATTR_GEN_AI_OPERATION_NAME}. + * + * Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. */ export const GEN_AI_OPERATION_NAME_VALUE_CHAT = 'chat' as const; /** * Enum value "aws.bedrock" for attribute {@link ATTR_GEN_AI_SYSTEM}. + * + * AWS Bedrock + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. */ export const GEN_AI_SYSTEM_VALUE_AWS_BEDROCK = 'aws.bedrock' as const; /** * Enum value "input" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}. + * + * Input tokens (prompt, input, etc.) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. */ export const GEN_AI_TOKEN_TYPE_VALUE_INPUT = 'input' as const; /** * Enum value "output" for attribute {@link ATTR_GEN_AI_TOKEN_TYPE}. + * + * Output tokens (completion, response, etc.) + * + * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. */ export const GEN_AI_TOKEN_TYPE_VALUE_OUTPUT = 'output' as const; - -/** - * Originally from '@opentelemetry/semantic-conventions/incubating' - * https://github.com/open-telemetry/semantic-conventions/blob/main/docs/registry/attributes/aws.md#amazon-sns-attributes - * The ARN of the AWS SNS Topic. An Amazon SNS [topic](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html) - * is a logical access point that acts as a communication channel. - * @example arn:aws:sns:us-east-1:123456789012:mystack-mytopic-NZJ5JSMVGFIE - * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. - */ -export const ATTR_AWS_SNS_TOPIC_ARN = 'aws.sns.topic.arn' as const; diff --git a/packages/instrumentation-aws-sdk/src/services/ServicesExtensions.ts b/packages/instrumentation-aws-sdk/src/services/ServicesExtensions.ts index 50fb3508d3..6d32d23998 100644 --- a/packages/instrumentation-aws-sdk/src/services/ServicesExtensions.ts +++ b/packages/instrumentation-aws-sdk/src/services/ServicesExtensions.ts @@ -23,7 +23,9 @@ import { } from '../types'; import { BedrockRuntimeServiceExtension } from './bedrock-runtime'; import { DynamodbServiceExtension } from './dynamodb'; +import { SecretsManagerServiceExtension } from './secretsmanager'; import { SnsServiceExtension } from './sns'; +import { StepFunctionsServiceExtension } from './stepfunctions'; import { LambdaServiceExtension } from './lambda'; import { S3ServiceExtension } from './s3'; import { KinesisServiceExtension } from './kinesis'; @@ -32,6 +34,12 @@ export class ServicesExtensions implements ServiceExtension { services: Map = new Map(); constructor() { + this.registerServices(); + } + + private registerServices() { + this.services.set('SecretsManager', new SecretsManagerServiceExtension()); + this.services.set('SFN', new StepFunctionsServiceExtension()); this.services.set('SQS', new SqsServiceExtension()); this.services.set('SNS', new SnsServiceExtension()); this.services.set('DynamoDB', new DynamodbServiceExtension()); diff --git a/packages/instrumentation-aws-sdk/src/services/secretsmanager.ts b/packages/instrumentation-aws-sdk/src/services/secretsmanager.ts new file mode 100644 index 0000000000..52f45ad268 --- /dev/null +++ b/packages/instrumentation-aws-sdk/src/services/secretsmanager.ts @@ -0,0 +1,60 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Attributes, Span, SpanKind, Tracer } from '@opentelemetry/api'; +import { ATTR_AWS_SECRETSMANAGER_SECRET_ARN } from '../semconv'; +import { RequestMetadata, ServiceExtension } from './ServiceExtension'; +import { + NormalizedRequest, + NormalizedResponse, + AwsSdkInstrumentationConfig, +} from '../types'; + +export class SecretsManagerServiceExtension implements ServiceExtension { + requestPreSpanHook( + request: NormalizedRequest, + _config: AwsSdkInstrumentationConfig + ): RequestMetadata { + const secretId = request.commandInput?.SecretId; + const spanKind: SpanKind = SpanKind.CLIENT; + let spanName: string | undefined; + const spanAttributes: Attributes = {}; + if ( + typeof secretId === 'string' && + secretId.startsWith('arn:aws:secretsmanager:') + ) { + spanAttributes[ATTR_AWS_SECRETSMANAGER_SECRET_ARN] = secretId; + } + + return { + isIncoming: false, + spanAttributes, + spanKind, + spanName, + }; + } + + responseHook( + response: NormalizedResponse, + span: Span, + tracer: Tracer, + config: AwsSdkInstrumentationConfig + ): void { + const secretArn = response.data?.ARN; + if (secretArn) { + span.setAttribute(ATTR_AWS_SECRETSMANAGER_SECRET_ARN, secretArn); + } + } +} diff --git a/packages/instrumentation-aws-sdk/src/services/sqs.ts b/packages/instrumentation-aws-sdk/src/services/sqs.ts index 4e7d0c72b4..794bbd79db 100644 --- a/packages/instrumentation-aws-sdk/src/services/sqs.ts +++ b/packages/instrumentation-aws-sdk/src/services/sqs.ts @@ -19,11 +19,9 @@ import { Span, propagation, trace, - context, ROOT_CONTEXT, Attributes, } from '@opentelemetry/api'; -import { pubsubPropagation } from '@opentelemetry/propagation-utils'; import { RequestMetadata, ServiceExtension } from './ServiceExtension'; import type { SQS } from '../aws-sdk.types'; import { @@ -32,16 +30,15 @@ import { NormalizedResponse, } from '../types'; import { - MESSAGINGDESTINATIONKINDVALUES_QUEUE, - MESSAGINGOPERATIONVALUES_PROCESS, - MESSAGINGOPERATIONVALUES_RECEIVE, - SEMATTRS_MESSAGING_DESTINATION, - SEMATTRS_MESSAGING_DESTINATION_KIND, - SEMATTRS_MESSAGING_MESSAGE_ID, - SEMATTRS_MESSAGING_OPERATION, + ATTR_URL_FULL, SEMATTRS_MESSAGING_SYSTEM, - SEMATTRS_MESSAGING_URL, } from '@opentelemetry/semantic-conventions'; +import { + ATTR_MESSAGING_BATCH_MESSAGE_COUNT, + ATTR_MESSAGING_DESTINATION_NAME, + ATTR_MESSAGING_MESSAGE_ID, + ATTR_MESSAGING_OPERATION_TYPE, +} from '../semconv'; import { contextGetter, extractPropagationContext, @@ -60,11 +57,9 @@ export class SqsServiceExtension implements ServiceExtension { let spanName: string | undefined; const spanAttributes: Attributes = { - [SEMATTRS_MESSAGING_SYSTEM]: 'aws.sqs', - [SEMATTRS_MESSAGING_DESTINATION_KIND]: - MESSAGINGDESTINATIONKINDVALUES_QUEUE, - [SEMATTRS_MESSAGING_DESTINATION]: queueName, - [SEMATTRS_MESSAGING_URL]: queueUrl, + [SEMATTRS_MESSAGING_SYSTEM]: 'aws_sqs', + [ATTR_MESSAGING_DESTINATION_NAME]: queueName, + [ATTR_URL_FULL]: queueUrl, }; let isIncoming = false; @@ -75,8 +70,7 @@ export class SqsServiceExtension implements ServiceExtension { isIncoming = true; spanKind = SpanKind.CONSUMER; spanName = `${queueName} receive`; - spanAttributes[SEMATTRS_MESSAGING_OPERATION] = - MESSAGINGOPERATIONVALUES_RECEIVE; + spanAttributes[ATTR_MESSAGING_OPERATION_TYPE] = 'receive'; request.commandInput.MessageAttributeNames = addPropagationFieldsToAttributeNames( @@ -136,15 +130,12 @@ export class SqsServiceExtension implements ServiceExtension { responseHook = ( response: NormalizedResponse, span: Span, - tracer: Tracer, + _tracer: Tracer, config: AwsSdkInstrumentationConfig ) => { switch (response.request.commandName) { case 'SendMessage': - span.setAttribute( - SEMATTRS_MESSAGING_MESSAGE_ID, - response?.data?.MessageId - ); + span.setAttribute(ATTR_MESSAGING_MESSAGE_ID, response?.data?.MessageId); break; case 'SendMessageBatch': @@ -152,45 +143,30 @@ export class SqsServiceExtension implements ServiceExtension { break; case 'ReceiveMessage': { - const messages: SQS.Message[] = response?.data?.Messages; - if (messages) { - const queueUrl = this.extractQueueUrl(response.request.commandInput); - const queueName = this.extractQueueNameFromUrl(queueUrl); - - pubsubPropagation.patchMessagesArrayToStartProcessSpans({ - messages, - parentContext: trace.setSpan(context.active(), span), - tracer, - messageToSpanDetails: (message: SQS.Message) => ({ - name: queueName ?? 'unknown', - parentContext: propagation.extract( - ROOT_CONTEXT, - extractPropagationContext( - message, - config.sqsExtractContextPropagationFromPayload - ), - contextGetter - ), + const messages: SQS.Message[] = response?.data?.Messages || []; + + span.setAttribute(ATTR_MESSAGING_BATCH_MESSAGE_COUNT, messages.length); + + for (const message of messages) { + const propagatedContext = propagation.extract( + ROOT_CONTEXT, + extractPropagationContext( + message, + config.sqsExtractContextPropagationFromPayload + ), + contextGetter + ); + + const spanContext = trace.getSpanContext(propagatedContext); + + if (spanContext) { + span.addLink({ + context: spanContext, attributes: { - [SEMATTRS_MESSAGING_SYSTEM]: 'aws.sqs', - [SEMATTRS_MESSAGING_DESTINATION]: queueName, - [SEMATTRS_MESSAGING_DESTINATION_KIND]: - MESSAGINGDESTINATIONKINDVALUES_QUEUE, - [SEMATTRS_MESSAGING_MESSAGE_ID]: message.MessageId, - [SEMATTRS_MESSAGING_URL]: queueUrl, - [SEMATTRS_MESSAGING_OPERATION]: - MESSAGINGOPERATIONVALUES_PROCESS, + [ATTR_MESSAGING_MESSAGE_ID]: message.MessageId, }, - }), - processHook: (span: Span, message: SQS.Message) => - config.sqsProcessHook?.(span, { message }), - }); - - pubsubPropagation.patchArrayForProcessSpans( - messages, - tracer, - context.active() - ); + }); + } } break; } diff --git a/packages/instrumentation-aws-sdk/src/services/stepfunctions.ts b/packages/instrumentation-aws-sdk/src/services/stepfunctions.ts new file mode 100644 index 0000000000..6d47e763c0 --- /dev/null +++ b/packages/instrumentation-aws-sdk/src/services/stepfunctions.ts @@ -0,0 +1,49 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Attributes, SpanKind } from '@opentelemetry/api'; +import { + ATTR_AWS_STEP_FUNCTIONS_ACTIVITY_ARN, + ATTR_AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN, +} from '../semconv'; +import { RequestMetadata, ServiceExtension } from './ServiceExtension'; +import { NormalizedRequest, AwsSdkInstrumentationConfig } from '../types'; + +export class StepFunctionsServiceExtension implements ServiceExtension { + requestPreSpanHook( + request: NormalizedRequest, + _config: AwsSdkInstrumentationConfig + ): RequestMetadata { + const stateMachineArn = request.commandInput?.stateMachineArn; + const activityArn = request.commandInput?.activityArn; + const spanKind: SpanKind = SpanKind.CLIENT; + const spanAttributes: Attributes = {}; + + if (stateMachineArn) { + spanAttributes[ATTR_AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN] = + stateMachineArn; + } + + if (activityArn) { + spanAttributes[ATTR_AWS_STEP_FUNCTIONS_ACTIVITY_ARN] = activityArn; + } + + return { + isIncoming: false, + spanAttributes, + spanKind, + }; + } +} diff --git a/packages/instrumentation-aws-sdk/src/types.ts b/packages/instrumentation-aws-sdk/src/types.ts index 03c30ca4e0..649d73fb25 100644 --- a/packages/instrumentation-aws-sdk/src/types.ts +++ b/packages/instrumentation-aws-sdk/src/types.ts @@ -15,7 +15,6 @@ */ import { Span } from '@opentelemetry/api'; import { InstrumentationConfig } from '@opentelemetry/instrumentation'; -import { SQS } from './aws-sdk.types'; export type CommandInput = Record; @@ -48,6 +47,7 @@ export interface AwsSdkResponseHookInformation { moduleVersion?: string; response: NormalizedResponse; } + /** * span can be used to add custom attributes, or for any other need. * response is the object that is returned to the user calling the aws-sdk operation. @@ -57,11 +57,12 @@ export interface AwsSdkResponseCustomAttributeFunction { (span: Span, responseInfo: AwsSdkResponseHookInformation): void; } -export interface AwsSdkSqsProcessHookInformation { - message: SQS.Message; -} -export interface AwsSdkSqsProcessCustomAttributeFunction { - (span: Span, sqsProcessInfo: AwsSdkSqsProcessHookInformation): void; +/** + * span can be used to modify the status. + * As we have no response object, the request can be used to determine the failed aws-sdk operation. + */ +export interface AwsSdkExceptionCustomAttributeFunction { + (span: Span, requestInfo: AwsSdkRequestHookInformation, err: any): void; } export type AwsSdkDynamoDBStatementSerializer = ( @@ -76,8 +77,11 @@ export interface AwsSdkInstrumentationConfig extends InstrumentationConfig { /** hook for adding custom attributes when response is received from aws */ responseHook?: AwsSdkResponseCustomAttributeFunction; - /** hook for adding custom attribute when an sqs process span is started */ - sqsProcessHook?: AwsSdkSqsProcessCustomAttributeFunction; + /** + * Hook for adding custom attributes when exception is received from aws. + * This hook is only available with aws sdk v3 + */ + exceptionHook?: AwsSdkExceptionCustomAttributeFunction; /** custom serializer function for the db.statement attribute in DynamoDB spans */ dynamoDBStatementSerializer?: AwsSdkDynamoDBStatementSerializer; diff --git a/packages/instrumentation-aws-sdk/test/aws-sdk-v3-s3.test.ts b/packages/instrumentation-aws-sdk/test/aws-sdk-v3-s3.test.ts index 20ca3f0846..0ac617c825 100644 --- a/packages/instrumentation-aws-sdk/test/aws-sdk-v3-s3.test.ts +++ b/packages/instrumentation-aws-sdk/test/aws-sdk-v3-s3.test.ts @@ -270,5 +270,48 @@ describe('instrumentation-aws-sdk-v3 (client-s3)', () => { ); }); }); + + it('handle aws sdk exception', async () => { + instrumentation.disable(); + instrumentation.setConfig({ + exceptionHook: ( + span: Span, + requestInfo: AwsSdkRequestHookInformation, + err: any + ) => { + span.setAttribute( + 'attribute.from.exception.hook', + requestInfo.request.commandInput.Bucket + ); + span.setAttribute('error.from.exception.hook', err.name); + }, + suppressInternalInstrumentation: true, + }); + instrumentation.enable(); + + nock(`https://ot-demo-test.s3.${region}.amazonaws.com/`) + .put('/aws-ot-s3-test-object.txt?x-id=PutObject') + .reply( + 404, + fs.readFileSync('./test/mock-responses/s3-put-object.xml', 'utf8') + ); + + const params = { + Bucket: 'ot-demo-test', + Key: 'aws-ot-s3-test-object.txt', + }; + try { + await s3Client.putObject(params); + } catch { + expect(getTestSpans().length).toBe(1); + const [span] = getTestSpans(); + expect(span.attributes['attribute.from.exception.hook']).toEqual( + params.Bucket + ); + expect(span.attributes['error.from.exception.hook']).toEqual( + 'NotFound' + ); + } + }); }); }); diff --git a/packages/instrumentation-aws-sdk/test/aws-sdk-v3-sqs.test.ts b/packages/instrumentation-aws-sdk/test/aws-sdk-v3-sqs.test.ts index 128b7f6985..adc5cace9a 100644 --- a/packages/instrumentation-aws-sdk/test/aws-sdk-v3-sqs.test.ts +++ b/packages/instrumentation-aws-sdk/test/aws-sdk-v3-sqs.test.ts @@ -31,19 +31,20 @@ import 'mocha'; import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import { context, trace } from '@opentelemetry/api'; import { - MESSAGINGDESTINATIONKINDVALUES_QUEUE, + ATTR_URL_FULL, MESSAGINGOPERATIONVALUES_RECEIVE, SEMATTRS_HTTP_STATUS_CODE, - SEMATTRS_MESSAGING_DESTINATION, - SEMATTRS_MESSAGING_DESTINATION_KIND, - SEMATTRS_MESSAGING_MESSAGE_ID, SEMATTRS_MESSAGING_OPERATION, SEMATTRS_MESSAGING_SYSTEM, - SEMATTRS_MESSAGING_URL, SEMATTRS_RPC_METHOD, SEMATTRS_RPC_SERVICE, SEMATTRS_RPC_SYSTEM, } from '@opentelemetry/semantic-conventions'; +import { + ATTR_MESSAGING_BATCH_MESSAGE_COUNT, + ATTR_MESSAGING_DESTINATION_NAME, + ATTR_MESSAGING_MESSAGE_ID, +} from '../src/semconv'; import { AttributeNames } from '../src/enums'; import { expect } from 'expect'; import * as fs from 'fs'; @@ -87,15 +88,12 @@ describe('instrumentation-aws-sdk-v3 (client-sqs)', () => { expect(span.attributes[AttributeNames.CLOUD_REGION]).toEqual(region); // custom messaging attributes - expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual('aws.sqs'); - expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND]).toEqual( - MESSAGINGDESTINATIONKINDVALUES_QUEUE - ); - expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual('aws_sqs'); + expect(span.attributes[ATTR_MESSAGING_DESTINATION_NAME]).toEqual( 'otel-demo-aws-sdk' ); - expect(span.attributes[SEMATTRS_MESSAGING_URL]).toEqual(params.QueueUrl); - expect(span.attributes[SEMATTRS_MESSAGING_MESSAGE_ID]).toEqual( + expect(span.attributes[ATTR_URL_FULL]).toEqual(params.QueueUrl); + expect(span.attributes[ATTR_MESSAGING_MESSAGE_ID]).toEqual( response.MessageId ); expect(span.attributes[SEMATTRS_HTTP_STATUS_CODE]).toEqual(200); @@ -143,14 +141,11 @@ describe('instrumentation-aws-sdk-v3 (client-sqs)', () => { expect(span.attributes[AttributeNames.CLOUD_REGION]).toEqual(region); // messaging semantic attributes - expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual('aws.sqs'); - expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION_KIND]).toEqual( - MESSAGINGDESTINATIONKINDVALUES_QUEUE - ); - expect(span.attributes[SEMATTRS_MESSAGING_DESTINATION]).toEqual( + expect(span.attributes[SEMATTRS_MESSAGING_SYSTEM]).toEqual('aws_sqs'); + expect(span.attributes[ATTR_MESSAGING_DESTINATION_NAME]).toEqual( 'otel-demo-aws-sdk' ); - expect(span.attributes[SEMATTRS_MESSAGING_URL]).toEqual(params.QueueUrl); + expect(span.attributes[ATTR_URL_FULL]).toEqual(params.QueueUrl); expect(span.attributes[SEMATTRS_HTTP_STATUS_CODE]).toEqual(200); }); @@ -185,6 +180,24 @@ describe('instrumentation-aws-sdk-v3 (client-sqs)', () => { expect(span.attributes[SEMATTRS_RPC_SERVICE]).toEqual('SQS'); expect(span.attributes[AttributeNames.CLOUD_REGION]).toEqual(region); expect(span.attributes[SEMATTRS_HTTP_STATUS_CODE]).toEqual(200); + expect(span.attributes[ATTR_MESSAGING_BATCH_MESSAGE_COUNT]).toEqual(2); + expect(span.links.length).toBe(2); + + const messages = res.Messages || []; + expect(messages.length).toEqual(span.links.length); + + for (let i = 0; i < span.links.length; i++) { + const link = span.links[i]; + const messageId = messages[i].MessageId; + const traceparent = + messages[i].MessageAttributes?.traceparent.StringValue?.split('-') || + []; + const traceId = traceparent[1]; + const spanId = traceparent[2]; + expect(link.attributes?.[ATTR_MESSAGING_MESSAGE_ID]).toEqual(messageId); + expect(link.context.traceId).toEqual(traceId); + expect(link.context.spanId).toEqual(spanId); + } done(); }); }); diff --git a/packages/instrumentation-aws-sdk/test/secretsmanager.test.ts b/packages/instrumentation-aws-sdk/test/secretsmanager.test.ts new file mode 100644 index 0000000000..dc2c2b56e3 --- /dev/null +++ b/packages/instrumentation-aws-sdk/test/secretsmanager.test.ts @@ -0,0 +1,115 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { getTestSpans } from '@opentelemetry/contrib-test-utils'; +import { SpanKind } from '@opentelemetry/api'; +import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; +import { ATTR_AWS_SECRETSMANAGER_SECRET_ARN } from '@opentelemetry/semantic-conventions/incubating'; + +import { SecretsManager } from '@aws-sdk/client-secrets-manager'; + +import { expect } from 'expect'; +import * as nock from 'nock'; + +const region = 'us-east-1'; + +describe('SecretsManager', () => { + let secretsManager: SecretsManager; + beforeEach(() => { + secretsManager = new SecretsManager({ + region: region, + credentials: { + accessKeyId: 'abcde', + secretAccessKey: 'abcde', + }, + }); + }); + + describe('DescribeSecret', () => { + const testParams = [ + 'testId', + 'badarn:aws:secretsmanager:us-weast-1:123456789123:secret:testId123456', + 'arn:aws:secretsmanager:us-east-1:123456789123:secret:testId123456', + ]; + + testParams.forEach(secretId => { + it('should generate secret arn attribute only if secretId is an valid ARN', async () => { + nock(`https://secretsmanager.${region}.amazonaws.com/`) + .post('/') + .reply(200, '{}'); + + await secretsManager.describeSecret({ + SecretId: secretId, + }); + + const testSpans: ReadableSpan[] = getTestSpans(); + const getDescribeSecretSpans: ReadableSpan[] = testSpans.filter( + (s: ReadableSpan) => { + return s.name === 'SecretsManager.DescribeSecret'; + } + ); + + expect(getDescribeSecretSpans.length).toBe(1); + const describeSecretSpan = getDescribeSecretSpans[0]; + + if (secretId.startsWith('arn:aws:secretsmanager:')) { + expect( + describeSecretSpan.attributes[ATTR_AWS_SECRETSMANAGER_SECRET_ARN] + ).toBe(secretId); + } else { + expect( + describeSecretSpan.attributes[ATTR_AWS_SECRETSMANAGER_SECRET_ARN] + ).toBeUndefined(); + } + + expect(describeSecretSpan.kind).toBe(SpanKind.CLIENT); + }); + }); + }); + + describe('GetSecretValue', () => { + it('secret arn attribute should be populated from the response', async () => { + const secretIdArn = + 'arn:aws:secretsmanager:us-east-1:123456789123:secret:testId123456'; + + nock(`https://secretsmanager.${region}.amazonaws.com/`) + .post('/') + .reply(200, { + ARN: secretIdArn, + Name: 'testId', + }); + + await secretsManager.getSecretValue({ + SecretId: 'testSecret', + }); + + const testSpans: ReadableSpan[] = getTestSpans(); + const getSecretValueSpans: ReadableSpan[] = testSpans.filter( + (s: ReadableSpan) => { + return s.name === 'SecretsManager.GetSecretValue'; + } + ); + + expect(getSecretValueSpans.length).toBe(1); + + const secretValueSpan = getSecretValueSpans[0]; + expect( + secretValueSpan.attributes[ATTR_AWS_SECRETSMANAGER_SECRET_ARN] + ).toBe(secretIdArn); + expect(secretValueSpan.kind).toBe(SpanKind.CLIENT); + }); + }); +}); diff --git a/packages/instrumentation-aws-sdk/test/stepfunctions.test.ts b/packages/instrumentation-aws-sdk/test/stepfunctions.test.ts new file mode 100644 index 0000000000..bad1d70eed --- /dev/null +++ b/packages/instrumentation-aws-sdk/test/stepfunctions.test.ts @@ -0,0 +1,112 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { getTestSpans } from '@opentelemetry/contrib-test-utils'; +import { SpanKind } from '@opentelemetry/api'; +import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; +import { + ATTR_AWS_STEP_FUNCTIONS_ACTIVITY_ARN, + ATTR_AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN, +} from '@opentelemetry/semantic-conventions/incubating'; + +import { SFN } from '@aws-sdk/client-sfn'; + +import { expect } from 'expect'; +import * as nock from 'nock'; + +const region = 'us-east-1'; + +describe('SFN', () => { + let sfn: SFN; + beforeEach(() => { + sfn = new SFN({ + region: region, + credentials: { + accessKeyId: 'abcde', + secretAccessKey: 'abcde', + }, + }); + }); + + describe('DescribeStateMachine', () => { + it('span has stateMachineArn in its attributes', async () => { + const stateMachineArn = + 'arn:aws:states:us-east-1:123456789123:stateMachine:testStateMachine'; + + nock(`https://states.${region}.amazonaws.com/`) + .post('/') + .reply(200, '{}'); + + await sfn.describeStateMachine({ + stateMachineArn: stateMachineArn, + }); + + const testSpans: ReadableSpan[] = getTestSpans(); + const getStateMachineAttributeSpans: ReadableSpan[] = testSpans.filter( + (s: ReadableSpan) => { + return s.name === 'SFN.DescribeStateMachine'; + } + ); + + expect(getStateMachineAttributeSpans.length).toBe(1); + + const stateMachineAttributeSpan = getStateMachineAttributeSpans[0]; + expect( + ATTR_AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN in + stateMachineAttributeSpan.attributes + ); + expect( + stateMachineAttributeSpan.attributes[ + ATTR_AWS_STEP_FUNCTIONS_STATE_MACHINE_ARN + ] + ).toBe(stateMachineArn); + expect(stateMachineAttributeSpan.kind).toBe(SpanKind.CLIENT); + }); + }); + + describe('DescribeActivity', () => { + it('span has activityArn in its attributes', async () => { + const activityArn = + 'arn:aws:states:us-east-1:123456789123:activity:testActivity'; + + nock(`https://states.${region}.amazonaws.com/`) + .post('/') + .reply(200, '{}'); + + await sfn.describeActivity({ + activityArn: activityArn, + }); + + const testSpans: ReadableSpan[] = getTestSpans(); + const getActivityAttributeSpans: ReadableSpan[] = testSpans.filter( + (s: ReadableSpan) => { + return s.name === 'SFN.DescribeActivity'; + } + ); + + expect(getActivityAttributeSpans.length).toBe(1); + + const activityAttributeSpan = getActivityAttributeSpans[0]; + expect( + ATTR_AWS_STEP_FUNCTIONS_ACTIVITY_ARN in activityAttributeSpan.attributes + ); + expect( + activityAttributeSpan.attributes[ATTR_AWS_STEP_FUNCTIONS_ACTIVITY_ARN] + ).toBe(activityArn); + expect(activityAttributeSpan.kind).toBe(SpanKind.CLIENT); + }); + }); +}); diff --git a/packages/instrumentation-bunyan/.eslintrc.js b/packages/instrumentation-bunyan/.eslintrc.js index d9630e1c33..912e1cf251 100644 --- a/packages/instrumentation-bunyan/.eslintrc.js +++ b/packages/instrumentation-bunyan/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js'), -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-bunyan/CHANGELOG.md b/packages/instrumentation-bunyan/CHANGELOG.md index 21ca2caa31..01b74e4410 100644 --- a/packages/instrumentation-bunyan/CHANGELOG.md +++ b/packages/instrumentation-bunyan/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.50.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-bunyan-v0.49.0...instrumentation-bunyan-v0.50.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + ## [0.49.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-bunyan-v0.48.0...instrumentation-bunyan-v0.49.0) (2025-07-09) diff --git a/packages/instrumentation-bunyan/package.json b/packages/instrumentation-bunyan/package.json index 80fa7f9ded..bbba132002 100644 --- a/packages/instrumentation-bunyan/package.json +++ b/packages/instrumentation-bunyan/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-bunyan", - "version": "0.49.0", + "version": "0.50.0", "description": "OpenTelemetry instrumentation for `bunyan` logger", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -11,14 +11,15 @@ }, "scripts": { "clean": "rimraf build/*", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-bunyan", "compile": "tsc -p .", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-bunyan", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", "tdd": "npm run test -- --watch-extensions ts --watch", - "test": "nyc mocha 'test/**/*.test.ts'", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", "test-all-versions": "tav", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", "version:update": "node ../../scripts/version-update.js" }, "keywords": [ @@ -49,7 +50,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/resources": "^2.0.0", - "@opentelemetry/sdk-logs": "^0.203.0", + "@opentelemetry/sdk-logs": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -64,8 +65,8 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/api-logs": "^0.203.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/api-logs": "^0.204.0", + "@opentelemetry/instrumentation": "^0.204.0", "@types/bunyan": "1.8.11" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-bunyan#readme" diff --git a/packages/instrumentation-cassandra-driver/.eslintrc.js b/packages/instrumentation-cassandra-driver/.eslintrc.js index d9630e1c33..912e1cf251 100644 --- a/packages/instrumentation-cassandra-driver/.eslintrc.js +++ b/packages/instrumentation-cassandra-driver/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js'), -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-cassandra-driver/CHANGELOG.md b/packages/instrumentation-cassandra-driver/CHANGELOG.md index 00b2c813e0..ff561b1608 100644 --- a/packages/instrumentation-cassandra-driver/CHANGELOG.md +++ b/packages/instrumentation-cassandra-driver/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.50.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-cassandra-driver-v0.49.0...instrumentation-cassandra-driver-v0.50.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + ## [0.49.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-cassandra-driver-v0.48.0...instrumentation-cassandra-driver-v0.49.0) (2025-07-09) diff --git a/packages/instrumentation-cassandra-driver/package.json b/packages/instrumentation-cassandra-driver/package.json index 9fe7522baf..99756bcf88 100644 --- a/packages/instrumentation-cassandra-driver/package.json +++ b/packages/instrumentation-cassandra-driver/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-cassandra-driver", - "version": "0.49.0", + "version": "0.50.0", "description": "OpenTelemetry instrumentation for `cassandra-driver` database client library for Apache Cassandra", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,16 +10,22 @@ "directory": "packages/instrumentation-cassandra-driver" }, "scripts": { - "test": "nyc mocha 'test/**/*.test.ts'", - "tdd": "npm run test -- --watch-extensions ts --watch", "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-cassandra-driver", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", - "version:update": "node ../../scripts/version-update.js", "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-cassandra-driver", - "compile": "tsc -p ." + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm test", + "//todo": "echo \"add test-all-versions\"", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "test-services:start": "cd ../.. && npm run test-services:start cassandra", + "test-services:stop": "cd ../.. && npm run test-services:stop cassandra", + "version:update": "node ../../scripts/version-update.js" }, "keywords": [ "cassandra-driver", @@ -49,7 +55,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", @@ -57,13 +63,14 @@ "@types/semver": "7.5.8", "@types/sinon": "17.0.4", "cassandra-driver": "4.6.4", + "cross-env": "7.0.3", "nyc": "17.1.0", "rimraf": "5.0.10", "sinon": "15.2.0", "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-cassandra-driver#readme" diff --git a/packages/instrumentation-cassandra-driver/test/cassandra-driver.test.ts b/packages/instrumentation-cassandra-driver/test/cassandra-driver.test.ts index 728458f493..cba1436637 100644 --- a/packages/instrumentation-cassandra-driver/test/cassandra-driver.test.ts +++ b/packages/instrumentation-cassandra-driver/test/cassandra-driver.test.ts @@ -56,13 +56,10 @@ const provider = new NodeTracerProvider({ context.setGlobalContextManager(new AsyncLocalStorageContextManager()); const testCassandra = process.env.RUN_CASSANDRA_TESTS; -const testCassandraLocally = process.env.RUN_CASSANDRA_TESTS_LOCAL; -const shouldTest = testCassandra || testCassandraLocally; -const cassandraTimeoutMs = 60000; -const cassandraContactPoint = - process.env.CASSANDRA_HOST ?? testCassandraLocally - ? '127.0.0.1' - : 'cassandra'; +const shouldTest = testCassandra; +const cassandraContactPoint = process.env.CASSANDRA_HOST + ? '127.0.0.1' + : 'cassandra'; function assertSpan( span: ReadableSpan, @@ -155,15 +152,7 @@ describe('CassandraDriverInstrumentation', () => { this.skip(); } - // Cassandra takes a long time to boot up - 20 seconds easily. - this.timeout(cassandraTimeoutMs); - - if (testCassandraLocally) { - testUtils.startDocker('cassandra'); - } - instrumentation = new CassandraDriverInstrumentation(); - instrumentation.setTracerProvider(provider); const cassandra = require('cassandra-driver'); @@ -193,11 +182,7 @@ describe('CassandraDriverInstrumentation', () => { }); after(async function () { - this.timeout(60000); await client?.shutdown?.(); - if (testCassandraLocally) { - testUtils.cleanUpDocker('cassandra'); - } }); describe('execute', () => { diff --git a/packages/instrumentation-connect/.eslintrc.js b/packages/instrumentation-connect/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-connect/.eslintrc.js +++ b/packages/instrumentation-connect/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-connect/CHANGELOG.md b/packages/instrumentation-connect/CHANGELOG.md index 57431bfb86..3bf8ee200f 100644 --- a/packages/instrumentation-connect/CHANGELOG.md +++ b/packages/instrumentation-connect/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.48.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-connect-v0.47.0...instrumentation-connect-v0.48.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + ## [0.47.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-connect-v0.46.0...instrumentation-connect-v0.47.0) (2025-07-09) diff --git a/packages/instrumentation-connect/package.json b/packages/instrumentation-connect/package.json index ee5c7f2b04..5fa66f5e09 100644 --- a/packages/instrumentation-connect/package.json +++ b/packages/instrumentation-connect/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-connect", - "version": "0.47.0", + "version": "0.48.0", "description": "OpenTelemetry instrumentation for `connect` http middleware framework", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -11,13 +11,14 @@ }, "scripts": { "clean": "rimraf build/*", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-connect", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-connect", "compile": "tsc -p .", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", - "test": "nyc mocha 'test/**/*.test.ts'", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", "version:update": "node ../../scripts/version-update.js", "watch": "tsc -w" }, @@ -59,7 +60,7 @@ }, "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/connect": "3.4.38" }, diff --git a/packages/instrumentation-cucumber/.eslintrc.js b/packages/instrumentation-cucumber/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-cucumber/.eslintrc.js +++ b/packages/instrumentation-cucumber/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-cucumber/.tav.yml b/packages/instrumentation-cucumber/.tav.yml index e00a9aeeb5..65057838f4 100644 --- a/packages/instrumentation-cucumber/.tav.yml +++ b/packages/instrumentation-cucumber/.tav.yml @@ -14,3 +14,8 @@ mode: latest-minors node: '>=18' commands: npm test + - versions: + include: '^12.0.0' + mode: latest-minors + node: '>=20' + commands: npm test diff --git a/packages/instrumentation-cucumber/CHANGELOG.md b/packages/instrumentation-cucumber/CHANGELOG.md index 93d7a186b6..cc92e0ce46 100644 --- a/packages/instrumentation-cucumber/CHANGELOG.md +++ b/packages/instrumentation-cucumber/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +## [0.20.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-cucumber-v0.19.0...instrumentation-cucumber-v0.20.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + +## [0.19.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-cucumber-v0.18.1...instrumentation-cucumber-v0.19.0) (2025-09-01) + + +### Features + +* **instrumentation-cucumber:** include @cucumber/cucumber@12 ([#2958](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2958)) ([8a93515](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/8a93515ad7000b3dbdd05d9a98ba51ac979f62f1)) + +## [0.18.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-cucumber-v0.18.0...instrumentation-cucumber-v0.18.1) (2025-08-13) + + +### Bug Fixes + +* **instrumentation-cucumber:** switch from deprecated attributes to stable ([#2959](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2959)) ([ef59c8d](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/ef59c8d08c3e64e4093caa1da2a40dffcea6dd91)) + ## [0.18.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-cucumber-v0.17.1...instrumentation-cucumber-v0.18.0) (2025-07-09) diff --git a/packages/instrumentation-cucumber/README.md b/packages/instrumentation-cucumber/README.md index 60933c2c10..f6808aca24 100644 --- a/packages/instrumentation-cucumber/README.md +++ b/packages/instrumentation-cucumber/README.md @@ -53,12 +53,11 @@ This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which i Attributes collected: -| Attribute | Short Description | -| ---------------- | -------------------------------------------------------------------------------- | -| `code.filepath` | The source code file name that identifies the code unit as uniquely as possible. | -| `code.function` | The method or function name, or equivalent. | -| `code.lineno` | The line number in `code.filepath` best representing the operation. | -| `code.namespace` | The "namespace" within which `code.function` is defined. | +| Attribute | Short Description | +| -------------------- | -------------------------------------------------------------------------------- | +| `code.file.path` | The source code file name that identifies the code unit as uniquely as possible. | +| `code.function.name` | The method or function fully-qualified name without arguments. | +| `code.line.number` | The line number in `code.file.path` best representing the operation. | ## Useful links diff --git a/packages/instrumentation-cucumber/package.json b/packages/instrumentation-cucumber/package.json index e59149a84c..71a91eaba3 100644 --- a/packages/instrumentation-cucumber/package.json +++ b/packages/instrumentation-cucumber/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-cucumber", - "version": "0.18.0", + "version": "0.20.0", "description": "OpenTelemetry instrumentation for `@cucumber/cucumber` automated tests runner", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,16 +10,17 @@ "directory": "packages/instrumentation-cucumber" }, "scripts": { - "test": "nyc mocha 'test/**/*.test.ts'", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", "test-all-versions": "tav", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", "tdd": "npm run test -- --watch-extensions ts --watch", "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-cucumber", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-cucumber", "compile": "tsc -p ." }, "keywords": [ @@ -47,8 +48,8 @@ "@opentelemetry/api": "^1.0.0" }, "devDependencies": { - "@cucumber/cucumber": "^11.0.0", - "@cucumber/messages": "^22.0.0", + "@cucumber/cucumber": "^12.0.0", + "@cucumber/messages": "^28.0.0", "@opentelemetry/api": "^1.0.0", "@opentelemetry/core": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", @@ -66,7 +67,7 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-cucumber#readme" diff --git a/packages/instrumentation-cucumber/src/instrumentation.ts b/packages/instrumentation-cucumber/src/instrumentation.ts index 1c8e73de19..8e06572097 100644 --- a/packages/instrumentation-cucumber/src/instrumentation.ts +++ b/packages/instrumentation-cucumber/src/instrumentation.ts @@ -22,10 +22,9 @@ import { isWrapped, } from '@opentelemetry/instrumentation'; import { - SEMATTRS_CODE_FILEPATH, - SEMATTRS_CODE_FUNCTION, - SEMATTRS_CODE_LINENO, - SEMATTRS_CODE_NAMESPACE, + ATTR_CODE_FILE_PATH, + ATTR_CODE_FUNCTION_NAME, + ATTR_CODE_LINE_NUMBER, } from '@opentelemetry/semantic-conventions'; import type * as cucumber from '@cucumber/cucumber'; @@ -47,7 +46,7 @@ type Cucumber = typeof cucumber; type Hook = (typeof hooks)[number]; type Step = (typeof steps)[number]; -const supportedVersions = ['>=8.0.0 <12']; +const supportedVersions = ['>=8.0.0 <13']; export class CucumberInstrumentation extends InstrumentationBase { private module: Cucumber | undefined; @@ -182,10 +181,9 @@ export class CucumberInstrumentation extends InstrumentationBase { + ): ReturnType { const [pickleStep] = args; return instrumentation.tracer.startActiveSpan( pickleStep.text, @@ -234,13 +232,25 @@ export class CucumberInstrumentation extends InstrumentationBase { try { - const result = await original.apply(this, args); + const runStepResult = await original.apply(this, args); + const { result, error } = (() => { + if ('result' in runStepResult) { + return runStepResult; + } + return { + result: runStepResult, + error: undefined, + }; + })(); instrumentation.setSpanToStepStatus( span, result.status, result.message ); - return result; + if (error) { + CucumberInstrumentation.setSpanToError(span, error); + } + return runStepResult; } catch (error) { CucumberInstrumentation.setSpanToError(span, error); throw error; diff --git a/packages/instrumentation-cucumber/test/cucumber.test.ts b/packages/instrumentation-cucumber/test/cucumber.test.ts index 325fbd4448..cbe4a84ab6 100644 --- a/packages/instrumentation-cucumber/test/cucumber.test.ts +++ b/packages/instrumentation-cucumber/test/cucumber.test.ts @@ -22,11 +22,10 @@ import { SimpleSpanProcessor, } from '@opentelemetry/sdk-trace-base'; import { - SEMATTRS_CODE_FILEPATH, - SEMATTRS_CODE_FUNCTION, - SEMATTRS_CODE_LINENO, - SEMATTRS_CODE_NAMESPACE, - SEMRESATTRS_SERVICE_NAME, + ATTR_CODE_FILE_PATH, + ATTR_CODE_FUNCTION_NAME, + ATTR_CODE_LINE_NUMBER, + ATTR_SERVICE_NAME, } from '@opentelemetry/semantic-conventions'; import { resourceFromAttributes } from '@opentelemetry/resources'; @@ -57,7 +56,7 @@ describe('CucumberInstrumentation', () => { const spanProcessor = new SimpleSpanProcessor(memoryExporter); const provider = new NodeTracerProvider({ resource: resourceFromAttributes({ - [SEMRESATTRS_SERVICE_NAME]: 'CucumberInstrumentation', + [ATTR_SERVICE_NAME]: 'CucumberInstrumentation', }), spanProcessors: [spanProcessor], }); @@ -169,10 +168,9 @@ describe('CucumberInstrumentation', () => { assert(parent, 'Expected a parent span'); assert.deepEqual(parent.attributes, { - [SEMATTRS_CODE_FILEPATH]: path.join('test', 'current.feature'), - [SEMATTRS_CODE_LINENO]: 7, - [SEMATTRS_CODE_FUNCTION]: 'Button pushing', - [SEMATTRS_CODE_NAMESPACE]: 'Basic', + [ATTR_CODE_FILE_PATH]: path.join('test', 'current.feature'), + [ATTR_CODE_LINE_NUMBER]: 7, + [ATTR_CODE_FUNCTION_NAME]: 'Basic Button pushing', [AttributeNames.FEATURE_DESCRIPTION]: ' A very basic feature file with a single scenario', [AttributeNames.FEATURE_LANGUAGE]: 'en', diff --git a/packages/instrumentation-dataloader/.eslintrc.js b/packages/instrumentation-dataloader/.eslintrc.js index d9630e1c33..912e1cf251 100644 --- a/packages/instrumentation-dataloader/.eslintrc.js +++ b/packages/instrumentation-dataloader/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js'), -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-dataloader/CHANGELOG.md b/packages/instrumentation-dataloader/CHANGELOG.md index c0c4d74821..8fb06ac859 100644 --- a/packages/instrumentation-dataloader/CHANGELOG.md +++ b/packages/instrumentation-dataloader/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +## [0.22.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-dataloader-v0.21.1...instrumentation-dataloader-v0.22.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + +## [0.21.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-dataloader-v0.21.0...instrumentation-dataloader-v0.21.1) (2025-08-13) + + +### Bug Fixes + +* **instrumentation-dataloader:** support ESM imports of dataloader module ([#2973](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2973)) ([16979f6](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/16979f6f4a9f1def110195c3d29300f691038921)) + ## [0.21.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-dataloader-v0.20.0...instrumentation-dataloader-v0.21.0) (2025-07-09) diff --git a/packages/instrumentation-dataloader/package.json b/packages/instrumentation-dataloader/package.json index 9646ffa75f..74d90731d4 100644 --- a/packages/instrumentation-dataloader/package.json +++ b/packages/instrumentation-dataloader/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-dataloader", - "version": "0.21.0", + "version": "0.22.0", "description": "OpenTelemetry instrumentation for `dataloader` data fetching layer", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -11,14 +11,15 @@ }, "scripts": { "clean": "rimraf build/*", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-dataloader", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-dataloader", "compile": "tsc -p .", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", "tdd": "npm run test -- --watch-extensions ts --watch", - "test": "nyc mocha 'test/**/*.test.ts'", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", "test-all-versions": "tav", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", "version:update": "node ../../scripts/version-update.js" }, "keywords": [ @@ -48,6 +49,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", @@ -59,7 +61,7 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-dataloader#readme" } diff --git a/packages/instrumentation-dataloader/src/instrumentation.ts b/packages/instrumentation-dataloader/src/instrumentation.ts index 719aae44e8..015b6fae62 100644 --- a/packages/instrumentation-dataloader/src/instrumentation.ts +++ b/packages/instrumentation-dataloader/src/instrumentation.ts @@ -44,6 +44,13 @@ type PrimeFn = (typeof Dataloader.prototype)['prime']; type ClearFn = (typeof Dataloader.prototype)['clear']; type ClearAllFn = (typeof Dataloader.prototype)['clearAll']; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function extractModuleExports(module: any) { + return module[Symbol.toStringTag] === 'Module' + ? module.default // ESM + : module; // CommonJS +} + export class DataloaderInstrumentation extends InstrumentationBase { constructor(config: DataloaderInstrumentationConfig = {}) { super(PACKAGE_NAME, PACKAGE_VERSION, config); @@ -54,7 +61,8 @@ export class DataloaderInstrumentation extends InstrumentationBase=2.0.0 <3'], - dataloader => { + module => { + const dataloader = extractModuleExports(module); this._patchLoad(dataloader.prototype); this._patchLoadMany(dataloader.prototype); this._patchPrime(dataloader.prototype); @@ -63,14 +71,15 @@ export class DataloaderInstrumentation extends InstrumentationBase { + module => { + const dataloader = extractModuleExports(module); ['load', 'loadMany', 'prime', 'clear', 'clearAll'].forEach(method => { if (isWrapped(dataloader.prototype[method])) { this._unwrap(dataloader.prototype, method); } }); } - ) as InstrumentationNodeModuleDefinition, + ), ]; } diff --git a/packages/instrumentation-dataloader/test/dataloader.test.ts b/packages/instrumentation-dataloader/test/dataloader.test.ts index b43e2959a4..2f495d946f 100644 --- a/packages/instrumentation-dataloader/test/dataloader.test.ts +++ b/packages/instrumentation-dataloader/test/dataloader.test.ts @@ -21,6 +21,10 @@ import { import { context, SpanKind, SpanStatusCode, trace } from '@opentelemetry/api'; import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks'; +import { + runTestFixture, + TestCollector, +} from '@opentelemetry/contrib-test-utils'; import { DataloaderInstrumentation } from '../src'; const instrumentation = new DataloaderInstrumentation(); @@ -641,3 +645,25 @@ describe('DataloaderInstrumentation', () => { assert.strictEqual(batchSpan.name, 'dataloader.batch'); }); }); + +describe('ESM usage', () => { + it('should work with ESM default import', async function () { + await runTestFixture({ + cwd: __dirname, + argv: ['fixtures/use-dataloader-default-import.mjs'], + env: { + NODE_OPTIONS: + '--experimental-loader=@opentelemetry/instrumentation/hook.mjs', + NODE_NO_WARNINGS: '1', + }, + checkCollector: (collector: TestCollector) => { + const spans = collector.sortedSpans; + assert.strictEqual(spans[0].name, 'manual'); + assert.strictEqual(spans[1].name, 'dataloader.load'); + assert.strictEqual(spans[1].parentSpanId, spans[0].spanId); + assert.strictEqual(spans[2].name, 'dataloader.batch'); + assert.strictEqual(spans[2].parentSpanId, spans[1].spanId); + }, + }); + }); +}); diff --git a/packages/instrumentation-dataloader/test/fixtures/use-dataloader-default-import.mjs b/packages/instrumentation-dataloader/test/fixtures/use-dataloader-default-import.mjs new file mode 100644 index 0000000000..41ddc71414 --- /dev/null +++ b/packages/instrumentation-dataloader/test/fixtures/use-dataloader-default-import.mjs @@ -0,0 +1,51 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Use dataloader from an ES module: +// node --experimental-loader=@opentelemetry/instrumentation/hook.mjs use-dataloader-default-import.mjs + +import { trace } from '@opentelemetry/api'; +import { createTestNodeSdk } from '@opentelemetry/contrib-test-utils'; +import * as crypto from 'crypto'; + +import { DataloaderInstrumentation } from '../../build/src/index.js'; + +const sdk = createTestNodeSdk({ + serviceName: 'use-dataloader', + instrumentations: [new DataloaderInstrumentation()], +}); +sdk.start(); + +import Dataloader from 'dataloader'; + +function getMd5HashFromIdx(idx) { + return crypto.createHash('md5').update(String(idx)).digest('hex'); +} +const dataloader = new Dataloader( + async keys => + keys.map((_, idx) => { + return getMd5HashFromIdx(idx); + }), + { cache: true } +); + +const tracer = trace.getTracer(); +await tracer.startActiveSpan('manual', async span => { + await dataloader.load(1); + span.end(); +}); + +await sdk.shutdown(); diff --git a/packages/instrumentation-dns/.eslintrc.js b/packages/instrumentation-dns/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-dns/.eslintrc.js +++ b/packages/instrumentation-dns/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-dns/CHANGELOG.md b/packages/instrumentation-dns/CHANGELOG.md index 4557e46f5e..a7a1a4fbfe 100644 --- a/packages/instrumentation-dns/CHANGELOG.md +++ b/packages/instrumentation-dns/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.48.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-dns-v0.47.0...instrumentation-dns-v0.48.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + ## [0.47.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-dns-v0.46.0...instrumentation-dns-v0.47.0) (2025-07-09) diff --git a/packages/instrumentation-dns/package.json b/packages/instrumentation-dns/package.json index dce6c242dc..68fec5fd3c 100644 --- a/packages/instrumentation-dns/package.json +++ b/packages/instrumentation-dns/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-dns", - "version": "0.47.0", + "version": "0.48.0", "description": "OpenTelemetry instrumentation for `node:dns` name resolution module", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,16 +10,17 @@ "directory": "packages/instrumentation-dns" }, "scripts": { - "test": "nyc mocha 'test/**/*.test.ts'", - "tdd": "npm run test -- --watch-extensions ts --watch", "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "prepublishOnly": "npm run compile", - "version:update": "node ../../scripts/version-update.js", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-dns", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "lint:readme": "node ../../scripts/lint-readme", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-dns", - "compile": "tsc -p ." + "prepublishOnly": "npm run compile", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "version:update": "node ../../scripts/version-update.js" }, "keywords": [ "dns", @@ -61,7 +62,7 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-dns#readme" } diff --git a/packages/instrumentation-document-load/.eslintrc.js b/packages/instrumentation-document-load/.eslintrc.js index 01b8d09740..498e35290d 100644 --- a/packages/instrumentation-document-load/.eslintrc.js +++ b/packages/instrumentation-document-load/.eslintrc.js @@ -1,9 +1,24 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "commonjs": true, - "browser": true, - "jquery": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + commonjs: true, + browser: true, + jquery: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-document-load/CHANGELOG.md b/packages/instrumentation-document-load/CHANGELOG.md index 706d42a823..f30c8bfcb0 100644 --- a/packages/instrumentation-document-load/CHANGELOG.md +++ b/packages/instrumentation-document-load/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.49.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-document-load-v0.48.0...instrumentation-document-load-v0.49.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + ## [0.48.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-document-load-v0.47.1...instrumentation-document-load-v0.48.0) (2025-07-09) diff --git a/packages/instrumentation-document-load/package.json b/packages/instrumentation-document-load/package.json index ba9dc43ee4..6ad705e9e1 100644 --- a/packages/instrumentation-document-load/package.json +++ b/packages/instrumentation-document-load/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-document-load", - "version": "0.48.0", + "version": "0.49.0", "description": "OpenTelemetry instrumentation for document load operations in browser applications", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -13,11 +13,11 @@ }, "scripts": { "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "lint:readme": "node ../../scripts/lint-readme.js", "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-document-load", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-document-load", "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", "prepublishOnly": "npm run compile", "tdd": "wtr --watch", @@ -74,7 +74,7 @@ }, "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-web": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, diff --git a/packages/instrumentation-document-load/test/documentLoad.test.ts b/packages/instrumentation-document-load/test/documentLoad.test.ts index 0e4e65d963..fe700d01e7 100644 --- a/packages/instrumentation-document-load/test/documentLoad.test.ts +++ b/packages/instrumentation-document-load/test/documentLoad.test.ts @@ -207,8 +207,6 @@ const paintEntries: PerformanceEntryList = [ }, ]; -performance.getEntriesByType; - const userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'; diff --git a/packages/instrumentation-document-load/web-test-runner.config.mjs b/packages/instrumentation-document-load/web-test-runner.config.mjs index 1989a756fd..7130bd21fa 100644 --- a/packages/instrumentation-document-load/web-test-runner.config.mjs +++ b/packages/instrumentation-document-load/web-test-runner.config.mjs @@ -1,11 +1,11 @@ -/*! +/* * Copyright The OpenTelemetry Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/packages/instrumentation-express/.eslintrc.js b/packages/instrumentation-express/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-express/.eslintrc.js +++ b/packages/instrumentation-express/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-express/CHANGELOG.md b/packages/instrumentation-express/CHANGELOG.md index 7147dcab06..8dca808ae1 100644 --- a/packages/instrumentation-express/CHANGELOG.md +++ b/packages/instrumentation-express/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.53.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-express-v0.52.0...instrumentation-express-v0.53.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + ## [0.52.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-express-v0.51.1...instrumentation-express-v0.52.0) (2025-07-09) diff --git a/packages/instrumentation-express/package.json b/packages/instrumentation-express/package.json index 052bb2403b..c103987c58 100644 --- a/packages/instrumentation-express/package.json +++ b/packages/instrumentation-express/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-express", - "version": "0.52.0", + "version": "0.53.0", "description": "OpenTelemetry instrumentation for `express` http web application framework", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,17 +10,18 @@ "directory": "packages/instrumentation-express" }, "scripts": { - "test-all-versions": "tav", - "test": "nyc mocha 'test/**/*.test.ts'", - "tdd": "yarn test -- --watch-extensions ts --watch", "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "lint:readme": "node ../../scripts/lint-readme.js", - "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-express", "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-express", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", + "tdd": "yarn test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test-all-versions": "tav", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "version:update": "node ../../scripts/version-update.js", "watch": "tsc -w" }, "keywords": [ @@ -50,10 +51,10 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", - "@types/express": "4.17.23", + "@types/express": "5.0.3", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -66,7 +67,7 @@ }, "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-express#readme" diff --git a/packages/instrumentation-express/test/fixtures/use-express-nested-router.mjs b/packages/instrumentation-express/test/fixtures/use-express-nested-router.mjs index 6f86eb18e5..f4624cb8b0 100644 --- a/packages/instrumentation-express/test/fixtures/use-express-nested-router.mjs +++ b/packages/instrumentation-express/test/fixtures/use-express-nested-router.mjs @@ -22,11 +22,8 @@ import { ExpressInstrumentation } from '../../build/src/index.js'; const sdk = createTestNodeSdk({ serviceName: 'use-express-nested', - instrumentations: [ - new HttpInstrumentation(), - new ExpressInstrumentation() - ] -}) + instrumentations: [new HttpInstrumentation(), new ExpressInstrumentation()], +}); sdk.start(); @@ -75,9 +72,8 @@ const server = http.createServer(app); await new Promise(resolve => server.listen(0, resolve)); const port = server.address().port; - await new Promise(resolve => { - http.get(`http://localhost:${port}/api/user/123/posts/321`, (res) => { + http.get(`http://localhost:${port}/api/user/123/posts/321`, res => { res.resume(); res.on('end', data => { resolve(data); diff --git a/packages/instrumentation-express/test/fixtures/use-express-regex.mjs b/packages/instrumentation-express/test/fixtures/use-express-regex.mjs index d674342dd6..c54e3c55c6 100644 --- a/packages/instrumentation-express/test/fixtures/use-express-regex.mjs +++ b/packages/instrumentation-express/test/fixtures/use-express-regex.mjs @@ -70,15 +70,12 @@ await new Promise(resolve => server.listen(0, resolve)); const port = server.address().port; await new Promise(resolve => { - http.get( - `http://localhost:${port}${process.env.TEST_REGEX_ROUTE}`, - res => { - res.resume(); - res.on('end', () => { - resolve(); - }); - } - ); + http.get(`http://localhost:${port}${process.env.TEST_REGEX_ROUTE}`, res => { + res.resume(); + res.on('end', () => { + resolve(); + }); + }); }); await new Promise(resolve => server.close(resolve)); diff --git a/packages/instrumentation-express/test/fixtures/use-express-router.mjs b/packages/instrumentation-express/test/fixtures/use-express-router.mjs index 5846da88ae..d0d0ef3c13 100644 --- a/packages/instrumentation-express/test/fixtures/use-express-router.mjs +++ b/packages/instrumentation-express/test/fixtures/use-express-router.mjs @@ -22,11 +22,8 @@ import { ExpressInstrumentation } from '../../build/src/index.js'; const sdk = createTestNodeSdk({ serviceName: 'use-express-nested', - instrumentations: [ - new HttpInstrumentation(), - new ExpressInstrumentation() - ] -}) + instrumentations: [new HttpInstrumentation(), new ExpressInstrumentation()], +}); sdk.start(); @@ -58,14 +55,13 @@ const server = http.createServer(app); await new Promise(resolve => server.listen(0, resolve)); const port = server.address().port; - await new Promise(resolve => { - http.get(`http://localhost:${port}/api/user/123`, (res) => { + http.get(`http://localhost:${port}/api/user/123`, res => { res.resume(); res.on('end', data => { resolve(data); }); - }) + }); }); await new Promise(resolve => server.close(resolve)); diff --git a/packages/instrumentation-express/test/fixtures/use-express.mjs b/packages/instrumentation-express/test/fixtures/use-express.mjs index 6dd75360f2..c59712671f 100644 --- a/packages/instrumentation-express/test/fixtures/use-express.mjs +++ b/packages/instrumentation-express/test/fixtures/use-express.mjs @@ -25,11 +25,8 @@ import { ExpressInstrumentation } from '../../build/src/index.js'; const sdk = createTestNodeSdk({ serviceName: 'use-express', - instrumentations: [ - new HttpInstrumentation(), - new ExpressInstrumentation() - ] -}) + instrumentations: [new HttpInstrumentation(), new ExpressInstrumentation()], +}); sdk.start(); import express from 'express'; @@ -55,12 +52,12 @@ await new Promise(resolve => server.listen(0, resolve)); const port = server.address().port; await new Promise(resolve => { - http.get(`http://localhost:${port}/post/0`, (res) => { + http.get(`http://localhost:${port}/post/0`, res => { res.resume(); res.on('end', () => { resolve(); }); - }) + }); }); await new Promise(resolve => server.close(resolve)); diff --git a/packages/instrumentation-fastify/.eslintrc.js b/packages/instrumentation-fastify/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-fastify/.eslintrc.js +++ b/packages/instrumentation-fastify/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-fastify/CHANGELOG.md b/packages/instrumentation-fastify/CHANGELOG.md index c08510d526..74e62d677e 100644 --- a/packages/instrumentation-fastify/CHANGELOG.md +++ b/packages/instrumentation-fastify/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.49.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-fastify-v0.48.0...instrumentation-fastify-v0.49.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + ## [0.48.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-fastify-v0.47.1...instrumentation-fastify-v0.48.0) (2025-07-09) diff --git a/packages/instrumentation-fastify/package.json b/packages/instrumentation-fastify/package.json index ab320beaf4..62ba68f8b0 100644 --- a/packages/instrumentation-fastify/package.json +++ b/packages/instrumentation-fastify/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-fastify", - "version": "0.48.0", + "version": "0.49.0", "description": "OpenTelemetry instrumentation for `fastify` http web application framework", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -11,14 +11,15 @@ }, "scripts": { "clean": "rimraf build/*", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-fastify", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-fastify", "compile": "tsc -p .", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", - "test": "nyc mocha 'test/**/*.test.ts'", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", "test-all-versions": "tav", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", "version:update": "node ../../scripts/version-update.js", "watch": "tsc -w" }, @@ -50,11 +51,10 @@ "@fastify/express": "^3.0.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation-http": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", - "@types/express": "4.17.23", "@types/mocha": "10.0.10", "@types/node": "18.15.3", "@types/semver": "7.5.8", @@ -67,7 +67,7 @@ }, "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-fastify#readme" diff --git a/packages/instrumentation-fastify/test/fixtures/use-fastify.mjs b/packages/instrumentation-fastify/test/fixtures/use-fastify.mjs index 4b234dcb7b..99bd5bffb9 100644 --- a/packages/instrumentation-fastify/test/fixtures/use-fastify.mjs +++ b/packages/instrumentation-fastify/test/fixtures/use-fastify.mjs @@ -23,10 +23,8 @@ import { FastifyInstrumentation } from '../../build/src/index.js'; const sdk = createTestNodeSdk({ serviceName: 'use-fastify', - instrumentations: [ - new FastifyInstrumentation() - ] -}) + instrumentations: [new FastifyInstrumentation()], +}); sdk.start(); import Fastify from 'fastify'; @@ -36,18 +34,18 @@ import http from 'http'; const app = Fastify(); app.get('/a-route', function aRoute(_request, reply) { reply.send({ hello: 'world' }); -}) +}); const addr = await app.listen({ port: 0 }); // Make a single request to it. await new Promise(resolve => { - http.get(addr + '/a-route', (res) => { + http.get(addr + '/a-route', res => { res.resume(); res.on('end', () => { resolve(); }); - }) -}) + }); +}); await app.close(); await sdk.shutdown(); diff --git a/packages/instrumentation-fs/.eslintrc.js b/packages/instrumentation-fs/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-fs/.eslintrc.js +++ b/packages/instrumentation-fs/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-fs/CHANGELOG.md b/packages/instrumentation-fs/CHANGELOG.md index 6c7cf02536..2fd3bf6c1c 100644 --- a/packages/instrumentation-fs/CHANGELOG.md +++ b/packages/instrumentation-fs/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.24.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-fs-v0.23.0...instrumentation-fs-v0.24.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + ## [0.23.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-fs-v0.22.0...instrumentation-fs-v0.23.0) (2025-07-09) diff --git a/packages/instrumentation-fs/package.json b/packages/instrumentation-fs/package.json index 09be93205c..bdf9ae4622 100644 --- a/packages/instrumentation-fs/package.json +++ b/packages/instrumentation-fs/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-fs", - "version": "0.23.0", + "version": "0.24.0", "description": "OpenTelemetry instrumentation for `node:fs` file system interactions module", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,15 +10,15 @@ "directory": "packages/instrumentation-fs" }, "scripts": { - "test": "mocha 'test/**/*.test.ts'", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", "tdd": "npm run test -- --watch-extensions ts --watch", "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-fs", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-fs", "compile": "tsc -p ." }, "keywords": [ @@ -61,7 +61,7 @@ }, "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-fs#readme" } diff --git a/packages/instrumentation-generic-pool/.eslintrc.js b/packages/instrumentation-generic-pool/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-generic-pool/.eslintrc.js +++ b/packages/instrumentation-generic-pool/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-generic-pool/CHANGELOG.md b/packages/instrumentation-generic-pool/CHANGELOG.md index 2da9c786a9..f8972528c0 100644 --- a/packages/instrumentation-generic-pool/CHANGELOG.md +++ b/packages/instrumentation-generic-pool/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.48.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-generic-pool-v0.47.0...instrumentation-generic-pool-v0.48.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + ## [0.47.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-generic-pool-v0.46.1...instrumentation-generic-pool-v0.47.0) (2025-07-09) diff --git a/packages/instrumentation-generic-pool/package.json b/packages/instrumentation-generic-pool/package.json index e55b72c5dc..fed25c679d 100644 --- a/packages/instrumentation-generic-pool/package.json +++ b/packages/instrumentation-generic-pool/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-generic-pool", - "version": "0.47.0", + "version": "0.48.0", "description": "OpenTelemetry instrumentation for `generic-pool` resource pool for managing expensive resources", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,16 +10,17 @@ "directory": "packages/instrumentation-generic-pool" }, "scripts": { - "test": "nyc mocha 'test/**/*.ts'", - "tdd": "yarn test -- --watch-extensions ts --watch", "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "lint:readme": "node ../../scripts/lint-readme.js", - "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-generic-pool", "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-generic-pool", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", + "tdd": "yarn test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha 'test/**/*.ts'", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "version:update": "node ../../scripts/version-update.js", "watch": "tsc -w" }, "keywords": [ @@ -61,7 +62,7 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-generic-pool#readme" } diff --git a/packages/instrumentation-graphql/.eslintrc.js b/packages/instrumentation-graphql/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-graphql/.eslintrc.js +++ b/packages/instrumentation-graphql/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-graphql/CHANGELOG.md b/packages/instrumentation-graphql/CHANGELOG.md index dc5572c77e..537bc7c1ac 100644 --- a/packages/instrumentation-graphql/CHANGELOG.md +++ b/packages/instrumentation-graphql/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.52.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-graphql-v0.51.0...instrumentation-graphql-v0.52.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + ## [0.51.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-graphql-v0.50.0...instrumentation-graphql-v0.51.0) (2025-07-09) diff --git a/packages/instrumentation-graphql/package.json b/packages/instrumentation-graphql/package.json index 283acdad42..16258e63b3 100644 --- a/packages/instrumentation-graphql/package.json +++ b/packages/instrumentation-graphql/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-graphql", - "version": "0.51.0", + "version": "0.52.0", "description": "OpenTelemetry instrumentation for `graphql` gql query language and runtime for GraphQL", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -11,15 +11,16 @@ }, "scripts": { "clean": "rimraf build/*", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-graphql", "compile": "tsc -p .", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-graphql", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", - "test": "nyc mocha 'test/**/*.test.ts'", - "test-all-versions": "tav", "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test-all-versions": "tav", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", "version:update": "node ../../scripts/version-update.js", "watch": "tsc -w" }, @@ -60,7 +61,7 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-graphql#readme" } diff --git a/packages/instrumentation-hapi/.eslintrc.js b/packages/instrumentation-hapi/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-hapi/.eslintrc.js +++ b/packages/instrumentation-hapi/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-hapi/CHANGELOG.md b/packages/instrumentation-hapi/CHANGELOG.md index ebd8f1850b..2f13b8773a 100644 --- a/packages/instrumentation-hapi/CHANGELOG.md +++ b/packages/instrumentation-hapi/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.51.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-hapi-v0.50.0...instrumentation-hapi-v0.51.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + ## [0.50.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-hapi-v0.49.0...instrumentation-hapi-v0.50.0) (2025-07-09) diff --git a/packages/instrumentation-hapi/package.json b/packages/instrumentation-hapi/package.json index f26251fd1e..05b131e1fa 100644 --- a/packages/instrumentation-hapi/package.json +++ b/packages/instrumentation-hapi/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-hapi", - "version": "0.50.0", + "version": "0.51.0", "description": "OpenTelemetry instrumentation for `@hapi/hapi` http web application framework", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,17 +10,18 @@ "directory": "packages/instrumentation-hapi" }, "scripts": { - "test": "nyc mocha 'test/**/*.test.ts'", - "test-all-versions": "tav", - "tdd": "yarn test -- --watch-extensions ts --watch", "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "lint:readme": "node ../../scripts/lint-readme.js", - "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-hapi", "compile": "tsc -p .", - "prepublishOnly": "npm run compile" + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-hapi", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "lint:readme": "node ../../scripts/lint-readme.js", + "prepublishOnly": "npm run compile", + "tdd": "npm test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test-all-versions": "tav", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "version:update": "node ../../scripts/version-update.js" }, "keywords": [ "hapi", @@ -50,7 +51,7 @@ "@hapi/hapi": "21.3.12", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", @@ -63,7 +64,7 @@ }, "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-hapi#readme" diff --git a/packages/instrumentation-hapi/test/fixtures/use-hapi.js b/packages/instrumentation-hapi/test/fixtures/use-hapi.js index a898bbd181..a4428fe709 100644 --- a/packages/instrumentation-hapi/test/fixtures/use-hapi.js +++ b/packages/instrumentation-hapi/test/fixtures/use-hapi.js @@ -21,11 +21,8 @@ const { HapiInstrumentation } = require('../../build/src/index.js'); const sdk = createTestNodeSdk({ serviceName: 'use-hapi', - instrumentations: [ - new HttpInstrumentation(), - new HapiInstrumentation() - ] -}) + instrumentations: [new HttpInstrumentation(), new HapiInstrumentation()], +}); sdk.start(); const Hapi = require('@hapi/hapi'); @@ -35,27 +32,30 @@ async function main() { // Start a Hapi server. const server = new Hapi.Server({ port: 0, - host: 'localhost' + host: 'localhost', }); server.route({ method: 'GET', path: '/route/{param}', - handler: function() { + handler: function () { return { hello: 'world' }; - } + }, }); await server.start(); // Make a single request to it. await new Promise(resolve => { - http.get(`http://${server.info.host}:${server.info.port}/route/test`, (res) => { - res.resume(); - res.on('end', () => { - resolve(); - }); - }); + http.get( + `http://${server.info.host}:${server.info.port}/route/test`, + res => { + res.resume(); + res.on('end', () => { + resolve(); + }); + } + ); }); await server.stop(); diff --git a/packages/instrumentation-hapi/test/fixtures/use-hapi.mjs b/packages/instrumentation-hapi/test/fixtures/use-hapi.mjs index 665998fdfe..e09c3a4a28 100644 --- a/packages/instrumentation-hapi/test/fixtures/use-hapi.mjs +++ b/packages/instrumentation-hapi/test/fixtures/use-hapi.mjs @@ -24,11 +24,8 @@ import { HapiInstrumentation } from '../../build/src/index.js'; const sdk = createTestNodeSdk({ serviceName: 'use-hapi', - instrumentations: [ - new HttpInstrumentation(), - new HapiInstrumentation() - ] -}) + instrumentations: [new HttpInstrumentation(), new HapiInstrumentation()], +}); sdk.start(); import Hapi from '@hapi/hapi'; @@ -37,22 +34,22 @@ import http from 'http'; // Start a Hapi server. const server = new Hapi.Server({ port: 0, - host: 'localhost' + host: 'localhost', }); server.route({ method: 'GET', path: '/route/{param}', - handler: function() { + handler: function () { return { hello: 'world' }; - } + }, }); await server.start(); // Make a single request to it. await new Promise(resolve => { - http.get(`http://${server.info.host}:${server.info.port}/route/test`, (res) => { + http.get(`http://${server.info.host}:${server.info.port}/route/test`, res => { res.resume(); res.on('end', () => { resolve(); diff --git a/packages/instrumentation-ioredis/.eslintrc.js b/packages/instrumentation-ioredis/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-ioredis/.eslintrc.js +++ b/packages/instrumentation-ioredis/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-ioredis/CHANGELOG.md b/packages/instrumentation-ioredis/CHANGELOG.md index 40fb8a0431..511fec8efd 100644 --- a/packages/instrumentation-ioredis/CHANGELOG.md +++ b/packages/instrumentation-ioredis/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.52.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-ioredis-v0.51.0...instrumentation-ioredis-v0.52.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + ## [0.51.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-ioredis-v0.50.1...instrumentation-ioredis-v0.51.0) (2025-07-09) diff --git a/packages/instrumentation-ioredis/package.json b/packages/instrumentation-ioredis/package.json index 5b05dc523c..1ec2cc6a3b 100644 --- a/packages/instrumentation-ioredis/package.json +++ b/packages/instrumentation-ioredis/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-ioredis", - "version": "0.51.0", + "version": "0.52.0", "description": "OpenTelemetry instrumentation for `ioredis` database redis client for Redis", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,20 +10,23 @@ "directory": "packages/instrumentation-ioredis" }, "scripts": { - "test": "nyc mocha 'test/**/*.test.ts'", - "test:debug": "cross-env RUN_REDIS_TESTS_LOCAL=true mocha --inspect-brk --no-timeouts 'test/**/*.test.ts'", - "test:local": "cross-env RUN_REDIS_TESTS_LOCAL=true npm run test", - "test-all-versions": "tav", - "test-all-versions:local": "cross-env RUN_REDIS_TESTS_LOCAL=true npm run test-all-versions", - "tdd": "npm run test -- --watch-extensions ts --watch", "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "lint:readme": "node ../../scripts/lint-readme.js", - "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-ioredis", "compile": "tsc -p .", - "prepublishOnly": "npm run compile" + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-ioredis", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "lint:readme": "node ../../scripts/lint-readme.js", + "prepublishOnly": "npm run compile", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test-all-versions": "tav", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test:debug": "cross-env RUN_REDIS_TESTS=true mocha --inspect-brk --no-timeouts 'test/**/*.test.ts'", + "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm test", + "test-all-versions:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm run test-all-versions", + "test-services:start": "cd ../.. && npm run test-services:start redis", + "test-services:stop": "cd ../.. && npm run test-services:stop redis", + "version:update": "node ../../scripts/version-update.js" }, "keywords": [ "instrumentation", @@ -53,7 +56,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/ioredis4": "npm:@types/ioredis@4.28.10", @@ -69,7 +72,7 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/redis-common": "^0.38.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, diff --git a/packages/instrumentation-ioredis/test/fixtures/use-ioredis.mjs b/packages/instrumentation-ioredis/test/fixtures/use-ioredis.mjs index 8f3d98940d..89b88c3605 100644 --- a/packages/instrumentation-ioredis/test/fixtures/use-ioredis.mjs +++ b/packages/instrumentation-ioredis/test/fixtures/use-ioredis.mjs @@ -24,10 +24,8 @@ import { IORedisInstrumentation } from '../../build/src/index.js'; const sdk = createTestNodeSdk({ serviceName: 'use-ioredis', - instrumentations: [ - new IORedisInstrumentation() - ] -}) + instrumentations: [new IORedisInstrumentation()], +}); sdk.start(); import assert from 'assert'; @@ -41,7 +39,7 @@ const randomId = ((Math.random() * 2 ** 32) >>> 0).toString(16); const testKeyName = `test-${randomId}`; const tracer = trace.getTracer(); -await tracer.startActiveSpan('manual', async (span) => { +await tracer.startActiveSpan('manual', async span => { redis.set(testKeyName, 'bar'); let val = await redis.get(testKeyName); assert(val === 'bar'); diff --git a/packages/instrumentation-ioredis/test/ioredis.test.ts b/packages/instrumentation-ioredis/test/ioredis.test.ts index cd164c3232..39472b858f 100644 --- a/packages/instrumentation-ioredis/test/ioredis.test.ts +++ b/packages/instrumentation-ioredis/test/ioredis.test.ts @@ -91,8 +91,7 @@ describe('ioredis', () => { }); let ioredis: typeof ioredisTypes.default; let instrumentation: IORedisInstrumentation; - const shouldTestLocal = process.env.RUN_REDIS_TESTS_LOCAL; - const shouldTest = process.env.RUN_REDIS_TESTS || shouldTestLocal; + const shouldTest = process.env.RUN_REDIS_TESTS; let contextManager: AsyncLocalStorageContextManager; beforeEach(() => { @@ -113,21 +112,11 @@ describe('ioredis', () => { this.skip(); } - if (shouldTestLocal) { - testUtils.startDocker('redis'); - } - instrumentation = new IORedisInstrumentation(); instrumentation.setTracerProvider(provider); ioredis = require('ioredis'); }); - after(() => { - if (shouldTestLocal) { - testUtils.cleanUpDocker('redis'); - } - }); - it('should have correct module name', () => { assert.strictEqual( instrumentation.instrumentationName, diff --git a/packages/instrumentation-kafkajs/.eslintrc.js b/packages/instrumentation-kafkajs/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-kafkajs/.eslintrc.js +++ b/packages/instrumentation-kafkajs/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-kafkajs/CHANGELOG.md b/packages/instrumentation-kafkajs/CHANGELOG.md index b23816d0c7..7eaf93102c 100644 --- a/packages/instrumentation-kafkajs/CHANGELOG.md +++ b/packages/instrumentation-kafkajs/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +## [0.14.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-kafkajs-v0.13.0...instrumentation-kafkajs-v0.14.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + +## [0.13.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-kafkajs-v0.12.0...instrumentation-kafkajs-v0.13.0) (2025-08-13) + + +### Features + +* **kafkajs:** instrument transaction send and sendBatch ([#2939](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2939)) ([c0593e6](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/c0593e65a6d74425a0922e358e4fd235e7112148)) + ## [0.12.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-kafkajs-v0.11.0...instrumentation-kafkajs-v0.12.0) (2025-07-09) diff --git a/packages/instrumentation-kafkajs/package.json b/packages/instrumentation-kafkajs/package.json index 6a207f79ef..5aec99e986 100644 --- a/packages/instrumentation-kafkajs/package.json +++ b/packages/instrumentation-kafkajs/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-kafkajs", - "version": "0.12.0", + "version": "0.14.0", "description": "OpenTelemetry instrumentation for `kafkajs` messaging client for Apache Kafka", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,17 +10,18 @@ "directory": "packages/instrumentation-kafkajs" }, "scripts": { - "test": "nyc mocha --require @opentelemetry/contrib-test-utils 'test/**/*.test.ts'", - "test-all-versions": "tav", - "tdd": "npm run test -- --watch-extensions ts --watch", "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-kafkajs", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "lint:readme": "node ../../scripts/lint-readme", "prepublishOnly": "npm run compile", - "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-kafkajs", - "compile": "tsc -p ." + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha --require @opentelemetry/contrib-test-utils 'test/**/*.test.ts'", + "test-all-versions": "tav", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "version:update": "node ../../scripts/version-update.js" }, "keywords": [ "kafkajs", @@ -48,7 +49,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -61,7 +62,7 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.30.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-kafkajs#readme" diff --git a/packages/instrumentation-kafkajs/src/instrumentation.ts b/packages/instrumentation-kafkajs/src/instrumentation.ts index b356de167f..f86c1215b0 100644 --- a/packages/instrumentation-kafkajs/src/instrumentation.ts +++ b/packages/instrumentation-kafkajs/src/instrumentation.ts @@ -289,7 +289,7 @@ export class KafkaJsInstrumentation extends InstrumentationBase { - return function sendBatch( + return (original: Producer['transaction']) => { + return function transaction( this: Producer, + ...args: Parameters + ): ReturnType { + const transactionSpan = instrumentation.tracer.startSpan('transaction'); + + const transactionPromise = original.apply(this, args); + + transactionPromise + .then((transaction: kafkaJs.Transaction) => { + const originalSend = transaction.send; + transaction.send = function send( + this: kafkaJs.Transaction, + ...args + ) { + return context.with( + trace.setSpan(context.active(), transactionSpan), + () => { + const patched = instrumentation._getSendPatch()(originalSend); + return patched.apply(this, args).catch(err => { + transactionSpan.setStatus({ + code: SpanStatusCode.ERROR, + message: err?.message, + }); + transactionSpan.recordException(err); + throw err; + }); + } + ); + }; + + const originalSendBatch = transaction.sendBatch; + transaction.sendBatch = function sendBatch( + this: kafkaJs.Transaction, + ...args + ) { + return context.with( + trace.setSpan(context.active(), transactionSpan), + () => { + const patched = + instrumentation._getSendBatchPatch()(originalSendBatch); + return patched.apply(this, args).catch(err => { + transactionSpan.setStatus({ + code: SpanStatusCode.ERROR, + message: err?.message, + }); + transactionSpan.recordException(err); + throw err; + }); + } + ); + }; + + const originalCommit = transaction.commit; + transaction.commit = function commit( + this: kafkaJs.Transaction, + ...args + ) { + const originCommitPromise = originalCommit + .apply(this, args) + .then(() => { + transactionSpan.setStatus({ code: SpanStatusCode.OK }); + }); + return instrumentation._endSpansOnPromise( + [transactionSpan], + [], + originCommitPromise + ); + }; + + const originalAbort = transaction.abort; + transaction.abort = function abort( + this: kafkaJs.Transaction, + ...args + ) { + const originAbortPromise = originalAbort.apply(this, args); + return instrumentation._endSpansOnPromise( + [transactionSpan], + [], + originAbortPromise + ); + }; + }) + .catch(err => { + transactionSpan.setStatus({ + code: SpanStatusCode.ERROR, + message: err?.message, + }); + transactionSpan.recordException(err); + transactionSpan.end(); + }); + + return transactionPromise; + }; + }; + } + + private _getSendBatchPatch() { + const instrumentation = this; + return ( + original: Producer['sendBatch'] | kafkaJs.Transaction['sendBatch'] + ) => { + return function sendBatch( + this: kafkaJs.Producer | kafkaJs.Transaction, ...args: Parameters ): ReturnType { const batch = args[0]; @@ -550,11 +661,11 @@ export class KafkaJsInstrumentation extends InstrumentationBase { + return (original: Producer['send'] | kafkaJs.Transaction['send']) => { return function send( - this: Producer, + this: Producer | kafkaJs.Transaction, ...args: Parameters ): ReturnType { const record = args[0]; diff --git a/packages/instrumentation-kafkajs/test/kafkajs.test.ts b/packages/instrumentation-kafkajs/test/kafkajs.test.ts index ada2b6e218..1995e65e74 100644 --- a/packages/instrumentation-kafkajs/test/kafkajs.test.ts +++ b/packages/instrumentation-kafkajs/test/kafkajs.test.ts @@ -23,7 +23,6 @@ import { SpanKind, SpanStatusCode, Baggage, - Attributes, } from '@opentelemetry/api'; import { ATTR_MESSAGING_SYSTEM, @@ -51,7 +50,6 @@ import { W3CBaggagePropagator, CompositePropagator } from '@opentelemetry/core'; const instrumentation = registerInstrumentationTesting( new KafkaJsInstrumentation() ); -import { CollectionResult, DataPointType } from '@opentelemetry/sdk-metrics'; import * as kafkajs from 'kafkajs'; import { @@ -74,61 +72,12 @@ import { ATTR_SERVER_ADDRESS, ATTR_SERVER_PORT, } from '@opentelemetry/semantic-conventions'; - -function assertMetricCollection( - { errors, resourceMetrics }: CollectionResult, - expected: Record< - string, - { - count?: number; - value?: number; - buckets?: Record; - attributes: Attributes; - }[] - > -) { - assert.strictEqual(errors.length, 0); - const { metrics } = resourceMetrics.scopeMetrics[0]; - assert.strictEqual( - Object.keys(expected).length, - metrics.length, - 'A different number of metrics were found than expected' - ); - Object.entries(expected).forEach(([name, values]) => { - const match = metrics.find(metric => metric.descriptor.name === name); - assert.ok(match, `metric ${name} not found`); - - if (match.dataPointType === DataPointType.HISTOGRAM) { - assert.deepStrictEqual( - match.dataPoints.map(d => d.value.count), - values.map(v => v.count), - `${name} datapoints do not have the same count` - ); - values.forEach(({ buckets }, i) => { - if (buckets) { - const { boundaries, counts } = match.dataPoints[i].value.buckets; - const actualBuckets = counts.reduce((acc, n, j) => { - if (n > 0) { - acc[boundaries[j]] = n; - } - return acc; - }, {} as Record); - assert.deepStrictEqual(actualBuckets, buckets); - } - }); - } else { - assert.deepStrictEqual( - match.dataPoints.map(d => d.value), - values.map(v => v.value), - `${name} datapoint values do not match` - ); - } - assert.deepStrictEqual( - match.dataPoints.map(d => d.attributes), - values.map(v => v.attributes) - ); - }); -} +import { + assertFailedSendSpans, + assertMetricCollection, + assertSuccessfulSendSpans, + haveSameTraceId, +} from './utils'; describe('instrumentation-kafkajs', () => { propagation.setGlobalPropagator( @@ -144,8 +93,17 @@ describe('instrumentation-kafkajs', () => { let producer: Producer; let messagesSent: Message[] = []; - - const patchProducerSend = (cb: () => Promise) => { + let transaction: kafkajs.Transaction; + + const patchProducerSend = ( + cb: () => Promise, + transactionOpts?: { + rejectTransaction?: boolean; + rejectCommit?: boolean; + rejectAbort?: boolean; + rejectSend?: boolean; + } + ) => { const origProducerFactory = kafkajs.Kafka.prototype.producer; kafkajs.Kafka.prototype.producer = function (...args): Producer { const producer = origProducerFactory.apply(this, args); @@ -162,6 +120,58 @@ describe('instrumentation-kafkajs', () => { return cb(); }; + producer.transaction = async function () { + if (transactionOpts?.rejectTransaction) { + return Promise.reject( + new Error('error thrown from kafka client transaction') + ); + } + transaction = { + send: async (_record: ProducerRecord) => { + if (transactionOpts?.rejectSend) { + return Promise.reject( + new Error('error thrown from kafka client transaction send') + ); + } + messagesSent.push(..._record.messages); + return cb(); + }, + + sendBatch: async (_batch: ProducerBatch) => { + if (transactionOpts?.rejectSend) { + return Promise.reject( + new Error( + 'error thrown from kafka client transaction sendBatch' + ) + ); + } + _batch.topicMessages?.forEach(t => + messagesSent.push(...t.messages) + ); + return cb(); + }, + + commit: async () => { + if (transactionOpts?.rejectCommit) { + return Promise.reject( + new Error('error thrown from kafka client transaction commit') + ); + } + return cb(); + }, + + abort: async () => { + if (transactionOpts?.rejectAbort) { + return Promise.reject( + new Error('error thrown from kafka client transaction abort') + ); + } + return cb(); + }, + } as unknown as kafkajs.Transaction; + return transaction; + }; + return producer; }; }; @@ -244,46 +254,28 @@ describe('instrumentation-kafkajs', () => { const spans = getTestSpans(); assert.strictEqual(spans.length, 1); const span = spans[0]; - assert.strictEqual(span.kind, SpanKind.PRODUCER); assert.strictEqual(span.name, 'send topic-name-1'); - assert.strictEqual(span.status.code, SpanStatusCode.UNSET); - assert.strictEqual(span.attributes[ATTR_MESSAGING_SYSTEM], 'kafka'); - assert.strictEqual( - span.attributes[ATTR_MESSAGING_DESTINATION_NAME], - 'topic-name-1' - ); - assert.strictEqual( - span.attributes[ATTR_MESSAGING_DESTINATION_PARTITION_ID], - '42' - ); - assert.strictEqual( - span.attributes[ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE], - undefined - ); - assert.strictEqual( - span.attributes[ATTR_MESSAGING_KAFKA_MESSAGE_KEY], - 'message-key-0' - ); + await assertSuccessfulSendSpans({ + spans: [span], + metricReader, + expectedMetrics: [ + { topic: 'topic-name-1', value: 1, partitionId: '42' }, + ], + perSpan: { + 0: { + [ATTR_MESSAGING_DESTINATION_NAME]: 'topic-name-1', + [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: '42', + [ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]: undefined, + [ATTR_MESSAGING_KAFKA_MESSAGE_KEY]: 'message-key-0', + }, + }, + }); assert.strictEqual(messagesSent.length, 1); expectKafkaHeadersToMatchSpanContext( messagesSent[0], span as ReadableSpan ); - - assertMetricCollection(await metricReader.collect(), { - [METRIC_MESSAGING_CLIENT_SENT_MESSAGES]: [ - { - value: 1, - attributes: { - [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA, - [ATTR_MESSAGING_DESTINATION_NAME]: 'topic-name-1', - [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: '42', - [ATTR_MESSAGING_OPERATION_NAME]: 'send', - }, - }, - ], - }); }); it('simple send create span with tombstone attribute', async () => { @@ -301,24 +293,19 @@ describe('instrumentation-kafkajs', () => { const spans = getTestSpans(); assert.strictEqual(spans.length, 1); const span = spans[0]; - assert.strictEqual(span.kind, SpanKind.PRODUCER); assert.strictEqual(span.name, 'send topic-name-1'); - assert.strictEqual( - span.attributes[ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE], - true - ); - assertMetricCollection(await metricReader.collect(), { - [METRIC_MESSAGING_CLIENT_SENT_MESSAGES]: [ - { - value: 1, - attributes: { - [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA, - [ATTR_MESSAGING_DESTINATION_NAME]: 'topic-name-1', - [ATTR_MESSAGING_OPERATION_NAME]: 'send', - [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: '42', - }, - }, + + await assertSuccessfulSendSpans({ + spans: [span], + metricReader, + expectedMetrics: [ + { topic: 'topic-name-1', value: 1, partitionId: '42' }, ], + perSpan: { + 0: { + [ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]: true, + }, + }, }); }); @@ -444,25 +431,12 @@ describe('instrumentation-kafkajs', () => { spans[i] as ReadableSpan ); } - assertMetricCollection(await metricReader.collect(), { - [METRIC_MESSAGING_CLIENT_SENT_MESSAGES]: [ - { - value: 2, - attributes: { - [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA, - [ATTR_MESSAGING_DESTINATION_NAME]: 'topic-name-1', - [ATTR_MESSAGING_OPERATION_NAME]: 'send', - }, - }, - { - value: 1, - attributes: { - [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA, - [ATTR_MESSAGING_DESTINATION_NAME]: 'topic-name-2', - [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: '1', - [ATTR_MESSAGING_OPERATION_NAME]: 'send', - }, - }, + assertSuccessfulSendSpans({ + spans, + metricReader, + expectedMetrics: [ + { topic: 'topic-name-1', value: 2 }, + { topic: 'topic-name-2', value: 1, partitionId: '1' }, ], }); }); @@ -495,23 +469,13 @@ describe('instrumentation-kafkajs', () => { const spans = getTestSpans(); assert.strictEqual(spans.length, 1); const span = spans[0]; - assert.strictEqual(span.status.code, SpanStatusCode.ERROR); - assert.strictEqual( - span.status.message, - 'error thrown from kafka client send' - ); - assertMetricCollection(await metricReader.collect(), { - [METRIC_MESSAGING_CLIENT_SENT_MESSAGES]: [ - { - value: 1, - attributes: { - [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA, - [ATTR_MESSAGING_DESTINATION_NAME]: 'topic-name-1', - [ATTR_MESSAGING_OPERATION_NAME]: 'send', - [ATTR_ERROR_TYPE]: 'Error', - }, - }, - ], + await assertFailedSendSpans({ + spans: [span], + metricReader, + errorMessage: 'error thrown from kafka client send', + expectedTopicCounts: { + 'topic-name-1': 1, + }, }); }); @@ -532,25 +496,13 @@ describe('instrumentation-kafkajs', () => { const spans = getTestSpans(); assert.strictEqual(spans.length, 2); - spans.forEach(span => { - assert.strictEqual(span.status.code, SpanStatusCode.ERROR); - assert.strictEqual( - span.status.message, - 'error thrown from kafka client send' - ); - }); - assertMetricCollection(await metricReader.collect(), { - [METRIC_MESSAGING_CLIENT_SENT_MESSAGES]: [ - { - value: 2, - attributes: { - [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA, - [ATTR_MESSAGING_DESTINATION_NAME]: 'topic-name-1', - [ATTR_MESSAGING_OPERATION_NAME]: 'send', - [ATTR_ERROR_TYPE]: 'Error', - }, - }, - ], + await assertFailedSendSpans({ + spans: spans, + metricReader, + errorMessage: 'error thrown from kafka client send', + expectedTopicCounts: { + 'topic-name-1': 2, + }, }); }); @@ -583,34 +535,14 @@ describe('instrumentation-kafkajs', () => { const spans = getTestSpans(); assert.strictEqual(spans.length, 3); - spans.forEach(span => { - assert.strictEqual(span.status.code, SpanStatusCode.ERROR); - assert.strictEqual( - span.status.message, - 'error thrown from kafka client send' - ); - }); - assertMetricCollection(await metricReader.collect(), { - [METRIC_MESSAGING_CLIENT_SENT_MESSAGES]: [ - { - value: 2, - attributes: { - [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA, - [ATTR_MESSAGING_DESTINATION_NAME]: 'topic-name-1', - [ATTR_MESSAGING_OPERATION_NAME]: 'send', - [ATTR_ERROR_TYPE]: 'Error', - }, - }, - { - value: 1, - attributes: { - [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA, - [ATTR_MESSAGING_DESTINATION_NAME]: 'topic-name-2', - [ATTR_MESSAGING_OPERATION_NAME]: 'send', - [ATTR_ERROR_TYPE]: 'Error', - }, - }, - ], + await assertFailedSendSpans({ + spans, + metricReader, + errorMessage: 'error thrown from kafka client send', + expectedTopicCounts: { + 'topic-name-1': 2, + 'topic-name-2': 1, + }, }); }); }); @@ -684,6 +616,347 @@ describe('instrumentation-kafkajs', () => { assert.strictEqual(span.status.code, SpanStatusCode.UNSET); }); }); + + describe('transaction instrumentation', () => { + function assertSpanHasParent( + parent: ReadableSpan, + child: ReadableSpan, + msg = 'child should reference parent spanId' + ) { + assert.strictEqual( + child.parentSpanContext?.spanId, + parent.spanContext().spanId, + msg + ); + } + const defaultFallback = async () => [ + { topicName: 'topic-name-1' } as RecordMetadata, + ]; + + const prepareTestProducer = ( + fallback: Parameters[0] = defaultFallback, + opts: Parameters[1] = {} + ) => { + patchProducerSend(fallback, opts); + instrumentation.disable(); + instrumentation.enable(); + return kafka.producer(); + }; + + describe('transaction commit', () => { + it('commits after two sends with unset span statuses', async () => { + const producer = prepareTestProducer(); + const tx = await producer.transaction(); + + await tx.send({ topic: 'topic-name-1', messages: [{ value: 'a' }] }); + await tx.send({ topic: 'topic-name-1', messages: [{ value: 'b' }] }); + await tx.commit(); + + const spans = getTestSpans(); + const transactionSpan = spans.find(s => s.name === 'transaction'); + const sendSpans = spans.filter(s => s.name === 'send topic-name-1'); + assert.ok(transactionSpan); + assert.strictEqual(spans.length, 3); + assert.strictEqual(transactionSpan.kind, SpanKind.INTERNAL); + assert.strictEqual(transactionSpan.status.code, SpanStatusCode.OK); + + assert.strictEqual(sendSpans.length, 2); + assert.strictEqual(sendSpans[0].name, 'send topic-name-1'); + assert.strictEqual(sendSpans[1].name, 'send topic-name-1'); + await assertSuccessfulSendSpans({ + spans: sendSpans, + metricReader, + expectedMetrics: [{ topic: 'topic-name-1', value: 2 }], + perSpan: Object.fromEntries( + Array.from({ length: 2 }, (_, i) => [ + i, + { + [ATTR_MESSAGING_DESTINATION_NAME]: 'topic-name-1', + [ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE]: undefined, + }, + ]) + ), + }); + + sendSpans.forEach((s, i) => { + assertSpanHasParent(transactionSpan, s); + expectKafkaHeadersToMatchSpanContext( + messagesSent[i], + s as ReadableSpan + ); + }); + assert.ok(haveSameTraceId(spans)); + }); + + it('sets transaction span to error on commit rejection, send remains unset', async () => { + const producer = prepareTestProducer(defaultFallback, { + rejectCommit: true, + }); + const tx = await producer.transaction(); + await tx.send({ topic: 'topic-name-1', messages: [{ value: 'x' }] }); + + await assert.rejects(tx.commit()); + + const spans = getTestSpans(); + const transactionSpan = spans.find(s => s.name === 'transaction'); + const sendSpan = spans.find(s => s.name.startsWith('send')); + assert.ok(transactionSpan); + assert.ok(sendSpan); + assert.strictEqual(transactionSpan.kind, SpanKind.INTERNAL); + assertSpanHasParent(transactionSpan, sendSpan); + assert.strictEqual(transactionSpan.status.code, SpanStatusCode.ERROR); + assert.strictEqual( + transactionSpan.status.message, + 'error thrown from kafka client transaction commit' + ); + assert.strictEqual(sendSpan.status.code, SpanStatusCode.UNSET); + assert.strictEqual(sendSpan.name, 'send topic-name-1'); + expectKafkaHeadersToMatchSpanContext( + messagesSent[0], + sendSpan as ReadableSpan + ); + assert.ok(haveSameTraceId(spans)); + }); + }); + + describe('transaction abort', () => { + it('spans remain unset when abort succeeds', async () => { + const producer = prepareTestProducer(); + const tx = await producer.transaction(); + await tx.send({ topic: 'topic-name-1', messages: [{ value: 'a' }] }); + + await tx.abort(); + + const spans = getTestSpans(); + const [transactionSpan, sendSpan] = [ + spans.find(s => s.name === 'transaction'), + spans.find(s => s.name === 'send topic-name-1'), + ]; + assert.ok(transactionSpan); + assert.ok(sendSpan); + assertSpanHasParent(transactionSpan, sendSpan); + expectKafkaHeadersToMatchSpanContext( + messagesSent[0], + sendSpan as ReadableSpan + ); + assert.strictEqual(transactionSpan.kind, SpanKind.INTERNAL); + assert.strictEqual(transactionSpan.status.code, SpanStatusCode.UNSET); + assert.strictEqual(sendSpan.status.code, SpanStatusCode.UNSET); + assert.strictEqual(sendSpan.name, 'send topic-name-1'); + + assert.ok(haveSameTraceId(spans)); + }); + + it('sets transaction span to error on abort rejection', async () => { + const producer = prepareTestProducer(defaultFallback, { + rejectAbort: true, + }); + const tx = await producer.transaction(); + await tx.send({ + topic: 'topic-name-1', + messages: [{ value: 'fail' }], + }); + + await assert.rejects(tx.abort()); + + const spans = getTestSpans(); + const [transactionSpan, sendSpan] = [ + spans.find(s => s.name === 'transaction'), + spans.find(s => s.name.startsWith('send')), + ]; + assert.ok(transactionSpan); + assert.ok(sendSpan); + assertSpanHasParent(transactionSpan, sendSpan); + assert.strictEqual(transactionSpan.kind, SpanKind.INTERNAL); + assert.strictEqual(transactionSpan.status.code, SpanStatusCode.ERROR); + assert.strictEqual( + transactionSpan.status.message, + 'error thrown from kafka client transaction abort' + ); + assert.strictEqual(sendSpan.status.code, SpanStatusCode.UNSET); + assert.ok(haveSameTraceId(spans)); + }); + }); + + describe('span relations inside transaction', () => { + beforeEach(() => { + patchProducerSend(async () => [ + { topicName: 'topic-name-1' } as RecordMetadata, + { topicName: 'topic-name-2' } as RecordMetadata, + ]); + instrumentation.disable(); + instrumentation.enable(); + producer = kafka.producer(); + }); + + it('associates multiple sends with the same transaction and traceId', async () => { + const tx = await producer.transaction(); + await tx.send({ topic: 'topic-name-1', messages: [{ value: '1' }] }); + await tx.send({ topic: 'topic-name-1', messages: [{ value: '2' }] }); + await tx.commit(); + + const spans = getTestSpans(); + const transactionSpan = spans.find(s => s.name === 'transaction'); + const sendSpans = spans.filter(s => s.name.startsWith('send')); + assert.ok(transactionSpan); + assert.ok(sendSpans); + sendSpans.forEach(s => assertSpanHasParent(transactionSpan, s)); + assert.ok(haveSameTraceId(spans)); + }); + + it('associates sendBatch messages with parent transaction and same traceId', async () => { + const tx = await producer.transaction(); + await tx.sendBatch({ + topicMessages: [ + { + topic: 'topic-name-1', + messages: [{ value: 'a' }, { value: 'b' }], + }, + { topic: 'topic-name-2', messages: [{ value: 'c' }] }, + ], + }); + await tx.commit(); + const spans = getTestSpans(); + const transactionSpan = spans.find(s => s.name === 'transaction'); + const sendSpans = spans.filter(s => s.name.startsWith('send')); + assert.ok(transactionSpan); + assert.strictEqual(sendSpans.length, 3); + assert.strictEqual(spans[0].name, 'send topic-name-1'); + assert.strictEqual(spans[1].name, 'send topic-name-1'); + assert.strictEqual(spans[2].name, 'send topic-name-2'); + assertSuccessfulSendSpans({ + spans: sendSpans, + metricReader, + expectedMetrics: [ + { topic: 'topic-name-1', value: 2 }, + { topic: 'topic-name-2', value: 1 }, + ], + }); + sendSpans.forEach(s => assertSpanHasParent(transactionSpan, s)); + assert.ok(haveSameTraceId(spans)); + }); + }); + + describe('send failure inside transaction', () => { + beforeEach(() => { + patchProducerSend( + async () => [{ topicName: 'topic-name-1' } as RecordMetadata], + { rejectSend: true } + ); + instrumentation.disable(); + instrumentation.enable(); + producer = kafka.producer(); + }); + + it('sets send span and transaction span to error when send fails', async () => { + const tx = await producer.transaction(); + await assert.rejects( + tx.send({ topic: 'topic-name-1', messages: [{ value: 'oops' }] }) + ); + await tx.abort(); + + const spans = getTestSpans(); + const [transactionSpan, sendSpan] = [ + spans.find(s => s.name === 'transaction'), + spans.find(s => s.name === 'send topic-name-1'), + ]; + assert.ok(transactionSpan); + assert.ok(sendSpan); + const errorMessage = + 'error thrown from kafka client transaction send'; + assertSpanHasParent(transactionSpan, sendSpan); + await assertFailedSendSpans({ + spans: [sendSpan], + metricReader, + errorMessage, + expectedTopicCounts: { + 'topic-name-1': 1, + }, + }); + assert.strictEqual(transactionSpan.status.code, SpanStatusCode.ERROR); + assert.strictEqual(transactionSpan.status.message, errorMessage); + assert.ok(haveSameTraceId(spans)); + }); + + it('sets all sendBatch spans and transaction span to error when sendBatch fails', async () => { + const tx = await producer.transaction(); + await assert.rejects( + tx.sendBatch({ + topicMessages: [ + { + topic: 'topic-name-1', + messages: [{ value: 'x' }, { value: 'y' }], + }, + ], + }) + ); + await tx.abort(); + + const spans = getTestSpans(); + const transactionSpan = spans.find(s => s.name === 'transaction'); + const sendSpans = spans.filter(s => s.name === 'send topic-name-1'); + assert.ok(transactionSpan); + assert.ok(sendSpans); + await assertFailedSendSpans({ + spans: sendSpans, + metricReader, + errorMessage: + 'error thrown from kafka client transaction sendBatch', + expectedTopicCounts: { + 'topic-name-1': 2, + }, + }); + const errorMessage = + 'error thrown from kafka client transaction sendBatch'; + sendSpans.forEach(s => { + assertSpanHasParent(transactionSpan, s); + }); + assert.strictEqual(transactionSpan.status.code, SpanStatusCode.ERROR); + assert.strictEqual(transactionSpan.status.message, errorMessage); + assert.ok(haveSameTraceId(spans)); + }); + }); + describe('transaction setup errors', () => { + beforeEach(() => { + patchProducerSend( + async () => [{ topicName: 'topic-name-1' } as RecordMetadata], + { rejectTransaction: true } + ); + instrumentation.disable(); + instrumentation.enable(); + producer = kafka.producer(); + }); + + it('calls catch block when transaction creation fails and transaction span sets error attribute', async () => { + await assert.rejects( + () => producer.transaction(), + /error thrown from kafka client transaction/ + ); + + const spans = getTestSpans(); + assert.strictEqual(spans.length, 1); + + const transactionSpan = spans.find(s => s.name === 'transaction'); + assert.ok(transactionSpan); + assert.strictEqual(transactionSpan.kind, SpanKind.INTERNAL); + assert.strictEqual(transactionSpan.status.code, SpanStatusCode.ERROR); + + assert.strictEqual( + transactionSpan.status.code, + SpanStatusCode.ERROR, + `Expected transactionSpan status.code to be ERROR` + ); + assert.strictEqual( + transactionSpan.status.message, + 'error thrown from kafka client transaction' + ); + const exceptionEvent = transactionSpan.events.find( + e => e.name === 'exception' + ); + assert.ok(exceptionEvent, 'recordException was not called'); + }); + }); + }); }); describe('consumer', () => { diff --git a/packages/instrumentation-kafkajs/test/utils.ts b/packages/instrumentation-kafkajs/test/utils.ts new file mode 100644 index 0000000000..ba02018b18 --- /dev/null +++ b/packages/instrumentation-kafkajs/test/utils.ts @@ -0,0 +1,203 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as assert from 'assert'; +import { Attributes, SpanKind, SpanStatusCode } from '@opentelemetry/api'; +import { ReadableSpan } from '@opentelemetry/sdk-trace-base'; +import { CollectionResult, DataPointType } from '@opentelemetry/sdk-metrics'; + +import { + METRIC_MESSAGING_CLIENT_SENT_MESSAGES, + ATTR_MESSAGING_SYSTEM, + ATTR_MESSAGING_DESTINATION_NAME, + ATTR_MESSAGING_OPERATION_NAME, + MESSAGING_SYSTEM_VALUE_KAFKA, + ATTR_MESSAGING_DESTINATION_PARTITION_ID, +} from '../src/semconv'; +import { ATTR_ERROR_TYPE } from '@opentelemetry/semantic-conventions'; + +export function assertMetricCollection( + { errors, resourceMetrics }: CollectionResult, + expected: Record< + string, + { + count?: number; + value?: number; + buckets?: Record; + attributes: Attributes; + }[] + > +) { + assert.strictEqual(errors.length, 0); + const { metrics } = resourceMetrics.scopeMetrics[0]; + assert.strictEqual( + Object.keys(expected).length, + metrics.length, + 'A different number of metrics were found than expected' + ); + Object.entries(expected).forEach(([name, values]) => { + const match = metrics.find(metric => metric.descriptor.name === name); + assert.ok(match, `metric ${name} not found`); + + if (match.dataPointType === DataPointType.HISTOGRAM) { + assert.deepStrictEqual( + match.dataPoints.map(d => d.value.count), + values.map(v => v.count), + `${name} datapoints do not have the same count` + ); + values.forEach(({ buckets }, i) => { + if (buckets) { + const { boundaries, counts } = match.dataPoints[i].value.buckets; + const actualBuckets = counts.reduce((acc, n, j) => { + if (n > 0) { + acc[boundaries[j]] = n; + } + return acc; + }, {} as Record); + assert.deepStrictEqual(actualBuckets, buckets); + } + }); + } else { + assert.deepStrictEqual( + match.dataPoints.map(d => d.value), + values.map(v => v.value), + `${name} datapoint values do not match` + ); + } + assert.deepStrictEqual( + match.dataPoints.map(d => d.attributes), + values.map(v => v.attributes) + ); + }); +} + +export async function assertFailedSendSpans({ + spans, + errorMessage = 'error thrown from kafka client send', + metricReader, + expectedTopicCounts, +}: { + spans: ReadableSpan[]; + metricReader: { collect(): Promise }; + errorMessage: string; + expectedTopicCounts: Record; +}): Promise { + spans.forEach((span, i) => { + assert.strictEqual( + span.status.code, + SpanStatusCode.ERROR, + `Expected span #${i} status.code to be ERROR` + ); + + assert.strictEqual( + span.status.message, + errorMessage, + `Expected span #${i} status.message to match Kafka send error` + ); + }); + + const expectedMetric = Object.entries(expectedTopicCounts).map( + ([topic, value]) => ({ + value, + attributes: { + [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA, + [ATTR_MESSAGING_DESTINATION_NAME]: topic, + [ATTR_MESSAGING_OPERATION_NAME]: 'send', + [ATTR_ERROR_TYPE]: 'Error', + }, + }) + ); + + const result = await metricReader.collect(); + + assertMetricCollection(result, { + [METRIC_MESSAGING_CLIENT_SENT_MESSAGES]: expectedMetric, + }); +} + +export async function assertSuccessfulSendSpans({ + spans, + metricReader, + expectedMetrics, + perSpan = {}, +}: { + spans: ReadableSpan[]; + metricReader: { collect(): Promise }; + expectedMetrics: { + topic: string; + value: number; + partitionId?: string; + }[]; + perSpan?: Record; +}): Promise { + spans.forEach((span, i) => { + assert.strictEqual( + span.kind, + SpanKind.PRODUCER, + `Span #${i} should be PRODUCER` + ); + assert.strictEqual( + span.status.code, + SpanStatusCode.UNSET, + `Span #${i} status.code should be UNSET` + ); + assert.ok( + span.name.startsWith('send '), + `Span #${i} name should start with "send "` + ); + assert.strictEqual( + span.attributes[ATTR_MESSAGING_SYSTEM], + 'kafka', + `Span #${i} ATTR_MESSAGING_SYSTEM mismatch` + ); + + const extra = perSpan[i]; + if (extra) { + Object.entries(extra).forEach(([key, value]) => { + assert.strictEqual( + span.attributes[key], + value, + `Span #${i} attribute ${key} mismatch` + ); + }); + } + }); + + const expectedMetricArray = expectedMetrics.map( + ({ topic, value, partitionId }) => ({ + value, + attributes: { + [ATTR_MESSAGING_SYSTEM]: MESSAGING_SYSTEM_VALUE_KAFKA, + [ATTR_MESSAGING_DESTINATION_NAME]: topic, + [ATTR_MESSAGING_OPERATION_NAME]: 'send', + ...(partitionId !== undefined && { + [ATTR_MESSAGING_DESTINATION_PARTITION_ID]: partitionId, + }), + }, + }) + ); + + const collected = await metricReader.collect(); + assertMetricCollection(collected, { + [METRIC_MESSAGING_CLIENT_SENT_MESSAGES]: expectedMetricArray, + }); +} + +export function haveSameTraceId(spans: ReadableSpan[]): boolean { + if (spans.length === 0) return false; + const referenceId = spans[0].spanContext().traceId; + return spans.every(span => span.spanContext().traceId === referenceId); +} diff --git a/packages/instrumentation-knex/.eslintrc.js b/packages/instrumentation-knex/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-knex/.eslintrc.js +++ b/packages/instrumentation-knex/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-knex/CHANGELOG.md b/packages/instrumentation-knex/CHANGELOG.md index fe45969b29..06d71577b0 100644 --- a/packages/instrumentation-knex/CHANGELOG.md +++ b/packages/instrumentation-knex/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.49.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-knex-v0.48.0...instrumentation-knex-v0.49.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + ## [0.48.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-knex-v0.47.0...instrumentation-knex-v0.48.0) (2025-07-09) diff --git a/packages/instrumentation-knex/package.json b/packages/instrumentation-knex/package.json index 86d6f2cfb0..eda5a295fa 100644 --- a/packages/instrumentation-knex/package.json +++ b/packages/instrumentation-knex/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-knex", - "version": "0.48.0", + "version": "0.49.0", "description": "OpenTelemetry instrumentation for `knex` database SQL query builder", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,16 +10,18 @@ "directory": "packages/instrumentation-knex" }, "scripts": { - "test": "nyc mocha 'test/**/*.ts'", - "tdd": "yarn test -- --watch-extensions ts --watch", "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "version:update": "node ../../scripts/version-update.js", - "lint:readme": "node ../../scripts/lint-readme", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-knex", "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-knex", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "lint:readme": "node ../../scripts/lint-readme", "prepublishOnly": "npm run compile", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc mocha 'test/**/*.ts'", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "//todo": "echo \"add test-all-versions\"", + "version:update": "node ../../scripts/version-update.js", "watch": "tsc -w" }, "keywords": [ @@ -52,7 +54,7 @@ "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", - "better-sqlite3": "11.0.0", + "better-sqlite3": "^11.10.0", "knex": "3.1.0", "nyc": "17.1.0", "rimraf": "5.0.10", @@ -60,7 +62,7 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.33.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-knex#readme" diff --git a/packages/instrumentation-koa/.eslintrc.js b/packages/instrumentation-koa/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-koa/.eslintrc.js +++ b/packages/instrumentation-koa/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-koa/CHANGELOG.md b/packages/instrumentation-koa/CHANGELOG.md index b880e3d9cb..232b09ae69 100644 --- a/packages/instrumentation-koa/CHANGELOG.md +++ b/packages/instrumentation-koa/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.52.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-koa-v0.51.0...instrumentation-koa-v0.52.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + ## [0.51.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-koa-v0.50.2...instrumentation-koa-v0.51.0) (2025-07-09) diff --git a/packages/instrumentation-koa/package.json b/packages/instrumentation-koa/package.json index 1b2c8d19f0..f6bfc043f0 100644 --- a/packages/instrumentation-koa/package.json +++ b/packages/instrumentation-koa/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-koa", - "version": "0.51.0", + "version": "0.52.0", "description": "OpenTelemetry instrumentation for `koa` http web application framework", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,17 +10,18 @@ "directory": "packages/instrumentation-koa" }, "scripts": { - "test": "nyc mocha 'test/**/*.ts'", - "test-all-versions": "tav", - "tdd": "yarn test -- --watch-extensions ts --watch", "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "lint:readme": "node ../../scripts/lint-readme.js", - "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-koa", "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-koa", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha 'test/**/*.ts'", + "test-all-versions": "tav", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "version:update": "node ../../scripts/version-update.js", "watch": "tsc -w" }, "keywords": [ @@ -49,11 +50,11 @@ "@opentelemetry/api": "^1.3.0" }, "devDependencies": { - "@koa/router": "13.1.1", + "@koa/router": "14.0.0", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation-http": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/koa": "2.15.0", @@ -71,7 +72,7 @@ }, "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-koa#readme" diff --git a/packages/instrumentation-koa/test/fixtures/use-koa.mjs b/packages/instrumentation-koa/test/fixtures/use-koa.mjs index 967e76375b..1e5a00841c 100644 --- a/packages/instrumentation-koa/test/fixtures/use-koa.mjs +++ b/packages/instrumentation-koa/test/fixtures/use-koa.mjs @@ -25,11 +25,8 @@ import { KoaInstrumentation } from '../../build/src/index.js'; const sdk = createTestNodeSdk({ serviceName: 'use-koa', - instrumentations: [ - new KoaInstrumentation(), - new HttpInstrumentation() - ] -}) + instrumentations: [new KoaInstrumentation(), new HttpInstrumentation()], +}); sdk.start(); import Koa from 'koa'; @@ -59,12 +56,12 @@ await new Promise(resolve => server.listen(0, resolve)); const port = server.address().port; await new Promise(resolve => { - http.get(`http://localhost:${port}/post/0`, (res) => { + http.get(`http://localhost:${port}/post/0`, res => { res.resume(); res.on('end', () => { resolve(); }); - }) + }); }); await new Promise(resolve => server.close(resolve)); diff --git a/packages/instrumentation-long-task/.eslintrc.js b/packages/instrumentation-long-task/.eslintrc.js index 01b8d09740..498e35290d 100644 --- a/packages/instrumentation-long-task/.eslintrc.js +++ b/packages/instrumentation-long-task/.eslintrc.js @@ -1,9 +1,24 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "commonjs": true, - "browser": true, - "jquery": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + commonjs: true, + browser: true, + jquery: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-long-task/CHANGELOG.md b/packages/instrumentation-long-task/CHANGELOG.md index fde4676a1d..787d724e6e 100644 --- a/packages/instrumentation-long-task/CHANGELOG.md +++ b/packages/instrumentation-long-task/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.49.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-long-task-v0.48.1...instrumentation-long-task-v0.49.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + +## [0.48.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-long-task-v0.48.0...instrumentation-long-task-v0.48.1) (2025-09-01) + + +### Bug Fixes + +* **deps:** update all patch versions ([#2948](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2948)) ([5836d7a](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/5836d7ab3244adef62b715ef22a26b54dba6719b)) + ## [0.48.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-long-task-v0.47.0...instrumentation-long-task-v0.48.0) (2025-07-09) diff --git a/packages/instrumentation-long-task/karma.conf.js b/packages/instrumentation-long-task/karma.conf.js index 4bc502c46f..5f899152bd 100644 --- a/packages/instrumentation-long-task/karma.conf.js +++ b/packages/instrumentation-long-task/karma.conf.js @@ -1,11 +1,11 @@ -/*! +/* * Copyright The OpenTelemetry Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -17,9 +17,11 @@ const karmaWebpackConfig = require('../../karma.webpack'); const karmaBaseConfig = require('../../karma.base'); -module.exports = (config) => { - config.set(Object.assign({}, karmaBaseConfig, { - frameworks: karmaBaseConfig.frameworks.concat(['jquery-1.8.3']), - webpack: karmaWebpackConfig, - })) +module.exports = config => { + config.set( + Object.assign({}, karmaBaseConfig, { + frameworks: karmaBaseConfig.frameworks.concat(['jquery-1.8.3']), + webpack: karmaWebpackConfig, + }) + ); }; diff --git a/packages/instrumentation-long-task/package.json b/packages/instrumentation-long-task/package.json index 8ad64115f3..a8a36be2a2 100644 --- a/packages/instrumentation-long-task/package.json +++ b/packages/instrumentation-long-task/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-long-task", - "version": "0.48.0", + "version": "0.49.0", "description": "OpenTelemetry instrumentation for long task Web API", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -12,16 +12,16 @@ "directory": "packages/instrumentation-long-task" }, "scripts": { - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "lint:readme": "node ../../scripts/lint-readme.js", "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-long-task", "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-long-task", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", "tdd": "karma start", "test:browser": "nyc karma start --single-run", + "version:update": "node ../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json" }, "keywords": [ @@ -73,7 +73,7 @@ "nyc": "17.1.0", "rimraf": "5.0.10", "sinon": "15.1.2", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", @@ -82,7 +82,7 @@ }, "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" diff --git a/packages/instrumentation-lru-memoizer/.eslintrc.js b/packages/instrumentation-lru-memoizer/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-lru-memoizer/.eslintrc.js +++ b/packages/instrumentation-lru-memoizer/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-lru-memoizer/CHANGELOG.md b/packages/instrumentation-lru-memoizer/CHANGELOG.md index afc77bc59d..ca6c015548 100644 --- a/packages/instrumentation-lru-memoizer/CHANGELOG.md +++ b/packages/instrumentation-lru-memoizer/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.49.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-lru-memoizer-v0.48.0...instrumentation-lru-memoizer-v0.49.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + ## [0.48.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-lru-memoizer-v0.47.0...instrumentation-lru-memoizer-v0.48.0) (2025-07-09) diff --git a/packages/instrumentation-lru-memoizer/package.json b/packages/instrumentation-lru-memoizer/package.json index 870a0125b7..a846694b56 100644 --- a/packages/instrumentation-lru-memoizer/package.json +++ b/packages/instrumentation-lru-memoizer/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-lru-memoizer", - "version": "0.48.0", + "version": "0.49.0", "description": "OpenTelemetry instrumentation for `lru-memoizer` function memoization using lru-cache", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,17 +10,18 @@ "directory": "packages/instrumentation-lru-memoizer" }, "scripts": { - "test": "mocha --require '@opentelemetry/contrib-test-utils' 'test/**/*.test.ts'", - "test-all-versions": "tav", - "tdd": "npm run test -- --watch-extensions ts --watch", "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-lru-memoizer", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", - "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-lru-memoizer", - "compile": "tsc -p ." + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' 'test/**/*.test.ts'", + "test-all-versions": "tav", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "version:update": "node ../../scripts/version-update.js" }, "keywords": [ "lru-memoizer", @@ -47,7 +48,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@types/lru-cache": "7.10.10", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -59,7 +60,7 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-lru-memoizer#readme" } diff --git a/packages/instrumentation-memcached/.eslintrc.js b/packages/instrumentation-memcached/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-memcached/.eslintrc.js +++ b/packages/instrumentation-memcached/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-memcached/CHANGELOG.md b/packages/instrumentation-memcached/CHANGELOG.md index c10d030405..7223543782 100644 --- a/packages/instrumentation-memcached/CHANGELOG.md +++ b/packages/instrumentation-memcached/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.48.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-memcached-v0.47.0...instrumentation-memcached-v0.48.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + ## [0.47.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-memcached-v0.46.0...instrumentation-memcached-v0.47.0) (2025-07-09) diff --git a/packages/instrumentation-memcached/package.json b/packages/instrumentation-memcached/package.json index 709f9c3917..13b4986185 100644 --- a/packages/instrumentation-memcached/package.json +++ b/packages/instrumentation-memcached/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-memcached", - "version": "0.47.0", + "version": "0.48.0", "description": "OpenTelemetry instrumentation for `memcached` database client for memcached", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -11,15 +11,19 @@ }, "scripts": { "clean": "rimraf build/*", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-memcached", "compile": "tsc -p .", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-memcached", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", "tdd": "npm run test -- --watch-extensions ts --watch", "test": "nyc mocha 'test/**/*.test.ts'", - "test:debug": "cross-env RUN_MEMCACHED_TESTS_LOCAL=true mocha --inspect-brk --no-timeouts 'test/**/*.test.ts'", - "test:local": "cross-env RUN_MEMCACHED_TESTS_LOCAL=true npm run test", + "test:debug": "cross-env RUN_MEMCACHED_TESTS=true mocha --inspect-brk --no-timeouts 'test/**/*.test.ts'", + "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm test", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "//todo": "echo \"add test-all-versions\"", + "test-services:start": "cd ../.. && npm run test-services:start memcached", + "test-services:stop": "cd ../.. && npm run test-services:stop memcached", "version:update": "node ../../scripts/version-update.js" }, "keywords": [ @@ -49,7 +53,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", @@ -61,7 +65,7 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/memcached": "^2.2.6" }, diff --git a/packages/instrumentation-memcached/test/index.test.ts b/packages/instrumentation-memcached/test/index.test.ts index b07beb9333..d898990502 100644 --- a/packages/instrumentation-memcached/test/index.test.ts +++ b/packages/instrumentation-memcached/test/index.test.ts @@ -23,7 +23,6 @@ import { } from '@opentelemetry/api'; import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks'; -import * as testUtils from '@opentelemetry/contrib-test-utils'; import { InMemorySpanExporter, SimpleSpanProcessor, @@ -71,8 +70,7 @@ const getClient = (...args: any[]): ExtendedMemcached => { }; const KEY = 'foo'; const VALUE = '_test_value_'; -const shouldTestLocal = process.env.RUN_MEMCACHED_TESTS_LOCAL; -const shouldTest = process.env.RUN_MEMCACHED_TESTS || shouldTestLocal; +const shouldTest = process.env.RUN_MEMCACHED_TESTS; describe('memcached@2.x', () => { const provider = new NodeTracerProvider({ @@ -103,16 +101,6 @@ describe('memcached@2.x', () => { this.test!.parent!.pending = true; this.skip(); } - - if (shouldTestLocal) { - testUtils.startDocker('memcached'); - } - }); - - after(() => { - if (shouldTestLocal) { - testUtils.cleanUpDocker('memcached'); - } }); describe('default config', () => { diff --git a/packages/instrumentation-mongodb/.eslintrc.js b/packages/instrumentation-mongodb/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-mongodb/.eslintrc.js +++ b/packages/instrumentation-mongodb/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-mongodb/CHANGELOG.md b/packages/instrumentation-mongodb/CHANGELOG.md index 3635c9eefb..526bc4f278 100644 --- a/packages/instrumentation-mongodb/CHANGELOG.md +++ b/packages/instrumentation-mongodb/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.57.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mongodb-v0.56.0...instrumentation-mongodb-v0.57.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + ## [0.56.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mongodb-v0.55.1...instrumentation-mongodb-v0.56.0) (2025-07-09) diff --git a/packages/instrumentation-mongodb/package.json b/packages/instrumentation-mongodb/package.json index 3d9dd280f2..d7a21f06c5 100644 --- a/packages/instrumentation-mongodb/package.json +++ b/packages/instrumentation-mongodb/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-mongodb", - "version": "0.56.0", + "version": "0.57.0", "description": "OpenTelemetry instrumentation for `mongodb` database client for MongoDB", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,24 +10,25 @@ "directory": "packages/instrumentation-mongodb" }, "scripts": { - "docker:start": "docker run -e MONGODB_DB=opentelemetry-tests -e MONGODB_PORT=27017 -e MONGODB_HOST=127.0.0.1 -p 27017:27017 --rm mongo", - "test": "npm run test-v4 && npm run test-v5-v6", - "test-v3": "tav mongodb 3.7.4 npm run test-v3-run", - "test-v4": "tav mongodb 4.17.0 npm run test-v4-run", - "test-v5-v6": "npm run test-v5-v6-run", - "test-v3-run": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' 'test/**/mongodb-v3.test.ts'", - "test-v4-run": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' 'test/mongodb-v4-v5-v6.metrics.test.ts' 'test/**/mongodb-v4.test.ts'", - "test-v5-v6-run": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' 'test/mongodb-v4-v5-v6.metrics.test.ts' 'test/**/mongodb-v5-v6.test.ts'", - "test-all-versions": "tav", - "tdd": "npm run test-v5-v6-run -- --watch-extensions ts --watch", "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "lint:readme": "node ../../scripts/lint-readme.js", "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-mongodb", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-mongodb", "compile": "tsc -p .", "prepublishOnly": "npm run compile", + "tdd": "npm run test-v5-v6-run -- --watch-extensions ts --watch", + "test": "npm run test-v5-v6", + "test-v3": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' 'test/**/mongodb-v3.test.ts'", + "test-v4": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' 'test/mongodb-v4-v5-v6.metrics.test.ts' 'test/**/mongodb-v4.test.ts'", + "test-v5-v6": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' 'test/mongodb-v4-v5-v6.metrics.test.ts' 'test/**/mongodb-v5-v6.test.ts'", + "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm test", + "test-all-versions": "tav", + "test-all-versions:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm run test-all-versions", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "test-services:start": "cd ../.. && npm run test-services:start mongodb", + "test-services:stop": "cd ../.. && npm run test-services:stop mongodb", "watch": "tsc -w" }, "keywords": [ @@ -57,21 +58,22 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-metrics": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/bson": "4.0.5", "@types/mocha": "10.0.10", "@types/node": "18.18.14", - "mongodb": "6.15.0", + "cross-env": "7.0.3", + "mongodb": "6.19.0", "nyc": "17.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-mongodb#readme" diff --git a/packages/instrumentation-mongodb/test/mongodb-v3.test.ts b/packages/instrumentation-mongodb/test/mongodb-v3.test.ts index 302f9935b0..764e1afba8 100644 --- a/packages/instrumentation-mongodb/test/mongodb-v3.test.ts +++ b/packages/instrumentation-mongodb/test/mongodb-v3.test.ts @@ -104,9 +104,10 @@ describe('MongoDBInstrumentation-Tracing-v3', () => { } }); - after(() => { + after(done => { if (client) { - client.close(); + // @ts-ignore -- v5 removed callback support + client.close(done); } }); @@ -636,9 +637,10 @@ describe('MongoDBInstrumentation-Tracing-v3', () => { done(); }); }); - after(() => { + after(done => { if (client) { - client.close(); + // @ts-ignore -- v5 removed callback support + client.close(done); } }); it('should generate correct span attributes', done => { diff --git a/packages/instrumentation-mongodb/test/mongodb-v5-v6.test.ts b/packages/instrumentation-mongodb/test/mongodb-v5-v6.test.ts index da4083a179..a0674395dc 100644 --- a/packages/instrumentation-mongodb/test/mongodb-v5-v6.test.ts +++ b/packages/instrumentation-mongodb/test/mongodb-v5-v6.test.ts @@ -509,18 +509,29 @@ describe('MongoDBInstrumentation-Tracing-v5', () => { create({ responseHook: (span: Span, result: any) => { const { data } = result; - if (data.n) { - span.setAttribute('mongodb_insert_count', result.data.n); + + // from 6.19.0 insert returns a MongoDBResponse class with a + // `toObject()` method instead of the plain { ok: 1, n: [Number] } response + let insertCount = data.n; + if (!insertCount && typeof data.toObject === 'function') { + insertCount = data.toObject().n; + } + + if (insertCount) { + span.setAttribute('mongodb_insert_count', insertCount); } + // from v6.8.0 the cursor property is not an object but an instance of // `CursorResponse`. We need to use the `toObject` method to be able to inspect the data - const cursorObj = data.cursor.firstBatch - ? data.cursor - : data.cursor.toObject(); - span.setAttribute( - 'mongodb_first_result', - JSON.stringify(cursorObj.firstBatch[0]) - ); + if (data.cursor) { + const cursorObj = data.cursor.firstBatch + ? data.cursor + : data.cursor.toObject(); + span.setAttribute( + 'mongodb_first_result', + JSON.stringify(cursorObj.firstBatch[0]) + ); + } }, }); }); diff --git a/packages/instrumentation-mongoose/.eslintrc.js b/packages/instrumentation-mongoose/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-mongoose/.eslintrc.js +++ b/packages/instrumentation-mongoose/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-mongoose/CHANGELOG.md b/packages/instrumentation-mongoose/CHANGELOG.md index 0537d3437e..d4d90e0412 100644 --- a/packages/instrumentation-mongoose/CHANGELOG.md +++ b/packages/instrumentation-mongoose/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.51.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mongoose-v0.50.0...instrumentation-mongoose-v0.51.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + ## [0.50.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mongoose-v0.49.0...instrumentation-mongoose-v0.50.0) (2025-07-09) diff --git a/packages/instrumentation-mongoose/package.json b/packages/instrumentation-mongoose/package.json index 9039a88a4d..cfaa91bfc8 100644 --- a/packages/instrumentation-mongoose/package.json +++ b/packages/instrumentation-mongoose/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-mongoose", - "version": "0.50.0", + "version": "0.51.0", "description": "OpenTelemetry instrumentation for `mongoose` database object data modeling (ODM) library for MongoDB", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,20 +10,24 @@ "directory": "packages/instrumentation-mongoose" }, "scripts": { - "docker:start": "docker run -e MONGODB_DB=opentelemetry-tests -e MONGODB_PORT=27017 -e MONGODB_HOST=127.0.0.1 -p 27017:27017 --rm mongo", + "clean": "rimraf build/*", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-mongoose", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "lint:readme": "node ../../scripts/lint-readme.js", + "prepublishOnly": "npm run compile", + "tdd": "npm run test -- --watch-extensions ts --watch", "test": "npm run test-v5-v6", "test-v5-v6": "nyc mocha --require '@opentelemetry/contrib-test-utils' 'test/mongoose-common.test.ts' 'test/**/mongoose-v5-v6.test.ts'", "test-v7-v8": "nyc mocha --require '@opentelemetry/contrib-test-utils' 'test/mongoose-common.test.ts' 'test/**/mongoose-v7-v8.test.ts'", + "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm test", "test-all-versions": "tav", - "tdd": "npm run test -- --watch-extensions ts --watch", - "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "lint:readme": "node ../../scripts/lint-readme.js", - "prepublishOnly": "npm run compile", - "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-mongoose", - "compile": "tsc -p ." + "test-all-versions:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm run test-all-versions", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "test-services:start": "cd ../.. && npm run test-services:start mongodb", + "test-services:stop": "cd ../.. && npm run test-services:stop mongodb", + "version:update": "node ../../scripts/version-update.js" }, "keywords": [ "mongodb", @@ -52,10 +56,11 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", + "cross-env": "7.0.3", "expect": "29.2.0", "mongoose": "6.13.8", "nyc": "17.1.0", @@ -65,7 +70,7 @@ }, "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-mongoose#readme" diff --git a/packages/instrumentation-mongoose/test/asserts.ts b/packages/instrumentation-mongoose/test/asserts.ts index 0cf109c80e..df9d1c8735 100644 --- a/packages/instrumentation-mongoose/test/asserts.ts +++ b/packages/instrumentation-mongoose/test/asserts.ts @@ -26,11 +26,14 @@ import { import { SpanStatusCode } from '@opentelemetry/api'; import { SerializerPayload } from '../src'; import { DB_NAME, MONGO_HOST, MONGO_PORT } from './config'; +import User from './user'; export const assertSpan = (span: ReadableSpan) => { expect(span.status.code).toBe(SpanStatusCode.UNSET); expect(span.attributes[SEMATTRS_DB_SYSTEM]).toEqual('mongoose'); - expect(span.attributes[SEMATTRS_DB_MONGODB_COLLECTION]).toEqual('users'); + expect(span.attributes[SEMATTRS_DB_MONGODB_COLLECTION]).toEqual( + User.collection.name + ); expect(span.attributes[SEMATTRS_DB_NAME]).toEqual(DB_NAME); expect(span.attributes[SEMATTRS_NET_PEER_NAME]).toEqual(MONGO_HOST); expect(span.attributes[SEMATTRS_NET_PEER_PORT]).toEqual(MONGO_PORT); diff --git a/packages/instrumentation-mongoose/test/mongoose-common.test.ts b/packages/instrumentation-mongoose/test/mongoose-common.test.ts index ed954b8b54..77e581e46c 100644 --- a/packages/instrumentation-mongoose/test/mongoose-common.test.ts +++ b/packages/instrumentation-mongoose/test/mongoose-common.test.ts @@ -38,7 +38,7 @@ import User, { IUser, loadUsers } from './user'; import { assertSpan, getStatement } from './asserts'; import { DB_NAME, MONGO_URI } from './config'; -// Please run mongodb in the background: docker run -d -p 27017:27017 -v ~/data:/data/db mongo +// Please run `npm run test-services:start` before describe('mongoose instrumentation [common]', () => { before(async () => { try { diff --git a/packages/instrumentation-mongoose/test/mongoose-v5-v6.test.ts b/packages/instrumentation-mongoose/test/mongoose-v5-v6.test.ts index be6f5fc5ed..782038f339 100644 --- a/packages/instrumentation-mongoose/test/mongoose-v5-v6.test.ts +++ b/packages/instrumentation-mongoose/test/mongoose-v5-v6.test.ts @@ -35,7 +35,7 @@ import { DB_NAME, MONGO_URI } from './config'; // We can't use @ts-expect-error because it will fail depending on the used mongoose version on tests /* eslint-disable @typescript-eslint/ban-ts-comment */ -// Please run mongodb in the background: docker run -d -p 27017:27017 -v ~/data:/data/db mongo +// Please run `npm run test-services:start` before describe('mongoose instrumentation [v5/v6]', () => { before(async () => { try { diff --git a/packages/instrumentation-mongoose/test/mongoose-v7-v8.test.ts b/packages/instrumentation-mongoose/test/mongoose-v7-v8.test.ts index 2ef423f47f..efaa236d37 100644 --- a/packages/instrumentation-mongoose/test/mongoose-v7-v8.test.ts +++ b/packages/instrumentation-mongoose/test/mongoose-v7-v8.test.ts @@ -32,7 +32,7 @@ import User, { loadUsers } from './user'; import { assertSpan, getStatement } from './asserts'; import { DB_NAME, MONGO_URI } from './config'; -// Please run mongodb in the background: docker run -d -p 27017:27017 -v ~/data:/data/db mongo +// Please run `npm run test-services:start` before describe('mongoose instrumentation [v7/v8]', () => { before(async () => { try { diff --git a/packages/instrumentation-mongoose/test/user.ts b/packages/instrumentation-mongoose/test/user.ts index 0e8eff02eb..621d09fa5a 100644 --- a/packages/instrumentation-mongoose/test/user.ts +++ b/packages/instrumentation-mongoose/test/user.ts @@ -15,6 +15,7 @@ */ import { Schema, Document } from 'mongoose'; import * as mongoose from 'mongoose'; +import * as crypto from 'node:crypto'; export interface IUser extends Document { email: string; @@ -31,7 +32,7 @@ const UserSchema: Schema = new Schema({ }); // Export the model and return your IUser interface -const User = mongoose.model('User', UserSchema); +const User = mongoose.model(crypto.randomUUID() + 'User', UserSchema); export default User; export const loadUsers = async () => { diff --git a/packages/instrumentation-mysql/.eslintrc.js b/packages/instrumentation-mysql/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-mysql/.eslintrc.js +++ b/packages/instrumentation-mysql/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-mysql/CHANGELOG.md b/packages/instrumentation-mysql/CHANGELOG.md index af3929bf38..9881e577df 100644 --- a/packages/instrumentation-mysql/CHANGELOG.md +++ b/packages/instrumentation-mysql/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.50.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql-v0.49.0...instrumentation-mysql-v0.50.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + ## [0.49.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql-v0.48.1...instrumentation-mysql-v0.49.0) (2025-07-09) diff --git a/packages/instrumentation-mysql/package.json b/packages/instrumentation-mysql/package.json index 02fe201664..0ebbb2af4e 100644 --- a/packages/instrumentation-mysql/package.json +++ b/packages/instrumentation-mysql/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-mysql", - "version": "0.49.0", + "version": "0.50.0", "description": "OpenTelemetry instrumentation for `mysql` database client for MySQL", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -11,13 +11,18 @@ }, "scripts": { "clean": "rimraf build/*", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-mysql", "compile": "tsc -p .", - "lint:fix": "eslint . --ext .ts --fix", - "lint": "eslint . --ext .ts", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-mysql", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "lint": "eslint . --ext=ts,js,mjs", "prepublishOnly": "npm run compile", "tdd": "npm run test -- --watch-extensions ts --watch", - "test": "nyc mocha 'test/**/*.test.ts'", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm test", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "//todo": "echo \"add test-all-versions\"", + "test-services:start": "cd ../.. && npm run test-services:start mysql", + "test-services:stop": "cd ../.. && npm run test-services:stop mysql", "version:update": "node ../../scripts/version-update.js" }, "keywords": [ @@ -47,12 +52,13 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-metrics": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", + "cross-env": "7.0.3", "mysql": "2.18.1", "nyc": "17.1.0", "rimraf": "5.0.10", @@ -60,7 +66,7 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mysql": "2.15.27" }, diff --git a/packages/instrumentation-mysql/src/instrumentation.ts b/packages/instrumentation-mysql/src/instrumentation.ts index 563412e720..96fc8f08b2 100644 --- a/packages/instrumentation-mysql/src/instrumentation.ts +++ b/packages/instrumentation-mysql/src/instrumentation.ts @@ -44,7 +44,7 @@ import { } from './utils'; /** @knipignore */ import { PACKAGE_NAME, PACKAGE_VERSION } from './version'; -import { UpDownCounter, MeterProvider } from '@opentelemetry/api'; +import { UpDownCounter } from '@opentelemetry/api'; type getConnectionCallbackType = ( err: mysqlTypes.MysqlError, @@ -59,15 +59,9 @@ export class MySQLInstrumentation extends InstrumentationBase { let otelTestingMeterProvider; let inMemoryMetricsExporter: InMemoryMetricExporter; // assumes local mysql db is already available in CI or - // using `npm run test-services:start` script at the root folder + // using `npm run test-services:start` script const shouldTest = process.env.RUN_MYSQL_TESTS; function initMeterProvider() { diff --git a/packages/instrumentation-mysql/test/index.test.ts b/packages/instrumentation-mysql/test/index.test.ts index cd0ccc6e7f..4cb6f17259 100644 --- a/packages/instrumentation-mysql/test/index.test.ts +++ b/packages/instrumentation-mysql/test/index.test.ts @@ -54,7 +54,7 @@ describe('mysql@2.x-Tracing', () => { let pool: mysqlTypes.Pool; let poolCluster: mysqlTypes.PoolCluster; // assumes local mysql db is already available in CI or - // using `npm run test-services:start` script at the root folder + // using `npm run test-services:start` script const shouldTest = process.env.RUN_MYSQL_TESTS; const memoryExporter = new InMemorySpanExporter(); const provider = new BasicTracerProvider({ diff --git a/packages/instrumentation-mysql2/.eslintrc.js b/packages/instrumentation-mysql2/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-mysql2/.eslintrc.js +++ b/packages/instrumentation-mysql2/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-mysql2/CHANGELOG.md b/packages/instrumentation-mysql2/CHANGELOG.md index 9b37a1adf2..ffe4c1e23a 100644 --- a/packages/instrumentation-mysql2/CHANGELOG.md +++ b/packages/instrumentation-mysql2/CHANGELOG.md @@ -1,5 +1,30 @@ # Changelog +## [0.51.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql2-v0.50.0...instrumentation-mysql2-v0.51.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + +## [0.50.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql2-v0.49.0...instrumentation-mysql2-v0.50.0) (2025-08-13) + + +### ⚠ BREAKING CHANGES + +* **instrumentation-mysql2:** Missing masking of sql queries ([#2732](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2732)) + +### Bug Fixes + +* **instrumentation-mysql2:** Missing masking of sql queries ([#2732](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2732)) ([bcf32cd](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/bcf32cdc6372159f940d87d503cc79f14ebaa107)) + ## [0.49.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-mysql2-v0.48.1...instrumentation-mysql2-v0.49.0) (2025-07-09) diff --git a/packages/instrumentation-mysql2/README.md b/packages/instrumentation-mysql2/README.md index 52d6d65d60..8ad5c22f67 100644 --- a/packages/instrumentation-mysql2/README.md +++ b/packages/instrumentation-mysql2/README.md @@ -48,6 +48,9 @@ You can set the following instrumentation options: | ------- | ---- | ----------- | | `responseHook` | `MySQL2InstrumentationExecutionResponseHook` (function) | Function for adding custom attributes from db response | | `addSqlCommenterCommentToQueries` | `boolean` | If true, adds [sqlcommenter](https://github.com/open-telemetry/opentelemetry-sqlcommenter) specification compliant comment to queries with tracing context (default false). _NOTE: A comment will not be added to queries that already contain `--` or `/* ... */` in them, even if these are not actually part of comments_ | +| `maskStatement` | `boolean` | If true, masks the `db.statement` attribute in spans (default false) with the `maskStatementHook` | +| `maskStatementHook` | `MySQL2InstrumentationMaskStatementHook` (function) | Function for masking the `db.statement` attribute in spans Default: `return query.replace(/\b\d+\b/g, '?').replac(/(["'])(?:(?=(\\?))\2.)*?\1/g, '?');`| + ## Semantic Conventions diff --git a/packages/instrumentation-mysql2/env b/packages/instrumentation-mysql2/env deleted file mode 100644 index 5c3993ada9..0000000000 --- a/packages/instrumentation-mysql2/env +++ /dev/null @@ -1,5 +0,0 @@ -export MYSQL_DATABASE=otel_mysql_database -export MYSQL_HOST=mysql -export MYSQL_PASSWORD=secret -export MYSQL_PORT=3306 -export MYSQL_USER=otel \ No newline at end of file diff --git a/packages/instrumentation-mysql2/package.json b/packages/instrumentation-mysql2/package.json index 0aada209d2..217dbb81f3 100644 --- a/packages/instrumentation-mysql2/package.json +++ b/packages/instrumentation-mysql2/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-mysql2", - "version": "0.49.0", + "version": "0.51.0", "description": "OpenTelemetry instrumentation for `mysql2` database client for MySQL", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -11,14 +11,19 @@ }, "scripts": { "clean": "rimraf build/*", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-mysql2", "compile": "tsc -p .", - "lint:fix": "eslint . --ext .ts --fix", - "lint": "eslint . --ext .ts", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-mysql2", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "lint": "eslint . --ext=ts,js,mjs", "prepublishOnly": "npm run compile", "tdd": "npm run test -- --watch-extensions ts --watch", - "test": "nyc mocha 'test/**/*.test.ts'", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm test", "test-all-versions": "tav", + "test-all-versions:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm run test-all-versions", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "test-services:start": "cd ../.. && npm run test-services:start mysql", + "test-services:stop": "cd ../.. && npm run test-services:stop mysql", "version:update": "node ../../scripts/version-update.js" }, "keywords": [ @@ -49,11 +54,12 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/semver": "7.5.8", + "cross-env": "7.0.3", "mysql2": "3.11.5", "nyc": "17.1.0", "rimraf": "5.0.10", @@ -62,7 +68,7 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@opentelemetry/sql-common": "^0.41.0" }, diff --git a/packages/instrumentation-mysql2/src/instrumentation.ts b/packages/instrumentation-mysql2/src/instrumentation.ts index d22db9a020..2cb7da960d 100644 --- a/packages/instrumentation-mysql2/src/instrumentation.ts +++ b/packages/instrumentation-mysql2/src/instrumentation.ts @@ -137,13 +137,20 @@ export class MySQL2Instrumentation extends InstrumentationBase { diff --git a/packages/instrumentation-mysql2/src/types.ts b/packages/instrumentation-mysql2/src/types.ts index 01e9f8a434..7ecc4a0a55 100644 --- a/packages/instrumentation-mysql2/src/types.ts +++ b/packages/instrumentation-mysql2/src/types.ts @@ -25,7 +25,26 @@ export interface MySQL2InstrumentationExecutionResponseHook { (span: Span, responseHookInfo: MySQL2ResponseHookInformation): void; } +export interface MySQL2InstrumentationQueryMaskingHook { + (query: string): string; +} + export interface MySQL2InstrumentationConfig extends InstrumentationConfig { + /** + * If true, the query will be masked before setting it as a span attribute, using the {@link maskStatementHook}. + * + * @default false + * @see maskStatementHook + */ + maskStatement?: boolean; + + /** + * Hook that allows masking the query string before setting it as span attribute. + * + * @default (query: string) => query.replace(/\b\d+\b/g, '?').replace(/(["'])(?:(?=(\\?))\2.)*?\1/g, '?') + */ + maskStatementHook?: MySQL2InstrumentationQueryMaskingHook; + /** * Hook that allows adding custom span attributes based on the data * returned MySQL2 queries. diff --git a/packages/instrumentation-mysql2/src/utils.ts b/packages/instrumentation-mysql2/src/utils.ts index 9e495a7d2c..ff62d08ccc 100644 --- a/packages/instrumentation-mysql2/src/utils.ts +++ b/packages/instrumentation-mysql2/src/utils.ts @@ -23,6 +23,7 @@ import { SEMATTRS_NET_PEER_PORT, } from '@opentelemetry/semantic-conventions'; import type * as mysqlTypes from 'mysql2'; +import { MySQL2InstrumentationQueryMaskingHook } from './types'; type formatType = typeof mysqlTypes.format; @@ -107,22 +108,50 @@ function getJDBCString( export function getDbStatement( query: string | Query | QueryOptions, format?: formatType, - values?: any[] + values?: any[], + maskStatement = false, + maskStatementHook: MySQL2InstrumentationQueryMaskingHook = defaultMaskingHook ): string { - if (!format) { - return typeof query === 'string' ? query : query.sql; - } - if (typeof query === 'string') { - return values ? format(query, values) : query; - } else { - // According to https://github.com/mysqljs/mysql#performing-queries - // The values argument will override the values in the option object. - return values || (query as QueryOptions).values - ? format(query.sql, values || (query as QueryOptions).values) - : query.sql; + const [querySql, queryValues] = + typeof query === 'string' + ? [query, values] + : [query.sql, hasValues(query) ? values || query.values : values]; + try { + if (maskStatement) { + return maskStatementHook(querySql); + } else if (format && queryValues) { + return format(querySql, queryValues); + } else { + return querySql; + } + } catch (e) { + return 'Could not determine the query due to an error in masking or formatting'; } } +/** + * Replaces numeric values and quoted strings in the query with placeholders ('?'). + * + * - `\b\d+\b`: Matches whole numbers (integers) and replaces them with '?'. + * - `(["'])(?:(?=(\\?))\2.)*?\1`: + * - Matches quoted strings (both single `'` and double `"` quotes). + * - Uses a lookahead `(?=(\\?))` to detect an optional backslash without consuming it immediately. + * - Captures the optional backslash `\2` and ensures escaped quotes inside the string are handled correctly. + * - Ensures that only complete quoted strings are replaced with '?'. + * + * This prevents accidental replacement of escaped quotes within strings and ensures that the + * query structure remains intact while masking sensitive data. + */ +function defaultMaskingHook(query: string): string { + return query + .replace(/\b\d+\b/g, '?') + .replace(/(["'])(?:(?=(\\?))\2.)*?\1/g, '?'); +} + +function hasValues(obj: Query | QueryOptions): obj is QueryOptions { + return 'values' in obj; +} + /** * The span name SHOULD be set to a low cardinality value * representing the statement executed on the database. diff --git a/packages/instrumentation-mysql2/test/mysql.test.ts b/packages/instrumentation-mysql2/test/mysql.test.ts index 1169e1e3d3..756934f6e9 100644 --- a/packages/instrumentation-mysql2/test/mysql.test.ts +++ b/packages/instrumentation-mysql2/test/mysql.test.ts @@ -76,7 +76,7 @@ const execPromise = (conn: Connection, command: string) => { describe('mysql2', () => { // assumes local mysql db is already available in CI or - // using `npm run test-services:start` script at the root folder + // using `npm run test-services:start` script const shouldTest = process.env.RUN_MYSQL_TESTS; before(async function () { @@ -1225,6 +1225,200 @@ describe('mysql2', () => { }); }); }); + describe('#maskStatementHook', () => { + beforeEach(done => { + //create table user and insert data + rootConnection.query( + 'CREATE TABLE user (id INT, name VARCHAR(255), age INT)', + () => { + rootConnection.query( + 'INSERT INTO user (id, name, age) VALUES (1, "test", 35)', + done + ); + } + ); + }); + + afterEach(done => { + rootConnection.query('DROP TABLE user', done); + }); + describe('default maskStatementHook', () => { + beforeEach(done => { + instrumentation.setConfig({ + maskStatement: true, + }); + memoryExporter.reset(); + done(); + }); + + it('should mask string and numbers in statements', done => { + const query = + "SELECT * FROM user WHERE name = 'test' AND age = 35 AND id = 1"; + const maskedQuery = + 'SELECT * FROM user WHERE name = ? AND age = ? AND id = ?'; + const span = provider.getTracer('default').startSpan('test span'); + context.with(trace.setSpan(context.active(), span), () => { + connection.query(query, (err, res: RowDataPacket[]) => { + assert.ifError(err); + assert.ok(res); + assert.strictEqual(res[0].name, 'test'); + assert.strictEqual(res[0].age, 35); + assert.strictEqual(res[0].id, 1); + const spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 1); + assertSpan(spans[0], maskedQuery); + done(); + }); + }); + }); + }); + describe('custom maskStatementHook', () => { + beforeEach(done => { + instrumentation.setConfig({ + maskStatement: true, + maskStatementHook: query => { + return query + .replace(/\b\d+\b/g, '*') + .replace(/(["'])(?:(?=(\\?))\2.)*?\1/g, '*'); + }, + }); + memoryExporter.reset(); + done(); + }); + + it('should mask string and numbers in statements', done => { + const query = + "SELECT * FROM user WHERE name = 'test' AND age = 35 AND id = 1"; + const maskedQuery = + 'SELECT * FROM user WHERE name = * AND age = * AND id = *'; + const span = provider.getTracer('default').startSpan('test span'); + context.with(trace.setSpan(context.active(), span), () => { + connection.query(query, (err, res: RowDataPacket[]) => { + assert.ifError(err); + assert.ok(res); + assert.strictEqual(res[0].name, 'test'); + assert.strictEqual(res[0].age, 35); + assert.strictEqual(res[0].id, 1); + const spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 1); + assertSpan(spans[0], maskedQuery); + done(); + }); + }); + }); + }); + describe('maskStatementHook with error', () => { + beforeEach(done => { + instrumentation.setConfig({ + maskStatement: true, + maskStatementHook: () => { + throw new Error('random failure!'); + }, + }); + memoryExporter.reset(); + done(); + }); + it('should not affect the behavior of the query', done => { + const query = + "SELECT * FROM user WHERE name = 'test' AND age = 35 AND id = 1"; + const errorQuery = + 'Could not determine the query due to an error in masking or formatting'; + const span = provider.getTracer('default').startSpan('test span'); + context.with(trace.setSpan(context.active(), span), () => { + connection.query(query, (err, res: RowDataPacket[]) => { + assert.ifError(err); + assert.ok(res); + assert.strictEqual(res[0].name, 'test'); + assert.strictEqual(res[0].age, 35); + assert.strictEqual(res[0].id, 1); + const spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 1); + assertSpan(spans[0], errorQuery); + done(); + }); + }); + }); + }); + }); + describe('#maskStatement', () => { + beforeEach(done => { + memoryExporter.reset(); + done(); + }); + + it('should mask query if maskStatement is true', done => { + instrumentation.setConfig({ + maskStatement: true, + }); + const query = 'SELECT 1+1 as solution'; + const maskedQuery = 'SELECT ?+? as solution'; + const span = provider.getTracer('default').startSpan('test span'); + context.with(trace.setSpan(context.active(), span), () => { + connection.query(query, (err, res: RowDataPacket[]) => { + assert.ifError(err); + assert.ok(res); + assert.strictEqual(res[0].solution, 2); + const spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 1); + assertSpan(spans[0], maskedQuery); + done(); + }); + }); + }); + it('should return masked query, if values are present', done => { + instrumentation.setConfig({ + maskStatement: true, + }); + const query = 'SELECT ?+? as solution'; + const maskedQuery = 'SELECT ?+? as solution'; + const span = provider.getTracer('default').startSpan('test span'); + context.with(trace.setSpan(context.active(), span), () => { + connection.query(query, [1, 1], (err, res: RowDataPacket[]) => { + assert.ifError(err); + assert.ok(res); + assert.strictEqual(res[0].solution, 2); + const spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 1); + assertSpan(spans[0], maskedQuery); + done(); + }); + }); + }); + it('should not mask query if maskStatement is false (default)', done => { + const query = 'SELECT 1+1 as solution'; + const span = provider.getTracer('default').startSpan('test span'); + context.with(trace.setSpan(context.active(), span), () => { + connection.query(query, (err, res: RowDataPacket[]) => { + assert.ifError(err); + assert.ok(res); + assert.strictEqual(res[0].solution, 2); + const spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 1); + assertSpan(spans[0], query); + done(); + }); + }); + }); + it('should return query with values, if values are present and maskStatement is false', done => { + instrumentation.setConfig({ + maskStatement: false, + }); + const query = 'SELECT ?+? as solution'; + const queryWithValues = 'SELECT 1+1 as solution'; + const span = provider.getTracer('default').startSpan('test span'); + context.with(trace.setSpan(context.active(), span), () => { + connection.query(query, [1, 1], (err, res: RowDataPacket[]) => { + assert.ifError(err); + assert.ok(res); + assert.strictEqual(res[0].solution, 2); + const spans = memoryExporter.getFinishedSpans(); + assert.strictEqual(spans.length, 1); + assertSpan(spans[0], queryWithValues); + done(); + }); + }); + }); + }); }); describe('promise API', () => { let instrumentation: MySQL2Instrumentation; diff --git a/packages/instrumentation-nestjs-core/.eslintrc.js b/packages/instrumentation-nestjs-core/.eslintrc.js index 224df6c2dc..912e1cf251 100644 --- a/packages/instrumentation-nestjs-core/.eslintrc.js +++ b/packages/instrumentation-nestjs-core/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - env: { - mocha: true, - node: true - }, - ...require('../../eslint.config.js') + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), }; diff --git a/packages/instrumentation-nestjs-core/CHANGELOG.md b/packages/instrumentation-nestjs-core/CHANGELOG.md index 33f8ac819a..a0280f6b29 100644 --- a/packages/instrumentation-nestjs-core/CHANGELOG.md +++ b/packages/instrumentation-nestjs-core/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.50.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-nestjs-core-v0.49.0...instrumentation-nestjs-core-v0.50.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + ## [0.49.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-nestjs-core-v0.48.1...instrumentation-nestjs-core-v0.49.0) (2025-07-09) diff --git a/packages/instrumentation-nestjs-core/package.json b/packages/instrumentation-nestjs-core/package.json index f0e5c80d8b..ace8820f67 100644 --- a/packages/instrumentation-nestjs-core/package.json +++ b/packages/instrumentation-nestjs-core/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-nestjs-core", - "version": "0.49.0", + "version": "0.50.0", "description": "OpenTelemetry instrumentation for NestJS server side applications framework", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -11,16 +11,17 @@ }, "scripts": { "clean": "rimraf build/*", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-nestjs-core", "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-nestjs-core", "compile:watch": "tsc -w", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", "tdd": "npm run test -- --watch-extensions ts --watch", - "test": "npm run test-required-node-version && nyc mocha --timeout 5000 'test/**/*.test.ts' || echo 'Node version is not supported for testing'", + "test": "npm run test-required-node-version && nyc --no-clean mocha --timeout 5000 'test/**/*.test.ts' || echo 'Node version is not supported for testing'", "test-required-node-version": "node -e \"process.exit(parseInt(process.versions.node.split('.')[0], 10) >= 15 ? 0 : 1)\"", "test-all-versions": "tav", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", "version:update": "node ../../scripts/version-update.js" }, "keywords": [ @@ -70,7 +71,7 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.30.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-nestjs-core#readme" diff --git a/packages/instrumentation-net/.eslintrc.js b/packages/instrumentation-net/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-net/.eslintrc.js +++ b/packages/instrumentation-net/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-net/CHANGELOG.md b/packages/instrumentation-net/CHANGELOG.md index 145915a178..9a1b83589c 100644 --- a/packages/instrumentation-net/CHANGELOG.md +++ b/packages/instrumentation-net/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.48.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-net-v0.47.0...instrumentation-net-v0.48.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + ## [0.47.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-net-v0.46.1...instrumentation-net-v0.47.0) (2025-07-09) diff --git a/packages/instrumentation-net/package.json b/packages/instrumentation-net/package.json index 81a685a586..6c2e3690a4 100644 --- a/packages/instrumentation-net/package.json +++ b/packages/instrumentation-net/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-net", - "version": "0.47.0", + "version": "0.48.0", "description": "OpenTelemetry instrumentation for `node:net` network API module", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,16 +10,17 @@ "directory": "packages/instrumentation-net" }, "scripts": { - "test": "nyc mocha 'test/**/*.test.ts'", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", "tdd": "npm run test -- --watch-extensions ts --watch", "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-net", - "compile": "tsc -p ." + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-net", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json" }, "keywords": [ "connect", @@ -60,7 +61,7 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-net#readme" diff --git a/packages/instrumentation-openai/.eslintignore b/packages/instrumentation-openai/.eslintignore new file mode 100644 index 0000000000..378eac25d3 --- /dev/null +++ b/packages/instrumentation-openai/.eslintignore @@ -0,0 +1 @@ +build diff --git a/examples/grpc-census-prop/.eslintrc.js b/packages/instrumentation-openai/.eslintrc.js similarity index 88% rename from examples/grpc-census-prop/.eslintrc.js rename to packages/instrumentation-openai/.eslintrc.js index 53452072e2..912e1cf251 100644 --- a/examples/grpc-census-prop/.eslintrc.js +++ b/packages/instrumentation-openai/.eslintrc.js @@ -13,14 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -'use strict'; - -const baseConfig = require('../../eslint.config'); - module.exports = { - ...baseConfig, env: { + mocha: true, node: true, }, + ...require('../../eslint.config.js'), }; diff --git a/packages/instrumentation-openai/.tav.yml b/packages/instrumentation-openai/.tav.yml new file mode 100644 index 0000000000..ac264a8790 --- /dev/null +++ b/packages/instrumentation-openai/.tav.yml @@ -0,0 +1,5 @@ +openai: + versions: + include: '>=4.19.0 <6' + mode: max-5 + commands: npm test diff --git a/packages/instrumentation-openai/CHANGELOG.md b/packages/instrumentation-openai/CHANGELOG.md new file mode 100644 index 0000000000..3fd469e789 --- /dev/null +++ b/packages/instrumentation-openai/CHANGELOG.md @@ -0,0 +1,22 @@ +# Changelog + +## [0.2.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-openai-v0.1.0...instrumentation-openai-v0.2.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + +## [0.1.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-openai-v0.0.1...instrumentation-openai-v0.1.0) (2025-09-01) + + +### Features + +* **instrumentation-openai:** add instrumentation of openai SDK ([#2941](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2941)) ([3e575ba](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/3e575ba431963545938e3a6627d26a33b251c15f)) diff --git a/packages/instrumentation-openai/LICENSE b/packages/instrumentation-openai/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/packages/instrumentation-openai/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/packages/instrumentation-openai/README.md b/packages/instrumentation-openai/README.md new file mode 100644 index 0000000000..4f030da907 --- /dev/null +++ b/packages/instrumentation-openai/README.md @@ -0,0 +1,56 @@ +# OpenTelemetry OpenAI module Instrumentation for Node.js + +[![NPM Published Version][npm-img]][npm-url] +[![Apache License][license-image]][license-image] + +This module provides automatic instrumentation for the [`openai`](https://www.npmjs.com/package/openai) module, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package. + +Compatible with OpenTelemetry JS API and SDK `1.0+`. + +## Installation + +```bash +npm install --save @opentelemetry/instrumentation-openai +``` + +## Supported Versions + +- openai `>=4.19.0 <6` + +## Usage + +```js +const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); +const { OpenAIInstrumentation } = require('@opentelemetry/instrumentation-openai'); +const { registerInstrumentations } = require('@opentelemetry/instrumentation'); + +const provider = new NodeTracerProvider(); +provider.register(); + +registerInstrumentations({ + instrumentations: [ + new OpenAIInstrumentation(), + // other instrumentations + ], +}); +``` + +## Semantic Conventions + +This package implements Semantic Convention [Version 1.36.0](https://github.com/open-telemetry/semantic-conventions/blob/v1.36.0/docs/README.md). + +## Useful links + +- For more information on OpenTelemetry, visit: +- For more about OpenTelemetry JavaScript: +- For help or feedback on this project, join us in [GitHub Discussions][discussions-url] + +## License + +Apache 2.0 - See [LICENSE][license-url] for more information. + +[discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions +[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE +[license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat +[npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-openai +[npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-openai.svg diff --git a/packages/instrumentation-openai/package.json b/packages/instrumentation-openai/package.json new file mode 100644 index 0000000000..908942c303 --- /dev/null +++ b/packages/instrumentation-openai/package.json @@ -0,0 +1,76 @@ +{ + "name": "@opentelemetry/instrumentation-openai", + "version": "0.2.0", + "description": "OpenTelemetry instrumentation for the `openai` OpenAI client library", + "main": "build/src/index.js", + "types": "build/src/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/open-telemetry/opentelemetry-js-contrib.git", + "directory": "packages/instrumentation-openai" + }, + "scripts": { + "clean": "rimraf build/*", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-mongodb", + "compile": "tsc -p .", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "lint:readme": "node ../../scripts/lint-readme.js", + "prepublishOnly": "npm run compile", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' 'test/**/*.test.ts'", + "test-all-versions": "tav", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "version:update": "node ../../scripts/version-update.js", + "watch": "tsc -w" + }, + "keywords": [ + "instrumentation", + "opentelemetry", + "observability", + "openai", + "llm", + "genai" + ], + "author": "OpenTelemetry Authors", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "files": [ + "build/src/**/*.js", + "build/src/**/*.js.map", + "build/src/**/*.d.ts" + ], + "publishConfig": { + "access": "public" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "devDependencies": { + "@opentelemetry/api": "^1.3.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/sdk-logs": "^0.204.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", + "@types/node": "18.18.14", + "@typescript-eslint/eslint-plugin": "5.8.1", + "@typescript-eslint/parser": "5.8.1", + "cross-env": "7.0.3", + "expect": "29.2.0", + "nock": "^14.0.0", + "nyc": "17.1.0", + "openai": "4.104.0", + "rimraf": "5.0.10", + "safe-stable-stringify": "^2.4.1", + "sinon": "15.2.0", + "test-all-versions": "6.1.0", + "typescript": "5.0.4" + }, + "dependencies": { + "@opentelemetry/api-logs": "^0.204.0", + "@opentelemetry/instrumentation": "^0.204.0", + "@opentelemetry/semantic-conventions": "^1.36.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-openai#readme" +} diff --git a/packages/instrumentation-openai/src/index.ts b/packages/instrumentation-openai/src/index.ts new file mode 100644 index 0000000000..da127f7b58 --- /dev/null +++ b/packages/instrumentation-openai/src/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { OpenAIInstrumentation } from './instrumentation'; +export type { OpenAIInstrumentationConfig } from './types'; diff --git a/packages/instrumentation-openai/src/instrumentation.ts b/packages/instrumentation-openai/src/instrumentation.ts new file mode 100644 index 0000000000..22277c711f --- /dev/null +++ b/packages/instrumentation-openai/src/instrumentation.ts @@ -0,0 +1,842 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// avoids a dependency on @opentelemetry/core for hrTime utilities +import { performance } from 'perf_hooks'; + +import { context, SpanKind, SpanStatusCode, trace } from '@opentelemetry/api'; +import type { Attributes, Context, Histogram, Span } from '@opentelemetry/api'; +import { + InstrumentationBase, + InstrumentationNodeModuleDefinition, +} from '@opentelemetry/instrumentation'; +import { SeverityNumber } from '@opentelemetry/api-logs'; +import type { + ChatCompletion, + ChatCompletionMessageToolCall, + ChatCompletionContentPart, + ChatCompletionContentPartRefusal, + ChatCompletionContentPartText, + ChatCompletionCreateParams, + ChatCompletionMessageParam, + ChatCompletionChunk, + Completions as ChatCompletions, +} from 'openai/resources/chat/completions'; +import type { APIPromise } from 'openai/core'; +import type { + CreateEmbeddingResponse, + Embeddings, + EmbeddingCreateParams, +} from 'openai/resources/embeddings'; +import type { Stream } from 'openai/streaming'; + +import { + ATTR_EVENT_NAME, + ATTR_GEN_AI_OPERATION_NAME, + ATTR_GEN_AI_REQUEST_ENCODING_FORMATS, + ATTR_GEN_AI_REQUEST_FREQUENCY_PENALTY, + ATTR_GEN_AI_REQUEST_MAX_TOKENS, + ATTR_GEN_AI_REQUEST_MODEL, + ATTR_GEN_AI_REQUEST_PRESENCE_PENALTY, + ATTR_GEN_AI_REQUEST_STOP_SEQUENCES, + ATTR_GEN_AI_REQUEST_TEMPERATURE, + ATTR_GEN_AI_REQUEST_TOP_P, + ATTR_GEN_AI_RESPONSE_FINISH_REASONS, + ATTR_GEN_AI_RESPONSE_ID, + ATTR_GEN_AI_RESPONSE_MODEL, + ATTR_GEN_AI_SYSTEM, + ATTR_GEN_AI_TOKEN_TYPE, + ATTR_GEN_AI_USAGE_INPUT_TOKENS, + ATTR_GEN_AI_USAGE_OUTPUT_TOKENS, + METRIC_GEN_AI_CLIENT_OPERATION_DURATION, + METRIC_GEN_AI_CLIENT_TOKEN_USAGE, +} from './semconv'; +/** @knipignore */ +import { PACKAGE_NAME, PACKAGE_VERSION } from './version'; +import { getEnvBool, getAttrsFromBaseURL } from './utils'; +import { OpenAIInstrumentationConfig } from './types'; +import { + GenAIMessage, + GenAIChoiceEventBody, + GenAISystemMessageEventBody, + GenAIUserMessageEventBody, + GenAIAssistantMessageEventBody, + GenAIToolMessageEventBody, +} from './internal-types'; + +// The JS semconv package doesn't yet emit constants for event names. +// TODO: otel-js issue for semconv pkg not including event names +const EVENT_GEN_AI_SYSTEM_MESSAGE = 'gen_ai.system.message'; +const EVENT_GEN_AI_USER_MESSAGE = 'gen_ai.user.message'; +const EVENT_GEN_AI_ASSISTANT_MESSAGE = 'gen_ai.assistant.message'; +const EVENT_GEN_AI_TOOL_MESSAGE = 'gen_ai.tool.message'; +const EVENT_GEN_AI_CHOICE = 'gen_ai.choice'; + +export class OpenAIInstrumentation extends InstrumentationBase { + private _genaiClientOperationDuration!: Histogram; + private _genaiClientTokenUsage!: Histogram; + + constructor(config: OpenAIInstrumentationConfig = {}) { + super(PACKAGE_NAME, PACKAGE_VERSION, config); + + // Possible environment variable overrides for config. + const cfg = this.getConfig(); + const envCC = getEnvBool( + 'OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT', + this._diag + ); + if (envCC !== undefined) { + cfg.captureMessageContent = envCC; + } + } + + // Override InstrumentationAbtract.setConfig so we can normalize config. + override setConfig(config: OpenAIInstrumentationConfig = {}) { + const { captureMessageContent, ...validConfig } = config; + (validConfig as OpenAIInstrumentationConfig).captureMessageContent = + !!captureMessageContent; + super.setConfig(validConfig); + } + + protected init() { + return [ + new InstrumentationNodeModuleDefinition( + 'openai', + ['>=4.19.0 <6'], + modExports => { + this._wrap( + modExports.OpenAI.Chat.Completions.prototype, + 'create', + this._getPatchedChatCompletionsCreate() + ); + this._wrap( + modExports.OpenAI.Embeddings.prototype, + 'create', + this._getPatchedEmbeddingsCreate() + ); + + return modExports; + }, + modExports => { + this._unwrap(modExports.OpenAI.Chat.Completions.prototype, 'create'); + this._unwrap(modExports.OpenAI.Embeddings.prototype, 'create'); + } + ), + ]; + } + + // This is a 'protected' method on class `InstrumentationAbstract`. + override _updateMetricInstruments() { + this._genaiClientOperationDuration = this.meter.createHistogram( + METRIC_GEN_AI_CLIENT_OPERATION_DURATION, + { + description: 'GenAI operation duration', + unit: 's', + advice: { + explicitBucketBoundaries: [ + 0.01, 0.02, 0.04, 0.08, 0.16, 0.32, 0.64, 1.28, 2.56, 5.12, 10.24, + 20.48, 40.96, 81.92, + ], + }, + } + ); + this._genaiClientTokenUsage = this.meter.createHistogram( + METRIC_GEN_AI_CLIENT_TOKEN_USAGE, + { + description: 'Measures number of input and output tokens used', + unit: '{token}', + advice: { + explicitBucketBoundaries: [ + 1, 4, 16, 64, 256, 1024, 4096, 16384, 65536, 262144, 1048576, + 4194304, 16777216, 67108864, + ], + }, + } + ); + } + + _getPatchedChatCompletionsCreate() { + const self = this; + return (original: ChatCompletions['create']) => { + // https://platform.openai.com/docs/api-reference/chat/create + return function patchedCreate( + this: ChatCompletions, + ...args: Parameters + ) { + if (!self.isEnabled) { + return original.apply(this, args); + } + + self._diag.debug('OpenAI.Chat.Completions.create args: %O', args); + const params = args[0]; + const config = self.getConfig(); + const startNow = performance.now(); + + let startInfo; + try { + startInfo = self._startChatCompletionsSpan( + params, + config, + this?._client?.baseURL + ); + } catch (err) { + self._diag.error('unexpected error starting span:', err); + return original.apply(this, args); + } + const { span, ctx, commonAttrs } = startInfo; + + const apiPromise = context.with(ctx, () => original.apply(this, args)); + + // Streaming. + if (isStreamPromise(params, apiPromise)) { + // When streaming, `apiPromise` resolves to `Stream`, + // an async iterable (i.e. has a `Symbol.asyncIterator` method). We + // want to wrap that iteration to gather telemetry. Instead of wrapping + // `Symbol.asyncIterator`, which would be nice, we wrap the `iterator` + // method because it is used internally by `Stream#tee()`. + return apiPromise.then(stream => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + self._wrap(stream as any, 'iterator', origIterator => { + return () => { + return self._onChatCompletionsStreamIterator( + origIterator(), + span, + startNow, + config, + commonAttrs, + ctx + ); + }; + }); + return stream; + }); + } + + // Non-streaming. + apiPromise + .then(result => { + self._onChatCompletionsCreateResult( + span, + startNow, + commonAttrs, + result as ChatCompletion, + config, + ctx + ); + }) + .catch( + self._createAPIPromiseRejectionHandler(startNow, span, commonAttrs) + ); + + return apiPromise; + }; + }; + } + + /** + * Start a span for this chat-completion API call. This also emits log events + * as appropriate for the request params. + */ + _startChatCompletionsSpan( + params: ChatCompletionCreateParams, + config: OpenAIInstrumentationConfig, + baseURL: string | undefined + ) { + // Attributes common to span, metrics, log events. + const commonAttrs: Attributes = { + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: params.model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + }; + Object.assign(commonAttrs, getAttrsFromBaseURL(baseURL, this._diag)); + + // Span attributes. + const attrs: Attributes = { + ...commonAttrs, + }; + if (params.frequency_penalty != null) { + attrs[ATTR_GEN_AI_REQUEST_FREQUENCY_PENALTY] = params.frequency_penalty; + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + if ((params as any).max_completion_tokens != null) { + attrs[ATTR_GEN_AI_REQUEST_MAX_TOKENS] = + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (params as any).max_completion_tokens; + } else if (params.max_tokens != null) { + // `max_tokens` is deprecated in favour of `max_completion_tokens`. + attrs[ATTR_GEN_AI_REQUEST_MAX_TOKENS] = params.max_tokens; + } + if (params.presence_penalty != null) { + attrs[ATTR_GEN_AI_REQUEST_PRESENCE_PENALTY] = params.presence_penalty; + } + if (params.stop != null) { + if (Array.isArray(params.stop)) { + attrs[ATTR_GEN_AI_REQUEST_STOP_SEQUENCES] = params.stop; + } else { + attrs[ATTR_GEN_AI_REQUEST_STOP_SEQUENCES] = [params.stop]; + } + } + if (params.temperature != null) { + attrs[ATTR_GEN_AI_REQUEST_TEMPERATURE] = params.temperature; + } + if (params.top_p != null) { + attrs[ATTR_GEN_AI_REQUEST_TOP_P] = params.top_p; + } + + const span: Span = this.tracer.startSpan( + `${attrs[ATTR_GEN_AI_OPERATION_NAME]} ${attrs[ATTR_GEN_AI_REQUEST_MODEL]}`, + { + kind: SpanKind.CLIENT, + attributes: attrs, + } + ); + const ctx: Context = trace.setSpan(context.active(), span); + + // Capture prompts as log events. + const timestamp = Date.now(); + params.messages.forEach((msg: ChatCompletionMessageParam) => { + switch (msg.role) { + case 'system': { + const body: GenAISystemMessageEventBody = {}; + if (config.captureMessageContent) { + if (Array.isArray(msg.content)) { + body.content = msg.content.map(p => p.text).join(''); + } else { + body.content = msg.content; + } + } + this.logger.emit({ + timestamp, + context: ctx, + severityNumber: SeverityNumber.INFO, + attributes: { + [ATTR_EVENT_NAME]: EVENT_GEN_AI_SYSTEM_MESSAGE, + [ATTR_GEN_AI_SYSTEM]: 'openai', + }, + body, + }); + break; + } + case 'user': { + const body: GenAIUserMessageEventBody = {}; + if (config.captureMessageContent) { + if (Array.isArray(msg.content)) { + body.content = msg.content + .filter(isTextContent) + .map(p => p.text) + .join(''); + } else { + body.content = msg.content; + } + } + this.logger.emit({ + timestamp, + context: ctx, + severityNumber: SeverityNumber.INFO, + attributes: { + [ATTR_EVENT_NAME]: EVENT_GEN_AI_USER_MESSAGE, + [ATTR_GEN_AI_SYSTEM]: 'openai', + }, + body, + }); + break; + } + case 'assistant': { + const body: GenAIAssistantMessageEventBody = {}; + if (config.captureMessageContent) { + if (msg.content) { + if (Array.isArray(msg.content)) { + body.content = msg.content + .filter(isTextContent) + .map(p => p.text) + .join(''); + } else { + body.content = msg.content; + } + } + body.tool_calls = msg.tool_calls?.map(tc => { + return { + id: tc.id, + type: tc.type, + function: { + name: tc.function.name, + arguments: tc.function.arguments, + }, + }; + }); + } else { + body.tool_calls = msg.tool_calls?.map(tc => { + return { + id: tc.id, + type: tc.type, + function: { name: tc.function.name }, + }; + }); + } + this.logger.emit({ + timestamp, + context: ctx, + severityNumber: SeverityNumber.INFO, + attributes: { + [ATTR_EVENT_NAME]: EVENT_GEN_AI_ASSISTANT_MESSAGE, + [ATTR_GEN_AI_SYSTEM]: 'openai', + }, + body, + }); + break; + } + case 'tool': { + const body: GenAIToolMessageEventBody = { + id: msg.tool_call_id, + }; + if (config.captureMessageContent) { + if (Array.isArray(msg.content)) { + body.content = msg.content.map(p => p.text).join(''); + } else { + body.content = msg.content; + } + } + this.logger.emit({ + timestamp, + context: ctx, + severityNumber: SeverityNumber.INFO, + attributes: { + [ATTR_EVENT_NAME]: EVENT_GEN_AI_TOOL_MESSAGE, + [ATTR_GEN_AI_SYSTEM]: 'openai', + }, + body, + }); + break; + } + default: + this._diag.debug( + `unknown message role in OpenAI.Chat.Completions.create: ${msg.role}` + ); + } + }); + + return { span, ctx, commonAttrs }; + } + + /** + * This wraps an instance of a `openai/streaming.Stream.iterator()`, an + * async iterator. It should yield the chunks unchanged, and gather telemetry + * data from those chunks, then end the span. + */ + async *_onChatCompletionsStreamIterator( + streamIter: AsyncIterator, + span: Span, + startNow: number, + config: OpenAIInstrumentationConfig, + commonAttrs: Attributes, + ctx: Context + ) { + let id; + let model; + const finishReasons: string[] = []; + const choices = []; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + for await (const chunk of streamIter as any) { + yield chunk; + + // Gather telemetry from this chunk. + this._diag.debug( + 'OpenAI.Chat.Completions.create stream chunk: %O', + chunk + ); + const idx = chunk.choices[0]?.index ?? 0; + if (!choices[idx]) { + choices[idx] = {} as { + content: string; + toolCalls: ChatCompletionMessageToolCall[]; + }; + } + if (config.captureMessageContent) { + const contentPart = chunk.choices[0]?.delta?.content; + if (contentPart) { + if (!choices[idx].content) { + choices[idx].content = ''; + } + choices[idx].content += contentPart; + } + } + // Assume delta.tool_calls, if exists, is an array of length 1. + const toolCallPart = chunk.choices[0]?.delta?.tool_calls?.[0]; + if (toolCallPart) { + if (!choices[idx].toolCalls) { + choices[idx].toolCalls = []; + } + const toolCalls = choices[idx].toolCalls; + if (toolCallPart.id) { + // First chunk in a tool call. + toolCalls.push({ + id: toolCallPart.id, + type: toolCallPart.type, + function: { + name: toolCallPart.function?.name, + arguments: toolCallPart.function?.arguments ?? '', + }, + }); + } else if (toolCalls.length > 0) { + // A tool call chunk with more of the `function.arguments`. + toolCalls[toolCalls.length - 1].function.arguments += + toolCallPart.function?.arguments ?? ''; + } + } + if (!id && chunk.id) { + id = chunk.id; + span.setAttribute(ATTR_GEN_AI_RESPONSE_ID, id); + } + if (!model && chunk.model) { + model = chunk.model; + span.setAttribute(ATTR_GEN_AI_RESPONSE_MODEL, model); + } + if (!finishReasons[idx]) { + const finishReason = chunk.choices[0]?.finish_reason; + if (finishReason) { + finishReasons[idx] = finishReason; + } + } + if (chunk.usage) { + // A final usage chunk if `stream_options.include_usage: true`. + span.setAttribute( + ATTR_GEN_AI_USAGE_INPUT_TOKENS, + chunk.usage.prompt_tokens + ); + span.setAttribute( + ATTR_GEN_AI_USAGE_OUTPUT_TOKENS, + chunk.usage.completion_tokens + ); + this._genaiClientTokenUsage.record(chunk.usage.prompt_tokens, { + ...commonAttrs, + [ATTR_GEN_AI_RESPONSE_MODEL]: model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'input', + }); + this._genaiClientTokenUsage.record(chunk.usage.completion_tokens, { + ...commonAttrs, + [ATTR_GEN_AI_RESPONSE_MODEL]: model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'output', + }); + } + } + span.setAttribute( + ATTR_GEN_AI_RESPONSE_FINISH_REASONS, + finishReasons.filter(f => f !== undefined) + ); + + // Capture choices as log events. + for (const [idx, choice] of choices.entries()) { + if (!choice) { + continue; + } + const message: Partial = {}; + if ( + config.captureMessageContent && + choice.content && + choice.content.length > 0 + ) { + message.content = choice.content; + } + if (choice.toolCalls && choice.toolCalls.length > 0) { + message.tool_calls = choice.toolCalls; + if (!config.captureMessageContent) { + message.tool_calls.forEach(tc => { + delete tc.function?.arguments; + }); + } + } + this.logger.emit({ + timestamp: Date.now(), + context: ctx, + severityNumber: SeverityNumber.INFO, + attributes: { + [ATTR_EVENT_NAME]: EVENT_GEN_AI_CHOICE, + [ATTR_GEN_AI_SYSTEM]: 'openai', + }, + body: { + finish_reason: finishReasons[idx], + index: idx, + message, + } as GenAIChoiceEventBody, + }); + } + + this._genaiClientOperationDuration.record( + (performance.now() - startNow) / 1000, + { + ...commonAttrs, + [ATTR_GEN_AI_RESPONSE_MODEL]: model, + } + ); + + span.end(); + } + + _onChatCompletionsCreateResult( + span: Span, + startNow: number, + commonAttrs: Attributes, + result: ChatCompletion, + config: OpenAIInstrumentationConfig, + ctx: Context + ) { + this._diag.debug('OpenAI.Chat.Completions.create result: %O', result); + try { + span.setAttribute( + ATTR_GEN_AI_RESPONSE_FINISH_REASONS, + result.choices.map(c => c.finish_reason) + ); + span.setAttribute(ATTR_GEN_AI_RESPONSE_ID, result.id); + span.setAttribute(ATTR_GEN_AI_RESPONSE_MODEL, result.model); + if (result.usage) { + span.setAttribute( + ATTR_GEN_AI_USAGE_INPUT_TOKENS, + result.usage.prompt_tokens + ); + span.setAttribute( + ATTR_GEN_AI_USAGE_OUTPUT_TOKENS, + result.usage.completion_tokens + ); + } + + // Capture choices as log events. + result.choices.forEach(choice => { + const message: Partial = {}; + if (config.captureMessageContent) { + // TODO: telemetry diff with streaming case: content=null, no 'role: assistant', 'tool calls (enableCaptureContent=true)' test case + if (choice.message.content) { + message.content = choice.message.content; + } + if (choice.message.tool_calls) { + message.tool_calls = choice.message.tool_calls; + } + } else { + if (choice.message.tool_calls) { + message.tool_calls = choice.message.tool_calls.map(tc => { + return { + id: tc.id, + type: tc.type, + function: { name: tc.function.name }, + }; + }); + } + } + this.logger.emit({ + timestamp: Date.now(), + context: ctx, + severityNumber: SeverityNumber.INFO, + attributes: { + [ATTR_EVENT_NAME]: EVENT_GEN_AI_CHOICE, + [ATTR_GEN_AI_SYSTEM]: 'openai', + }, + body: { + finish_reason: choice.finish_reason, + index: choice.index, + message, + } as GenAIChoiceEventBody, + }); + }); + + this._genaiClientOperationDuration.record( + (performance.now() - startNow) / 1000, + { + ...commonAttrs, + [ATTR_GEN_AI_RESPONSE_MODEL]: result.model, + } + ); + + if (result.usage) { + this._genaiClientTokenUsage.record(result.usage.prompt_tokens, { + ...commonAttrs, + [ATTR_GEN_AI_RESPONSE_MODEL]: result.model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'input', + }); + + this._genaiClientTokenUsage.record(result.usage.completion_tokens, { + ...commonAttrs, + [ATTR_GEN_AI_RESPONSE_MODEL]: result.model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'output', + }); + } + } catch (err) { + this._diag.error( + 'unexpected error getting telemetry from chat result:', + err + ); + } + span.end(); + } + + _createAPIPromiseRejectionHandler( + startNow: number, + span: Span, + commonAttrs: Attributes + ) { + return (err: Error) => { + this._diag.debug('OpenAI APIPromise rejection: %O', err); + + // https://github.com/openai/openai-node/blob/master/src/error.ts + // The most reliable low cardinality string for errors seems to be + // the class name. See also: + // https://platform.openai.com/docs/guides/error-codes + const errorType = err?.constructor?.name; + + this._genaiClientOperationDuration.record( + (performance.now() - startNow) / 1000, + { + ...commonAttrs, + 'error.type': errorType, + } + ); + + span.setStatus({ + code: SpanStatusCode.ERROR, + message: err.message, + }); + + span.setAttribute('error.type', errorType); + span.end(); + }; + } + + _getPatchedEmbeddingsCreate() { + const self = this; + return (original: Embeddings['create']) => { + // https://platform.openai.com/docs/api-reference/embeddings/create + return function patchedCreate( + this: Embeddings, + ...args: Parameters + ) { + if (!self.isEnabled) { + return original.apply(this, args); + } + + self._diag.debug('OpenAI.Chat.Embeddings.create args: %O', args); + const params = args[0]; + const startNow = performance.now(); + + let startInfo; + try { + startInfo = self._startEmbeddingsSpan(params, this?._client?.baseURL); + } catch (err) { + self._diag.error('unexpected error starting span:', err); + return original.apply(this, args); + } + const { span, ctx, commonAttrs } = startInfo; + + const apiPromise = context.with(ctx, () => original.apply(this, args)); + + apiPromise + .then(result => { + self._onEmbeddingsCreateResult(span, startNow, commonAttrs, result); + }) + .catch( + self._createAPIPromiseRejectionHandler(startNow, span, commonAttrs) + ); + + return apiPromise; + }; + }; + } + + /** + * Start a span for this chat-completion API call. This also emits log events + * as appropriate for the request params. + */ + _startEmbeddingsSpan( + params: EmbeddingCreateParams, + baseURL: string | undefined + ) { + // Attributes common to span, metrics, log events. + const commonAttrs: Attributes = { + [ATTR_GEN_AI_OPERATION_NAME]: 'embeddings', + [ATTR_GEN_AI_REQUEST_MODEL]: params.model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + }; + Object.assign(commonAttrs, getAttrsFromBaseURL(baseURL, this._diag)); + + // Span attributes. + const attrs: Attributes = { + ...commonAttrs, + }; + if (params.encoding_format != null) { + attrs[ATTR_GEN_AI_REQUEST_ENCODING_FORMATS] = [params.encoding_format]; + } + + const span = this.tracer.startSpan( + `${attrs[ATTR_GEN_AI_OPERATION_NAME]} ${attrs[ATTR_GEN_AI_REQUEST_MODEL]}`, + { + kind: SpanKind.CLIENT, + attributes: attrs, + } + ); + const ctx = trace.setSpan(context.active(), span); + + return { span, ctx, commonAttrs }; + } + + _onEmbeddingsCreateResult( + span: Span, + startNow: number, + commonAttrs: Attributes, + result: CreateEmbeddingResponse + ) { + this._diag.debug('OpenAI.Embeddings.create result: %O', result); + try { + span.setAttribute(ATTR_GEN_AI_RESPONSE_MODEL, result.model); + + this._genaiClientOperationDuration.record( + (performance.now() - startNow) / 1000, + { + ...commonAttrs, + [ATTR_GEN_AI_RESPONSE_MODEL]: result.model, + } + ); + + span.setAttribute( + ATTR_GEN_AI_USAGE_INPUT_TOKENS, + result.usage.prompt_tokens + ); + this._genaiClientTokenUsage.record(result.usage.prompt_tokens, { + ...commonAttrs, + [ATTR_GEN_AI_RESPONSE_MODEL]: result.model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'input', + }); + } catch (err) { + this._diag.error( + 'unexpected error getting telemetry from embeddings result:', + err + ); + } + span.end(); + } +} + +function isTextContent( + value: ChatCompletionContentPart | ChatCompletionContentPartRefusal +): value is ChatCompletionContentPartText { + return value.type === 'text'; +} + +function isStreamPromise( + params: ChatCompletionCreateParams | undefined, + value: APIPromise | ChatCompletion> +): value is APIPromise> { + if (params && params.stream) { + return true; + } + return false; +} diff --git a/packages/instrumentation-openai/src/internal-types.ts b/packages/instrumentation-openai/src/internal-types.ts new file mode 100644 index 0000000000..98476f1d20 --- /dev/null +++ b/packages/instrumentation-openai/src/internal-types.ts @@ -0,0 +1,61 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { AnyValue } from '@opentelemetry/api-logs'; + +export type GenAIFunction = { + name: string; + arguments?: AnyValue; +}; + +export type GenAIToolCall = { + id: string; + type: string; + function: GenAIFunction; +}; + +export type GenAIMessage = { + role?: string; + content?: AnyValue; + tool_calls?: GenAIToolCall[]; +}; + +export type GenAIChoiceEventBody = { + finish_reason: string; + index: number; + message: GenAIMessage; +}; + +export type GenAISystemMessageEventBody = { + role?: string; + content?: AnyValue; +}; + +export type GenAIUserMessageEventBody = { + role?: string; + content?: AnyValue; +}; + +export type GenAIAssistantMessageEventBody = { + role?: string; + content?: AnyValue; + tool_calls?: GenAIToolCall[]; +}; + +export type GenAIToolMessageEventBody = { + role?: string; + content?: AnyValue; + id: string; +}; diff --git a/packages/instrumentation-openai/src/semconv.ts b/packages/instrumentation-openai/src/semconv.ts new file mode 100644 index 0000000000..36591a0c74 --- /dev/null +++ b/packages/instrumentation-openai/src/semconv.ts @@ -0,0 +1,219 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This file contains a copy of unstable semantic convention definitions + * used by this package. + * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv + */ + +/** + * Identifies the class / type of event. + * + * @example browser.mouse.click + * @example device.app.lifecycle + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by EventName top-level field on the LogRecord. + */ +export const ATTR_EVENT_NAME = 'event.name' as const; + +/** + * The name of the operation being performed. + * + * @note If one of the predefined values applies, but specific system uses a different name it's **RECOMMENDED** to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries **SHOULD** use applicable predefined value. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_OPERATION_NAME = 'gen_ai.operation.name' as const; + +/** + * The encoding formats requested in an embeddings operation, if specified. + * + * @example ["base64"] + * @example ["float", "binary"] + * + * @note In some GenAI systems the encoding formats are called embedding types. Also, some GenAI systems only accept a single format per request. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_ENCODING_FORMATS = + 'gen_ai.request.encoding_formats' as const; + +/** + * The frequency penalty setting for the GenAI request. + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_FREQUENCY_PENALTY = + 'gen_ai.request.frequency_penalty' as const; + +/** + * The maximum number of tokens the model generates for a request. + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_MAX_TOKENS = + 'gen_ai.request.max_tokens' as const; + +/** + * The name of the GenAI model a request is being made to. + * + * @example "gpt-4" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_MODEL = 'gen_ai.request.model' as const; + +/** + * The presence penalty setting for the GenAI request. + * + * @example 0.1 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_PRESENCE_PENALTY = + 'gen_ai.request.presence_penalty' as const; + +/** + * List of sequences that the model will use to stop generating further tokens. + * + * @example ["forest", "lived"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_STOP_SEQUENCES = + 'gen_ai.request.stop_sequences' as const; + +/** + * The temperature setting for the GenAI request. + * + * @example 0.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_TEMPERATURE = + 'gen_ai.request.temperature' as const; + +/** + * The top_p sampling setting for the GenAI request. + * + * @example 1.0 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_REQUEST_TOP_P = 'gen_ai.request.top_p' as const; + +/** + * Array of reasons the model stopped generating tokens, corresponding to each generation received. + * + * @example ["stop"] + * @example ["stop", "length"] + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_RESPONSE_FINISH_REASONS = + 'gen_ai.response.finish_reasons' as const; + +/** + * The unique identifier for the completion. + * + * @example chatcmpl-123 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_RESPONSE_ID = 'gen_ai.response.id' as const; + +/** + * The name of the model that generated the response. + * + * @example gpt-4-0613 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_RESPONSE_MODEL = 'gen_ai.response.model' as const; + +/** + * The Generative AI product as identified by the client or server instrumentation. + * + * @example "openai" + * + * @note The `gen_ai.system` describes a family of GenAI models with specific model identified + * by `gen_ai.request.model` and `gen_ai.response.model` attributes. + * + * The actual GenAI product may differ from the one identified by the client. + * Multiple systems, including Azure OpenAI and Gemini, are accessible by OpenAI client + * libraries. In such cases, the `gen_ai.system` is set to `openai` based on the + * instrumentation's best knowledge, instead of the actual system. The `server.address` + * attribute may help identify the actual system in use for `openai`. + * + * For custom model, a custom friendly name **SHOULD** be used. + * If none of these options apply, the `gen_ai.system` **SHOULD** be set to `_OTHER`. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_SYSTEM = 'gen_ai.system' as const; + +/** + * The type of token being counted. + * + * @example input + * @example output + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_TOKEN_TYPE = 'gen_ai.token.type' as const; + +/** + * The number of tokens used in the GenAI input (prompt). + * + * @example 100 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_USAGE_INPUT_TOKENS = + 'gen_ai.usage.input_tokens' as const; + +/** + * The number of tokens used in the GenAI response (completion). + * + * @example 180 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const ATTR_GEN_AI_USAGE_OUTPUT_TOKENS = + 'gen_ai.usage.output_tokens' as const; + +/** + * GenAI operation duration + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GEN_AI_CLIENT_OPERATION_DURATION = + 'gen_ai.client.operation.duration' as const; + +/** + * Measures number of input and output tokens used + * + * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + */ +export const METRIC_GEN_AI_CLIENT_TOKEN_USAGE = + 'gen_ai.client.token.usage' as const; diff --git a/examples/grpc-census-prop/tracer_census.js b/packages/instrumentation-openai/src/types.ts similarity index 53% rename from examples/grpc-census-prop/tracer_census.js rename to packages/instrumentation-openai/src/types.ts index d43f5b4859..7a8a11242e 100644 --- a/examples/grpc-census-prop/tracer_census.js +++ b/packages/instrumentation-openai/src/types.ts @@ -13,29 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { InstrumentationConfig } from '@opentelemetry/instrumentation'; -'use strict'; - -const tracing = require('@opencensus/nodejs'); -const { ConsoleExporter } = require('@opencensus/core'); - -const defaultBufferConfig = { - bufferSize: 1, - bufferTimeout: 2000, -}; - -/** - * Return an OpenCensus tracer configured to use the gRPC plugin - */ -module.exports = () => { - const { tracer } = tracing.start({ - samplingRate: 1, - plugins: { - grpc: '@opencensus/instrumentation-grpc', - }, - }); - - tracer.registerSpanEventListener(new ConsoleExporter(defaultBufferConfig)); - - return tracer; -}; +export interface OpenAIInstrumentationConfig extends InstrumentationConfig { + /** + * Set to true to enable capture of content data, such as prompt and + * completion content, tool call function arguments, etc. By default, this is + * `false` to avoid possible exposure of sensitive data. This can also be set + * via the `OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true` + * environment variable. + */ + captureMessageContent?: boolean; +} diff --git a/packages/instrumentation-openai/src/utils.ts b/packages/instrumentation-openai/src/utils.ts new file mode 100644 index 0000000000..039ac7cec7 --- /dev/null +++ b/packages/instrumentation-openai/src/utils.ts @@ -0,0 +1,101 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { diag } from '@opentelemetry/api'; +import type { Attributes, DiagLogger } from '@opentelemetry/api'; +import { + ATTR_SERVER_ADDRESS, + ATTR_SERVER_PORT, +} from '@opentelemetry/semantic-conventions'; + +/** + * Read a boolean from an environment variable. + * + * https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/#boolean + * + * @param {string} name + * @returns {boolean | undefined} + * - Returns `undefined` if the envvar is not set on `process.env` or is + * the empty string. This indicates that no explicit value was given, + * which may be a useful distinction from an explicit `false` for callers. + * - Returns `true` iff the envvar value is the string "true" (case-insensitive). + * - Returns `false`, iff the envvar value is the string "false" (case-insensitive). + * - Otherwise, it `diag.warn()`s about the invalid value and returns + * `undefined` as a (falsey) fallback. + * @throws if the envvar value is set and is not a string + */ +export function getEnvBool( + name: string, + diag_: DiagLogger = diag +): boolean | undefined { + const val = process.env[name]; + if (val === undefined || val === '') { + return undefined; + } else if (typeof val !== 'string') { + throw new Error( + `invalid type for environment variable: ${typeof val} (${name}=${val})` + ); + } else { + const valLower = val.toLowerCase(); + if (valLower === 'true') { + return true; + } else if (valLower === 'false') { + return false; + } else { + diag_.warn( + `invalid boolean value for environment variable: ${name}=${val}; ignoring` + ); + return undefined; + } + } +} + +type PortFromProtocol = { [key: string]: number }; +const SERVER_PORT_FROM_URL_PROTOCOL: PortFromProtocol = { + 'https:': 443, + 'http:': 80, +}; + +/** + * Return span/metric attributes from the given OpenAI client baseURL. + */ +export function getAttrsFromBaseURL( + baseURL: string | undefined, + diag_: DiagLogger = diag +): Attributes | undefined { + if (!baseURL) { + return; + } + + // TODO: would be nice to LRU cache this, but probably not significant perf + let u; + try { + u = new URL(baseURL); + } catch (ex) { + // Note: We should never get to this point as openai should crash prior to this. + // Even if it did, instrumentation will still work except lacking these attributes. + diag_.debug( + `could not determine server.{address,port} from baseURL: ${ex}` + ); + return; + } + + return { + [ATTR_SERVER_ADDRESS]: u.hostname, + [ATTR_SERVER_PORT]: u.port + ? Number(u.port) + : SERVER_PORT_FROM_URL_PROTOCOL[u.protocol], + }; +} diff --git a/packages/instrumentation-openai/test/load-instrumentation.ts b/packages/instrumentation-openai/test/load-instrumentation.ts new file mode 100644 index 0000000000..d7f673b6db --- /dev/null +++ b/packages/instrumentation-openai/test/load-instrumentation.ts @@ -0,0 +1,65 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Because all tests in this folder are run in the same process, if instantiating + * instrumentation within tests with different configurations such as metrics support, + * it can be difficult to ensure the correct instrumentation is applied during the + * specific test. We instead instantiate a single instrumentation instance here to + * use within all tests. + */ +import { registerInstrumentationTesting } from '@opentelemetry/contrib-test-utils'; +import { + InMemoryLogRecordExporter, + LoggerProvider, + SimpleLogRecordProcessor, +} from '@opentelemetry/sdk-logs'; +import { + AggregationTemporality, + InMemoryMetricExporter, + MeterProvider, + PeriodicExportingMetricReader, +} from '@opentelemetry/sdk-metrics'; +import { OpenAIInstrumentation } from '../src'; + +export const instrumentation = new OpenAIInstrumentation(); +export const metricExporter = new InMemoryMetricExporter( + AggregationTemporality.DELTA +); +export const meterProvider = new MeterProvider({ + readers: [ + new PeriodicExportingMetricReader({ + exporter: metricExporter, + }), + ], +}); +instrumentation.setMeterProvider(meterProvider); + +export const logsExporter = new InMemoryLogRecordExporter(); +export const loggerProvider = new LoggerProvider({ + processors: [new SimpleLogRecordProcessor(logsExporter)], +}); +instrumentation.setLoggerProvider(loggerProvider); + +registerInstrumentationTesting(instrumentation); +instrumentation.disable(); + +export const contentCaptureInstrumentation = new OpenAIInstrumentation({ + captureMessageContent: true, +}); +contentCaptureInstrumentation.setMeterProvider(meterProvider); +contentCaptureInstrumentation.setLoggerProvider(loggerProvider); +contentCaptureInstrumentation.disable(); diff --git a/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-adds-genai-conventions-with-system-message.json b/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-adds-genai-conventions-with-system-message.json new file mode 100644 index 0000000000..cf5f947a5e --- /dev/null +++ b/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-adds-genai-conventions-with-system-message.json @@ -0,0 +1,49 @@ +[ + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "system", + "content": "You are an assistant which just answers every query with tomato" + }, + { + "role": "user", + "content": "Say something" + } + ] + }, + "status": 200, + "response": [ + "1f8b08000000000000038c92414f1b311085effb2bac39675158821272041554950b11e2d00aad8c3dd9186c8f65cf564428ffbdb213b20ba5522f3ef89b377e6f3c6f951060342c05a88d64e582ad2ffbcbb3edeab5a187fb9fb7dfaf573f1edcb7bb8bedd562d55fddc0242be8e91915bfab4e14b960910df93d56112563ee7a3a3f6fe6cde2fc625680238d36cbbac0f58c6a67bca99b6933aba7f3fa7471506fc8284cb014bf2a2184782b67f6e935bec2524c27ef370e53921dc2f258240444b2f906644a26b1f40c93012af28cbe58bf2727994ec634e2ba4f323bf4bdb52320bd27963961f1f57820bba3134b5d88f4943e49616dbc499b36a24ce4f3ab892940a1bb4a88c792b8ff1002422417b8657ac1f25c33dbb78361ce033c3b30269676a4994fbe68d66a64696c1a0d0c94541bd4837298aeecb5a111a84691fff6f255ef7d6ce3bbff693f00a53030ea3644d4467dcc3b9445cc4bf8afb2e3888b6148187f1b852d1b8cf91b34ae656ff7ab01699b185dbb36bec318a229fb91bfb1da557f000000ffff03004946b69d22030000" + ], + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "9607310f4e8625e4-NRT", + "connection": "close", + "content-encoding": "gzip", + "content-type": "application/json", + "date": "Thu, 17 Jul 2025 05:03:14 GMT", + "openai-processing-ms": "239", + "openai-version": "2020-10-01", + "server": "cloudflare", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "241", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999977", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_12b64a999af2cbe909602adc344dba39" + }, + "responseIsBinary": false + } +] \ No newline at end of file diff --git a/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-adds-genai-conventions.json b/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-adds-genai-conventions.json new file mode 100644 index 0000000000..b2c0b294d8 --- /dev/null +++ b/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-adds-genai-conventions.json @@ -0,0 +1,45 @@ +[ + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "user", + "content": "Answer in up to 3 words: Which ocean contains Bouvet Island?" + } + ] + }, + "status": 200, + "response": [ + "1f8b0800000000000003000000ffff8c92cb6edb301045f7fa0a62d65660cbafc0bb268b3e16eda628120481c09063795c8aa4c9919122f0bf07a41d4b4e53a01b2e78e60eef1dce4b210490869500b591ac5a6fca9b58cd6ebf7f997efdf9bc5fcc77dffce7edaf3bdadeef17bbbb0a4649e19eb6a8f84d75a55ceb0d32397bc42aa0644c5d27cb79554d96d3f92283d6693449d6782e67ae6cc952598dab59395e9693eb937ae34861849578288410e2259fc9a7d5f80c2b311ebdddb418a36c1056e722212038936e40c64891a56518f55039cb68b3f54f6ca46552e2874269af865501d75d94c9a9ed8c190069ad639992667f8f2772383b32aef1c13dc577525893a5b8a903cae86c7a3db2f390e9a110e23127ef2ec2800faef55cb3fb8df9b9aa3ab6837ede3d9c9e183b9666a0998f3e68566b6449260e06074aaa0dea5ed94f59769adc001483c87f7bf9a8f73136d9e67fdaf74029f48cbaf60135a9cbbc7d59c0b48cff2a3b8f381b8688614f0a6b260ce91b34ae65678e2b02f14f646ceb35d906830f94f7247d6371285e010000ffff0300cc59e0e82a030000" + ], + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "95d66fac3c52ec0c-NRT", + "connection": "close", + "content-encoding": "gzip", + "content-type": "application/json", + "date": "Fri, 11 Jul 2025 07:02:37 GMT", + "openai-processing-ms": "354", + "openai-version": "2020-10-01", + "server": "cloudflare", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "365", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999982", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_5b9a48ab38990a73e0f90e6d6b7b6efd" + }, + "responseIsBinary": false + } +] \ No newline at end of file diff --git a/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-adds-records-multiple-choices.json b/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-adds-records-multiple-choices.json new file mode 100644 index 0000000000..8371de1b40 --- /dev/null +++ b/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-adds-records-multiple-choices.json @@ -0,0 +1,46 @@ +[ + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "user", + "content": "Answer in up to 3 words: Which ocean contains Bouvet Island?" + } + ], + "n": 2 + }, + "status": 200, + "response": [ + "1f8b0800000000000003dc53c16e133110bdef57583e67ab649b2a21b78613955a0e201042d5cab527bb436d8fb1c788aaeabf236fd2eca62d12672e3ecc9b377ecff3fc580921d1c88d90ba57ac5db0f5366fafd639c17bf7b3bbf65fbe7d7de8c2e7fb6bf7e1266fe772561874f703343fb3ce34b9608191fc1ed611144399ba585d34abe6ddc5f972001c19b085d605ae97543bf45837f36659cf57f5627d60f7841a92dc88ef9510423c0e67d1e90dfc961b319f3d571ca4a43a909b63931032922d15a952c2c4cab39c8da026cfe007e99f28732f2ed92acfa8c5470dca9f4d7b23ec725245afcfd64e00e53db12a7e0795b707e4e9a8cb521722dda51754b9438fa96f23a844be68484c415613f22bb38bffd26c25c4edb0ec7c624986482e70cb740fc3754db31f27c7888de0fa8031b1b263f9fc908fd361ad015668d3e4f9a456ba073332c760a96c9026c07445afb5bc357b6f1b7df72fe347406b080ca60d110cea53bf635b84f2fffed6767ce241b04c107fa1869611625983819dca761f14991e12836b77e83b8821e29096b2c6eaa9fa030000ffff0300ad34d3271d040000" + ], + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "96074804aaf0d758-NRT", + "connection": "close", + "content-encoding": "gzip", + "content-type": "application/json", + "date": "Thu, 17 Jul 2025 05:18:55 GMT", + "openai-processing-ms": "438", + "openai-version": "2020-10-01", + "server": "cloudflare", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "444", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999981", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_fbc58335d597b112a3387a4e3fb2225e" + }, + "responseIsBinary": false + } +] \ No newline at end of file diff --git a/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-handles-connection-errors-without-crashing.json b/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-handles-connection-errors-without-crashing.json new file mode 100644 index 0000000000..0637a088a0 --- /dev/null +++ b/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-handles-connection-errors-without-crashing.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-records-all-the-client-options.json b/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-records-all-the-client-options.json new file mode 100644 index 0000000000..adac57b9c0 --- /dev/null +++ b/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-records-all-the-client-options.json @@ -0,0 +1,55 @@ +[ + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "user", + "content": "Answer in up to 3 words: Which ocean contains Bouvet Island?" + } + ], + "frequency_penalty": 0, + "max_tokens": 100, + "presence_penalty": 0, + "temperature": 1, + "top_p": 1, + "stop": "foo", + "seed": 100, + "response_format": { + "type": "text" + } + }, + "status": 200, + "response": [ + "1f8b0800000000000003000000ffff8c924f4fe33010c5eff914d69c1bd486565d7a2c7be0040758045aa1c8b5a789771d8fb1272b10ea7747764b13fe497bf1c1bf79e3f7c6f352080146c34a806a25abcedb72ddaf2f7eaaf3eee2f16cb33e9f56b7cbf6f6f2897edd991b7f0f93a4a0cd1f54fca63a51d4798b6cc8edb10a281953d7d972512dabb3f96c9141471a6d92359ecb39959d71a6aca6d5bc9c2ecbd98f83ba25a330c24afc2e8410e2259fc9a7d3f8042b319dbcdd7418a36c1056c7222120904d3720633491a563980c50916374d9fa35f5dc6270e24aa17427e3aa80db3ecae4d4f5d68e80748e58a6a4d9dfc381ec8e8e2c353ed0267e90c2d63813db3aa08ce4d2eb91c943a6bb4288879cbc7f17067ca0ce73cdf417f37355b56f07c3bc07787a604c2ced48b3987cd1acd6c8d2d8381a1c28a95ad4837298b2ecb5a1112846913f7bf9aaf73eb671cdffb41f8052e81975ed036aa3dee71dca02a665fcaeec38e26c1822867f4661cd0643fa068d5bd9dbfd8a407c8e8c5dbd35aec1e083c97b92beb1d815af000000ffff03002e1e6b642a030000" + ], + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "9607451c6e66d79b-NRT", + "connection": "close", + "content-encoding": "gzip", + "content-type": "application/json", + "date": "Thu, 17 Jul 2025 05:16:56 GMT", + "openai-processing-ms": "206", + "openai-version": "2020-10-01", + "server": "cloudflare", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "208", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999982", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_5dd31d8f9aa5eb13a6e7903923492d90" + }, + "responseIsBinary": false + } +] \ No newline at end of file diff --git a/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-records-multiple-choices.json b/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-records-multiple-choices.json new file mode 100644 index 0000000000..2c83acc2c0 --- /dev/null +++ b/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-records-multiple-choices.json @@ -0,0 +1,46 @@ +[ + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "user", + "content": "Answer in up to 3 words: Which ocean contains Bouvet Island?" + } + ], + "n": 2 + }, + "status": 200, + "response": [ + "1f8b0800000000000003000000ffffc453c14ee33010bde72b2c9f1b948642d9de800b62b5cb6141202114b9f63419d6f1187b8240887f474e4b131656e280c4c507bf79cfefcd8c9f3221241ab91052378a75eb6d7ed41d5d1e5ffdda2f7ec693fb30bf3b5dfe2eee4ecf4f2ecedb1f07729218b4bc05cdafac1d4dadb7c0486e0deb008a21a94ee77be57cb7d89dcd7aa0250336d16acff98cf2161de66551cef2629e4f37e2ba21d410e5425c674208f1d49fc9a733f02017a298bcdeb410a3aa412eb64542c84036dd48152346568ee56400353906d75b3f64ab1ca316671a94db19570558755125a7aeb3760428e788554adafbbbd920cf5b47966a1f6819ffa1ca153a8c4d15404572e9f5c8e4653622bf8b39fd9a987fa8e30682fbf698991037fd80bb3761a40fd47aae98fe42ff5c59aee5e4b05603b8bfc19858d911e760f28158658015da386a9cd44a376006e6b04caa334823603c9cf75e3ed25ec746577f467e00b406cf602a1fc0a07e9b77280b90fedcffcab62dee0dcb08e11e35548c10d2180cac5467d72b22e3636468ab15ba1a820fd8ef491a63f69cbd000000ffff0300a0db7ac411040000" + ], + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "96075bba7f96e361-NRT", + "connection": "close", + "content-encoding": "gzip", + "content-type": "application/json", + "date": "Thu, 17 Jul 2025 05:32:24 GMT", + "openai-processing-ms": "345", + "openai-version": "2020-10-01", + "server": "cloudflare", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "839", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999981", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_647fdbd760685b6f73c5cc23138cfda1" + }, + "responseIsBinary": false + } +] \ No newline at end of file diff --git a/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-records-tool-calls.json b/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-records-tool-calls.json new file mode 100644 index 0000000000..5ce77418f1 --- /dev/null +++ b/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-records-tool-calls.json @@ -0,0 +1,172 @@ +[ + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "system", + "content": "You are a helpful assistant providing weather updates." + }, + { + "role": "user", + "content": "What is the weather in New York City and London?" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "get_weather", + "strict": true, + "parameters": { + "type": "object", + "properties": { + "location": { + "type": "string" + } + }, + "required": [ + "location" + ], + "additionalProperties": false + } + } + } + ] + }, + "status": 200, + "response": [ + "1f8b0800000000000003000000ffffcc54c1729b3010bdf3159a3d9b0ec68e7138d6ed346ddc349ee4d04e9d6164b1806a215149d8713cfef70e100376d24e8ee5c0887d7a6fdf2e2bed1d4280c710126019b52c2f84fbbe9c798b9bf4367b4aaeb681bddb7e929bbb6f9fe793d1e4cb350c2a865afd42668fac774ce58540cb956c60a6915aac5487c1851f8c7c7f38ad815cc5282a5a5a5877acdc9c4beefa9e3f76bdc01d4e9fd999e20c0d84e4a7430821fbfa5df994313e4248bcc13192a331344508db4d848056a28a0035861b4ba585410732252dcacaba2c85e801562911312a4497b879f6bd75d72c2a4474fbfdd62fe3af57dee2e3accc778f653616851ced7af91ae95d511b4a4ac9da26f5f0361e9e25230424cd6b6e8a36da22b519ea333a2140755ae6286d651df64b108ad14a70092159c20d6ec90fa5d764c6ed6e090738a11f7a5f87c19beabebf5e5fb26015a49b0fbf678ba7cdd49b2b1624f7ff59dd7325e36afdaf82dbf5436f143426a5a1e2e58c502995ad33d443f2e09cb50d844a0bad56e68c0a0997dc6491466aea72fbd3e61c8dd416a03c196828b4ca0b1b59b5c63ae945d0884277e63a703c7906adb25474f1a1371abc2217c56829af07be3d638cb20ce38eda9d355ac65cf500a757fa4b37af6937e57399be45be0318c3c2621c151a63ce4e2beeb669acaea4bf6d6b9b5c1b06837ac3194696a3ae7e478c092d45735180d9198b79947099a22e346f6f0be7e0fc010000ffff0300a64600b830050000" + ], + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "96078988eb44f669-NRT", + "connection": "close", + "content-encoding": "gzip", + "content-type": "application/json", + "date": "Thu, 17 Jul 2025 06:03:39 GMT", + "openai-processing-ms": "1191", + "openai-version": "2020-10-01", + "server": "cloudflare", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "1218", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999970", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_7975a25b0266245986eb0145433f3813" + }, + "responseIsBinary": false + }, + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "system", + "content": "You are a helpful assistant providing weather updates." + }, + { + "role": "user", + "content": "What is the weather in New York City and London?" + }, + { + "role": "assistant", + "tool_calls": [ + { + "id": "call_PXP2udMH0QECumyxuh4lpn3y", + "type": "function", + "function": { + "name": "get_weather", + "arguments": "{\"location\": \"New York City\"}" + } + }, + { + "id": "call_TKk9c7b7gvDqCQzv80Loc7fT", + "type": "function", + "function": { + "name": "get_weather", + "arguments": "{\"location\": \"London\"}" + } + } + ] + }, + { + "role": "tool", + "tool_call_id": "call_PXP2udMH0QECumyxuh4lpn3y", + "content": "25 degrees and sunny" + }, + { + "role": "tool", + "tool_call_id": "call_TKk9c7b7gvDqCQzv80Loc7fT", + "content": "15 degrees and raining" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "get_weather", + "strict": true, + "parameters": { + "type": "object", + "properties": { + "location": { + "type": "string" + } + }, + "required": [ + "location" + ], + "additionalProperties": false + } + } + } + ] + }, + "status": 200, + "response": [ + "1f8b08000000000000038c524b6fd34010befb578cf66c57b1db10c8b105c18187841008a1cadaec4eec69ec59b33b26842affbd5a278d1d68252e7b98efb1f3cdcc7d02a0c8aa2528536b316dd764d7fdcdecf337f9f969dbbf6defda9adfacbe6efe7c78b7e6cbdd6b9546855bdda19147d585716dd7a090e3036c3c6ac1e89a2fe6c5e2b228f25703d03a8b4d94559d64572e6b89292b66c555365b64f9cba3ba766430a825fc480000ee8737f6c9167fab25ccd2c74a8b21e80ad5f2440250de35b1a274081444b3a874048d63411e5aff52236c514b8d1e88e1236ee1bbf31bb821d9010528e660b1f28801345b083df32e856d4d0d46fe7bc7d6710a24919c9f93bd2626ae2ea65f7b5cf741c7f8dc37cd04d0cc4e741cdf10faf688ec4f311b5775deadc25f52b526a650971e75701c2305719d1ad07d02703b8cb33f9b90eabc6b3b29c56d70f82e2fe6073f356e71448b1747509ce866a29ae7e9137ea545d1d484c94294d1a6463b4ac7ede9de929b00c924f5bfdd3ce57d484e5cfd8ffd0818839da02d3b8f96cc79e291e6311ef973b4d39487865540ff8b0c9642e8e3262cae75df1c4e4f855d106ccb357185bef334dc5fdc64b24f1e000000ffff0300ab11441282030000" + ], + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "96078993eaf0f277-NRT", + "connection": "close", + "content-encoding": "gzip", + "content-type": "application/json", + "date": "Thu, 17 Jul 2025 06:03:40 GMT", + "openai-organization": "elastic-observability", + "openai-processing-ms": "889", + "openai-project": "proj_Pf1eM5R55Z35wBy4rt8PxAGq", + "openai-version": "2020-10-01", + "server": "cloudflare", + "set-cookie": "_cfuvid=1dVbru2CzTfprgmbY2GyPqzvZehSNU6Q0AUMvx.9FYw-1752732220761-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "933", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999958", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_c5854b92f43699c9e6c43a7327a0193d" + }, + "responseIsBinary": false + } +] \ No newline at end of file diff --git a/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-with-content-capture-adds-genai-conventions.json b/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-with-content-capture-adds-genai-conventions.json new file mode 100644 index 0000000000..1aa721a9ec --- /dev/null +++ b/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-with-content-capture-adds-genai-conventions.json @@ -0,0 +1,45 @@ +[ + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "user", + "content": "Answer in up to 3 words: Which ocean contains Bouvet Island?" + } + ] + }, + "status": 200, + "response": [ + "1f8b0800000000000003000000ffff8c924d6fdb300c86effe1582ce7191b8c9b2e6b68f532fc5b02f0c4361b012637395454da2870d45fefb20258dddad0376d1410f5fea7d293e544a69b27aa7b4e941cc105cfd7a7cf3fdfaedf5c7fb34ace09d8d1d5ddd8495912f9f3e349ff5222bf8ee1b1a79545d181e824321f6476c228260eebada6e9aede5667db92960608b2ecbba20f59aeb813cd5cdb259d7cb6dbd7a7952f74c0693dea9af95524a3d9433fbf4167fea9d5a2e1e6f064c093ad4bb7391523ab2cb371a52a224e0452f2668d80bfa62fd3d8fd2ab57e2c00b19756310fcc5bc36e27e4c90fdfad1b91900ef5920e72d2e6f4fe470f6e5b80b91efd21f52bd274fa96f2342629f3d24e1a00b3d544add96fce393483a441e82b4c2f7589e6b9a633b3d4d7d82eb1313167033cd8bc533cd5a8b02e4d26c7cda80e9d14eca69d6305ae219a86691fff6f25cef636cf2ddffb49f803118046d1b225a324ff34e6511f34afeabec3ce26258278c3fc8602b84317f83c53d8ceeb8283afd4a8243bb27df610c91cab6e46fac0ed56f000000ffff0300e23e590f30030000" + ], + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "9607d8125a07df60-NRT", + "connection": "close", + "content-encoding": "gzip", + "content-type": "application/json", + "date": "Thu, 17 Jul 2025 06:57:15 GMT", + "openai-processing-ms": "263", + "openai-version": "2020-10-01", + "server": "cloudflare", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "273", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999982", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_3d48791f2e8bf2254beddbe3f3dca9e9" + }, + "responseIsBinary": false + } +] \ No newline at end of file diff --git a/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-with-content-capture-records-multiple-choices.json b/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-with-content-capture-records-multiple-choices.json new file mode 100644 index 0000000000..83b667fe4e --- /dev/null +++ b/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-with-content-capture-records-multiple-choices.json @@ -0,0 +1,46 @@ +[ + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "user", + "content": "Answer in up to 3 words: Which ocean contains Bouvet Island?" + } + ], + "n": 2 + }, + "status": 200, + "response": [ + "1f8b0800000000000003000000ffffc4534d4fe33010bde757583e37a8cd0229bdf1715b2190405a69572832f63499e2782c7b824088ffbe72529a940f89c34a7bf1c16fdef37b33e3974c088946ae84d48d62dd7a9b9f75174bfbbb9b3f9e878d33eafca1bcded8cdedaf939bb39f9772961874bf01cd6fac034dadb7c0486e807500c5905417e55151fe383e2a4f7aa0250336d16acff921e52d3acc8b797198cfcb7cb1dcb21b420d51aec49f4c08215efa33f974069ee44acc676f372dc4a86a90ab5d911032904d3752c588919563391b414d8ec1f5d66fa8e3469cb2558e518b2b0dca1d4c6b03acbba8925fd7593b019473c42ae5ed5dde6d91d79d2f4bb50f741fdf51e51a1dc6a60aa022b9e4213279994dc81fc22efe6158086e88f9ff526642dcf553eef6b2481fa8f55c313d40ff5c510c7272dcad113cde624cacec84b39c7d2256196085364efa26b5d20d9891396e94ea0cd20498cee6a397cfb487d8e8eaefc88f80d6e0194ce50318d4fb79c7b200e9e37d55b66b716f5846088fa8a1628490c66060ad3a3b6c888ccf91a1add6e86a083e60bf26698cd96bf6170000ffff03003b0c3ca016040000" + ], + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "9607f3ff4c2f7376-NRT", + "connection": "close", + "content-encoding": "gzip", + "content-type": "application/json", + "date": "Thu, 17 Jul 2025 07:16:19 GMT", + "openai-processing-ms": "459", + "openai-version": "2020-10-01", + "server": "cloudflare", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "462", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999981", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_c8606b5a0df9cbb0e34366d284418548" + }, + "responseIsBinary": false + } +] \ No newline at end of file diff --git a/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-with-content-capture-records-tool-calls.json b/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-with-content-capture-records-tool-calls.json new file mode 100644 index 0000000000..3da0ca1443 --- /dev/null +++ b/packages/instrumentation-openai/test/mock-responses/openai-chat-completions-with-content-capture-records-tool-calls.json @@ -0,0 +1,172 @@ +[ + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "system", + "content": "You are a helpful assistant providing weather updates." + }, + { + "role": "user", + "content": "What is the weather in New York City and London?" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "get_weather", + "strict": true, + "parameters": { + "type": "object", + "properties": { + "location": { + "type": "string" + } + }, + "required": [ + "location" + ], + "additionalProperties": false + } + } + } + ] + }, + "status": 200, + "response": [ + "1f8b0800000000000003cc545d6f9b30147de75758f7394cf926e16ddd47272d5b966dea5a2d1572cc05dc181bd9266d14e5bf4f981648da4d7d1c0fc8dce373eeb9976b1f3c4280c710126019b52c2f847f51be9fe5b32f83c583fda9169ff2ebdd525d14e9cd75b6bafb01bd8aa13677c8ec13eb0d537921d072256b9869a4162bd541301906a3e964d67740ae6214152d2dac3f567ece25f787fde1d8ef07fe60f6c8ce1467682024bf3d420839b877e553c6f80021715a2e92a3313445089b4d848056a28a0035861b4ba5855e0b32252dcacaba2c85e800562911312a449bb87e0e9d75db2c2a4424a7cbb7235df2cb8589fbd9eae3b7d5d53cf9a059275f2dbd2f9ca1a494ac6952076fe2e159324240d2dc7153b4d13d529ba13ea3130254a7658ed256d6e1b006a118ad04d71092357cc57b72a3f496bce376bf86239cd08f9daf63ef5575c7c1f6f273915ce5f3e57eae76a6ff6bf65d8e83cd7f56f742c9b85affabe0667ddb19058d4969a8783e23544a655d063724b7de59db40a8b4d06a63cea89070c94d1669a4c695db9d36efc988b300e5c94043a1555ed8c8aa2dbaa493a01685f6ccb5e078fa085a65a968e383fea8f7825c14a3a5dc0d7c73c6186519c62db53d6bb48cb9ea005ea7f4e76e5ed2aecbe7327d8d7c0b308685c5382a34c69c9d56dc6ed3585d497fdbd634d91906837ac7194696a3ae7e478c092d457d5180d91b8b79947099a22e346f6e0befe8fd010000ffff030074ac2f3a30050000" + ], + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "9607f407de8cd760-NRT", + "connection": "close", + "content-encoding": "gzip", + "content-type": "application/json", + "date": "Thu, 17 Jul 2025 07:16:21 GMT", + "openai-processing-ms": "1284", + "openai-version": "2020-10-01", + "server": "cloudflare", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "1290", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999970", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_0c0558ababb0ad4c20131da9a47292ff" + }, + "responseIsBinary": false + }, + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "system", + "content": "You are a helpful assistant providing weather updates." + }, + { + "role": "user", + "content": "What is the weather in New York City and London?" + }, + { + "role": "assistant", + "tool_calls": [ + { + "id": "call_n6OA3ruiGLsd0hQFPQV9fErc", + "type": "function", + "function": { + "name": "get_weather", + "arguments": "{\"location\": \"New York City\"}" + } + }, + { + "id": "call_d7kGKpfVm9Oy9ovs0W8Rn47b", + "type": "function", + "function": { + "name": "get_weather", + "arguments": "{\"location\": \"London\"}" + } + } + ] + }, + { + "role": "tool", + "tool_call_id": "call_n6OA3ruiGLsd0hQFPQV9fErc", + "content": "25 degrees and sunny" + }, + { + "role": "tool", + "tool_call_id": "call_d7kGKpfVm9Oy9ovs0W8Rn47b", + "content": "15 degrees and raining" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "get_weather", + "strict": true, + "parameters": { + "type": "object", + "properties": { + "location": { + "type": "string" + } + }, + "required": [ + "location" + ], + "additionalProperties": false + } + } + } + ] + }, + "status": 200, + "response": [ + "1f8b08000000000000038c52c16ed34010bdfb2b467bb6abc434a4ca11504f55051481a0aaaccdeec41eba9e35bb634254e5dfd13a69ec4091b8ec61debcb7efcdcc5306a0c8aa1528d368316de78a37fdbb2b4f77d79ff9fadbcc6d7e7c587eb9091f6fefcc7a81ef559e187efd1d8d3cb32e8c6f3b87429e0fb009a80593ea7cb92897af5e2faeca0168bd4597687527c5a52f5a622aca597959cc96c5fceac86e3c198c6a05f71900c0d3f0269f6cf1975ac12c7faeb418a3ae51ad4e4d002a78972a4ac74851348bca47d07816e4c1faa706618b5a1a0c40114c1f02b2b81d940bb05807c4089a2dc49e7907c4708b5bf8eac323bc25d9e5b06dc861aadf78b69e7320493af37376d0c4c4f5c5d444c04d1f751a04f7ce4d00cdec45a7410ef11f8ec8fe14d8f9ba0b7e1dffa0aa0d31c5a60aa8a3e7142e8aefd480ee33808761b0fdd9ac54177cdb4925fe1187efe6e5e2a0a7c67d8e68b93c82e245bb096b51e62fe8551645938b93d528a34d8376a48e7bd4bd253f01b249eabfddbca47d484e5cff8ffc0818839da0adba8096cc79e2b12d603af77fb59da63c185611c34f32580961489bb0b8d1bd3b1ca18abb28d8561be21a431768b8c4b4c96c9ffd060000ffff0300eba7002f8c030000" + ], + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "9607f4147eb2e397-NRT", + "connection": "close", + "content-encoding": "gzip", + "content-type": "application/json", + "date": "Thu, 17 Jul 2025 07:16:23 GMT", + "openai-organization": "elastic-observability", + "openai-processing-ms": "721", + "openai-project": "proj_Pf1eM5R55Z35wBy4rt8PxAGq", + "openai-version": "2020-10-01", + "server": "cloudflare", + "set-cookie": "_cfuvid=hegbUOz2ZUjELe2UBdTlLWUoLuE69OC60214ou0kk7g-1752736583082-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "725", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999957", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_31fe1ff570cb59fc99ef7a4ef91280e8" + }, + "responseIsBinary": false + } +] \ No newline at end of file diff --git a/packages/instrumentation-openai/test/mock-responses/openai-embeddings-adds-genai-conventions.json b/packages/instrumentation-openai/test/mock-responses/openai-embeddings-adds-genai-conventions.json new file mode 100644 index 0000000000..99c6260f1f --- /dev/null +++ b/packages/instrumentation-openai/test/mock-responses/openai-embeddings-adds-genai-conventions.json @@ -0,0 +1,49 @@ +[ + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/embeddings", + "body": { + "model": "text-embedding-3-small", + "input": [ + "One fish", + "two fish", + "red fish", + "blue fish" + ], + "encoding_format": "float" + }, + "status": 200, + "response": [ + "1f8b080000000000000384584d8e5eb711dcfb1403ad6da3abfa5f57c9ca8e844041e22ca245005f3ee037499c5714a059cc82d343f2b1ababaafbf71fdede3efce3d7bf7efef3d70f1fdf3efcedcb3fbf7ef8f1ac7dfae5eb2f1f3ebefde987b7b7b7b7df5fbf1f919ffffeebe74f9fbefcf69757f8eb8f5f7efbf4f95f1f3ebed9ff56fe08faef4ee7e727fbd9cc2c1149c38fcff51e67effeb1fa0ade19cb9ec72a3ddc9f810c7a25e7b9a74f6726425637b9d1f5d800b3d12d8b66636e5d13cf58ef4dcc33b67c473ec99b158b7eeee9a86c963f57b7d11972538b698745c8b796f7844bec6ed4543d57e9554e6a6cb22330cf9bf94e7b14e5adc793fa849cddd87e863ad6229f8188ed966f2550ebfecc2972e939a50f601d9693cf0d72b280d5d8aa99929b021d59786ed0560e97abb20d6d25a9ee6c8ceee9cb80600d03a39cc3c264cb2b7bfa8466c4f35c33af836a2ca9a828d237fb79160ac935011b0d86cc67683563f4a32c5f507f7e7e770226501def56a4569cd3a524d0c14979136cf75ae3b1981669fbffd07b7d7e9ff217f474e314cb3332a266e92178b6b691cbb7852d569e9f4c5499a4f49b40e522b57a3153e8b9a0bf5829a7dca24fb53c491101287203b975514259b86c60ed037f9e149e0d6a4121bb72a9dce78e906a462649c91319111b2daf9fa74665d1c0aa8ab9aa34c3235d40e1d693f97cd5a44d8c62aab6764a768d5a2694fe59693051943d8cb8cf9362bd509a3fd6214449153d3ae54ee65666d4e3c3888e9bd3b78f7e3d5733acd82b94e4ac9e504ec774678fc4061d66b84e73abada8abb2d8970467c69649e8e46e6e295d657b9528455a6629b1b925a0bcd8a54c859898f2d4af3a10b0ab027d284e813eb4b93290ced612f28a2215971d68245a4110ee2924c2eec396522face25ade2042b65cd5bb742d99819037495895d2bff70e84d1cddb263bf7d2f96a26e5a39293332a1f05648afa45bb6fcb379933db56eb3dd8cfacbc93605bba908839bd414d80b5a3fa6236b8be00b3337b71a50a54bee7cc46859c955663bc192b0b7e051b8f31d1d2b49dad360ab9ecb6c9e762c7ba85f00e56597a0338d208f57098c987d97ac556675c80af1dc6b32e3d396d76a9930fe7b216d11b14679139352d4568f6d2d7793ccc4bb5ac1751fa5c40bda84f9cac59d3540bc68ebdd652de62c733343054709f7b4d511dc2d9b2544c789c78a7ab46da920aafdb1dfff4de7790584d6e565f1a0df8c6e361dea9a4ab56f4a467b817931a788a59fe9fe63ea271134b28bbbb59807915736df0a147ef8ea04e22149e469050871c8e16cc6639dbd5cf7a649bb7646c63f840f20bf3db5895795b34578a2ed12055a79356ab996555445c1a7974272ef5aef1855f49c8c951391c7043051963b9485ce21d37f7b9d7a013e2742de9c2d3c61aef55953e0df152cacbd283a142899c50a79ec697fdbf1ae51c04b566d3682214e7b3ca2eaf17050be91f02bd615eead58328ad655fb756633bec8bb73ab7dc5640744a5edb0f725c3ce1d1e3be542e90154a2370cba368df713e2fac714a4b10137d598c8507b4170d9c34abc55b606518616bcdecd0c3c3afab1fdf207d57ad592916709074191962527c339063ad163feb74822a4d0ea2d2afaef35b0d11d3b7a32fdf361eeb6a10d2677baf7ddf09483a8a6fb4b85bde1cfb5e47f49fc63b59d73065668a2970ae08f8554f111efa2e36e15737ce2433e699ade35ac6a05437072d8a20ec9e29c1a8f161cfb6925a045b5538f75c41363d8e3a95bd784c6ed5d53c1f339517d345d3d4f7f871ce548ba5207e7f6b3be89092ee725ec8e269154df4d6d2077b294077017ef9f4c3dfdaf9ecce809765585bbd579e46b574039bb6367517568c8cbcc67793c4ae563cfd34112a2c15d5ab2ed17672e71acb618e3116f76a8c2e9db770c3978acf4c4fb6b8063b9e923ac738667d57e79de58c6b3a11aff1c0e5b4cb9131326db5f2cbbfcf62a1e71fd3d66d6ab12c53cd14dc96da18d95483b957291826b58b2462e7ea81e8b5268aeb4c7f4ca6dff5720aa422c6266adbea9a0eb4e7353330103cfc27eeb310843688cc09b48e58e6e8b60cd3c89dbd061fe61d553a0f3ac3a072edf023e29cf79d5edc7efe37000000ffff8c5dcb8e24c971fc95c5dc87087f847bf8fe8aa00bb5038204445d741020e8df05cbac21b6ccb2a7fb4010a8ddedaaca8a87bbbd7c252e153b5cbbedd995b40ce21ca0b6bc9dada6b753b310dbf7097ad17a6cbfb541d78aed5a8c833f130cee176e417fd380fcc94ef4083e0ed36cd5aaf72fd53e38a3a8139fc80a39797bd7f468275dcd8567ae6323a8b5f6e2379e0580884fce5dc7432eaa156b0822c5513e25c74b97e734410cabceb4d4150b15aafeac1361d6dc41adcee05db0ab9dab8a95ee6b8a37e2c18722443441b2f041b2f6295f9b788bb415c14791b5efdafefeadce9c68632ca41d97323deab3f30ce300969347006103fa9af2b3546d741af4bb581e5bcdb57bc7e18d65358027e87c5c012e4c5bc8dd892f427f36a28d6fe55c56cbb882001bb19bb1b3c8692bed29facce61db74e32cc14952b87af5f43ab66c1f76c9687ec98b3f7505994eb7435c3a96b67fa716921eeb6c47e5d585d2b7b9dda930cb154d968b98647dbb573f89e9e2aba5162c5d9ce5ce9237d96ed89872b8fdb320557f44219c8d7e7aa5dc148c2f57185010cafa16ead66320472a8bd53f9cb732155f46023329a09b0d3678f3312d33d25cb18d5edac91030ee02a3f815e0e3c859190850b85a9854109c297419f1d74e8a05694d2786d549cdcd9476714d790e8d06aa8887d3c0857a12221b21b981953baabc0d731833d1b2040c8ce4673918a6cf8598b410cf0a2823738b009676e6ed564ea1d0fc287a101db3dc93fb783c23c7c73e222aa25f8d0742e7a5ab1ca7233f097d16d23b52aaa8c95c29780dee86504026fb338fc7537f00913de0ea5395d3d51b5dea9edbb4e8a13dce0d85e39ceac170032e99c7766e07f0c1a79cb8e095cbe2cce88dc332bb945abb5379f8fc038473a7730c9471a625bb33b04153e20b85a08b2073a564fbdeb11027fa57d5cc7cf6a3d07dc23a42a8d8e772efd3e08738c7b395c11da9f49ad7d7fd9f22e668901a1049dfae133d1b2ba6dfc8cecae1d6b1427403b4c87763418bee142e90c7f53dfdb2ba97e8d3d9dd322e5409596463737e0b4104c070cad30160e90806e7e0603ef06e84415a352913147ca571bbcbbdcb069670b7ce3b30eea475e57659e042aad1315c60dd044a0b2e6b21ac4d389cf90f21bd4dae9218cf255ed0783bfd91bc8488bcc6aa5058b5f766cd049bc8e7a77ad607c2f3cf8d4597d1c973f2f79ac192eee075c2fb597593e995c92c43a31f410322e60957f85c0b14b379a3740612e52dcc6cea737cff51b1cac2439e2c7515df3011f7b8e512315fbba117821efb8c0317e00d1c628c95a95b598630b070d2167fc3820703e0be7a010f6cfb8a41bdb42b1b0f829f0beb9fa56efc31c44995926f7276e27fdad86bdc54685cfc037b51f3ff4600cdbcb45edb60b50aab2e096f208f63adb9dcf23ef6deface64b48548b4a285404c59441ed2ec1847cefcd076c9c397942d7cbe92d8f300c1deed427caaebbeff384c0e62ba4d39ac1d5c727629c8d42f22b20f5d57af38d168176529ec2e970c694b607aebf9067b3cba4e2ddb189b4ca3ce1d2caf9a407dfa81e15b9770bfad2f5a0eec0ea2ad91c73fd13da9ffb98317a54678e0b77b0b35846697d1a1d2277371667cbca7cecddbb3636b260836199eecda88a592533c80e462ff8908c58297ce2ab40973d63b80e0893879620e3f031f72246a86031b389c38b393bbc3279dd778d335610db1a222c6eebab63446b08bed65812b277b2a2084ac5a2b75f1b8a5a2ad9575e1a112edab1887a0961b523f9a25b07e789b36e24a54bb7462143a5d58b2c5c221504b4299ceca0ba15990d50bc257712b4d7ce7ff6e2c1486ae479d0a2d033cdbded082c92078c13e18096d97b44e95b3eaeda805c116e4bee60af1d7d04213b768e09d9f1246d5ab1d3660b4b195195a1f432aa6f8639b74107c6bf3a642671e4d5390e4902ebe0b2594424ddcbf518ba7cf17567d5e9029980ccba5a48bac65174d117988335ca9c80d79ee175afe4eb0bfadb671d816702fa42816f0f648b02e8d900dae76d7ed0b0ba74edd0b3517faf18fceb291cafe0dbed03a9ad2f40c0720e770b330f9d25ba53b977f18745ebe17b8ea88a7b0fac0154a48cf79008e605df25b3336167098c0c459bb4ac765688e6a94f77920e6027ce4fdad458e1c1e0593aca575e07beaa93a94355be5ddff4c462bcdd2076512860a0cb587ad4c79acd0565bb87a5e22e7bbf0bbb6f012934570c54dacaeda297f6f1e17208abb3fb9caf9c12d6d0c01f5df5a07ce9ccdf58f32d65791a307a71601c784ef867b4c594379a4b51865a820b3b021e8920efc575f656ae1632fe2d5a880cdfa62ffb193e91c2d611c0d9c1241c91d9050a01564334f4dd5bfa0ddf5bfadb8552919102850b5fedd984372b1503e499943816e5ed8c4060d7c77221f3415da890947d3b37651ce17c65819fae2ce19c6b17cb1c1ed5a9e666c62229b07fc20b5fb07d0e2b499f5a4147dbb6b875bf9c3b079417eb6a963f9c88a7bc18b645ef5f64515ad069357f59dc4082cfae899437aa6ac195c276ad4d8b13ab780f0b6da64b90d188ec6120193d442e3e618008b931c9330595b254b9972a915f7d6cfc13a5014b6b17ac50cdc52b6a83e47df8a86859096657a4e3cf8da0a193394cca6df325fcdbda79f671eecfa2ab4459f568283b1b740a01e963b5a9a646e96eccecfbaa1d21d7d444358bd41f769567d4de2ec4feda19252585976da6a8aabdc44cb726aefae19327729d205705c41e4587ca51ee87e33e444601a53a8be5cacb137c9c34c707e499bcfa440cafc24f2064cccc6605599ed329702ff0a0437de9b68851e2f1641d679f8457afd582667508e5e2b0138cf1c39a41d12b351d3459dc913c53aa10112af6163802777ca647fafe21a906d14d8f9fcf28ffdb5757d9547c00216a634f5f4c0901bea38e1ccce8ec1d6400f7c0f04bd10db923ac93914ad8f204f57812cb795ce5b21c78fd0e0bdc0f258de539d729fe6ed47dd99fcebce3fbd7470551cecd5c4d3b0b6cd6f16e4675ed9c590c562c183f9cd41d10979cb061a7d0809555eef0341ca3fe893ee6259b3d71b824731fc0548c23c0d6c25b1efb3856b28d081d1e84ff54953e3082098d56b357c67c01609293c46249ad99ded3214a4a91145f0f617b4e8acac62f39102d39d4399bfffb6a3b2a3e8eb3207e31b117cd69eac550819b1fff44f078ef4ea085ceae963e387a455c000b0a4bd453bbc6b5ebb283734196b664d39c3e2af4ea2a584504f63915c29fc24d703e93445d17229e9e404c0bdc255c8e84bb013be2127c4d6c7eaad6058a46992b3356911a341fa29968b74a21e71d0b56ad036393c988da4591c5282b47dcf6eb2f9c76b12e2eafecd9f3b975109d2b2010310ba0d8d99f54fbf7a6816f8d0e640b83c92b45da778e892a1abdb3db1784b78269be7c1a7b42844a0e07ec0efe03b587da1d885ec75c4ca25da1e6d715effbe03ea70d620cffac567c81ee6bc43cd886c69b8f0d1165dfd265742c62909073f6f5739d2d6c69e56c556eacf67e474b5f05d79ccdfdacc5497d513412371fd2cde8679c9ac32dcfa3ec36703c8859d67639433828aca60411d8036b90c0732b9101725cfef5bb8ce09b0d368f62e2c181d7747d01605728eb6e9cfad821d81c1e5e67d6d80b4f879de42b63e8c54a7c222e8272d6304e01956c8d6c2ff141bdfce551ac60c7a37a17895eab30d2b75c33f06631a66c03379c49811d573dce5f35aaf32b0dd6d3f1a466d7bb62331bbe666101d8d34cd94031c0f227b73025e2e11cc2e5236a31549d7ac0f5bbdfe0ae6ecdd893bae01518e9d14f980801bc215c25e7ceb3381342d62d3aba80e1e2b343f315a5d09b411e2caa56f72bc40c63eb2b5db782ecafbeddd2b82185e233e50207c567c3e248902502af02652801bfda6231ccf564934bb8e9f8cc3ee83954333bfbd8b01f0a8aac0c620de169d85bfcd68f10759ede432119e80fcb043787a848793b340eb42ca2364c610c5d6546336cb26d4fef5669c099620303dccb6d6a6357cd2960aa9e51734ea7311ee085d799b80547205c1128ecc5e28a150d5cd6e4c450f0cff0a1d8ad881e068b887d89f8c1d51a5350c80a5619002ae48e43f00fd20794aeea4e56ecfbaeab02e0aba82b19c5cd855ddff50514d2ea4070ce787eeec594464020c287292c46c965e13a537bf1aeb958cb5d72c41882511677f0ca97bf50fe8934093a30585fa4ef40f7c5cbd6468ed38cb6d452c940674ef27b1900520a3bda106b1f16a54f87a66500888bc36be9515910c0258675fc4f700196f859ce449adb456f49711ad56724042391f5c084d5193faefadf341381051a8fd3a2b098bd8afd347072b0debc91ce439c63009f5b9ce8d0d362bbf595f01608e18f028e2b955a6d9ad983db9f6daf7d055348092c0fe52333ab4a67ef4a23ada869338829194231043149e49bea8c5ef68e3cd27ca7e1faa06b12bec8914b6a1d913e4321bb3807469c6baf3d04d834d8a3850691012fcbbb84e4e33867b7901c0e1387306d9970b089b23e11ab41d2c20117cf779a9fd9a61e65d08aadf28389b164f153740284e1758d7f125f28400220bd88b21f98ffbbb4aeda5f690dcc0095882c5de2185efacc935c56b94f380ba021f37a0f41b9f5df57d3c0b8eb6e904d22e2f39088beddfd2ecf7cd505685d9b13760a153b6f2e5c7d025bb65545f0473028d00edf7370c679883a0f914891237b642064636f5e77b1f4343c73d8788b458fe22818c9cb961ba9c6e7488808f45361de5f80021fbdbf1a00f5fdc3527237240946e6a11e81172d4f6448fe868d7319f57842aa0eff26cd9109463bc62059da1cf308e52c17b7f6ee81bc9fdd1e4f0d10c06d606a68870b9819ac5e07024beeef4dbfd3957502dfb01c5b8eba955981634806e508118dc278cec9bcbcbcb358fd0c78b142fd9d5dcef9938fa68f735234be9276783fadab6e68295346b249a493f928be332efb9e288499a9b9ab62a85c8ef48c6e510a6c06b423aa51f6bd18d99c763184014c90749097a15ed0802abc1f9dae76219e54ac572e154e1fe46fcafb23812f1838584816625a0c4a12b4e4dccd4eefc380c840913f9f866bdc1a3d83c082cb0c44bd1aa347353088f07901d9c10e4d1a3bb15555b9638e144a2b6d0465007c77a484078229ebf518828cf8bd76b6f6f47a737d4c993ea4cbddbf2462c52428eb18ab09ecf26387a4b4b0fde93e62f03bb8a4f97ec03f9c76933cd83460968262b49f635bb6f353dc975aeeae32ec58257b6433e09e51240b5a0975e40e145aaabae224828fa2a6205adbc33bc24fad1e51c91de8aae9afdae453fcaee3fd45ee7900c0136b95d0a6b6b025b571aa9306e1ecbd2b3fe9aa6f851afc9426047a4165274e5df06082f2f698956498ce9c900df133039415df7e05068b2d054703175d8552df588d04f78909228ae7c52996cf89631169b184a6cb8d5c9912d16842834d2b61fc58893eb44eb261fc0ae8d9962cdc717309ed7d6ca120540c29b24f27f7f57e501c48afd907eb5be09dc6c9ca05b94399c93ce7b12be09bfd6dbb256fc7033282f8429b81ceaec11b1ebe7563d7481e168ba140b4d811d46b6327ba8411337a7833381be541ff3aeee695ee1d59dc504503c8e24fd5f06bf3ab0704809c04a0a50fe7244a9ee02b0cfa2ce9bddcaeaa838d177586eab0b5b17ac5c1bd1c71d21a93716a66441680f03311dc5e815e87e3d5d91bf6b22557c591ccd2f1f11070a111fcc4f69d4e08a8d8b00de18e088fca3db7404b062083f421515e56f264a22c78697afb19c939dc7e6c8b784a03095e8aa2e8b1f9841f5a7fb195c8066ad1c90f001ed6a74000c03985beb21f7c5cfb38576e1f51715629b0d5c34abab9ee4ce656062e6461bd2434e05a707b15fb8fa44ffcd017863d3cc991ea0c3abd20c79d4700bed5b317671abf8e47890720fbd4b582e6b270704b81eaa3944ec683113014358c21408457119295850eb38e5d7c72a876fdaee57a6cb9d43b881de46d8b151fa2638e8a2d580c93edf732c6b9c1260e1d2cf0588201791c89f905de3223efbeb7bde7b7bc4c5c48279538849db9241ef3b1b0b119f40a5b9213de69fa971d7f64e0805da49e9843a0af6d5b8c5e77e147e7baf909405f3527f679882cf1f31e0af1fac5cb25c866fb7bb8f92b2958ecddb62f879b10e3058f2347b50dd2082578b0910dad71466ca7bce7a3e4f190b61bd31846b4940fe97e57e2891169f208e13e6aefe11eeded1ad20a0398d28aaa2bc3a9813ab644af0740e1c8f27a48ba849e3865e3c3045daa2304b7ce21efcf97e5a3a3d161595e2a8a2a14be5b5c2028e452fabd2b6c56e67fa021670013dbce43c123c53a1db2c310d70abc0dc121b64fbaac677d5fa0c567d1e2bf02f4f52b4431058af36049d4142a5c06b71168c405be18f71f1d083fcfaef6665416627b53ad33b6cd5af1053710c444b6c605176c4cb1e18e2ace111dfc078fc007f1a4d25c3f05913e7a2e7e9aaaa4bc68dfe2c55119f2ed1673b5dac3c7c109b11e137b4bc7bd2e7f321f8960f373b1161180f796a6028c8287e84738e2ed11327d852a46b2fad4e6d45ef5d09fc7c851d9bd43c3c71109534282f694443e6c0d31dddb96446e213c1e89789f4576dcfc17b28e7481e7590fc0fdaa5acb4ad4dd0951a4f476368b430190042b40de789bf8f9f11df8dc39e6f2acc370408892f09ea5c58816a04536c41bb4100c383c4ebdd2a8fb0f8b9e076ce2b68c2320ec7c1e5cf31c528093b7436e1f5ca18cbea12b8d254e2d883ec5db68b061aa15749d3a92b56f082fe042dbcf15242a953a707e545e5f31bfa2871aa6413f48ba79d4c4a2f87d0f26ba93b87c49488ba1b575253530148703592e77dcf935d777d7a813520a9e55ef06d35fe49b6cf84796f0de50f79b4b1bbd2ba4e449e80625e20d8a882d306ebbf76130e7b255332267284e8a958309026944180db8554228a11350e5dc8d8cb2b4e80a69e5423dc64490d72746753d086c5a9c6cede1c8709645f4a01cf475a697603fa03a5286b5ec49d40cb464b3a00f679b47e5760ef4c5c0b1a2e87c472ea064e476c25df5a757e72fb0d49cfde3bb149d557b0bb193a0f845aa72d24cc2871f6dd93010493a817a1c5edfeab008fc79f8ca3a90ca644a9296cb001c440ad13d9f01edb5c046387653f2f48ef791d98007461f8d3dcbab98a68cb55d3207ee12348b2508f9498c4e2ccca0f4de3a0b025121253ff605fb6b5d368b8d9bcf1dc2b356554766bdca221b318958581fee52e0e714d94442a421d07ecd59ef9acc67e3c6bd8ad0436a6827eb6a3ef2ebe73a87c383acdf3b89d70533b635f6813d2e376202d423f617ccdfd08d8cd0ce76b0e5053fd5d0f75b0f617d96b0c1d756e02214560a112fc8e9f2fd7156cdbd659789cd340d19afa2c62c74b54c8e24cc71545728c5fc58d7ddeb2de1aa151d388c1be72c5d87e46dbf6b104cc6531590a0313f939dad35a70219c8a2da5a53d2973e0e5c7c9438a2de933453445bc9f02c83f150761dc402d3fd6097f5947c0147da0b8ba67c1f2457f24df7d4e32c0c51341d19840652864c1534fdbc1965ead1cb0816a936c1801c5a7444ccf5bfe24e0a6038c72af51ee67c9593fbfe280d7e1cd9774f47c51aa71f96e30eef1f66aff7acbffba6081386e2d12dbb2ed9d1a9118df85d2db458c12a541809524e9a4ac450d5087560db8a93271f57b28337e8cd28fd4370a56d5055ecc6c72065f5cd6dc03e2c7a8a05dfb8545c755cbeaa3a30ef9a717cb68cffda9621322f38bfd9cd8d01c74b52f57dc5b1a51c7f03ae24735243b07a982e9cc3165e6bb3e0c44598728fe46b434fb67184f3150435c3f4170411860b6831d8e9383418307ea2022c36b6a7ce893df8686c676fb7bdbe12c804c9cf5e3c79db20342916f83ccd32bc9cb9bbe5e8c6cf22c832b4dcd9c93823c2ef058982eb4d86a1083f7deb93e1bfe768640c83e189964fa36e91610d9508e305b6b7103fe803cc3569eb292a0b4fc058b0eb209ec4d60aacf8dd09f4fd431806e8d6c80c61f86034106f4058aafead2f9f214b2ca8fd7cbd95ab1d30115ba91366704896f8f98f2db144602a69690d012c886b7f41f71fefff57306f6c19e20c047c153b630a9604893e7d0efcc507585274e56c5570cad88f5fc0083a99e9063c0c7b5784d73a2e60ef425eaf1c3b07963cd1fa1fb0b9acf1a6988357e58bb117ec946dccb11555c8b3f08ca3f05e641df2e719c6b82c2432c514f7d4b02dee4a6ad0f4a68ba3e13217091f4bd5d41891bb4631648bb1e2a3b630d151c28b30c7898b7276b7dc1f006d2c27c33eb6fccbd7202c8145792b301be8fd55243de123bc5efbf7ebffffeffe57fef7f5e2b7fffaeb3f7efcc77f7ffbfdb76f3ffef3af3ffef8e3effffcdbb79f7fe5dbdffff9c78ffff9f6fb6fff7a087ffa977effeddfa89e354439c8382ba4354a7e4dc2e92e9683c15693e91ffd605a5c18a75052ea438b2591d498a258ba4b4fc8b0984b21467700e4ac32547b4f77aa6f38f615cb23f5300e468192a18b8734928bdfab2a967bacf6986093b8301862bf2ed82d893970ea88032ef27df4d7cbbdb324e11fe329472edc56c10d8623092678a5e56c4576b3065f8ba709e05c657dd05c7880e4fc61242f7d4fef5dbe7464e0cea0bad307159e44de5f3364b6c6765cea37b9f4bdc5d486ff5e343b18a756c3618bd72c46f1c8c611ef2f02da2c58a606d87e132a8ab04931812215be374fd039944275b79a4ba62801e43bf690618f9a8561d27406dbd1fc6e191a86d9798b43a1bc5df4566197aa9e09ba45735a7efa4f9373e231943d43402bbf742a87018f8c1496142a68898c055b115c159d1baee0f2033982ce972c2413ace93de96a3a8bc94e3549f608ad7fcd341ace9046cf88c17d82285f28236d0968b65c5b99558cd3dace786f112fac04235aa939c05c06731e7680795b6c7ae7b7b9074256b78a303048c55aa60ea2dca6c22776bbcceeb96411552226859045a211418d09128821ef4b47026d8c04609d53cd1253321202de59cbef3f733a304f25d5f47446acf72777b5d44380d734cee8d2a2f0b3458b2672afd96c00f12b2c56a2ab3bcfb854e031e298439ebd18ece38a85139d0072f8245c1d4661197f80f22c18260f6c171d0bb506beaf9054141cab0400452702868e18b043c65540ac572c45cc53579e22510d07d3e359da12b93a35773480e2097f7385f88a28fa52f7f193697fbfc2ee0179ba346d20ac138ce474710101b8731f99e68bef3a2c86da81b64234809879b7647821d4acd2c22466508436b8b5528c830bda4819893d6b24f2ee0af47e804c0b52468d877798ceb75847116122d373aed965a5f4b9506ef871b6efa5891d00e0391ae520a56024c764f19a4580ec2a8d7d76973939776bf4fe1091122ef965b837335adb38707132ed32a194db5c77f4c4917819e8badf4fffe7e77d23ccad4887c1012ab32d31af53ba7ce82a343b42aa879f9acd2521d5de65aa118564b1723d692b9aabec7373150a64d6c4c3e437f3226c6957f969692f81e6aae12a1bf2292e01e043665ac1e0ace413f100e5e7dedfaddd74800f5446a15df38cf1a31dac0f198a833e56466c7543d04a57f88ccb20524cfc66374b8df556a920e835cd4c764c136bd55ba670e78893e816153d56bc18bb1e5a2a74e190f3d2af7aaac4aded760dd1e0b3a1d382551dd7d86619dc80791d2c9631bbec726c77461e47f05ca9757cb1527166467e27a97fee394718c1452c624357be85ce294c78964fbfa3e2c1f813c5a3803df0a9d8a88a78f5c32a452486279b13a0a9791fed7ae70365b534f6066370083c8e3cb6510dd29e144a0cbe5cf11bc2d1eafc5e1b4c9930ef8d69abdc595c0315474bd34055618cff19406366ca8081b6f8dc3c78ba0384b921b3c6217a7e922cf76c1d487410d627397925d88ca3e29790b0b9a2de446e8bdd424d1ca2f73041fdfd82db133a56a19039afe314710472eab7834e23f508467249b2030aaa94814553226abadcb52e939fd243d35cbd43b32df7450d1827dae5f696146938cc5a82d770fe4f7c525dfc8c863847e7f8a174f25de2aec5e8ef923e1ebc8be8031174b704e5441fb874e86e5d01b092645903a690f7373e849e25e8ba4eb3dfb00556cecbd6b1bfd23563d8bb82f0815c1a35b1da6963fc17c6568ea5d9394b91f56bcec3b0301a25a95ec4c8a591594811993b5dc612e024e15bcfd556684043a46bad7818cd0aae19d1c2bc15c0f80b3730f8b6c5c91159c3e1edb8cbfe1c93fbff000000ffff8c9dcb8e25c971447f65d0fb0122dce339bf226843ce40a000511b2d0408fa77e144668bba6651aae18640b1d95d752b33c21f66c7fe11e11a53133f802e99382d27ba62f30f6e9822a6689d58fb3dc213e6a1630b662af0d82abf47e2cf25a7a30b06d775bbdc78b4b4b2be1049661bff53622c03d32162eecda085f2ddbefdf4f06cfa6b938f0c7937ddfe01e531d9e19ae867a4f4090e591b7c26f00eb9bacf09afd2f4202d43f32a981d1a7d77323d528547b69843cf00d22ed67014e83a12155ba237df4822c41bb6516c1c424b4b22388876c5304f75fb0cc300150ad78c3e2d819e38ce6eab0ef2918139ba33b24fbb1059b6443709755b4387b51509f3251b6b00c6a9b6bec0115fcd3891d3e2591a078cba985adf8ca6f534c4915f2d30f6a0d2cc925fb7064140c6a1c536ab61f278296780599585350d80135a6960ead49f0aa46babb6697d0a538b07acfb935ffb54755cf776ecb0e2b38412fc20269d4cf0163e99c469a25eb622c48bf7df1fa1708c88d20d32f6c553044fb4864eb733c67298d7e8ebd32efa2cb6ca3a2a701d858fb5b6adb6d92c99b106be95c53eb0fe6513afb7cfb682b10697ba2a1988ea5b32351ee79153fa5a0dacdf2637db2d354094d8e2a6cf201f602a1c68ac7209128e6eb3856326b1e8ce327396794176e6346210ba9d50511bd8f3bd2d61677669772743c16ad69b350865304728d37d5d0fa0159f1a150f35df426e06bfe661120c72770c44d58b2ab7669d6b0f4582f44f37d099f3e2b4b3feaf1775f5c16addcd820ff24c9a659438264b64fdd5e9bf7472e7f930e4a125a64dff2044a9e18212d4e47a7661852b338d9134238629ac39b90cec553a09b51e050b1bc80699b41f59cd0f7cf2417bd17e9d8c2bdda2ad8127da08aa87c9ed6973fc6614c042be98b1b27b0729adcfdfe0f5d7cd44a374b6379597aa1b76a1ef6d8d3196eaa97be15e51589b02b6b71e371c05b4111da4ec9ada98778cbc0a0ce319d8d667ed1e4bb93cf5e8bbe4f461e46a9e06db36bf9ec6ce7a54db1c66ef36c83d6a3c6ba22fed361f938d015913683eef409761d64b0802cbc3b0765f7d28c8f0c0110c75bac31a5ddc1faed923d97169bef1e1ecf490d7d06763afef2e9882a93585bf3753ab33e6fece356a735775d2b16ddbba00a36854fd18be01cb5c6be4024dc7a7adbe6d5a85c9bfbb0a8ebb52ede5c1c4d6f3634fd0eb76261a9a1593974cce4c13aa6e5612c6231c47b8a3c542b350b71acc928b93cb3e3bddeb12eddc2df88d6d937a8af46291784087bb67daa1b23194169d72b7531ec7758961f800408d364cb349ccb390c04c6ef4486ac4b4a02adc3132232326cc03a95633f8e2710d58075cc99935eed8c8b51df35d07dbb661e0e6f89c3abde895a95b8e1369d22ca9e5542320c8875ab9cb54ac27350ab665b9d22b403015daecb635b88af8b85aac81476762e3774aec61d3299b833c0fc13a0806b384b0eed2b436323a969dbdf75dc56cb5f7626b89daec3ecbe34897025b6406af2e8fc35387334464eb2bcb78705988789d2d9731ad995e6ed5052565aa82751f15f9763ffe5140784bd4893776eb5d59e97b5f5414b6ec3f16cc4c53bed3bb2c7355d475b2f486ebc9b7a12d33e8796d61cf9dd50d249fd09ead119ddc791ad7c0cddc8b16a3942bced66ca1a171cc9c0db77084288ae2e71a8968ae9b61c16277eef57aaec7f76b32cfc930418e1fcc824b4dbba6e47bead0ba86697519c818bd2b5126db7ee47a5b1cb485a7825dcbb38a1cece26cb9a9366ead1054e3ba8663c47938ccb303d1b84eeb1f109e7a400812ba003461ddf81cdd68c5ac45f5d7939bff415fe04d40b02db5f1564c35f1a340535ef562d96e888eb9f38cc1fc071edb414ff88a3d926f4dc6487a93a082756513b4b06286225d5cdc779807e249cb1876500cf202cc7d3b4ab81da541565115594c102e91df6ce71f813369f2f63c8d4e7d686343f6cbbd5637622f3312d2327a2ef27deb7822e9d206cd197da58bac37fe04a31c77e0f8d5301a107dba63a44e8299fe0d04796b33062d7dd5e10c8c09e25747dbab4f2dbde1fdcde1c2f8367bb3d9342c17058410a9328b328c782b96a32b31349aeb3882cf4b652113188c659ff344dbd3c03b3187daea937a474fb29d33422b9e8a5644b75c8722e507ecdcc5b4de3c8ccb368a7c2e36e66a00088c607d5249cc70cc0cc608043929175c3945a763ce1ede91d04423c65f65a990982320c3153fac936c8c82d573e828074b7b95857baf38a435dd0f7d877bc9f66acba246c7dac5e0373a817b540ca0945548d238157dac81c1a3998c734c2b69d03ba5897e6050e9c88d97a078f233abc766cec38d92da0b6c81edbd68ac56bbbd5dc0e88dd3435f1fd24313bcae7ec8c14ad3dcaf88de5bca8a8fecab54716cd6598ac9eb7b4749ec21d7dd52cd1071ad6197026c30338c15e092db123d6b6c12312c4a327ad80969abaf2f37f8ece9bacf71836fcb68132427b790ce8b97d00d16d7b2364e58ab6fbe76cd69f98ab7294480b0ddbe428647a0c6de36625bfe37e978759a6e9bd62596e53cccd694e14082b96619c73ee3509b84ea8173b507e19c30c9f2110ae870cc7643ef3e74d42e353539efdb7d0feb924b97482123ffffeffdebc5f5ea27cf5cd930178de9e451b76ccb3a501bd8d81b97b0913e08687083c8ed0cbfdaa660222f339876e80ebaef618a36eab64b64f55c72327770f63687050d341db1947db06b7732191385debf7179fc7addc3bd9828e48fa67d1a80f0f4155aa70f52f16babb679e119483986f3b18d6a4268cf3af7523031f9c3ca99445804f8c0b61f98d7fc86c78cda55921a784514ea7511430561629a39c5c0d184e1b707dedab7170a8df04df36d673530dc21d9a76e6da3e0bc70f3f740ff2b374e8f625cb8862e4693ef12d3b22ef37902a7132a0be026356880b79a61e2accd2a7068a05fabe6d7bdb69331901699e06b6f1c99f2a372052d537f8fa8ddc97aa0e85d9b34f001d8dab522ca088351d2abaa4e7b646c75a5f506824e8c1723ce82dc3af5d10c1b8c283a3fdda73f63d3d933cb25c28aa22b62b2af699256769db1e5ccf749db7b4057b77bc15d8a7d49a5c0cd61844aea29a5c7acb5977ada79868cfc1963b511e1d4fbe57e943e3f6d71f7d69df447ea319b28f0557be02a76bf6e31e457bba2bdc75fce4f886b820eafbf171a6f39593b924cddf2d152595c1406ba6961e370fd7a77c3266d74bb640546a466256a5ed5ab7a431da62975ed246b3ac4702d1bec340e482be9cb09abb6f29f659b654806f68066a0345e437d0ad8623717c6ce361884c9b75b27c9ce527e9081a1eafe49ab9761f30552c8cdcb78feb8e593328bb0de7a42c957683cb45879e7af870e02f265b059660badda22611c93aaf61a4c125da2f6781e4d9e8550d0b27319552fcb71aa277bce763fe25b7f3a10bce456420eea77bd12e8e38de27ea6a1ba1dbec8827d45f4b6bbb8f975cdd6179dad894918a22b1a6a075208a7a8a33ef4e4af8cb97c7ebcd2312d68f456b7dcd2d98a11410f7bd34031f349c29444dd84c85fbfe92c7e2602af656e86ebd000a4c44cdd0b1246be0d60133801ad66a735cca2ce45620a72ba46bd3593b4308c5109e8d547870bb0560de3c13d66ceb8acbdb7a25702630b9d6ff0b316bd679767d1232e310051dbb8df54d95d1425117b9374e9e9f0837478a3838db1c3d87b9517c341d435665ad0e160bcb4ccbe8577c6464938ed963657c944b4ea9a61a103a8df6d901fba23d7ac0c1e0bbb434d6b3189e433332b5b736518ac7f2a4f5f23c3c2cb60c5fa4dc8001077bb4d864950533da67df1d5bc2f96b5ead5fa943c3c729e82e45dfece15a63b2d80fea32a731bfcb0aa0677d44fbce6979bc56ba7f4bea77695af6de0fa80e5a7a9060d09fdd24f9a6ca516e6d262e8e94e35cc215a93930eb88ae223fa27b2f46dac57d7dbf1e47f969a7fe6a9683d87fbd94d8bf99407dc38060d0438a484fcc0bcd71dfdb49d535c8f475b3b338259bb9dd6be437c24e8e817ed5ca6ecb1cf2b40f3d869b7fb9af6711105d59ac5d5b42270d1eb1df0eb9542f2881d96293bec6bef3d0a1bc5fa2d54dd55b92858848683e042bb8259bb65d7f99bf1b5c1a9aec11cd40eed2f8cf6d8f22c65c555148f7a2c5b845db97b441657f032f7747816b7965d85e82a434f0da8f13668e7ad719f511d2b7522c9dcc23aceebfcbf4c129235f603b524aa135d76a8c4e88d8540f56f3ec8b30b57169d19e99eaebbf39aca6dc0e84a99023744092a896aaf228b85b0dfc06665971e7c35999458e0103fc3d2eaf7ec36ac260090675287c1816c5c4facd0db5c97149a533f18d60d5b972075696cd6f588aaf8bfba8f340f2f4e3f6be6fc0a729facdbd3151955274f2517b5af312d31d34f799793bfb69815936d9d2d2aea8a69853e3afa19ae8e9ed5ea74089c6bca6f70b029516d025f4b59e0344e5dab5c1aab07534cd77a62c61df01526d13a981e8229a40b06f4a0ea7e58045a8f9471e06ba60b5296d6a9074f5aa116794472ebe73fdab4ef3482665de3b2f840ad0567f7a2092af71d1c7b2e1ff20ef4579adb762cbbad58a6b9c9429f823897b5c554c9dbb2558e0132edcf6e7c2cdbb133469843805114a0dad7dedd3aa7cd7165155512cfbaada227ed5d7b5d7ed7a69923e2a1d8c55f92617f973102c0e46ebd2e3aa55a0dff344af5037b8e58da156311d7b3d58debeff5d286b961ea095a374c9bb2039eeabfec0b2d579c67ef53b8b627218deca9b76b3fd654f993409a7c2793e1981258ef3eae78f2a4b2197e159391adfc0e6a5d7b1ade2d8f7822e643771028c92f58489c1bcdb69328a76c0700095a9bd8e4ffdd3493f12a723f3159a3685dcd1ac4a66ed7d9e7c4fdb2d54a8e97dadcf7f43025bf81c23ccab3384a723d9d79b59dae0c1967359388c60c5f879e10ca95ba734322efb11cd408463de62e4adb1a2e14111ae88418d26c7aacf84bb501704f0f20e63aeb76c61e6daf4b1629ecbbee2dd11bfae301eddd47c0891aad793329789067fc8a606ae884a1ef70d054cecf5ffaaf5f0e452b37a7e9985ce6ffc4f9a9eaeb91f9e7ae312cac020da1cdf94a6390beaa2377e7aa66da28274e650ff37bdfa4004c3163cb0811787f9faa8559cc6b1dc8c6d5a6764450cd565a2617b48b734f68873d3af8e2f46e4289bd5522895b3f8d930c25a5370fcab9b19288ede228fe334c8d8eb75e9b65a45bdb1d78383a4d4077957824731c3dad165452fd085454f718fe5199ed6fa880af9427225c4883d2d552831793518b6ae07d32316975996c04e2004d39601b61248772821dd57dcc8fb4abb139f1b4e556c433c3415b8f0fca2e6b88f56e7c7ba1e58a5320e6d4e4ba278ad58c82c4179b0167d4fef53a33d94dda054fa3aedb4da3aebd7e0f0ceb5a4b2089b3a13d93b4ad53d3b516f221fd1deee659a44ea47be3c9aa05da80ec54a9dd09b037f2c6b579aec933643235ae15d77855766a867a2186a45aaa5fe95489d9befb2bae3ad89f62eb9de69c696d54051cc386afb3fa778024460d830bc05133483e178bb5eaf8713c0e7b974f41f4d35380d9b2157396088f1fafaa884962ca7504c32fab1a468839946a4f2e36d07b8deed48a9f39870027e520a0c330028d134e9f84803934e4af74389e4e12ad3d7b5b36f01209dc1ba21c29153dbfe8ed1192761bbe2c5418f41a56cc96c172d7c8078a61cd0badb62b5661c4eacb595b7c1abf1fbac020ee43e9022d2e51b297ed41b07d4a173e1cd4a3ed4e8ae6aae036f82c5a6f30c4d772bb7a4cb7ee0fc605b6830d64996940f14d07a69070421adaa557f4f6e5f8bb87f9072b63725b0b5440f1250d92303e41033f1b98451e9c89bcfd5d604aee04ca8ab84bbd2ff394de96b78cce5f0f97380a639bba64cd6200ca98f5730f8f8df633bff21d99ed6e1e0e63f0bc26d459975348110549f53200b2c4fcce04fbdafcb80f75fdc05ed93cbb904541cd4b4d4755ab409438cf809a152bc34cd598dcfc79377049026537af25b12a45a5dcfc6733e059467af1117339f841fd591b2a9b6e2b7fc078dbf8568cf4cb9af61ee83cf7913b655485a7b543f6f1e6092d9c41d96aa0a352880ec7acea4eafb09abb9a22a2eda2e6c772683f8aaf6112a3998c1014adadbe41b8c1ebd6fc8e8bf41aafb28cae0520ab8b7aa1dbb387b4c8077442ee49d581ea53709fd8f5a117c7accde43f03c1988cbd02d1ee34205ab2083431a3913ddecb6facf6a768fa154cd8301ed98df9140de2832f5e999e0f7d6b8083f4aafd094e3933e1d54a01a1d8295af2610bdd9f44571b575f2b595abceccd78562386c1fdd8e9ea1a8a49d3b9f10c42a7c4e7af27be486871a1e97b9e9ceb36a8e92376d50f3379d39df2947b58217050579e9d97bb378347759a6df5b05f61dac8585b2c5f37e3bef240cf514bd539c2802d3c4c5ec151673fc3497256843b7b2e7b1abe709b3a4cefc00cd3888cec4fcd057b67b03828f2b5b3548b4abdb2796ab2ce916731c7689a9264edfa3b8621a1cc2680d502d94d16fae539c5d6665221d910658745719fd6a7185e806ce4b43d67e56eecbe192734609b338ea3dda48a35a99ecd76b90080e4b7e0866b1bfdd4ffac405381daacabda7632676435a58da5143da34512b92fd3eb6ca269712dc16b3accbd56fdc609f8fc9da4bf3a346193126a4e1edcfe17dbe405a7867e711909e6eebf250accf09e59eb71cbaa0b866f4c16999d5cbcece6af821063b31fec8c3a4cc67f5fedbbbab9672986fa747c4f606fb1322918947719f5932ae490892ff898638edc3aaa3a7a7fed3636b1244b15b6307a8a2f87e4ab8ff6b9872e51c8296da1f1717b0d5a6f3d3c31382901310efdaaea8292bbd8fa0520929a0b7f55c7612524a5d9f4ad142fc631219bc8aae5ddb616ecadd2026caf74519d99d5967ea73b6247c6f65f0eac6f70bb727c14bbd81b0ec1c936cf6c2fec456451617a00faf1d02002522feb85fd41276a653537c3fe53fefcdb14175d3e4a2efd5c28224cc96612fef7a5ddcccdf53304ba29c6ec2f4235062600d56adccc5f008d4b31099306013d4de774c681c9299fe66e145bd05498e9cb510f972889c93f1fd6767374dba34d5b963aacab89657e5bf002dcd8d4b91e7b23cbd87b29a0ea94a3b5b3256f450daece506a030fbd9c31ba617f06acadba6c7f8e2bd2a0c0ca33f9f56788bbd561d75997622b9f577e9ba49654f73e0d13c518bd999b8887ad28183b4f7169315f4ac87b9bf9d00ce1e3682b5be3a478047671e567cd90d15163f453b40f2752cd206a8d05b31656277a43577fb7e3392631d8c55a2dc6daa987d34d0a49f9c6a76dbf69d85b7ab829c9f10d838264a07be87581130436662d3240bec6ba64b4237cb5752085a14d7b592c68ab988b0e41ff31520a7bd7e265a3c0d16e2ad92198fa200961aef6bd567b0308e56cd33654d77175d90c05f5c93e8c4d07b5a2c0d1393ec7b859f2921823a511bfdbf56f5bcfa75aad9cd95dd178928bfc36bf47d7a13f18d1d0adcb3b8f4ab75d4a1a1617fb4f7cbb81b3ba59ed4108eb30cfcf28ade9cedfcb84674bb7b667459c14424f4400a333f4e68b8676569d99fbd096e443a4a6b365f9a8d5be5838f5ba1a01067db6457113e254ddb3cdb2bc7ee37d7ba52665b616f99d90e967b646b5aefcc45e4e7d66eee4af02c1c4dd10d7745758ee56014275d2e3ccdcd44f0d1d9fe17c2fddbd8ca1da51f20a15e00ce4acba0ff8c22df36c92ab28fc8b848357fe4c50fdb27cd3aca3dbac97302b2d946ed101b55001eb422957584269cc38958aaeebc968a836d6e9c508aeb77cd164bb617d056796e5c9b1e4ea614eb2d90d6449996b4e3a2c8adb381517a328cee45df44161c56d04dbd8042b5a85740b4dfbc2c972fbf419eab837a4f10859a19b5ce846c1bfe77c7818d5bb11c7666f0efd292b882ba10095f79e9e8fdc268c97e9a2fcd0b544f0078d0f06e13447d7df014fe5506506fac43a554c796251a693da2474ea75518c5df513e86867a785fc8e4f22c46b451fa007be7f8530e20f6b62d15dc239d042f3d1a419325f92d3de8d6cfbcc897d9a3826a6b69cb86ddbc12045b39025827156750f04585b879c8f61c4168c243b2dfbd9c323de41cf2e8ed75b4c2994116d9de8d3cc4753a641a76037c4f866f06dd3fb7b5ab1e12e9ed274d5305b1953761b8720a05d7672308b5557585692198d6d7c9b87d4029bd81aae01acdedcb1b6027ea6b9182ca60b2c08dc521fe9eebba7a68d0431d21a50b30e4d490f1e72013467c187985f1268eb1975155387f382d8db7c8d188dd1608dfbeeec3614bf6edfc0a664d3254ee0b37165f0b9ec3d5af6a23c0f6e80baadc761022477d895a5c2a73052510377655b9e1d99023b1194ecfe5d2ad6b388dfa1788d9f41f6efd7fef9fcf77f3f7fe4bfde2ffef8f7bffceb1f7ffd8f1fbffdf2e38f7ffbcb1fbffffeb7bfffcb8f9f7fcb8fbffdfdf73ffef3c76fbffcef77f07ffed06fbffc932c2029b75cb2079db0a4a7fc440d5df94e7859eaa80ea81fee0c8a8c3d9aa73cafb995efde56df5a48508837632fa32dc4af213330b61d86e63a0e641dbde7ccda8bfdb013d854d7edd4813b281026c858918f05cda1f632341861eb8b35728daa34fdf909ff79872ac35092ac16bb82e11b3e0da39e0cb2146d52d450dfc86ddd6a37d145dd71725744f0007f4981918b487b7594b02196df324e33f380e62304117ef4a05ed2612dfbd65975ca4288b5a15013a09562a5f107434cd47bbea2fcd1971dc5f3b22cf5637432f7cd6677beadd438c7f1e7cf751072320e686dcd2517ef84feb7546dc29962d924ec20bb535b1be37269e1e0096ae246468e7d4b946b5315427d3682202ce11253d9b0899c3f66159bbf0a3dd133c6b0b3f6e81c942a8ee85df9ce9b6ba598b278c7b0d4d44cd09c364901cae75470947bdb0479e394bbd3a8af7d51324bcbebb93763cd806229da8bb9ebb2cca27e9225ba02bd461b17851848623b280373882e803f23d7df1f8adfaa54223d4929d0795e1d7518d1ac4fbeec4a4bbae8a97b0de0d25a78d2b0db4cb31cd4f234a25eba123e818f5921d2c9c0f0368a24786b62585a1aa72b190c57ad7a7076571dcf4400375279d726c2dded08a8d3e3c2d6376f6fdf910adbe360c04894176bf5b06b0dc180a936ce826ca890098245b3b1ea6cf4fd5a69936664d1050ce970957c7361bdb33762816dddaf8bd38a6c456bb6beb9d8aa87e2427b290e75cb545c4bccb9f75a9a02098446ce31088cdd416d1361af99a33ac243651b2eb8166e7d4379a717c66ad3f80d151c43387c9a3d865164a7e151a36dbe278560b6e220ddc47ae7f9a86890bb9a7b0f9648ef8131da30cc37ee826e26951661a9e647e9d055ba19e0076d6c83174e2b797c23e9c69536e7b03b8fe0c46973cb3a81ab98a68cee49812d1dd3b2791749dd1d3647a0578c66a2368ea78bf634800f4875c8e4d5057731b1e35989526b25d0231ce3a72b4232387d4194ac9dd6f6a9dc1abaa6aed40e99961e32195f3a228918051b55f3dc0ffb1bf8643cbe832adf34a487bbbf3d5d8523d1a40da36d3384cf8d45ce5071d03e54da703e5adddb003149030a8d31b65bc9e0527b138ba5a19be4164de7258096b816ebb558492ecbe824f03975adca4eb5e8ef61b4995bf6e29d39a27f0363314b553f5fb635947717ad4ff5c6766ce2db73bcc76c66f39443e60924442b6114c1dc975dffecbd7992dd9ce64f46d7a8486db2e82395b65200dd761f8731e4521dd2e7e3f70a0e35edf3703a2e92061ed3d41f1e44726f5a0eb4be637b92bdec481f19387a5e9f8c3702d0f536a8ada4cd5471e91b7de1608bba713188ff2abab0589b39b8e90f1683afb0c92594245b51b69ace70c9a85d915675433bbfec81341fef7d35470d83b0275afce5bec3317a531ce822a54ebdb32351b83bc20ea99eb47c2c5ea4fc1871c8a77a0cad808d122a14ac54a1366edec4493ae6691a2f7b22df9edfcf6566ccbe74a94ef1d4cbb0d93edbc5a94bb33cb80ed98f245786451fef5a0d0ce987c82397e83b65c5789d0b21526f06d6cf1ef47b26d42461ab9b72714f8bdb664ecc82c32eadbac66edf36cdcf4b875a54c58727b0553b036ccedbb759ab592ef738564e7540455ea26dea5abbd90b9e9d2a58ad3ee81596a77135c2d9941b19506ee47c252a65698db02ab0679d3a0c94aa1ec3b387ab93e27f000000ffff8c9d518e64a90e44573412606c60ff1b7b3a64ce481541bfeadf51774fe64d2e603be244b5a5973df48c1a6358bd2af4c01a378dc2ec19501b7c0e344f6d6f9a21c058e1c067acf2dd00e1a7d7706d31e901fdef7aa9a75a467f34e087e6cac25dc52068eb3081bb0d1f0db8b1602085d67171f2d23a0ca530203c44acb6eb5c0782a1d379e9dbeedaabef3b97c34c06a9c95a370d0e356fd464ad73341721ba7942b146754f16bd712f66ef3fa4eda9a26befde759cb7d8a14ba5d879185b297b28730c2d4572770fc1c1ad5fa5e2b18454252714a4125380d4840c20c70ec23d9b6d916bbeb645de9330ad3dddcbaad69370120a6819ee9b68da652db11c7bd8668c6a2a4de0beaec9486dc63b6c2cc41d394cab5a9b97459bef77baa7a1df1c306b78ac61a481b5db0dbd32fb315dfdede0f9ca65eaa067b7f2fd0ffca1061ab48a2c2a01f55e9aaf3cab359f331765ccb4db7637e7e906056e01d39d7b82664534b55745ceae165b5ac2c3d25ace8d1dd6737f63cfd298899e431910f4b1d42d3407ce2c938edafdec4be20c6b53c2cb38464a84be30955fce3f19fa9d6e0cbda37a62aee15933d796aa953d2096a36eaf9e5792ab0290a8997ad3dfa857db2bb2b987e937f8ef366918cd82d8d1b5744f837f162b8002ba11bd6d2e71776ab64f4b803a6d4df507a21bb5657a4185cd7775608fc6e6af91db1434546bba555f05bbec1fcf46ffbd229b17320b6289f14ac879d19a968cdbb38faad5a2c66ac623de9630f87ca624efa44e3f12f2b4c6fb26e58541f672bf723f3a02246321a1e6b6643754a4c71a9793b5dab7b5e9314b688b76dc36ad2dcb75d4ee1134b8b79efeb93c2996eec12568fc2cd1087cb05e15df5f4568d88df6b0ccc3684b05004853431d09106ca712d9039081b127801caee9b2c4eeb5183a627bfa91e1b514907223e453489405c311a9de4c333cae56cc5a8b3650f9ec6abd2f4dfbb553e6b3fecf7ee40c7c0b14bd1c93dbecdebf0d7053fb9811583894e705b842051041c8f4b1061657e3aedcba7e39eb3ad83bb93cec6ddccc42d5b72e1697a62e124dd6eba810b036259149a4abf77435f46ac38642bde60c3b092172dba8206b5fac851928f3a714e69bc42775e27dbb079331dd33c3123de7473368b2d31547cdea75ad298e2cee6399afa08f4dcaa5b556775721e48e668c057c4cc7f454040d6c953c924c368f55732750474a7b8e55912aef9c17b3217a0bf0d0425bc508ed31c998eb96a1eea7096907d087d48586d7aa72ab6269a4051832b6396ee72fd82b65d9de59c3363c828197fe227149f7ba91558cae021a180c16e1683fc8a743c15ea3c7981fc25f7f24570e154fcece10566d707ba9e28c2102e7c534c8dbe1bdd2ed8a32d0039a51bda9c2ba5796e5227cd69431de38704bf7d60a9fda8cb19aa73514ee8f6d551b6570aa08ead9b9602ad8a6094c3063f66523d08350d1d4f477b0aa5bf6a1a322a31c1875a92d50fe766857ed4ae4954e153b90dc4e7db5961b57afbed9c6ed07cdaf958249084958d9f8547d6cbc518a1a846aa1bbad57824f7dd6a717926ba5440ce50df92efdfed36d7cccbc7e26057c0ae4635dc531b3ef63811d6b2c23dc4d9c0b6a0384cfada822bb8a7e7dbb43e76557b4af37a9793814554442c2b29d5374da4f6b6581910061a76b0b67f77444da5b7df8e15e85784d4f91a472d0cab12a3833fc36db35ef0e58e4502e652239b4a1071a86a60ccecb67f62ef6a05becfe093a7fb5ff6acceabfe37716705356d271413a15f349d567143374c2787d65ba15bf67846b6d46a73667a67c568a15be2eabf4a1fa4e9b8a13dbb82cc19ac9a19a1fc06eff4c497a362afef9e2b9661d1db6f798c7539648b5355a70bfdd750b0c3ff4ebf4aa3d3a4c117fc588d6e85e6befed9e06064711fd17fdea47aacabcd04a28fadbd2ee1b37c0cd8ed4c0c6b3edecba7d6c9304d59df74e9b5c9066527a7f9c4749347f58b2d8529bd9db191f79a6e3c42c6d8613ae00cb48b3ecfc5b54e328d89aa576144e24ed23dfcc6dbf584d028e4de54fc9357c478a582a2ba2b36713572815661f053547df5695c0d9b76e06b1c076f949732fb206141be51788e0b0b2a669072b259778b22e8f632e489ab45ae5e32db65e18ee72e338a24cda9a1a1c035292dadb79fbcd4ff67c049b5e8e2ec37120d56d33c5027bd315cb8c4765a37decaddd70e243bb85a502b4ebcda4100d6b8f5a37a0ec1a9da0e5d1ec1e26e0d340314f2d81f5f2bf72a269509a016c4cb75862e7ed39f71524beb97705d98eb9d644c9fa817056f669b22ec4e80a228dab4796060f830cc37dd22cf0bce03d9be9587a1ca6aaea4240086159decf3e3e6380932a17004f91dd3752e07fca6a5ca7b6f3151890454fd32d47750fd6c22b14653d5ee467d3b05148a7a70ed4aebf4ba95cc150d22682af628c68aef20c58f8aa0e709978688fc826abaf9fa0e14f4b7c55596c1a2d49dbf250510e8bc185f2ebc76c47a6667cd518eb672cd4a7bc29cbab0506bb6d7f9e7d2293b1cfd5b79995e786f2ebccf8f930f21f627d0c1613a399d66810e666a09177f38094ccdd3df4e1fa12549754714c6433839a5e7da537aac4fd0eb092978ded0ff21ffd6667d1ceb2b8251a10daee3dbb290e7700d4d0dd0095add5c2ec053ac07d36c5df22ef88284db118b170d1eb5acb9965ae181a878601f551cb7f3c8cae674e9f0417e8baaaddf40eccee06b956af0d7b7b961f52680dcb6a8bb8aaed06cd935e7491e164d9c45478bbf9dd4d3fd7f7d8e7f6e4912a6d370553bb63e99f3fd6f3e46a9cb0bb47f563390551addae3527959e416eac27d7b435af011df2d348cf47a09183224fa8c19fe42ad7353ea9c98871e612efd91c7884a8bb6801265895cac72e8adf67c2ea354735b214ae9f4134c1394f3f2fef45cc601b9f1f2bad0f0e82d43bd6e1f298e7dcb3d33541e33898f39201e9bfd297733ebe23a87df46aae238bd1923677150c8230c260761695259ee832698c19a1b7ca66e3161542c95363b396b3cbcef7b14e3c2bf9134bbafed3eec1aa6c62b7238326c2e45e9d5bcebc6fab626a5c9c13e2d36b83966015b3986e65711d8778ee27a29cdd33c541bc183c5dc70f7b51aa7b85e8497fc1711a332b90ef8d48c70bd2baa8854ec998ecb3f37ef56dea471a679ea81b1983827cf4a8367de0b830a1ee2de68cdd09fdd9cf768cb8675597d10fd01358dad91c65c5854b1c40b9b61c856301cced5b263fd0b02e1b0c8df46b6dfaee2896d2d880b396aaa8c390f321c4df265a11fdca653d30d1198a48d1090db64b761d5cd985285563f591ee330a78d9b50f03e86fe805054858d1e733f527d5e16a85e3d337dbccb47532f2bde88d0b833246febc1a0d8910a4b8d9af126c11d6dbce1e430d724c3e139edb946cdd6cdee8641b39d3e7eeb8c7fba15a89e757553c40efb93b1156638afda766bc668426bb576cf06f4d2b58d44f8ae8aacc6c216a421a3349a97c71ec294d2159b2777b891eb6969eebc78d606f2e2e1fb7ea0613d46ba6443d38fbb481bdec694dccdd273a8d48cc48b47e5e8336071974a4223096cda7e80ae69fa45fa3573288c65105f6a318d742e8f33cf09dbfcb566ff228c7a190c859ccba51febadfaa6b33d34ccc115b8df908c9336787fbc4857bea89f9f964f992cadef8467a3ad0c503d3a24261469a4d1ddfab106252b2886e7d41d7ed9a615d499cb8a9ac7782dc60617a6ad0d76f99edb6cc2cdb64db4a6a1c12db15733a9d89ae390aa6416f80acf7b4eccafdab3798a3c00ef0c0d061c05885dff3e2609f2c1e22f1cb137034b4bb8f734f6e1a11a7b6d4b5082b6bb6dcf7b6890739cb200de01c4a66c0399738576024134a952b8e1b8509f7a9ee474d06fbeb044d9b347ffd42cc3ece63dfea289fddc9e1309b73a547a9f96140c10fe2c2b261f02b43baf3691043c98998ebfc536e531b9d975f833d75a3b4caa4a12e0b2ff15830003434f26683a9f78616a6e86c13ebf7b3adf338b713859652e38598d2aaa45b36119a2340ad7b25a15abecb42b47af5a3f1146774bbde9bde3b77ff773aca0ea37aa499e69519dfefaffcbe83ad3336a7734e54be59ae9c2e6bd86e1f49f0a6e90c661c4402809c326e1f4af74e46d8af27ff10fc8c9f4c691e08e95746372c73fcf3a0d57f3514fc1cab1ad127d84baeca148edb44b32c94d69d9324f712daa97a167f08890a0d3cf8695b986396616e15965bc1a00e5e57f164f93eca2f47d8c79b5675a590b8db5a9a2c3e5f51f2d01dc556ba03194b5bb01c26c3bc42241abd82dff55ab4eec4dcb364d4efca535e460126e206f266f600b5d2e32106729777c6699b4ca0849df5cd1463bd51497317ab78944c0ac7043fad9d135f4999663b34041b3c17d965d2d87e72ca60ff29bcf4a532b3dc51f0c51272f5ffc6243bc7f36088a09dd9333e639bacf8fc4dda82181413aafe6da8ce8cde46d0954771abd8d44443de6e9339af924e6cdd750316faeae9eee001ca5b462ab986f3f1fb6a05e718a904db526daa7ff9e922da7bd1d4482da8a672e1ea572a1419e80ce51dd3cf0a52f545bf6b936401dfd0645b75633b5466fddd255d2358b548f5bdb5bd7761c5d07558c63503e1a7b8e83661b0463d4308522a9bfc0ac753f5dab8c037d6e43caac06bd7e72defef075db4a22168fe9d4a30c31fe1c7430d75cc37df2e457c65f3072deeba5e7ce6552219a5c71bcaac8b3544906a4e72801a38f79afc1b2c39240f4089889a5f02442bedb1afd779c0c95f269e5a2472843d3a4e3020af8925fd629e5b2f91bff7fc4df300db7dd0b48bb357c2b57e375cc135f90823437664cd776b59b50a6a4241a6d4d03ad17fda1ee139ad3ad55ddd1bee6afe2b22f5d73e8563ec9a25e361b0e2ca72601b756f33fcfbbe193f7f0291932874f8c17532ec359f77a84d54566df3647046060d9b60885ac034ec65b298312cba09e0fb57bbd12f468b5cebf0205c1626f464e7d3e580677cd95c6f3a658999880a1970dc2390f627735c6276918f937d6a17da8863d116df6512a23af33b9cab94a200005fe3660fda610ec1f28a9ff010000ffff8c9dcd8a65b911845f65a8fd80943f4a65bf8af166dc8d1983c71b2f0cc6ef6e42e7b67145a8a85a0d344577cd3de74af913f1c5d3d222c54f6e1524f09982b4881a75c6a5c843e107911bce019e7c58c610c91168e3401148e4fbeed6fcee0b7ae7a74a41e455850c4c993947f560daec8d9c767458329a0589b983fbdabd1c36051e2bd8e4a1564e20a205a685f9d7e495b1efd5651a0d08799b7f464ffdc8a380bd4f8ee467681b9934520515680e2c36a886895e705ecb32e58d6be839452d8be80d136abed7b88055a18b90d5681cace0160bcd5c2e22928a40912aabfe1eb552b77540f74b487d4d384ec42ec5548e5f6fbc96975fa5b75e2d29b8f23bc7f6e84fb9701c8dec0139d8e5befb600bfaeb47d855e4ec02dcc5e74cee143b34545229a34c385830e50a69f1fdbd88f339d70239ed5265c011194b7e8ddd56bc41987682d295933418f90dece3966678244ce93c54ef40052c93f680ff913dcde7de11ff79e6926f7ae3939c261ba34e717d60b5856c0f2168ccdce2f23b703a6e377afbba385b21939161594f37a9ebe126516d0350a7eb725a38b2af457578c342177e6e7f72e0bfca14eb9d8a70c8e0c236a17f0f49520ecde841a6c0f4f80c2171f5eb3e2deb4a844fd26283134b1ff5d2497d11328a570bedb550e85063745bf7d8e6a90b344b26a4590f285c1995e2ad395b633960815cbae2a6491e559ec8942d2fc5744870f8e96dc4b5a83d669eaa9809c0f33c02f19cac9e42eb3e493692fad38180209159238a43074ad618e4b3e2716111ca9f99b4fd4ff19765cc01d6eeea0c2e60f061374ef60c8e42f9806a5a59cb6544c286a8a7c28275c7b93c497c93b93783144a581a2849b372729cce36783be529544b3ec8842460bb7cb9763b6b389844f8a8ff3b6cb2a7cfd7d4a0067c5ac676cdebce31272ec5e0357f740e9d3382784f6211244ff4e4b2f3ba609e632342963d0d58e8bfbff8a0c750a13f04e9c957c9dd597bbfa6c7d1192e15d6b4d001676e77e7efac6362cff9b5101e5886607f2e127cccf816bb08f1aa6e7efec8c316e24d202d98f773e38487d133ad915e9271b59de93896188489c87e2cd09144d8b5101dd62243eb44d94fbfd6052b2ce5e395eff52253b7ce4bf0f2ebb402cca94fb1be2fbd5d5b4ea5dfa23f49f68af6da1ca972d70fa165f1e48cb384b79c6f31085aa6a47ea2f5ed2e49a54f5cd0a2b471683745e6921b572c2fee363a4d496686398b89bae14893e09f24eaea730658ee0e1a74034762f2b9a01564192086a1526a1f02f158d652f01fe603bddcd76ff19599803d43ec5074d6129a3da6bf31f5601e2985e3814b88f5e1bc190a1443aa8c4b3debdc0f9fc46fa176400f63ef4179f7fdd4932612901ab07a760f972ef94a55bbeaaa2f7b8d5735512b199424f5dc87f49cbb4051b070af2cf412fe8d7ac65e31dec5b166131180a2b468df5b2cc8589beed67efcc26db704d187ad1bb5571b4b8a1c3fca197468d30603127283352759c79751a2a11f29896938615ab2910f60bc9b57207356b4fc0f5c68dbb74c114480efa5a2cf7255802794e6f2508f359a4372907fc48d31e0a435595463c74c2f2b859b130fa641a4ccf2770067ab7a552c730923ffb88a667c01a8320d6f81a082304e578f6b948730d3c702e395fb44ab29e8ff81c71d72471f93a44b0acd40ff38856d6987cff9a5540260f97ba46c481b302e9141c0a9a9291827174eb68186883eee8e461d6f35ffdfe584db99e554f1c4a57e65e5d158ff4ae8c6c1a6f346121e0d999c6c5cf70c2d4736b064593594d9f515c9794e4f53f8ea8ac98b43046a46b29a333076640b2b66e29caa6be3e2cfba0ae61175d15c1521bccd47b129d77af27015922701edbed6fc9325c5c0938ac435e0fb6390bb01b2261e15dd865e33443e84b6fb3c27da27faa4576877fac5deb71069c72f957b9b09f9fc0a9796d89dd7cd4152edd77ed04b0e5445873e861a0ca85bbe6fd0d17fea137d066798bd97d495e50a91095fac323534c17c60b084fe855d47fc288bf831ce0f86e0e0db1bfc9ba2393ca45b99fc15833ac732049db6823643565b10da8d21910e70839a4fde0f76aa4d09dacdfcc4c3ff947a508517abb1d433f102f50ee1c44ee4ff4a1c1e7681bdf960a379e86b993c8157a09ba723a7a8c79189b8f3324e4418262f8eb38728c22ff4444723b784c867f3bc6d7ccd42e8caa6b4404212eba42538e94345e3806f27859107a6f290841e389f9cef588c81b09116ad69494a20ceec4619c8e71b580a1c20e173731b069afefb29ebaba8c199cd4a4b8b9229addb86dd510e5d205c655fda5e12b5153061e8ae0eb6485675dbc2d88ff3cdc1c2488de0454a105fef1a2bf9c8b86632a3de31135ee2e085e554665cb7a8b58f406b73fa5c924f8d2151485c4b8526a5dc7e5790dc45b086a83366dadda34eae6a1fc32c92f342d32b8311ae77dae6391da385a6218b8a0f7f03e8b55061499507749a7c0d8017dd22a49fb50e47ef2b30a88941a10cedefe3f9d91309975c28616daf3ab7ab9c1d1ac948c9b678cf937a651fd90586ec3357b0dd0e7ed129c10c0ae67801216208a138103bb3d4cd5f39599a82678e2ecb3e5b46bfd2bb3bd8e6b4721b8b485e838afc8aead8c0da62ca6c8dd5c226c2ca4362d2913d1f97e272458c8b7a60f6d9f54b03ba5a22d0519fa292e6720139f422c80216bbf4a4467fd39f0cd89ff972ae560315c238a668976f338c09acd98a8b4b7423e944d1c251e234c58070c86ef6162e84bb3534e5233d4c30eaf0f422579c9fdb7a9294b8e727fadd3391850b40fd15e5bc13825947c68657dbffc94692577906c748ccd15094f5a7afd153b5c15a370492b42cc55c8e7dfb92de654e90927470c8f90e2f042dfc7132638ce6bb7120f5cc34cb16846ad143812929f9f60addf8c9415b52365c5552b8b1d614f0f71efc876032c2a429cd222a99357944c58af2eb07f3fc05b1f022899a53bcba86aba2e4c908aeecf8be6c499c09ea261858c5327f5362da384e042e6891d1a5f5dc40e5966682aee3e7f8d4af55efc58ccfa7dbdb58818e4592845aa0a2de9e22c72411cbd383ae259bb80f062ed1b38a492d60965932c25cebb49722001a14dd5b9e542f7e97019d6c8512cf12bfd5d5ac8a1947858b8713676d4852254c29d55c703b3e700e31bba2b350ab6a1f75c2711433b61be2143ad4b0ea625842c421700b9f0a3c573e6954dcfcc8c2b056e41981d47b5743f8238fa77fea29ad7bee56ba8eef6a61ea1249eaa5a2837340487bb85e9d3d0242327aecf7ba931e98ef4bec37f2d7c6585fd2525ef38561e690c54b9ea342b40ab674147e8348dcd7a2700f793199969bbe976b738a88069ae051a253006cc295bfbb97d6ea3153662cd3325b319ab0488e2d8a95da186a498575d2f83e416e3c1f8b25671bffcccf52c50c3c677201925beb83882970127031f398aa61c5dbaf3ffbf3f9ef7f9e1ff9f7eb0fdffef1dbdf7efce59f6fdf7e79fbf1f7df7e7cfffefb1f7f7dfbf9b7bcfdfec7f71fff7afbf6cbffdee1fffba16fbffc89b7444be7e228949d53d6217243ec006b891caa31163a4f1024c4e4e93136f7568175c6a68760b6e0c96d19482444725b571732d45968cd42908df043ce2109129d3e64686d0023b1d7e5b82cb7b1a7bbb184e521e206f5905768e0609b04f320e1ce9a0164b9f0b567ba15d6b012b57eff5b217c61633582c264033a6b2d2fd9b61a3cec12b7b68728740c32c3c1d6cdc077546212c0e8d9ec0d044040681727ec830af7b44e4da703536e0dbe23564f28c3e556878597e7a855c37534ea487fdeb25a851c24641a906bb1c838f22470c8640d4e4a160c2edc735c1b3922a9398f620b43c40aea71897b3aae60decb1a886ecd219be925593110afb23663ee9ea4ba41f0ee90adfcde3539611390bbc9c642c8632038e1d1979d65a08cced660fa16d24853324aca7169f1899f6b4f9d1700a0c69eb0d1354b023247ec6592b45c9eb2c2a8899e813ee6de08d0a5c754817c4ba63462d821bc1ba0949b054e08ed0c3102837e69d2e663dbc8830ad8578bcf39eb08dec0ace3886f86cf65a91109a7ac8c1eec3883a72e254cf68d486755ce8023144c50e52b20931579dfda7b711910672cc57d0236e7028bc75b9d4ad7dd00f0493d8f982ee1e76c583d14e80553bf1cd4585bf231b1a009e013e588fb044d04879a6b04116a34e1751c9ab495e667bb6de9cd0c10176954d020937edcd3970c590774f1293865684504ba3b6b205345036131b02e268e401bc4899d4b4b3c9b27db8dd7d1e8ea84023877a573e9efb01008eee724d068c37a0ed1cba8470481c040869278f7948d9143ad31054f3952a21030611ec53bd39d96eb92a9b487cc8d510e0f79822799cac608d55994c0fa4042d1c4f8d8679b4aff9a07ac6ffc8b6d6c13196d1b0b57b95637dd2d595c07f6267e3818cc824fae440435e7604d8855f5de59e742e3151dc4873b783f8219540920782e16abdab324565abd6df7a978c73492f02e30dd790f8465244773eb65f2faa812045521b362e4dbad1b0004cef0c815bde928d16bfb9676c9e054e294dac38ee669cc938b23d212e8a29788e04f0b27d4c7bdad7c88b265d5de4b0340301422ae44b58f6071076ec496a4dfa7ac00ab93bcee8e0c5d9349e80ec1ebc321b0052de7712034dcdfb60f930c637c4d79f40d42fe9068bd34b43582d785bc955b20483b8a2742f017b8daa2d036af66b01b60be7c5fd76a61852183f0c24a85b48215bb72253dade1d821f264fcee5ba48d81777348c100393e8fe4f3306148380f0c068dce1c5b3b411f9bb7a38aa65ff5d08e2e4cd2f769120f968eb0624fa010b4449ce13875030505e3145a3a8c0fc6b8c063950da1e478e9d023717bb25a02f85b01e6ef34266102beeb12e13cf606665a3cd43ef7104cc1d86653df5f844e49883444d0c9c4658b031a50ecf4f168f26cbbb267a910a77aa8f2cbb69009cf18bc65380e3d63e832816fcf63f2700cac4bb44c51c533a65cef7583af9ab9a0fda77768c2d12323c1634de6b7002115746ac7058c8cbe7e26abcecdd16eca4b54703633053e7190726f87d807ddb137e0d41273661b3613febac150c1d9ea71d2ea84f00d9da2d838214c31ddc6c0fe22b3893583916fe5d0e0fc170000ffff8c9ddd8a65c79584eff5144ddf17e4ca9f95997a1733c8a831c3489619f5c0c0e07737dfdebb604e4496abaf0c8da556d5d967e7ca58115fe8c93ffbeb92ec1674eb98b55889d1de6607ad91b519eda35350b50da376107c4837f84f5a2f6c9c3dd78b87d0308cc57db62cb95ec5c0c77fb1bc7cae5592e9ea1018bbe894d41a9d44a2b8a14897a27aee244ca104ec5ccc320672b27718103bcbb881896cb6aa661f3bf6765d8568aa65a3711898e0586a3aec3b8ca150e6eef061edae86e8690e07b263e6e5c4a16ce14342d4e868aa5641fe358b28e88c6d416ed205d65e586396a50bf8c008573d387311d0348d93d53497ab9e5a7d1fd427a6be6c50f14c61766df2fe6d317ceb03783845c9c2b456c2d1217b66d70718ebb61b23f6b60915d178b6610e131a64b7c52a2733aefe604388281f3e9a57edb3468f587d6f93170021a5f64b8fba76777a34fdf07d68b7c4655fb7031308e0b0daf2194edd27c7f08afbbedf418b759b2e784bb384468fd1626fc3e570fb507516bec7d6f96aa232ca62eb780862b5b2f85d9ff098a75d601b5282a5697ad3ca967263bf4c4720875d0c3e96b8e386da54a9adb771ca07dc77a3b2834f2ac621d7696740bdb7b860c79aae399fcd8b477e88050964995d1b4655d120325f6f35b4b2e6e8c339674ca9aa0635b6ce826969fc06443ecc3246aae8136e90bc64ff6d20fdce0d7a9a9053765653cd8e6fe24b1135c904aa7730a4997e9923aacda34104501e8e984069432b768774ce9e5f1a97fc58739b805e39b8d6344ecde194224f542cc85c66ac6156a4b95cc20dc001b63d1a1307b91a693ae267586e28cca486194b3762bdf7da97f6315432bba141eaa8a402754f87b5d30d30d957eafa6462bed55505ba44d321632cbe58ea0dcd65c2e9b8ec24fa76bf33d366dfe9c47bf4c11cbdad25ef7c5c8a0690aa33ebf02a757ecdfd509b386a2d9610ba2ab876dd3690134d34ae148cb1690cc2683afbefdaad07a06d7c86fa00d67077ec71d5f56c2feda76a7b287762ec248b6f73cbd5d4a954280a7cf46575d0092a7b36fda634aa80971c79490782214906e416a5e61249b4f7efd8d7425265a2b2e65498dc459e79edbfba9fab4b4bcd1fd188f9ebb619fc1a5cc6a8568210a908ef36c95058cd786222487da8c26fd9b02034c2d1d191359279bc0c950ee444c51fe80c61eb0030501621df0e351a1cd8dddff414a42a330056bbb5075c8d571ab6ba52d1a95794553dd48bbabedcde796f158d8f056acd98231b4a4f5115775fad8b1e8a6d29efb5d1317c6bbc70536dec2d43fcf3d6241d7d24bc7447b8e168d37fc7c21a6845656c139408c1b1fa8a82bd5e174071c2c4a62b9f6fc2ecddb32d1ff9b8c61ecd01356c7d43e5521c7cf393b5d63dbafbd056d79ccdd8b29d25683543dbc5f0aece331be02e6d85142beca16fb45c5b4a7106479c655fdd3450210c4c0d07cdce6b4f0757b449eb736b6d4db7e75fe7a395384da085cb17bc35f57740fa62b7437d7d5916e4beeae0967ba5afd1c75ee6621bbaa5b9ce916ef911febc79d8744e7781af569a89deb12ef3ae2e08c2103af3b2fda75ae345f1bcedf6c0017dc3dd686a5340da0013e0319162a5675766c19273a72f27079c01e3afd64739a0c01216d38c111bba129cb0e56b17044bb6a9ef009bc41f63afe05f3ede37f33a9eafdb8577aa61f55ee0d581c8e8296fe7c987aab7efd4ee596c9ba10271ace9cb853c4c73eec16ce4a296ed6272d896ac66cb6d14fb462e5cbf2e8d58be92b17a8ea6ce568aae57d52f2689b330fe0cde2afdf97bd9b10d9402d3dc427740c8f089a44155701aea98707c415f5ba24c17c341dbae4f16c6b7a7088b85feb621cd5b569a11abc8d7658c5e5e371cf7a001a6711bd2a4775dd26520161839a2f7f9da3b7aab1810f64ca0c7cba1e248f4b9bb9b8677ae5eb47a873ce07481f8f5dd7a9b49a6bd9b63e03868be6f6729a5af7cfdca3f12ed9cf66b59f8bb0d4ed6498fdaf0a32f97f7d8e2ccb5d59544798d6d5941bb853765ad619d567454ccb0f975efccb07b1d9d56d5d672366d5e372ddee361df390ee930f7c86a7b2b23ba51eed035b793d301ec0157de5a1400db98241fbbc69af673e520dde7beedd1cc3d44a9a34e1e7a90debbca59c701f096c53b39275fb9edf591a70d266854e011f63bc82bd0695cca83e7cd3fdc5bb8da74c11a71f4127535361fe5d577fd90a0b3183bcc3e9b7f336f3364f8494b8c26cc258295a1d9130e51abe99340a6620fa7f6233617f510011b4fa5dbc3caf0101c95618a22ad1b4146bd2fad5a2ece1d1ef7f576a8dfb761a3b6517190ed5e4a0ea70b509f43e233fa978f4de18f1a3658a0757131c4827d228774b015498346056c6b19b3fa850e517b29078faefaceb39f0f5f8fbdb67687edb71d6b96f9234bf4814d4881d757e996e5a7cf0e4d2e67b35b6f9edef1efc8fe7af5e7df937aa778ac7f2247bf1d2f461fee7a30f7fbc29745e055a6a09e03bc9cf68a3a24172e92c2544181d87259c36b17929e0e2f48e8f3755a7b20057d4dddc5373a7ed3cad7bd14fa323e8e433892a7697623481fe695ca8e5db55e8eeb116a05e4b31956c54af371d78b6f2bbb0f2df46532b052c7cee6b4faebe92e11b25405a6433740ed358a470df4def534c3c0cad07f6f42445807247b7643b2bbd6703f38c4a2d5335f136e50fda1f104fb813ad1711ca95d0cc5adcea5e744bb9a20edab8389c74ecbe8b59b5f976d4c5f87f6ab3a2d610ac96d847983db8e5719e5e9eae5d3fcd41d16bb43b555d255e4b06516ea47d1cbefd91c96f5e2ffca1fde65e6fa184df0a1b69fd9af819507f75fabadf820284f7d7bb5eb6068a6ce73cddaf6147255d3c11d149ee1c726f5745a0745adc836661ef57e5ecdb6570db3838eb0f3a30580f762bd26987da656cbf5d1ab898e076bc0fd0d1f6dd95d3936f74ab9fc642fdb2ae750d1ae4a5b07debdfa671f540587a0ca863179e22d8e8cba36edd04d0a51ed160fe14fa1c1980fd1877ec83d88a0686028081ea3d9ae68c536e81ad562b39be675f28e15ca93229605152edc908389d44ffeb013ea300ba729b5b7629f69c6cab8506aaa1d224b370b89f202465c376711ed5afe068e5d6ce70462751ba2f532d0db5144f8d4fcdc0d9898aea7c008f9379576b29906d628bb861bf03b528b9d438b1e00ed583d89adcc4ec515d449de5aafce73b248fc212b2ebbfb43bb0915c156f43371b1a55de86155e83b948250dbfc36ecc5e216391a431a8d97c5aa3eda081e71edf4d9a316abb901f74c6ec3eef93943c614e49416c3cc1ead42969b3fb0652b2da944766a760c6f7239065561b6c788ae3714fada2dbbb2dd94c0dd3053fbf35a9fa9f71be8b3562a02a0652aa60b7cdd5ca6c3b295f5b7385918534aa0e62f6f9ac5c7e52f40526936b2b7c03a6a430e5fd22128ec3e7a5fa9666ba66dbebc3ac9773adf9dbc32d6eb72f111316616674fb55594ad013337d2cea205e24acbdd5bd665a69fd6f10178046b1042b00c181e1903038d0520d7ca7326007b732b92c4ced41916bbad32b116bca3a23a01eb130d2e9ec6f09a4117bdedc536f8508ddab02d0bebdce59654a64ffd8d3e658db49cb6cc671726b00d6386b803ee4ebe1eb038880538544db6aaa8bf365390159a5df3149725290cb0afbeac67bd366d41387296d72dd63b18d32806b4af6ccbbab2ca6479ab7ee03d2c0f5757b5110c1a9ea52cc113ebc8cfaba7d8a5988ccfd6c7b02222d862878663abe84a2a4bec00402a572906803ff739533c3005999d18f296d6d7678de247dbd134ca5ea115cf6ab7b40bca59a765131c46f973b3cb731063e0b1e72d4b76a71099e8f18eb5ae75eafb2ff3e274e8209da316030a6f7adc4c8e21833a75774abf7c4be3b8015aa93a7c8d55952bd606460abf0c1c94dad6a1686aa34ac37e602740d26fa0324a824a33958a51b9762f476f96b7291d55a0195ba977cbb016946a3d157a595c6b756dc65d6299618cad8d9a7fe1e46437ae5bae57e3e5473b463efed404072e94b9b6a71ae4b9b8d32ed58a4ad0098c017af517a526f98fc48b606608cd9e2e5a3a94f24c1582ae5b06dd6e8af702db9c562884aa0330d41ef6c67a4aeda5e0818b11b58b85c0a1461bafbe0faa6b5424ad45a5dbba12f14603d07be2a5d579ab264d0c2a3dccf5ca04bddfce99bef49cd90d813f32ddb24c59a51b84cb9e17a141ac4d240815e23219a996ed1c774f5f4f826258f69fcaf62515f324c68bfb02cb8c62865d2a7dea364678b2e50883abf543301ca23baf72d53e122940eb662b3c065d604ce46f9357ebf4490bba5b31ff4465f59e1a8319b8c9b511e5ca4e6fab49a442c968caa311e39361a0edf99a987fe87fbbebe1728c05304d5ce163fd669d182311b51f7a07516cbda50284ab596f83ba83aa43ac25dbef953c462a9746697f6c0699c836b461d0d1cb1f8dec58b4b717291f9c1247a249ed6d7b3b31393ea879fa6cec79851054e02ec3803897f77899956c5081a3be82064ab46aea081caae15f1ca8e333e1c72bea8cf62a78be1dd3b3f7edb7b99ff6ec303cbbc21b843f6bb188cdc2cae2a41d7f9037a5273d8b160adee674a690bc379f9be89233c644dd73b4612f740e78750ac79831d40986906bac5d2004705574465b3b2c515a91a7cce445bdd3ae4685a2d164fa6dbf331eeb44136b0ff36ca3fbd7f0a464c31d24a73a4e1e93b99f349071517ace3497615daf5bcafba5ce066675ab823d1cc2e53259792a0c644d68b9285aff6adddbd2c25a84dbe508d2962e0f9bba77f141f1eca645aee8d87369b03498566c9bc9ad29f4acaa2c95fdc3a5cb159c8fc20c28abd3ef3e3a9fa9cb50702cb85317714bc561f5d848e436c65f44227d7fb310c848876745db66b442d0d3ef53df6b991cd57337f344b94bfb1e0e260624ad518eee1765eea9b4bba93b05a496b853d6f2da6a1cc3afe5a0efdcf8599b4e3d17a142af0cdce8ab594080ecd81a4b2319b7e1f7b8ce9d49ad845af51884f4eb597bb3ff7e66ebb6348cdcc65a7aa8afb6a8a0975ff4284571e2cce15d737a6c47daf2c5da580acb21e1b3544eb59be1fd40a169e9c7ec0b9aebbb7ed5dc9bec4945b3d10c0b28bc72f0650ee7ee8edcd5b23f2eaadc2a450cd589d98b946a572e144bdba4e7aeb1b7d60595d92c2b482fcfd0f6b464b64cd3ea5aa415f55924f2bc9d7f7c343c5516316ff84a455f30bfca736da2a2c1c21774f0545b98188de0d13ca72365804414cdb505df612bbf583176e9ee6ed7dfe2b3f6edad19040f525a51df16c0c269b84f724d8742ab0fb2225427a050aa51bcd5b1ed3e814554c31a83914b6788c45979e83f4bbf7e01a5d84d6b6fe82c54a755a35dcfeafd7a8c503b7dec5475f1f4ce29930731d44b972bdc333cd9a6cbcfde93cd861ba9e9c835b2aa6ecd1e71b9ccd7c6bff7d628b57052a1d38ca9ddc752666d85635bbbd6dd5f6055e525125736019269159784296219b51ca01edde7890140c68663d275e9b0703c6acdb460fc331abe88bac75e46553889e6b8be6a330d821e1f533b8f742a64d5618e06649569967c5adcbb6b2b594bb3ed2d656f7641a9fb15b6f0a895689087aa35e918bd3f86d158629bf82e67ead904736fa1b8fb6adbdb5a6deaaa9892c93c70b7c670340ad5e6c59ae7e1b8e8025da15b6fcf65267aa81d2eebc4f365cba67695fca8e052c7566b40e8da36067fbb29a3d9d7c1ad4903c550632b7d13535768487bdadad411e6fd86d8a1266bdf3b07cc52c82797ecee4001cda2debb58eaae6dc9833bce52872d29aa53de7ad2ca6856632698fda915e5b9368e7cd5429f350995119a8c02bfa0913b327bd56866b3fa0fd63a9288e6370a9b600bd4065d69d09355379c438f745a388652cae01464e966550a1333398cba7d32b6d37f580964aa6dd8e288d3fed7aca9570d1add7a687c7e507ba09b909854a984c5dfa9611c2aa65e3d1e6deade843e9dd6b52f9a26f46ab9183eecea371bfccddacda8f8f07bbd3c86070159226ff34d6ee2004acde47e3a4ab53604883a5676d48badcda990ce9421873b483734a3b2e2de4edb843bd8443cd264961e7b6eab7739adeef04b377702651b265bc71a6318278a4e10d3ad4f9b1f5270283d72e759fd0445806ea3b08ef35a5c17bb37656a0e05fc781ef909aa2c8b609555c812848694c3d611c017cbb654d15c38646597c5dcfbf2b73b10e0e9e31b208f3e5b05de378dce3ac622a71cc4697d4c3bd325c5bd52cf067b229eb6f761cd550bb9de541cec9e3a22d34f32b5dacdc899f7340d005c13deb495cd61a00166747bfbd6dcd50ed66d5a3ff2f71ccd80b9a338a472a18d69e954f0cf2bc9aa3622f9aa91f60e7ad8b2150f0ecda6e1c30f1b8d63c9daa1a8d7b5d5df47e97ff8d391919f1e0247f2e13b3ebb294463a8038d0a8b960641b7dcf943cda2b0d58a07197bc20fb1b5ac2ff40cd1699d69d852bfb31673dbd67d85bacc5a37732de592ae365fdfb74f9f8d199f2ca373af9941b85603b89c5c8fece8e7e17087f7b255eaee6bb7357d3f32b67e8a15fcb4d972bdd9e1dda71527eb27ae9566eba86606825a666d4dcffcda66341fe696bba9ce0e10c2efbe253cbdf42ef6d776be3cf6cca6a56c2743fa911d803fd3124d748fa7399450ca979ac6cf8b5a5ee6bdfb3887d759f16d06797e6f4aa39b2ebcbf66b27fb4cbc278354fbd9d348fb7637fcd3d78254a9db6f3c5de5a9ed077f1ae7738a884643f3fb89dddf2f8d9c6e1e46db107eb0d790c2a4b98619b3eb664eab23773f993eaeebab63add4063749ac90d6d3076590782381e7f8bf2b44b210baf36b7d4d007c8f44360e27e4dd2a16cb2c7293a7b061442c6e9d6bf73f22260ce5cd54ce727d64d10e51bba83e6fe80d2a5ea5992b31a9f30d4eee7f892562dff8c53cd249285776b7ff2aafe284582c1b51a83ae15c864d5731d5776405f7d300b544a21c3b263ff003fb5924d31383bafe9bd4d3aa2ac42fb17bc2ee8be19d4b9a74a2148c2cd91b882a3fc909dd9af4bf3f63803ad6cbacc99abba9c0394a7d4ed2b77c243f2c4f4de10854ddac69563b3f009784b23c0d67e9923542792821bd522faab9ff91e36f6aba7ed998d42273ed385cf4bf15b4718f540160b7a80bae3ed9c12d3affa3e6bf7197d8ee11cfaa3fe59af9576f13055cee9bbea3ecbd40bcaee7dd9a18615798ce26a026265da4ea9e48c6d4b319a4a9b39d43a1b4c6dc9aad9774b6b1389916359814fe4a177f28472be6cbaebd0540fd603a15dde898af07c2855cb5b2bae7a8ab9bcac73d632a31f2a831cbac9a13deab2fd1e70071df3482af87bed5e05ab2def6ec31303e091265376ef64056c6f7742d6d52bc1654afba9c66c8d91d935d459bb6f6638c980c3eb4656fd774f10858e273bf4e4867d5bd44173ebec9375dbc5f5dccd832f9824b371913736016d62e0d0523def748de174237aa4e7e389121b9a107882c5c9476b83759be1e0d21c7e3a607f835f639e08ca13dabfe74d3d5c811136d45eb25b5523370bae62151304bebd60c93ae21eba477f5d167c987d8abe572fb640d0f0d74db682eca183c32167c1dd6cdbd6ce029a7749c42a61d7284343dcc6b14b55d609a778e0b96e76c43a90c65e4d8dadadd3faf7491aec96aee335567e43676ab662d249341b99400cd9028db6ddd1d4438eb5ac5abf238e1e5de8d818f6f6f1d86c88e1b70f7d514148d1c4f377a344fe90c90ff93ead35eb849c69bd2e5b18fa0ee8638ec8852fee7329b145c5f3eb59c708af66ea3b97b3cdaeaa1d0fd79778f7653083d82c2d35135933dd238ea9aada0769bd78ef1578b8c7cd461c7d6adf2a2bdba9f531951d927e06b02e9a932b3bfdba0aadefe0ae34e1404748f70b417fd5559f3e6bf072aac09a83acecdda6038ae6ca572ef9b3e08e5790cfc7f923bc3945ed894ea3bc2f85b30e3b338e0ae6c55ca9afe6b447cf099b11791166f1c5c6e95ad6eb5c4d7b878f28987e31922c8646859485c4afc64d9d32f02ef8f31693b6f1618bd78341fdbdc95263c0f8cbf5055f7b196ea58a56b70b426bacdd75aeebb9338a1a2a7340d9d1267994b2a949e4a82ca9359e6c74e70fc82a37f5a0d5da6d208f365a9b69f7c8a325103bbbf2c4df432ffaa9015b34ffa775193e98b9757848ade3f6f6a7c0b4f1e1704e827a4291e48edc4ce62857fdd2f891bb64f6fdda5ef52cc68b7f756ce47bfb7016ae4430cd10461265e8b870080ed1d0526c340b34acad277ef6b0d4dba4e1de1edb3d2f3559b18663d960024ea26d1768e7c831cd712057ec07c6b5a824fadc05eac4d58f0f9572317e42e998c7fdefb52dead3be0b1607ba1d5d7b18d388cef565ab3d5ecbddfeaafe5a4bf60eda1b61c04d6adbabe5d43e684e5c2dbca908fe72b3a42616ed30e2e2b15b8d5fe3d56fa06f1f7a79e439ce158e243e167e43199bbb59b9383582866aea73f81d3a1bcc747994b35d2938797d365610e9483512884be37e070f9c4f12cfbb2f234d82aa57d1a3de6bf9e286262b0faffbb7630cf543efab971c5cbcbd65801ac2c9bc297f4017e278af558f1b5f463e40d83d6d9a4b1c0ad6f0471781c68416771ab3cdb2392e46aea089d68b418f6f49eb8e7887028c692f2fd0e0d5bcf69707dca09383aa09a5edae550f85a5350129e8dc3146bc6ac48fec027730fc9530aa91a85aafac0bce809ce7cffe72fdef3f7ffaf2e52ffcdfbefefec7afdf7efbfaf397afdfbffdeff7b76fbffff5dbafbffee7dffff6d6defefcfd97df7efb7afd9ffee7cf5ffef6edebcf5ffeeffa87bffee3bffff8fd1fdfffe3fb1ffff5edef7f7efdf9cbf3887dfdfec7f75f7efb7f7ffc137fd13f7ffa17000000ffff03000bd36c77e4060200" + ], + "rawHeaders": { + "access-control-allow-origin": "*", + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "96086b125e60e5d8-NRT", + "connection": "close", + "content-encoding": "gzip", + "content-type": "application/json", + "date": "Thu, 17 Jul 2025 08:37:36 GMT", + "openai-model": "text-embedding-3-small", + "openai-processing-ms": "183", + "openai-version": "2020-10-01", + "server": "cloudflare", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "via": "envoy-router-544967c6c5-x2xbp", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "186", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "5000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "4999992", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_b9351ce5f84420f8e6078a467cfb19db" + }, + "responseIsBinary": false + } +] \ No newline at end of file diff --git a/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-adds-genai-conventions.json b/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-adds-genai-conventions.json new file mode 100644 index 0000000000..8ca9d3353e --- /dev/null +++ b/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-adds-genai-conventions.json @@ -0,0 +1,43 @@ +[ + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "user", + "content": "Answer in up to 3 words: Which ocean contains Bouvet Island?" + } + ], + "stream": true + }, + "status": 200, + "response": "data: {\"id\":\"chatcmpl-BuDJt3XpbTrkrYBUooP67fAFPTDDa\",\"object\":\"chat.completion.chunk\",\"created\":1752737269,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"role\":\"assistant\",\"content\":\"\",\"refusal\":null},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDJt3XpbTrkrYBUooP67fAFPTDDa\",\"object\":\"chat.completion.chunk\",\"created\":1752737269,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\"Atlantic\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDJt3XpbTrkrYBUooP67fAFPTDDa\",\"object\":\"chat.completion.chunk\",\"created\":1752737269,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" Ocean\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDJt3XpbTrkrYBUooP67fAFPTDDa\",\"object\":\"chat.completion.chunk\",\"created\":1752737269,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\".\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDJt3XpbTrkrYBUooP67fAFPTDDa\",\"object\":\"chat.completion.chunk\",\"created\":1752737269,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{},\"logprobs\":null,\"finish_reason\":\"stop\"}]}\n\ndata: [DONE]\n\n", + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "960804db6f65fcc0-NRT", + "connection": "close", + "content-type": "text/event-stream; charset=utf-8", + "date": "Thu, 17 Jul 2025 07:27:49 GMT", + "openai-processing-ms": "172", + "openai-version": "2020-10-01", + "server": "cloudflare", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "176", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999982", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_24119fc6cbdf89dfadb4c34bd78fad3b" + }, + "responseIsBinary": false + } +] \ No newline at end of file diff --git a/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-does-not-misbehave-with-double-iteration.json b/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-does-not-misbehave-with-double-iteration.json new file mode 100644 index 0000000000..ba08b95c4e --- /dev/null +++ b/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-does-not-misbehave-with-double-iteration.json @@ -0,0 +1,43 @@ +[ + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "user", + "content": "Answer in up to 3 words: Which ocean contains Bouvet Island?" + } + ], + "stream": true + }, + "status": 200, + "response": "data: {\"id\":\"chatcmpl-BuEAdgA3DwPSOefWR7otezsJxzkO1\",\"object\":\"chat.completion.chunk\",\"created\":1752740539,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"role\":\"assistant\",\"content\":\"\",\"refusal\":null},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuEAdgA3DwPSOefWR7otezsJxzkO1\",\"object\":\"chat.completion.chunk\",\"created\":1752740539,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\"South\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuEAdgA3DwPSOefWR7otezsJxzkO1\",\"object\":\"chat.completion.chunk\",\"created\":1752740539,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" Atlantic\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuEAdgA3DwPSOefWR7otezsJxzkO1\",\"object\":\"chat.completion.chunk\",\"created\":1752740539,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" Ocean\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuEAdgA3DwPSOefWR7otezsJxzkO1\",\"object\":\"chat.completion.chunk\",\"created\":1752740539,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\".\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuEAdgA3DwPSOefWR7otezsJxzkO1\",\"object\":\"chat.completion.chunk\",\"created\":1752740539,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{},\"logprobs\":null,\"finish_reason\":\"stop\"}]}\n\ndata: [DONE]\n\n", + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "960854afac96ec0e-NRT", + "connection": "close", + "content-type": "text/event-stream; charset=utf-8", + "date": "Thu, 17 Jul 2025 08:22:19 GMT", + "openai-processing-ms": "295", + "openai-version": "2020-10-01", + "server": "cloudflare", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "299", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999982", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_d40509d1b6b092e3978ea52b8c02864e" + }, + "responseIsBinary": false + } +] \ No newline at end of file diff --git a/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-does-not-prevent-usage-of-abort.json b/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-does-not-prevent-usage-of-abort.json new file mode 100644 index 0000000000..90efb3eb11 --- /dev/null +++ b/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-does-not-prevent-usage-of-abort.json @@ -0,0 +1,43 @@ +[ + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "user", + "content": "Answer in up to 3 words: Which ocean contains Bouvet Island?" + } + ], + "stream": true + }, + "status": 200, + "response": "data: {\"id\":\"chatcmpl-BuEFi0mRPm9cbvVmysG9jAHfivvUt\",\"object\":\"chat.completion.chunk\",\"created\":1752740854,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"role\":\"assistant\",\"content\":\"\",\"refusal\":null},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuEFi0mRPm9cbvVmysG9jAHfivvUt\",\"object\":\"chat.completion.chunk\",\"created\":1752740854,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\"Atlantic\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuEFi0mRPm9cbvVmysG9jAHfivvUt\",\"object\":\"chat.completion.chunk\",\"created\":1752740854,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" Ocean\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuEFi0mRPm9cbvVmysG9jAHfivvUt\",\"object\":\"chat.completion.chunk\",\"created\":1752740854,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\".\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuEFi0mRPm9cbvVmysG9jAHfivvUt\",\"object\":\"chat.completion.chunk\",\"created\":1752740854,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{},\"logprobs\":null,\"finish_reason\":\"stop\"}]}\n\ndata: [DONE]\n\n", + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "96085c60cb99e392-NRT", + "connection": "close", + "content-type": "text/event-stream; charset=utf-8", + "date": "Thu, 17 Jul 2025 08:27:34 GMT", + "openai-processing-ms": "234", + "openai-version": "2020-10-01", + "server": "cloudflare", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "239", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999983", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_52a5b54049b36409e582504ea7a435a9" + }, + "responseIsBinary": false + } +] \ No newline at end of file diff --git a/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-does-not-prevent-usage-of-tee.json b/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-does-not-prevent-usage-of-tee.json new file mode 100644 index 0000000000..35498bac62 --- /dev/null +++ b/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-does-not-prevent-usage-of-tee.json @@ -0,0 +1,43 @@ +[ + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "user", + "content": "Answer in up to 3 words: Which ocean contains Bouvet Island?" + } + ], + "stream": true + }, + "status": 200, + "response": "data: {\"id\":\"chatcmpl-BuEDkFdMN01PVlzzLwbFr98W0jM1N\",\"object\":\"chat.completion.chunk\",\"created\":1752740732,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"role\":\"assistant\",\"content\":\"\",\"refusal\":null},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuEDkFdMN01PVlzzLwbFr98W0jM1N\",\"object\":\"chat.completion.chunk\",\"created\":1752740732,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\"Atlantic\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuEDkFdMN01PVlzzLwbFr98W0jM1N\",\"object\":\"chat.completion.chunk\",\"created\":1752740732,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" Ocean\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuEDkFdMN01PVlzzLwbFr98W0jM1N\",\"object\":\"chat.completion.chunk\",\"created\":1752740732,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\".\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuEDkFdMN01PVlzzLwbFr98W0jM1N\",\"object\":\"chat.completion.chunk\",\"created\":1752740732,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{},\"logprobs\":null,\"finish_reason\":\"stop\"}]}\n\ndata: [DONE]\n\n", + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "9608596839e18a5d-NRT", + "connection": "close", + "content-type": "text/event-stream; charset=utf-8", + "date": "Thu, 17 Jul 2025 08:25:32 GMT", + "openai-processing-ms": "238", + "openai-version": "2020-10-01", + "server": "cloudflare", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "241", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999982", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_0d087f5cec909f11f1e95347619bedd5" + }, + "responseIsBinary": false + } +] \ No newline at end of file diff --git a/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-records-multiple-choices.json b/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-records-multiple-choices.json new file mode 100644 index 0000000000..233d271209 --- /dev/null +++ b/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-records-multiple-choices.json @@ -0,0 +1,44 @@ +[ + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "user", + "content": "Answer in up to 3 words: Which ocean contains Bouvet Island?" + } + ], + "n": 2, + "stream": true + }, + "status": 200, + "response": "data: {\"id\":\"chatcmpl-BuDPruvXvy1cTouU79MhRWdmZWMqk\",\"object\":\"chat.completion.chunk\",\"created\":1752737639,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"role\":\"assistant\",\"content\":\"\",\"refusal\":null},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDPruvXvy1cTouU79MhRWdmZWMqk\",\"object\":\"chat.completion.chunk\",\"created\":1752737639,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\"Atlantic\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDPruvXvy1cTouU79MhRWdmZWMqk\",\"object\":\"chat.completion.chunk\",\"created\":1752737639,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" Ocean\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDPruvXvy1cTouU79MhRWdmZWMqk\",\"object\":\"chat.completion.chunk\",\"created\":1752737639,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\".\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDPruvXvy1cTouU79MhRWdmZWMqk\",\"object\":\"chat.completion.chunk\",\"created\":1752737639,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":1,\"delta\":{\"role\":\"assistant\",\"content\":\"\",\"refusal\":null},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDPruvXvy1cTouU79MhRWdmZWMqk\",\"object\":\"chat.completion.chunk\",\"created\":1752737639,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":1,\"delta\":{\"content\":\"Southern\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDPruvXvy1cTouU79MhRWdmZWMqk\",\"object\":\"chat.completion.chunk\",\"created\":1752737639,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":1,\"delta\":{\"content\":\" Ocean\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDPruvXvy1cTouU79MhRWdmZWMqk\",\"object\":\"chat.completion.chunk\",\"created\":1752737639,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":1,\"delta\":{\"content\":\".\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDPruvXvy1cTouU79MhRWdmZWMqk\",\"object\":\"chat.completion.chunk\",\"created\":1752737639,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{},\"logprobs\":null,\"finish_reason\":\"stop\"}]}\n\ndata: {\"id\":\"chatcmpl-BuDPruvXvy1cTouU79MhRWdmZWMqk\",\"object\":\"chat.completion.chunk\",\"created\":1752737639,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":1,\"delta\":{},\"logprobs\":null,\"finish_reason\":\"stop\"}]}\n\ndata: [DONE]\n\n", + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "96080de51fa847f7-NRT", + "connection": "close", + "content-type": "text/event-stream; charset=utf-8", + "date": "Thu, 17 Jul 2025 07:33:59 GMT", + "openai-processing-ms": "209", + "openai-version": "2020-10-01", + "server": "cloudflare", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "217", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999981", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_fa9c7a16b29cca45d28032fdb0d910b6" + }, + "responseIsBinary": false + } +] \ No newline at end of file diff --git a/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-records-tool-calls.json b/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-records-tool-calls.json new file mode 100644 index 0000000000..f28bddb43f --- /dev/null +++ b/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-records-tool-calls.json @@ -0,0 +1,170 @@ +[ + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "system", + "content": "You are a helpful assistant providing weather updates." + }, + { + "role": "user", + "content": "What is the weather in New York City and London?" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "get_weather", + "strict": true, + "parameters": { + "type": "object", + "properties": { + "location": { + "type": "string" + } + }, + "required": [ + "location" + ], + "additionalProperties": false + } + } + } + ], + "stream": true + }, + "status": 200, + "response": "data: {\"id\":\"chatcmpl-BuDpRr8h0kwBLc53wzb0GeYXsWCcX\",\"object\":\"chat.completion.chunk\",\"created\":1752739225,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"role\":\"assistant\",\"content\":null},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpRr8h0kwBLc53wzb0GeYXsWCcX\",\"object\":\"chat.completion.chunk\",\"created\":1752739225,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":0,\"id\":\"call_9ujI2ZExKzIGa57dsFCuwSXI\",\"type\":\"function\",\"function\":{\"name\":\"get_weather\",\"arguments\":\"\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpRr8h0kwBLc53wzb0GeYXsWCcX\",\"object\":\"chat.completion.chunk\",\"created\":1752739225,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":0,\"function\":{\"arguments\":\"{\\\"lo\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpRr8h0kwBLc53wzb0GeYXsWCcX\",\"object\":\"chat.completion.chunk\",\"created\":1752739225,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":0,\"function\":{\"arguments\":\"catio\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpRr8h0kwBLc53wzb0GeYXsWCcX\",\"object\":\"chat.completion.chunk\",\"created\":1752739225,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":0,\"function\":{\"arguments\":\"n\\\": \\\"N\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpRr8h0kwBLc53wzb0GeYXsWCcX\",\"object\":\"chat.completion.chunk\",\"created\":1752739225,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":0,\"function\":{\"arguments\":\"ew Y\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpRr8h0kwBLc53wzb0GeYXsWCcX\",\"object\":\"chat.completion.chunk\",\"created\":1752739225,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":0,\"function\":{\"arguments\":\"ork C\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpRr8h0kwBLc53wzb0GeYXsWCcX\",\"object\":\"chat.completion.chunk\",\"created\":1752739225,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":0,\"function\":{\"arguments\":\"ity\\\"}\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpRr8h0kwBLc53wzb0GeYXsWCcX\",\"object\":\"chat.completion.chunk\",\"created\":1752739225,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":1,\"id\":\"call_M5Jmiz7Y7ZUiASk3ShRROpUr\",\"type\":\"function\",\"function\":{\"name\":\"get_weather\",\"arguments\":\"\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpRr8h0kwBLc53wzb0GeYXsWCcX\",\"object\":\"chat.completion.chunk\",\"created\":1752739225,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":1,\"function\":{\"arguments\":\"{\\\"lo\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpRr8h0kwBLc53wzb0GeYXsWCcX\",\"object\":\"chat.completion.chunk\",\"created\":1752739225,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":1,\"function\":{\"arguments\":\"catio\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpRr8h0kwBLc53wzb0GeYXsWCcX\",\"object\":\"chat.completion.chunk\",\"created\":1752739225,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":1,\"function\":{\"arguments\":\"n\\\": \\\"L\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpRr8h0kwBLc53wzb0GeYXsWCcX\",\"object\":\"chat.completion.chunk\",\"created\":1752739225,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":1,\"function\":{\"arguments\":\"ondo\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpRr8h0kwBLc53wzb0GeYXsWCcX\",\"object\":\"chat.completion.chunk\",\"created\":1752739225,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":1,\"function\":{\"arguments\":\"n\\\"}\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpRr8h0kwBLc53wzb0GeYXsWCcX\",\"object\":\"chat.completion.chunk\",\"created\":1752739225,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{},\"logprobs\":null,\"finish_reason\":\"tool_calls\"}]}\n\ndata: [DONE]\n\n", + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "960834979c54e366-NRT", + "connection": "close", + "content-type": "text/event-stream; charset=utf-8", + "date": "Thu, 17 Jul 2025 08:00:26 GMT", + "openai-processing-ms": "1046", + "openai-version": "2020-10-01", + "server": "cloudflare", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "1055", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999970", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_222b8015f2cab35df65c97bfd8e226f0" + }, + "responseIsBinary": false + }, + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "system", + "content": "You are a helpful assistant providing weather updates." + }, + { + "role": "user", + "content": "What is the weather in New York City and London?" + }, + { + "role": "assistant", + "tool_calls": [ + { + "index": 0, + "id": "call_9ujI2ZExKzIGa57dsFCuwSXI", + "type": "function", + "function": { + "name": "get_weather", + "arguments": "{\"location\": \"New York City\"}" + } + }, + { + "index": 1, + "id": "call_M5Jmiz7Y7ZUiASk3ShRROpUr", + "type": "function", + "function": { + "name": "get_weather", + "arguments": "{\"location\": \"London\"}" + } + } + ] + }, + { + "role": "tool", + "tool_call_id": "call_9ujI2ZExKzIGa57dsFCuwSXI", + "content": "25 degrees and sunny" + }, + { + "role": "tool", + "tool_call_id": "call_M5Jmiz7Y7ZUiASk3ShRROpUr", + "content": "15 degrees and raining" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "get_weather", + "strict": true, + "parameters": { + "type": "object", + "properties": { + "location": { + "type": "string" + } + }, + "required": [ + "location" + ], + "additionalProperties": false + } + } + } + ], + "stream": true + }, + "status": 200, + "response": "data: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"role\":\"assistant\",\"content\":\"\",\"refusal\":null},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\"The\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" weather\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" in\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" New\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" York\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" City\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" is\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" \"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\"25\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" degrees\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" and\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" sunny\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\",\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" while\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" in\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" London\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\",\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" it\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" is\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" \"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\"15\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" degrees\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" and\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" raining\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\".\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDpTOhzJCQLCyjQ8OcbJsShIN7XM\",\"object\":\"chat.completion.chunk\",\"created\":1752739227,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{},\"logprobs\":null,\"finish_reason\":\"stop\"}]}\n\ndata: [DONE]\n\n", + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "960834a86d2f3c17-NRT", + "connection": "close", + "content-type": "text/event-stream; charset=utf-8", + "date": "Thu, 17 Jul 2025 08:00:27 GMT", + "openai-organization": "elastic-observability", + "openai-processing-ms": "240", + "openai-project": "proj_Pf1eM5R55Z35wBy4rt8PxAGq", + "openai-version": "2020-10-01", + "server": "cloudflare", + "set-cookie": "_cfuvid=9MBw8QqOzZBRJtGKGZM9zTdRPGaWSVHP.cA.zk.50QY-1752739227664-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "244", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999957", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_ba535371fdc85f890162da3f3ddaa840" + }, + "responseIsBinary": false + } +] \ No newline at end of file diff --git a/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-records-usage.json b/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-records-usage.json new file mode 100644 index 0000000000..1814791462 --- /dev/null +++ b/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-records-usage.json @@ -0,0 +1,46 @@ +[ + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "user", + "content": "Answer in up to 3 words: Which ocean contains Bouvet Island?" + } + ], + "stream": true, + "stream_options": { + "include_usage": true + } + }, + "status": 200, + "response": "data: {\"id\":\"chatcmpl-BuDrRRWybY6JHzabaUyR2OtaEGp79\",\"object\":\"chat.completion.chunk\",\"created\":1752739349,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"role\":\"assistant\",\"content\":\"\",\"refusal\":null},\"logprobs\":null,\"finish_reason\":null}],\"usage\":null}\n\ndata: {\"id\":\"chatcmpl-BuDrRRWybY6JHzabaUyR2OtaEGp79\",\"object\":\"chat.completion.chunk\",\"created\":1752739349,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\"South\"},\"logprobs\":null,\"finish_reason\":null}],\"usage\":null}\n\ndata: {\"id\":\"chatcmpl-BuDrRRWybY6JHzabaUyR2OtaEGp79\",\"object\":\"chat.completion.chunk\",\"created\":1752739349,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" Atlantic\"},\"logprobs\":null,\"finish_reason\":null}],\"usage\":null}\n\ndata: {\"id\":\"chatcmpl-BuDrRRWybY6JHzabaUyR2OtaEGp79\",\"object\":\"chat.completion.chunk\",\"created\":1752739349,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" Ocean\"},\"logprobs\":null,\"finish_reason\":null}],\"usage\":null}\n\ndata: {\"id\":\"chatcmpl-BuDrRRWybY6JHzabaUyR2OtaEGp79\",\"object\":\"chat.completion.chunk\",\"created\":1752739349,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\".\"},\"logprobs\":null,\"finish_reason\":null}],\"usage\":null}\n\ndata: {\"id\":\"chatcmpl-BuDrRRWybY6JHzabaUyR2OtaEGp79\",\"object\":\"chat.completion.chunk\",\"created\":1752739349,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{},\"logprobs\":null,\"finish_reason\":\"stop\"}],\"usage\":null}\n\ndata: {\"id\":\"chatcmpl-BuDrRRWybY6JHzabaUyR2OtaEGp79\",\"object\":\"chat.completion.chunk\",\"created\":1752739349,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[],\"usage\":{\"prompt_tokens\":22,\"completion_tokens\":4,\"total_tokens\":26,\"prompt_tokens_details\":{\"cached_tokens\":0,\"audio_tokens\":0},\"completion_tokens_details\":{\"reasoning_tokens\":0,\"audio_tokens\":0,\"accepted_prediction_tokens\":0,\"rejected_prediction_tokens\":0}}}\n\ndata: [DONE]\n\n", + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "960837a3a8faf6d9-NRT", + "connection": "close", + "content-type": "text/event-stream; charset=utf-8", + "date": "Thu, 17 Jul 2025 08:02:29 GMT", + "openai-processing-ms": "281", + "openai-version": "2020-10-01", + "server": "cloudflare", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "286", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999982", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_539e03a5bdb03c6f6b3010f8c5389109" + }, + "responseIsBinary": false + } +] \ No newline at end of file diff --git a/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-with-content-capture-adds-genai-conventions.json b/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-with-content-capture-adds-genai-conventions.json new file mode 100644 index 0000000000..2f11313834 --- /dev/null +++ b/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-with-content-capture-adds-genai-conventions.json @@ -0,0 +1,43 @@ +[ + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "user", + "content": "Answer in up to 3 words: Which ocean contains Bouvet Island?" + } + ], + "stream": true + }, + "status": 200, + "response": "data: {\"id\":\"chatcmpl-BuDvE94ISQVUWZdbkJ6k1XcOMmyzg\",\"object\":\"chat.completion.chunk\",\"created\":1752739584,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"role\":\"assistant\",\"content\":\"\",\"refusal\":null},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvE94ISQVUWZdbkJ6k1XcOMmyzg\",\"object\":\"chat.completion.chunk\",\"created\":1752739584,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\"Atlantic\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvE94ISQVUWZdbkJ6k1XcOMmyzg\",\"object\":\"chat.completion.chunk\",\"created\":1752739584,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" Ocean\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvE94ISQVUWZdbkJ6k1XcOMmyzg\",\"object\":\"chat.completion.chunk\",\"created\":1752739584,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\".\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvE94ISQVUWZdbkJ6k1XcOMmyzg\",\"object\":\"chat.completion.chunk\",\"created\":1752739584,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{},\"logprobs\":null,\"finish_reason\":\"stop\"}]}\n\ndata: [DONE]\n\n", + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "96083d620bffd4fb-NRT", + "connection": "close", + "content-type": "text/event-stream; charset=utf-8", + "date": "Thu, 17 Jul 2025 08:06:24 GMT", + "openai-processing-ms": "199", + "openai-version": "2020-10-01", + "server": "cloudflare", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "204", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999983", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_be25c8ec8b23a1dbb37740b72311c307" + }, + "responseIsBinary": false + } +] \ No newline at end of file diff --git a/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-with-content-capture-records-multiple-choices.json b/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-with-content-capture-records-multiple-choices.json new file mode 100644 index 0000000000..5b5b646946 --- /dev/null +++ b/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-with-content-capture-records-multiple-choices.json @@ -0,0 +1,44 @@ +[ + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "user", + "content": "Answer in up to 3 words: Which ocean contains Bouvet Island?" + } + ], + "n": 2, + "stream": true + }, + "status": 200, + "response": "data: {\"id\":\"chatcmpl-BuDvFELsVfoy6ztg2r7kEkFtC8lyI\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"role\":\"assistant\",\"content\":\"\",\"refusal\":null},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFELsVfoy6ztg2r7kEkFtC8lyI\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\"Southern\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFELsVfoy6ztg2r7kEkFtC8lyI\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" Ocean\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFELsVfoy6ztg2r7kEkFtC8lyI\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\".\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFELsVfoy6ztg2r7kEkFtC8lyI\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":1,\"delta\":{\"role\":\"assistant\",\"content\":\"\",\"refusal\":null},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFELsVfoy6ztg2r7kEkFtC8lyI\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":1,\"delta\":{\"content\":\"Atlantic\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFELsVfoy6ztg2r7kEkFtC8lyI\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":1,\"delta\":{\"content\":\" Ocean\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFELsVfoy6ztg2r7kEkFtC8lyI\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":1,\"delta\":{\"content\":\".\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFELsVfoy6ztg2r7kEkFtC8lyI\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{},\"logprobs\":null,\"finish_reason\":\"stop\"}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFELsVfoy6ztg2r7kEkFtC8lyI\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":1,\"delta\":{},\"logprobs\":null,\"finish_reason\":\"stop\"}]}\n\ndata: [DONE]\n\n", + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "96083d658a73d788-NRT", + "connection": "close", + "content-type": "text/event-stream; charset=utf-8", + "date": "Thu, 17 Jul 2025 08:06:25 GMT", + "openai-processing-ms": "176", + "openai-version": "2020-10-01", + "server": "cloudflare", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "178", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999981", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_b15fb55c152b988c9c798401679ca46e" + }, + "responseIsBinary": false + } +] \ No newline at end of file diff --git a/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-with-content-capture-records-tool-calls.json b/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-with-content-capture-records-tool-calls.json new file mode 100644 index 0000000000..54d80e9c22 --- /dev/null +++ b/packages/instrumentation-openai/test/mock-responses/openai-streaming-chat-completions-with-content-capture-records-tool-calls.json @@ -0,0 +1,170 @@ +[ + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "system", + "content": "You are a helpful assistant providing weather updates." + }, + { + "role": "user", + "content": "What is the weather in New York City and London?" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "get_weather", + "strict": true, + "parameters": { + "type": "object", + "properties": { + "location": { + "type": "string" + } + }, + "required": [ + "location" + ], + "additionalProperties": false + } + } + } + ], + "stream": true + }, + "status": 200, + "response": "data: {\"id\":\"chatcmpl-BuDvFNfcuXkfEXklmzyIFrJJb4bG0\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"role\":\"assistant\",\"content\":null},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFNfcuXkfEXklmzyIFrJJb4bG0\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":0,\"id\":\"call_8mgxuCkNPx3qlomni7YPgFmd\",\"type\":\"function\",\"function\":{\"name\":\"get_weather\",\"arguments\":\"\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFNfcuXkfEXklmzyIFrJJb4bG0\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":0,\"function\":{\"arguments\":\"{\\\"lo\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFNfcuXkfEXklmzyIFrJJb4bG0\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":0,\"function\":{\"arguments\":\"catio\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFNfcuXkfEXklmzyIFrJJb4bG0\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":0,\"function\":{\"arguments\":\"n\\\": \\\"N\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFNfcuXkfEXklmzyIFrJJb4bG0\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":0,\"function\":{\"arguments\":\"ew Y\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFNfcuXkfEXklmzyIFrJJb4bG0\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":0,\"function\":{\"arguments\":\"ork C\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFNfcuXkfEXklmzyIFrJJb4bG0\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":0,\"function\":{\"arguments\":\"ity\\\"}\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFNfcuXkfEXklmzyIFrJJb4bG0\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":1,\"id\":\"call_oPnYBRvnkzPFgA0R33zwifZP\",\"type\":\"function\",\"function\":{\"name\":\"get_weather\",\"arguments\":\"\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFNfcuXkfEXklmzyIFrJJb4bG0\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":1,\"function\":{\"arguments\":\"{\\\"lo\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFNfcuXkfEXklmzyIFrJJb4bG0\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":1,\"function\":{\"arguments\":\"catio\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFNfcuXkfEXklmzyIFrJJb4bG0\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":1,\"function\":{\"arguments\":\"n\\\": \\\"L\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFNfcuXkfEXklmzyIFrJJb4bG0\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":1,\"function\":{\"arguments\":\"ondo\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFNfcuXkfEXklmzyIFrJJb4bG0\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":1,\"function\":{\"arguments\":\"n\\\"}\"}}]},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvFNfcuXkfEXklmzyIFrJJb4bG0\",\"object\":\"chat.completion.chunk\",\"created\":1752739585,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{},\"logprobs\":null,\"finish_reason\":\"tool_calls\"}]}\n\ndata: [DONE]\n\n", + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "96083d68daf3d758-NRT", + "connection": "close", + "content-type": "text/event-stream; charset=utf-8", + "date": "Thu, 17 Jul 2025 08:06:26 GMT", + "openai-processing-ms": "949", + "openai-version": "2020-10-01", + "server": "cloudflare", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "952", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999970", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_5955d1bb0d741299c6fb0fef17e3cf5c" + }, + "responseIsBinary": false + }, + { + "scope": "https://api.openai.com:443", + "method": "POST", + "path": "/v1/chat/completions", + "body": { + "model": "gpt-4o-mini", + "messages": [ + { + "role": "system", + "content": "You are a helpful assistant providing weather updates." + }, + { + "role": "user", + "content": "What is the weather in New York City and London?" + }, + { + "role": "assistant", + "tool_calls": [ + { + "index": 0, + "id": "call_8mgxuCkNPx3qlomni7YPgFmd", + "type": "function", + "function": { + "name": "get_weather", + "arguments": "{\"location\": \"New York City\"}" + } + }, + { + "index": 1, + "id": "call_oPnYBRvnkzPFgA0R33zwifZP", + "type": "function", + "function": { + "name": "get_weather", + "arguments": "{\"location\": \"London\"}" + } + } + ] + }, + { + "role": "tool", + "tool_call_id": "call_8mgxuCkNPx3qlomni7YPgFmd", + "content": "25 degrees and sunny" + }, + { + "role": "tool", + "tool_call_id": "call_oPnYBRvnkzPFgA0R33zwifZP", + "content": "15 degrees and raining" + } + ], + "tools": [ + { + "type": "function", + "function": { + "name": "get_weather", + "strict": true, + "parameters": { + "type": "object", + "properties": { + "location": { + "type": "string" + } + }, + "required": [ + "location" + ], + "additionalProperties": false + } + } + } + ], + "stream": true + }, + "status": 200, + "response": "data: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"role\":\"assistant\",\"content\":\"\",\"refusal\":null},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\"The\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" weather\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" is\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" currently\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" \"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\"25\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" degrees\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" and\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" sunny\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" in\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" New\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" York\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" City\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\",\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" while\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" in\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" London\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\",\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" it\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" is\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" \"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\"15\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" degrees\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" and\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\" raining\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{\"content\":\".\"},\"logprobs\":null,\"finish_reason\":null}]}\n\ndata: {\"id\":\"chatcmpl-BuDvHbKGyexqi9yq72brOvY4WfZMH\",\"object\":\"chat.completion.chunk\",\"created\":1752739587,\"model\":\"gpt-4o-mini-2024-07-18\",\"service_tier\":\"default\",\"system_fingerprint\":null,\"choices\":[{\"index\":0,\"delta\":{},\"logprobs\":null,\"finish_reason\":\"stop\"}]}\n\ndata: [DONE]\n\n", + "rawHeaders": { + "access-control-expose-headers": "X-Request-ID", + "alt-svc": "h3=\":443\"; ma=86400", + "cf-cache-status": "DYNAMIC", + "cf-ray": "96083d71fdde6836-NRT", + "connection": "close", + "content-type": "text/event-stream; charset=utf-8", + "date": "Thu, 17 Jul 2025 08:06:27 GMT", + "openai-organization": "elastic-observability", + "openai-processing-ms": "195", + "openai-project": "proj_Pf1eM5R55Z35wBy4rt8PxAGq", + "openai-version": "2020-10-01", + "server": "cloudflare", + "set-cookie": "_cfuvid=xDfDRpDRw.EnLw2M2RDvnWf649EQmohfTJG_qqGE6iw-1752739587245-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None", + "strict-transport-security": "max-age=31536000; includeSubDomains; preload", + "transfer-encoding": "chunked", + "x-content-type-options": "nosniff", + "x-envoy-upstream-service-time": "198", + "x-ratelimit-limit-requests": "5000", + "x-ratelimit-limit-tokens": "4000000", + "x-ratelimit-remaining-requests": "4999", + "x-ratelimit-remaining-tokens": "3999958", + "x-ratelimit-reset-requests": "12ms", + "x-ratelimit-reset-tokens": "0s", + "x-request-id": "req_536598da01504470d10172c7f5346a9e" + }, + "responseIsBinary": false + } +] \ No newline at end of file diff --git a/packages/instrumentation-openai/test/openai.test.ts b/packages/instrumentation-openai/test/openai.test.ts new file mode 100644 index 0000000000..21402f2ce3 --- /dev/null +++ b/packages/instrumentation-openai/test/openai.test.ts @@ -0,0 +1,3198 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * These tests verify telemetry created against actual API responses + * which can be difficult to mock for LLMs. The responses are recorded + * automatically using nock's nock-back feature. Responses are recorded + * to the mock-responses directory with the name of the test - by default + * if a response is available for the current test it is used, and + * otherwise a real request is made and the response is recorded. + * To re-record all responses, set the NOCK_BACK_MODE environment variable + * to 'update' - when recording responses, OPENAI_API_KEY must be set to + * a valid API key. To record for new tests while + * keeping existing recordings, set NOCK_BACK_MODE to 'record'. + */ + +import { + contentCaptureInstrumentation, + instrumentation, + loggerProvider, + logsExporter, + meterProvider, + metricExporter, +} from './load-instrumentation'; +import { + getTestSpans, + resetMemoryExporter, +} from '@opentelemetry/contrib-test-utils'; +import { + ATTR_ERROR_TYPE, + ATTR_SERVER_ADDRESS, + ATTR_SERVER_PORT, +} from '@opentelemetry/semantic-conventions'; +import { expect } from 'expect'; +import { Definition, back as nockBack } from 'nock'; +import { OpenAI } from 'openai'; +import * as path from 'path'; + +import { + ATTR_EVENT_NAME, + ATTR_GEN_AI_SYSTEM, + ATTR_GEN_AI_OPERATION_NAME, + ATTR_GEN_AI_REQUEST_ENCODING_FORMATS, + ATTR_GEN_AI_REQUEST_FREQUENCY_PENALTY, + ATTR_GEN_AI_REQUEST_MODEL, + ATTR_GEN_AI_REQUEST_MAX_TOKENS, + ATTR_GEN_AI_REQUEST_PRESENCE_PENALTY, + ATTR_GEN_AI_REQUEST_TOP_P, + ATTR_GEN_AI_USAGE_INPUT_TOKENS, + ATTR_GEN_AI_USAGE_OUTPUT_TOKENS, + ATTR_GEN_AI_RESPONSE_FINISH_REASONS, + ATTR_GEN_AI_RESPONSE_ID, + ATTR_GEN_AI_REQUEST_STOP_SEQUENCES, + ATTR_GEN_AI_REQUEST_TEMPERATURE, + ATTR_GEN_AI_RESPONSE_MODEL, + ATTR_GEN_AI_TOKEN_TYPE, +} from '../src/semconv'; + +// Remove any data from recorded responses that could have sensitive data +// and that we don't need for testing. +const sanitizeRecordings = (scopes: Definition[]) => { + for (const scope of scopes) { + // Type definition seems to be incorrect of headers. + const headers: Record = (scope as any).rawHeaders; + delete headers['set-cookie']; + delete headers['openai-organization']; + delete headers['openai-project']; + } + return scopes; +}; + +describe('OpenAI', function () { + this.timeout(10000); // Increase timeout for LLM tests + + nockBack.fixtures = path.join(__dirname, 'mock-responses'); + let apiKey: string | undefined; + if (nockBack.currentMode === 'dryrun') { + apiKey = 'testing'; + } + + let nockDone: () => void; + beforeEach(async function () { + const filename = `${this.currentTest + ?.fullTitle() + .toLowerCase() + .replace(/\s/g, '-')}.json`; + const { nockDone: nd } = await nockBack(filename, { + afterRecord: sanitizeRecordings, + }); + nockDone = nd; + }); + + afterEach(async function () { + nockDone(); + + await loggerProvider.forceFlush(); + logsExporter.reset(); + + await meterProvider.forceFlush(); + metricExporter.reset(); + }); + + const client = new OpenAI({ apiKey }); + const model = 'gpt-4o-mini'; + const input = 'Answer in up to 3 words: Which ocean contains Bouvet Island?'; + + describe('chat completions', function () { + this.beforeEach(() => { + instrumentation.enable(); + }); + this.afterEach(() => { + instrumentation.disable(); + }); + + it('adds genai conventions', async () => { + const messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [ + { + role: 'user', + content: input, + }, + ]; + const chatCompletion = await client.chat.completions.create({ + model, + messages, + }); + expect(chatCompletion.choices[0].message.content).toEqual( + 'Atlantic Ocean.' + ); + const spans = getTestSpans(); + expect(spans.length).toBe(1); + expect(spans[0].attributes).toEqual({ + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: ['stop'], + [ATTR_GEN_AI_RESPONSE_ID]: expect.stringMatching(/^chatcmpl-/), + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_GEN_AI_USAGE_INPUT_TOKENS]: 22, + [ATTR_GEN_AI_USAGE_OUTPUT_TOKENS]: 3, + }); + + await meterProvider.forceFlush(); + const [resourceMetrics] = metricExporter.getMetrics(); + expect(resourceMetrics.scopeMetrics.length).toBe(1); + const scopeMetrics = resourceMetrics.scopeMetrics[0]; + const tokenUsage = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.token.usage' + ); + + expect(tokenUsage.length).toBe(1); + expect(tokenUsage[0].descriptor).toMatchObject({ + name: 'gen_ai.client.token.usage', + type: 'HISTOGRAM', + description: 'Measures number of input and output tokens used', + unit: '{token}', + }); + expect(tokenUsage[0].dataPoints.length).toBe(2); + expect(tokenUsage[0].dataPoints).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: 22, + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'input', + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + expect.objectContaining({ + value: expect.objectContaining({ + sum: 3, + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'output', + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]) + ); + + const operationDuration = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.operation.duration' + ); + expect(operationDuration.length).toBe(1); + expect(operationDuration[0].descriptor).toMatchObject({ + name: 'gen_ai.client.operation.duration', + type: 'HISTOGRAM', + description: 'GenAI operation duration', + unit: 's', + }); + expect(operationDuration[0].dataPoints.length).toBe(1); + expect(operationDuration[0].dataPoints).toEqual([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: expect.any(Number), + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]); + expect( + (operationDuration[0].dataPoints[0].value as any).sum + ).toBeGreaterThan(0); + + const spanCtx = spans[0].spanContext(); + + await loggerProvider.forceFlush(); + const logs = logsExporter.getFinishedLogRecords(); + expect(logs.length).toBe(2); + expect(logs[0].spanContext).toEqual(spanCtx); + expect(logs[0].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.user.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[0].body).toEqual({}); + expect(logs[1].spanContext).toEqual(spanCtx); + expect(logs[1].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[1].body).toEqual({ + finish_reason: 'stop', + index: 0, + message: {}, + }); + }); + + it('records all the client options', async () => { + const messages = [ + { + role: 'user', + content: input, + }, + ] satisfies OpenAI.Chat.Completions.ChatCompletionMessageParam[]; + const chatCompletion = await client.chat.completions.create({ + model, + messages, + frequency_penalty: 0.0, + max_tokens: 100, + presence_penalty: 0.0, + temperature: 1.0, + top_p: 1.0, + stop: 'foo', + seed: 100, + response_format: { + type: 'text', + }, + }); + expect(chatCompletion.choices[0].message.content).toEqual( + 'Southern Ocean.' + ); + const spans = getTestSpans(); + expect(spans.length).toBe(1); + expect(spans[0].attributes).toEqual({ + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + [ATTR_GEN_AI_REQUEST_FREQUENCY_PENALTY]: 0.0, + [ATTR_GEN_AI_REQUEST_MAX_TOKENS]: 100, + [ATTR_GEN_AI_REQUEST_PRESENCE_PENALTY]: 0.0, + [ATTR_GEN_AI_REQUEST_TEMPERATURE]: 1.0, + [ATTR_GEN_AI_REQUEST_TOP_P]: 1.0, + [ATTR_GEN_AI_REQUEST_STOP_SEQUENCES]: ['foo'], + [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: ['stop'], + [ATTR_GEN_AI_RESPONSE_ID]: expect.stringMatching(/^chatcmpl-/), + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_GEN_AI_USAGE_INPUT_TOKENS]: 22, + [ATTR_GEN_AI_USAGE_OUTPUT_TOKENS]: 3, + }); + + await meterProvider.forceFlush(); + const [resourceMetrics] = metricExporter.getMetrics(); + expect(resourceMetrics.scopeMetrics.length).toBe(1); + const scopeMetrics = resourceMetrics.scopeMetrics[0]; + const tokenUsage = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.token.usage' + ); + + expect(tokenUsage.length).toBe(1); + expect(tokenUsage[0].descriptor).toMatchObject({ + name: 'gen_ai.client.token.usage', + type: 'HISTOGRAM', + description: 'Measures number of input and output tokens used', + unit: '{token}', + }); + expect(tokenUsage[0].dataPoints.length).toBe(2); + expect(tokenUsage[0].dataPoints).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: 22, + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'input', + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + expect.objectContaining({ + value: expect.objectContaining({ + sum: 3, + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'output', + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]) + ); + + const operationDuration = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.operation.duration' + ); + expect(operationDuration.length).toBe(1); + expect(operationDuration[0].descriptor).toMatchObject({ + name: 'gen_ai.client.operation.duration', + type: 'HISTOGRAM', + description: 'GenAI operation duration', + unit: 's', + }); + expect(operationDuration[0].dataPoints.length).toBe(1); + expect(operationDuration[0].dataPoints).toEqual([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: expect.any(Number), + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]); + expect( + (operationDuration[0].dataPoints[0].value as any).sum + ).toBeGreaterThan(0); + + const spanCtx = spans[0].spanContext(); + + await loggerProvider.forceFlush(); + const logs = logsExporter.getFinishedLogRecords(); + expect(logs.length).toBe(2); + expect(logs[0].spanContext).toEqual(spanCtx); + expect(logs[0].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.user.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[0].body).toEqual({}); + expect(logs[1].spanContext).toEqual(spanCtx); + expect(logs[1].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[1].body).toEqual({ + finish_reason: 'stop', + index: 0, + message: {}, + }); + }); + + it('records multiple choices', async () => { + const messages = [ + { + role: 'user', + content: input, + }, + ] satisfies OpenAI.Chat.Completions.ChatCompletionMessageParam[]; + const chatCompletion = await client.chat.completions.create({ + model, + messages, + n: 2, + }); + expect(chatCompletion.choices[0].message.content).toEqual( + 'Atlantic Ocean.' + ); + expect(chatCompletion.choices[1].message.content).toEqual( + 'Southern Ocean.' + ); + const spans = getTestSpans(); + expect(spans.length).toBe(1); + expect(spans[0].attributes).toEqual({ + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: ['stop', 'stop'], + [ATTR_GEN_AI_RESPONSE_ID]: expect.stringMatching(/^chatcmpl-/), + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_GEN_AI_USAGE_INPUT_TOKENS]: 22, + [ATTR_GEN_AI_USAGE_OUTPUT_TOKENS]: 6, + }); + + await meterProvider.forceFlush(); + const [resourceMetrics] = metricExporter.getMetrics(); + expect(resourceMetrics.scopeMetrics.length).toBe(1); + const scopeMetrics = resourceMetrics.scopeMetrics[0]; + const tokenUsage = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.token.usage' + ); + + expect(tokenUsage.length).toBe(1); + expect(tokenUsage[0].descriptor).toMatchObject({ + name: 'gen_ai.client.token.usage', + type: 'HISTOGRAM', + description: 'Measures number of input and output tokens used', + unit: '{token}', + }); + expect(tokenUsage[0].dataPoints.length).toBe(2); + expect(tokenUsage[0].dataPoints).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: 22, + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'input', + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + expect.objectContaining({ + value: expect.objectContaining({ + sum: 6, + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'output', + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]) + ); + + const operationDuration = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.operation.duration' + ); + expect(operationDuration.length).toBe(1); + expect(operationDuration[0].descriptor).toMatchObject({ + name: 'gen_ai.client.operation.duration', + type: 'HISTOGRAM', + description: 'GenAI operation duration', + unit: 's', + }); + expect(operationDuration[0].dataPoints.length).toBe(1); + expect(operationDuration[0].dataPoints).toEqual([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: expect.any(Number), + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]); + expect( + (operationDuration[0].dataPoints[0].value as any).sum + ).toBeGreaterThan(0); + + const spanCtx = spans[0].spanContext(); + + await loggerProvider.forceFlush(); + const logs = logsExporter.getFinishedLogRecords(); + expect(logs.length).toBe(3); + expect(logs[0].spanContext).toEqual(spanCtx); + expect(logs[0].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.user.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[0].body).toEqual({}); + expect(logs[1].spanContext).toEqual(spanCtx); + expect(logs[1].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[1].body).toEqual({ + finish_reason: 'stop', + index: 0, + message: {}, + }); + expect(logs[2].spanContext).toEqual(spanCtx); + expect(logs[2].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[2].body).toEqual({ + finish_reason: 'stop', + index: 1, + message: {}, + }); + }); + + it('records tool calls', async () => { + const tools: OpenAI.Chat.Completions.ChatCompletionTool[] = [ + { + type: 'function', + function: { + name: 'get_weather', + strict: true, + parameters: { + type: 'object', + properties: { + location: { type: 'string' }, + }, + required: ['location'], + additionalProperties: false, + }, + }, + }, + ]; + + const messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [ + { + role: 'system', + content: 'You are a helpful assistant providing weather updates.', + }, + { + role: 'user', + content: 'What is the weather in New York City and London?', + }, + ]; + const chatCompletion = await client.chat.completions.create({ + model, + messages, + tools, + }); + expect(chatCompletion.choices[0].message.content).toBeNull(); + + const toolCalls = chatCompletion.choices[0].message.tool_calls!; + expect(toolCalls.length).toBe(2); + + const spans = getTestSpans(); + expect(spans.length).toBe(1); + expect(spans[0].attributes).toEqual({ + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: ['tool_calls'], + [ATTR_GEN_AI_RESPONSE_ID]: expect.stringMatching(/^chatcmpl-/), + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_GEN_AI_USAGE_INPUT_TOKENS]: 57, + [ATTR_GEN_AI_USAGE_OUTPUT_TOKENS]: 46, + }); + + await meterProvider.forceFlush(); + const [resourceMetrics] = metricExporter.getMetrics(); + expect(resourceMetrics.scopeMetrics.length).toBe(1); + const scopeMetrics = resourceMetrics.scopeMetrics[0]; + const tokenUsage = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.token.usage' + ); + + expect(tokenUsage.length).toBe(1); + expect(tokenUsage[0].descriptor).toMatchObject({ + name: 'gen_ai.client.token.usage', + type: 'HISTOGRAM', + description: 'Measures number of input and output tokens used', + unit: '{token}', + }); + expect(tokenUsage[0].dataPoints.length).toBe(2); + expect(tokenUsage[0].dataPoints).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: 57, + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'input', + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + expect.objectContaining({ + value: expect.objectContaining({ + sum: 46, + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'output', + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]) + ); + + const operationDuration = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.operation.duration' + ); + expect(operationDuration.length).toBe(1); + expect(operationDuration[0].descriptor).toMatchObject({ + name: 'gen_ai.client.operation.duration', + type: 'HISTOGRAM', + description: 'GenAI operation duration', + unit: 's', + }); + expect(operationDuration[0].dataPoints.length).toBe(1); + expect(operationDuration[0].dataPoints).toEqual([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: expect.any(Number), + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]); + expect( + (operationDuration[0].dataPoints[0].value as any).sum + ).toBeGreaterThan(0); + + const spanCtx = spans[0].spanContext(); + + await loggerProvider.forceFlush(); + const logs = logsExporter.getFinishedLogRecords(); + expect(logs.length).toBe(3); + expect(logs[0].spanContext).toEqual(spanCtx); + expect(logs[0].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.system.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[0].body).toEqual({}); + expect(logs[1].spanContext).toEqual(spanCtx); + expect(logs[1].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.user.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[1].body).toEqual({}); + expect(logs[1].spanContext).toEqual(spanCtx); + expect(logs[2].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[2].body).toEqual({ + finish_reason: 'tool_calls', + index: 0, + message: { + tool_calls: [ + { + type: 'function', + id: toolCalls[0].id, + function: { + name: 'get_weather', + }, + }, + { + type: 'function', + id: toolCalls[1].id, + function: { + name: 'get_weather', + }, + }, + ], + }, + }); + + metricExporter.reset(); + logsExporter.reset(); + resetMemoryExporter(); + + messages.push({ + role: 'assistant', + tool_calls: toolCalls, + }); + messages.push({ + role: 'tool', + tool_call_id: toolCalls[0].id, + content: '25 degrees and sunny', + }); + messages.push({ + role: 'tool', + tool_call_id: toolCalls[1].id, + content: '15 degrees and raining', + }); + + const chatCompletion1 = await client.chat.completions.create({ + model, + messages, + tools, + }); + + expect(chatCompletion1.choices[0].message.content).toBe( + 'The weather in New York City is 25 degrees and sunny, while in London, it is 15 degrees and raining.' + ); + + const spans1 = getTestSpans(); + expect(spans1.length).toBe(1); + expect(spans1[0].attributes).toEqual({ + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: ['stop'], + [ATTR_GEN_AI_RESPONSE_ID]: expect.stringMatching(/^chatcmpl-/), + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_GEN_AI_USAGE_INPUT_TOKENS]: 125, + [ATTR_GEN_AI_USAGE_OUTPUT_TOKENS]: 26, + }); + + await meterProvider.forceFlush(); + const [resourceMetrics1] = metricExporter.getMetrics(); + expect(resourceMetrics1.scopeMetrics.length).toBe(1); + const scopeMetrics1 = resourceMetrics1.scopeMetrics[0]; + const tokenUsage1 = scopeMetrics1.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.token.usage' + ); + + expect(tokenUsage1.length).toBe(1); + expect(tokenUsage1[0].descriptor).toMatchObject({ + name: 'gen_ai.client.token.usage', + type: 'HISTOGRAM', + description: 'Measures number of input and output tokens used', + unit: '{token}', + }); + expect(tokenUsage1[0].dataPoints.length).toBe(2); + expect(tokenUsage1[0].dataPoints).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: 125, + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'input', + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + expect.objectContaining({ + value: expect.objectContaining({ + sum: 26, + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'output', + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]) + ); + + const operationDuration1 = scopeMetrics1.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.operation.duration' + ); + expect(operationDuration1.length).toBe(1); + expect(operationDuration1[0].descriptor).toMatchObject({ + name: 'gen_ai.client.operation.duration', + type: 'HISTOGRAM', + description: 'GenAI operation duration', + unit: 's', + }); + expect(operationDuration1[0].dataPoints.length).toBe(1); + expect(operationDuration1[0].dataPoints).toEqual([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: expect.any(Number), + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]); + expect( + (operationDuration1[0].dataPoints[0].value as any).sum + ).toBeGreaterThan(0); + + const spanCtx1 = spans1[0].spanContext(); + + await loggerProvider.forceFlush(); + const logs1 = logsExporter.getFinishedLogRecords(); + expect(logs1.length).toBe(6); + expect(logs1[0].spanContext).toEqual(spanCtx1); + expect(logs1[0].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.system.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[0].body).toEqual({}); + expect(logs1[1].spanContext).toEqual(spanCtx1); + expect(logs1[1].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.user.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[1].body).toEqual({}); + expect(logs1[2].spanContext).toEqual(spanCtx1); + expect(logs1[2].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.assistant.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[2].body).toEqual({ + tool_calls: [ + { + type: 'function', + id: toolCalls[0].id, + function: { + name: 'get_weather', + }, + }, + { + type: 'function', + id: toolCalls[1].id, + function: { + name: 'get_weather', + }, + }, + ], + }); + expect(logs1[3].spanContext).toEqual(spanCtx1); + expect(logs1[3].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.tool.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[3].body).toEqual({ + id: toolCalls[0].id, + }); + expect(logs1[4].spanContext).toEqual(spanCtx1); + expect(logs1[4].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.tool.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[4].body).toEqual({ + id: toolCalls[1].id, + }); + expect(logs1[5].spanContext).toEqual(spanCtx1); + expect(logs1[5].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[5].body).toEqual({ + finish_reason: 'stop', + index: 0, + message: {}, + }); + }); + + it('handles connection errors without crashing', async () => { + const messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [ + { + role: 'user', + content: input, + }, + ]; + expect( + new OpenAI({ + baseURL: 'http://localhost:9999/v5', + apiKey, + }).chat.completions.create({ + model, + messages, + }) + ).rejects.toThrow(OpenAI.APIConnectionError); + + // TODO: Figure out why it takes so long to get this span. trace.getTracerProvider()._delegate.forceFlush() didn't help. + await new Promise(resolve => setTimeout(resolve, 2000)); + + const spans = getTestSpans(); + expect(spans.length).toBe(1); + expect(spans[0].attributes).toEqual({ + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_SERVER_ADDRESS]: 'localhost', + [ATTR_SERVER_PORT]: 9999, + [ATTR_ERROR_TYPE]: 'APIConnectionError', + }); + + await meterProvider.forceFlush(); + const [resourceMetrics] = metricExporter.getMetrics(); + expect(resourceMetrics.scopeMetrics.length).toBe(1); + const scopeMetrics = resourceMetrics.scopeMetrics[0]; + const tokenUsage = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.token.usage' + ); + expect(tokenUsage).toHaveLength(0); + + const operationDuration = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.operation.duration' + ); + expect(operationDuration.length).toBe(1); + expect(operationDuration[0].descriptor).toMatchObject({ + name: 'gen_ai.client.operation.duration', + type: 'HISTOGRAM', + description: 'GenAI operation duration', + unit: 's', + }); + expect(operationDuration[0].dataPoints.length).toBe(1); + expect(operationDuration[0].dataPoints).toEqual([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: expect.any(Number), + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_SERVER_ADDRESS]: 'localhost', + [ATTR_SERVER_PORT]: 9999, + [ATTR_ERROR_TYPE]: 'APIConnectionError', + }, + }), + ]); + expect( + (operationDuration[0].dataPoints[0].value as any).sum + ).toBeGreaterThan(0); + + const spanCtx = spans[0].spanContext(); + + await loggerProvider.forceFlush(); + const logs = logsExporter.getFinishedLogRecords(); + expect(logs.length).toBe(1); + expect(logs[0].spanContext).toEqual(spanCtx); + expect(logs[0].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.user.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[0].body).toEqual({}); + }); + }); + + describe('chat completions with content capture', function () { + this.beforeEach(() => { + contentCaptureInstrumentation.enable(); + }); + this.afterEach(() => { + contentCaptureInstrumentation.disable(); + }); + + it('adds genai conventions', async () => { + const messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [ + { + role: 'user', + content: input, + }, + ]; + const chatCompletion = await client.chat.completions.create({ + model, + messages, + }); + expect(chatCompletion.choices[0].message.content).toEqual( + 'South Atlantic Ocean.' + ); + const spans = getTestSpans(); + expect(spans.length).toBe(1); + expect(spans[0].attributes).toEqual({ + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: ['stop'], + [ATTR_GEN_AI_RESPONSE_ID]: expect.stringMatching(/^chatcmpl-/), + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_GEN_AI_USAGE_INPUT_TOKENS]: 22, + [ATTR_GEN_AI_USAGE_OUTPUT_TOKENS]: 4, + }); + + await meterProvider.forceFlush(); + const [resourceMetrics] = metricExporter.getMetrics(); + expect(resourceMetrics.scopeMetrics.length).toBe(1); + const scopeMetrics = resourceMetrics.scopeMetrics[0]; + const tokenUsage = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.token.usage' + ); + + expect(tokenUsage.length).toBe(1); + expect(tokenUsage[0].descriptor).toMatchObject({ + name: 'gen_ai.client.token.usage', + type: 'HISTOGRAM', + description: 'Measures number of input and output tokens used', + unit: '{token}', + }); + expect(tokenUsage[0].dataPoints.length).toBe(2); + expect(tokenUsage[0].dataPoints).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: 22, + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'input', + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + expect.objectContaining({ + value: expect.objectContaining({ + sum: 4, + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'output', + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]) + ); + + const operationDuration = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.operation.duration' + ); + expect(operationDuration.length).toBe(1); + expect(operationDuration[0].descriptor).toMatchObject({ + name: 'gen_ai.client.operation.duration', + type: 'HISTOGRAM', + description: 'GenAI operation duration', + unit: 's', + }); + expect(operationDuration[0].dataPoints.length).toBe(1); + expect(operationDuration[0].dataPoints).toEqual([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: expect.any(Number), + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]); + expect( + (operationDuration[0].dataPoints[0].value as any).sum + ).toBeGreaterThan(0); + + const spanCtx = spans[0].spanContext(); + + await loggerProvider.forceFlush(); + const logs = logsExporter.getFinishedLogRecords(); + expect(logs.length).toBe(2); + expect(logs[0].spanContext).toEqual(spanCtx); + expect(logs[0].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.user.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[0].body).toEqual({ + content: input, + }); + expect(logs[1].spanContext).toEqual(spanCtx); + expect(logs[1].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[1].body).toEqual({ + finish_reason: 'stop', + index: 0, + message: { + content: 'South Atlantic Ocean.', + }, + }); + }); + + it('records multiple choices', async () => { + const messages = [ + { + role: 'user', + content: input, + }, + ] satisfies OpenAI.Chat.Completions.ChatCompletionMessageParam[]; + const chatCompletion = await client.chat.completions.create({ + model, + messages, + n: 2, + }); + expect(chatCompletion.choices[0].message.content).toEqual( + 'South Atlantic Ocean.' + ); + expect(chatCompletion.choices[1].message.content).toEqual( + 'Southern Ocean' + ); + const spans = getTestSpans(); + expect(spans.length).toBe(1); + expect(spans[0].attributes).toEqual({ + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: ['stop', 'stop'], + [ATTR_GEN_AI_RESPONSE_ID]: expect.stringMatching(/^chatcmpl-/), + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_GEN_AI_USAGE_INPUT_TOKENS]: 22, + [ATTR_GEN_AI_USAGE_OUTPUT_TOKENS]: 6, + }); + + await meterProvider.forceFlush(); + const [resourceMetrics] = metricExporter.getMetrics(); + expect(resourceMetrics.scopeMetrics.length).toBe(1); + const scopeMetrics = resourceMetrics.scopeMetrics[0]; + const tokenUsage = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.token.usage' + ); + + expect(tokenUsage.length).toBe(1); + expect(tokenUsage[0].descriptor).toMatchObject({ + name: 'gen_ai.client.token.usage', + type: 'HISTOGRAM', + description: 'Measures number of input and output tokens used', + unit: '{token}', + }); + expect(tokenUsage[0].dataPoints.length).toBe(2); + expect(tokenUsage[0].dataPoints).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: 22, + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'input', + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + expect.objectContaining({ + value: expect.objectContaining({ + sum: 6, + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'output', + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]) + ); + + const operationDuration = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.operation.duration' + ); + expect(operationDuration.length).toBe(1); + expect(operationDuration[0].descriptor).toMatchObject({ + name: 'gen_ai.client.operation.duration', + type: 'HISTOGRAM', + description: 'GenAI operation duration', + unit: 's', + }); + expect(operationDuration[0].dataPoints.length).toBe(1); + expect(operationDuration[0].dataPoints).toEqual([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: expect.any(Number), + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]); + expect( + (operationDuration[0].dataPoints[0].value as any).sum + ).toBeGreaterThan(0); + + const spanCtx = spans[0].spanContext(); + + await loggerProvider.forceFlush(); + const logs = logsExporter.getFinishedLogRecords(); + expect(logs.length).toBe(3); + expect(logs[0].spanContext).toEqual(spanCtx); + expect(logs[0].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.user.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[0].body).toEqual({ + content: input, + }); + expect(logs[1].spanContext).toEqual(spanCtx); + expect(logs[1].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[1].body).toEqual({ + finish_reason: 'stop', + index: 0, + message: { + content: 'South Atlantic Ocean.', + }, + }); + expect(logs[2].spanContext).toEqual(spanCtx); + expect(logs[2].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[2].body).toEqual({ + finish_reason: 'stop', + index: 1, + message: { + content: 'Southern Ocean', + }, + }); + }); + + it('records tool calls', async () => { + const tools: OpenAI.Chat.Completions.ChatCompletionTool[] = [ + { + type: 'function', + function: { + name: 'get_weather', + strict: true, + parameters: { + type: 'object', + properties: { + location: { type: 'string' }, + }, + required: ['location'], + additionalProperties: false, + }, + }, + }, + ]; + + const messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [ + { + role: 'system', + content: 'You are a helpful assistant providing weather updates.', + }, + { + role: 'user', + content: 'What is the weather in New York City and London?', + }, + ]; + const chatCompletion = await client.chat.completions.create({ + model, + messages, + tools, + }); + expect(chatCompletion.choices[0].message.content).toBeNull(); + + const toolCalls = chatCompletion.choices[0].message.tool_calls!; + expect(toolCalls.length).toBe(2); + + const spans = getTestSpans(); + expect(spans.length).toBe(1); + expect(spans[0].attributes).toEqual({ + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: ['tool_calls'], + [ATTR_GEN_AI_RESPONSE_ID]: expect.stringMatching(/^chatcmpl-/), + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_GEN_AI_USAGE_INPUT_TOKENS]: 57, + [ATTR_GEN_AI_USAGE_OUTPUT_TOKENS]: 46, + }); + + await meterProvider.forceFlush(); + const [resourceMetrics] = metricExporter.getMetrics(); + expect(resourceMetrics.scopeMetrics.length).toBe(1); + const scopeMetrics = resourceMetrics.scopeMetrics[0]; + const tokenUsage = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.token.usage' + ); + + expect(tokenUsage.length).toBe(1); + expect(tokenUsage[0].descriptor).toMatchObject({ + name: 'gen_ai.client.token.usage', + type: 'HISTOGRAM', + description: 'Measures number of input and output tokens used', + unit: '{token}', + }); + expect(tokenUsage[0].dataPoints.length).toBe(2); + expect(tokenUsage[0].dataPoints).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: 57, + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'input', + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + expect.objectContaining({ + value: expect.objectContaining({ + sum: 46, + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'output', + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]) + ); + + const operationDuration = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.operation.duration' + ); + expect(operationDuration.length).toBe(1); + expect(operationDuration[0].descriptor).toMatchObject({ + name: 'gen_ai.client.operation.duration', + type: 'HISTOGRAM', + description: 'GenAI operation duration', + unit: 's', + }); + expect(operationDuration[0].dataPoints.length).toBe(1); + expect(operationDuration[0].dataPoints).toEqual([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: expect.any(Number), + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]); + expect( + (operationDuration[0].dataPoints[0].value as any).sum + ).toBeGreaterThan(0); + + const spanCtx = spans[0].spanContext(); + + await loggerProvider.forceFlush(); + const logs = logsExporter.getFinishedLogRecords(); + expect(logs.length).toBe(3); + expect(logs[0].spanContext).toEqual(spanCtx); + expect(logs[0].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.system.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[0].body).toEqual({ + content: 'You are a helpful assistant providing weather updates.', + }); + expect(logs[1].spanContext).toEqual(spanCtx); + expect(logs[1].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.user.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[1].body).toEqual({ + content: 'What is the weather in New York City and London?', + }); + expect(logs[1].spanContext).toEqual(spanCtx); + expect(logs[2].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[2].body).toEqual({ + finish_reason: 'tool_calls', + index: 0, + message: { + tool_calls: [ + { + type: 'function', + id: toolCalls[0].id, + function: { + name: 'get_weather', + arguments: '{"location": "New York City"}', + }, + }, + { + type: 'function', + id: toolCalls[1].id, + function: { + name: 'get_weather', + arguments: '{"location": "London"}', + }, + }, + ], + }, + }); + + metricExporter.reset(); + logsExporter.reset(); + resetMemoryExporter(); + + messages.push({ + role: 'assistant', + tool_calls: toolCalls, + }); + messages.push({ + role: 'tool', + tool_call_id: toolCalls[0].id, + content: '25 degrees and sunny', + }); + messages.push({ + role: 'tool', + tool_call_id: toolCalls[1].id, + content: '15 degrees and raining', + }); + + const chatCompletion1 = await client.chat.completions.create({ + model, + messages, + tools, + }); + + expect(chatCompletion1.choices[0].message.content).toBe( + 'The weather is currently 25 degrees and sunny in New York City, while in London, it is 15 degrees and raining.' + ); + + const spans1 = getTestSpans(); + expect(spans1.length).toBe(1); + expect(spans1[0].attributes).toEqual({ + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: ['stop'], + [ATTR_GEN_AI_RESPONSE_ID]: expect.stringMatching(/^chatcmpl-/), + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_GEN_AI_USAGE_INPUT_TOKENS]: 125, + [ATTR_GEN_AI_USAGE_OUTPUT_TOKENS]: 27, + }); + + await meterProvider.forceFlush(); + const [resourceMetrics1] = metricExporter.getMetrics(); + expect(resourceMetrics1.scopeMetrics.length).toBe(1); + const scopeMetrics1 = resourceMetrics1.scopeMetrics[0]; + const tokenUsage1 = scopeMetrics1.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.token.usage' + ); + + expect(tokenUsage1.length).toBe(1); + expect(tokenUsage1[0].descriptor).toMatchObject({ + name: 'gen_ai.client.token.usage', + type: 'HISTOGRAM', + description: 'Measures number of input and output tokens used', + unit: '{token}', + }); + expect(tokenUsage1[0].dataPoints.length).toBe(2); + expect(tokenUsage1[0].dataPoints).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: 125, + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'input', + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + expect.objectContaining({ + value: expect.objectContaining({ + sum: 27, + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'output', + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]) + ); + + const operationDuration1 = scopeMetrics1.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.operation.duration' + ); + expect(operationDuration1.length).toBe(1); + expect(operationDuration1[0].descriptor).toMatchObject({ + name: 'gen_ai.client.operation.duration', + type: 'HISTOGRAM', + description: 'GenAI operation duration', + unit: 's', + }); + expect(operationDuration1[0].dataPoints.length).toBe(1); + expect(operationDuration1[0].dataPoints).toEqual([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: expect.any(Number), + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]); + expect( + (operationDuration1[0].dataPoints[0].value as any).sum + ).toBeGreaterThan(0); + + const spanCtx1 = spans1[0].spanContext(); + + await loggerProvider.forceFlush(); + const logs1 = logsExporter.getFinishedLogRecords(); + expect(logs1.length).toBe(6); + expect(logs1[0].spanContext).toEqual(spanCtx1); + expect(logs1[0].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.system.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[0].body).toEqual({ + content: 'You are a helpful assistant providing weather updates.', + }); + expect(logs1[1].spanContext).toEqual(spanCtx1); + expect(logs1[1].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.user.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[1].body).toEqual({ + content: 'What is the weather in New York City and London?', + }); + expect(logs1[2].spanContext).toEqual(spanCtx1); + expect(logs1[2].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.assistant.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[2].body).toEqual({ + tool_calls: [ + { + type: 'function', + id: toolCalls[0].id, + function: { + name: 'get_weather', + arguments: '{"location": "New York City"}', + }, + }, + { + type: 'function', + id: toolCalls[1].id, + function: { + name: 'get_weather', + arguments: '{"location": "London"}', + }, + }, + ], + }); + expect(logs1[3].spanContext).toEqual(spanCtx1); + expect(logs1[3].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.tool.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[3].body).toEqual({ + id: toolCalls[0].id, + content: '25 degrees and sunny', + }); + expect(logs1[4].spanContext).toEqual(spanCtx1); + expect(logs1[4].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.tool.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[4].body).toEqual({ + id: toolCalls[1].id, + content: '15 degrees and raining', + }); + expect(logs1[5].spanContext).toEqual(spanCtx1); + expect(logs1[5].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[5].body).toEqual({ + finish_reason: 'stop', + index: 0, + message: { + content: + 'The weather is currently 25 degrees and sunny in New York City, while in London, it is 15 degrees and raining.', + }, + }); + }); + }); + + describe('streaming chat completions', function () { + this.beforeEach(() => { + instrumentation.enable(); + }); + this.afterEach(() => { + instrumentation.disable(); + }); + + it('adds genai conventions', async () => { + const messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [ + { + role: 'user', + content: input, + }, + ]; + const stream = await client.chat.completions.create({ + model, + messages, + stream: true, + }); + let content = ''; + for await (const part of stream) { + content += part.choices[0].delta.content || ''; + } + expect(content).toEqual('Atlantic Ocean.'); + + const spans = getTestSpans(); + expect(spans.length).toBe(1); + expect(spans[0].attributes).toEqual({ + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: ['stop'], + [ATTR_GEN_AI_RESPONSE_ID]: expect.stringMatching(/^chatcmpl-/), + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + }); + + await meterProvider.forceFlush(); + const [resourceMetrics] = metricExporter.getMetrics(); + expect(resourceMetrics.scopeMetrics.length).toBe(1); + const scopeMetrics = resourceMetrics.scopeMetrics[0]; + const tokenUsage = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.token.usage' + ); + + expect(tokenUsage.length).toBe(0); + + const operationDuration = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.operation.duration' + ); + expect(operationDuration.length).toBe(1); + expect(operationDuration[0].descriptor).toMatchObject({ + name: 'gen_ai.client.operation.duration', + type: 'HISTOGRAM', + description: 'GenAI operation duration', + unit: 's', + }); + expect(operationDuration[0].dataPoints.length).toBe(1); + expect(operationDuration[0].dataPoints).toEqual([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: expect.any(Number), + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]); + expect( + (operationDuration[0].dataPoints[0].value as any).sum + ).toBeGreaterThan(0); + + const spanCtx = spans[0].spanContext(); + + await loggerProvider.forceFlush(); + const logs = logsExporter.getFinishedLogRecords(); + expect(logs.length).toBe(2); + expect(logs[0].spanContext).toEqual(spanCtx); + expect(logs[0].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.user.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[0].body).toEqual({}); + expect(logs[1].spanContext).toEqual(spanCtx); + expect(logs[1].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[1].body).toEqual({ + finish_reason: 'stop', + index: 0, + message: {}, + }); + }); + + it('records usage', async () => { + const messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [ + { + role: 'user', + content: input, + }, + ]; + const stream = await client.chat.completions.create({ + model, + messages, + stream: true, + stream_options: { + include_usage: true, + }, + }); + let content = ''; + for await (const part of stream) { + if (part.choices[0]) { + content += part.choices[0].delta.content || ''; + } + } + expect(content).toEqual('South Atlantic Ocean.'); + + const spans = getTestSpans(); + expect(spans.length).toBe(1); + expect(spans[0].attributes).toEqual({ + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: ['stop'], + [ATTR_GEN_AI_RESPONSE_ID]: expect.stringMatching(/^chatcmpl-/), + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_GEN_AI_USAGE_INPUT_TOKENS]: 22, + [ATTR_GEN_AI_USAGE_OUTPUT_TOKENS]: 4, + }); + + await meterProvider.forceFlush(); + const [resourceMetrics] = metricExporter.getMetrics(); + expect(resourceMetrics.scopeMetrics.length).toBe(1); + const scopeMetrics = resourceMetrics.scopeMetrics[0]; + const tokenUsage = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.token.usage' + ); + + expect(tokenUsage.length).toBe(1); + expect(tokenUsage[0].descriptor).toMatchObject({ + name: 'gen_ai.client.token.usage', + type: 'HISTOGRAM', + description: 'Measures number of input and output tokens used', + unit: '{token}', + }); + expect(tokenUsage[0].dataPoints.length).toBe(2); + expect(tokenUsage[0].dataPoints).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: 22, + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'input', + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + expect.objectContaining({ + value: expect.objectContaining({ + sum: 4, + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_TOKEN_TYPE]: 'output', + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]) + ); + + const operationDuration = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.operation.duration' + ); + expect(operationDuration.length).toBe(1); + expect(operationDuration[0].descriptor).toMatchObject({ + name: 'gen_ai.client.operation.duration', + type: 'HISTOGRAM', + description: 'GenAI operation duration', + unit: 's', + }); + expect(operationDuration[0].dataPoints.length).toBe(1); + expect(operationDuration[0].dataPoints).toEqual([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: expect.any(Number), + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]); + expect( + (operationDuration[0].dataPoints[0].value as any).sum + ).toBeGreaterThan(0); + + const spanCtx = spans[0].spanContext(); + + await loggerProvider.forceFlush(); + const logs = logsExporter.getFinishedLogRecords(); + expect(logs.length).toBe(2); + expect(logs[0].spanContext).toEqual(spanCtx); + expect(logs[0].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.user.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[0].body).toEqual({}); + expect(logs[1].spanContext).toEqual(spanCtx); + expect(logs[1].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[1].body).toEqual({ + finish_reason: 'stop', + index: 0, + message: {}, + }); + }); + + it('records multiple choices', async () => { + const messages = [ + { + role: 'user', + content: input, + }, + ] satisfies OpenAI.Chat.Completions.ChatCompletionMessageParam[]; + const stream = await client.chat.completions.create({ + model, + messages, + n: 2, + stream: true, + }); + const choices: string[] = []; + for await (const part of stream) { + const idx = part.choices[0].index; + if (!choices[idx]) { + choices[idx] = ''; + } + choices[idx] += part.choices[0].delta.content || ''; + } + expect(choices[0]).toEqual('Atlantic Ocean.'); + expect(choices[1]).toEqual('Southern Ocean.'); + + const spans = getTestSpans(); + expect(spans.length).toBe(1); + expect(spans[0].attributes).toEqual({ + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: ['stop', 'stop'], + [ATTR_GEN_AI_RESPONSE_ID]: expect.stringMatching(/^chatcmpl-/), + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + }); + + await meterProvider.forceFlush(); + const [resourceMetrics] = metricExporter.getMetrics(); + expect(resourceMetrics.scopeMetrics.length).toBe(1); + const scopeMetrics = resourceMetrics.scopeMetrics[0]; + const tokenUsage = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.token.usage' + ); + + expect(tokenUsage.length).toBe(0); + + const operationDuration = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.operation.duration' + ); + expect(operationDuration.length).toBe(1); + expect(operationDuration[0].descriptor).toMatchObject({ + name: 'gen_ai.client.operation.duration', + type: 'HISTOGRAM', + description: 'GenAI operation duration', + unit: 's', + }); + expect(operationDuration[0].dataPoints.length).toBe(1); + expect(operationDuration[0].dataPoints).toEqual([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: expect.any(Number), + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]); + expect( + (operationDuration[0].dataPoints[0].value as any).sum + ).toBeGreaterThan(0); + + const spanCtx = spans[0].spanContext(); + + await loggerProvider.forceFlush(); + const logs = logsExporter.getFinishedLogRecords(); + expect(logs.length).toBe(3); + expect(logs[0].spanContext).toEqual(spanCtx); + expect(logs[0].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.user.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[0].body).toEqual({}); + expect(logs[1].spanContext).toEqual(spanCtx); + expect(logs[1].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[1].body).toEqual({ + finish_reason: 'stop', + index: 0, + message: {}, + }); + expect(logs[2].spanContext).toEqual(spanCtx); + expect(logs[2].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[2].body).toEqual({ + finish_reason: 'stop', + index: 1, + message: {}, + }); + }); + + it('records tool calls', async () => { + const tools: OpenAI.Chat.Completions.ChatCompletionTool[] = [ + { + type: 'function', + function: { + name: 'get_weather', + strict: true, + parameters: { + type: 'object', + properties: { + location: { type: 'string' }, + }, + required: ['location'], + additionalProperties: false, + }, + }, + }, + ]; + + const messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [ + { + role: 'system', + content: 'You are a helpful assistant providing weather updates.', + }, + { + role: 'user', + content: 'What is the weather in New York City and London?', + }, + ]; + const stream = await client.chat.completions.create({ + model, + messages, + tools, + stream: true, + }); + + const toolCalls: any[] = []; + for await (const part of stream) { + const delta = part.choices[0].delta; + if (delta.tool_calls) { + for (const toolCall of delta.tool_calls) { + if (toolCall.id) { + toolCalls[toolCall.index] = toolCall; + } else { + toolCalls[toolCall.index] = { + ...toolCalls[toolCall.index], + function: { + ...toolCalls[toolCall.index].function, + arguments: + (toolCalls[toolCall.index].function?.arguments ?? '') + + (toolCall.function?.arguments ?? ''), + }, + }; + } + } + } + } + expect(toolCalls.length).toBe(2); + + const spans = getTestSpans(); + expect(spans.length).toBe(1); + expect(spans[0].attributes).toEqual({ + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: ['tool_calls'], + [ATTR_GEN_AI_RESPONSE_ID]: expect.stringMatching(/^chatcmpl-/), + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + }); + + await meterProvider.forceFlush(); + const [resourceMetrics] = metricExporter.getMetrics(); + expect(resourceMetrics.scopeMetrics.length).toBe(1); + const scopeMetrics = resourceMetrics.scopeMetrics[0]; + const tokenUsage = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.token.usage' + ); + + expect(tokenUsage.length).toBe(0); + + const operationDuration = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.operation.duration' + ); + expect(operationDuration.length).toBe(1); + expect(operationDuration[0].descriptor).toMatchObject({ + name: 'gen_ai.client.operation.duration', + type: 'HISTOGRAM', + description: 'GenAI operation duration', + unit: 's', + }); + expect(operationDuration[0].dataPoints.length).toBe(1); + expect(operationDuration[0].dataPoints).toEqual([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: expect.any(Number), + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]); + expect( + (operationDuration[0].dataPoints[0].value as any).sum + ).toBeGreaterThan(0); + + const spanCtx = spans[0].spanContext(); + + await loggerProvider.forceFlush(); + const logs = logsExporter.getFinishedLogRecords(); + expect(logs.length).toBe(3); + expect(logs[0].spanContext).toEqual(spanCtx); + expect(logs[0].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.system.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[0].body).toEqual({}); + expect(logs[1].spanContext).toEqual(spanCtx); + expect(logs[1].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.user.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[1].body).toEqual({}); + expect(logs[1].spanContext).toEqual(spanCtx); + expect(logs[2].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[2].body).toEqual({ + finish_reason: 'tool_calls', + index: 0, + message: { + tool_calls: [ + { + type: 'function', + id: toolCalls[0].id, + function: { + name: 'get_weather', + }, + }, + { + type: 'function', + id: toolCalls[1].id, + function: { + name: 'get_weather', + }, + }, + ], + }, + }); + + metricExporter.reset(); + logsExporter.reset(); + resetMemoryExporter(); + + messages.push({ + role: 'assistant', + tool_calls: toolCalls, + }); + messages.push({ + role: 'tool', + tool_call_id: toolCalls[0].id, + content: '25 degrees and sunny', + }); + messages.push({ + role: 'tool', + tool_call_id: toolCalls[1].id, + content: '15 degrees and raining', + }); + + const chatCompletion1 = await client.chat.completions.create({ + model, + messages, + tools, + stream: true, + }); + + let content = ''; + for await (const part of chatCompletion1) { + content += part.choices[0].delta.content || ''; + } + + expect(content).toBe( + 'The weather in New York City is 25 degrees and sunny, while in London, it is 15 degrees and raining.' + ); + + const spans1 = getTestSpans(); + expect(spans1.length).toBe(1); + expect(spans1[0].attributes).toEqual({ + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: ['stop'], + [ATTR_GEN_AI_RESPONSE_ID]: expect.stringMatching(/^chatcmpl-/), + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + }); + + await meterProvider.forceFlush(); + const [resourceMetrics1] = metricExporter.getMetrics(); + expect(resourceMetrics1.scopeMetrics.length).toBe(1); + const scopeMetrics1 = resourceMetrics1.scopeMetrics[0]; + const tokenUsage1 = scopeMetrics1.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.token.usage' + ); + + expect(tokenUsage1.length).toBe(0); + + const operationDuration1 = scopeMetrics1.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.operation.duration' + ); + expect(operationDuration1.length).toBe(1); + expect(operationDuration1[0].descriptor).toMatchObject({ + name: 'gen_ai.client.operation.duration', + type: 'HISTOGRAM', + description: 'GenAI operation duration', + unit: 's', + }); + expect(operationDuration1[0].dataPoints.length).toBe(1); + expect(operationDuration1[0].dataPoints).toEqual([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: expect.any(Number), + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]); + expect( + (operationDuration1[0].dataPoints[0].value as any).sum + ).toBeGreaterThan(0); + + const spanCtx1 = spans1[0].spanContext(); + + await loggerProvider.forceFlush(); + const logs1 = logsExporter.getFinishedLogRecords(); + expect(logs1.length).toBe(6); + expect(logs1[0].spanContext).toEqual(spanCtx1); + expect(logs1[0].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.system.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[0].body).toEqual({}); + expect(logs1[1].spanContext).toEqual(spanCtx1); + expect(logs1[1].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.user.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[1].body).toEqual({}); + expect(logs1[2].spanContext).toEqual(spanCtx1); + expect(logs1[2].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.assistant.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[2].body).toEqual({ + tool_calls: [ + { + type: 'function', + id: toolCalls[0].id, + function: { + name: 'get_weather', + }, + }, + { + type: 'function', + id: toolCalls[1].id, + function: { + name: 'get_weather', + }, + }, + ], + }); + expect(logs1[3].spanContext).toEqual(spanCtx1); + expect(logs1[3].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.tool.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[3].body).toEqual({ + id: toolCalls[0].id, + }); + expect(logs1[4].spanContext).toEqual(spanCtx1); + expect(logs1[4].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.tool.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[4].body).toEqual({ + id: toolCalls[1].id, + }); + expect(logs1[5].spanContext).toEqual(spanCtx1); + expect(logs1[5].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[5].body).toEqual({ + finish_reason: 'stop', + index: 0, + message: {}, + }); + }); + + it('does not misbehave with double iteration', async () => { + const messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [ + { + role: 'user', + content: input, + }, + ]; + const stream = await client.chat.completions.create({ + model, + messages, + stream: true, + }); + let content = ''; + for await (const part of stream) { + content += part.choices[0].delta.content || ''; + } + expect(async () => { + for await (const part of stream) { + content += part.choices[0].delta.content || ''; + } + }).rejects.toThrow(); + expect(content).toEqual('South Atlantic Ocean.'); + + const spans = getTestSpans(); + expect(spans.length).toBe(1); + expect(spans[0].attributes).toEqual({ + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: ['stop'], + [ATTR_GEN_AI_RESPONSE_ID]: expect.stringMatching(/^chatcmpl-/), + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + }); + + await meterProvider.forceFlush(); + const [resourceMetrics] = metricExporter.getMetrics(); + expect(resourceMetrics.scopeMetrics.length).toBe(1); + const scopeMetrics = resourceMetrics.scopeMetrics[0]; + const tokenUsage = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.token.usage' + ); + + expect(tokenUsage.length).toBe(0); + + const operationDuration = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.operation.duration' + ); + expect(operationDuration.length).toBe(1); + expect(operationDuration[0].descriptor).toMatchObject({ + name: 'gen_ai.client.operation.duration', + type: 'HISTOGRAM', + description: 'GenAI operation duration', + unit: 's', + }); + expect(operationDuration[0].dataPoints.length).toBe(1); + expect(operationDuration[0].dataPoints).toEqual([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: expect.any(Number), + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]); + expect( + (operationDuration[0].dataPoints[0].value as any).sum + ).toBeGreaterThan(0); + + const spanCtx = spans[0].spanContext(); + + await loggerProvider.forceFlush(); + const logs = logsExporter.getFinishedLogRecords(); + expect(logs.length).toBe(2); + expect(logs[0].spanContext).toEqual(spanCtx); + expect(logs[0].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.user.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[0].body).toEqual({}); + expect(logs[1].spanContext).toEqual(spanCtx); + expect(logs[1].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[1].body).toEqual({ + finish_reason: 'stop', + index: 0, + message: {}, + }); + }); + + it('does not prevent usage of tee', async () => { + const messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [ + { + role: 'user', + content: input, + }, + ]; + const stream = await client.chat.completions.create({ + model, + messages, + stream: true, + }); + let content0 = ''; + const [left, right] = stream.tee(); + for await (const part of left) { + content0 += part.choices[0].delta.content || ''; + } + let content1 = ''; + for await (const part of right) { + content1 += part.choices[0].delta.content || ''; + } + expect(content0).toEqual('Atlantic Ocean.'); + expect(content1).toEqual('Atlantic Ocean.'); + + const spans = getTestSpans(); + expect(spans.length).toBe(1); + expect(spans[0].attributes).toEqual({ + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: ['stop'], + [ATTR_GEN_AI_RESPONSE_ID]: expect.stringMatching(/^chatcmpl-/), + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + }); + + await meterProvider.forceFlush(); + const [resourceMetrics] = metricExporter.getMetrics(); + expect(resourceMetrics.scopeMetrics.length).toBe(1); + const scopeMetrics = resourceMetrics.scopeMetrics[0]; + const tokenUsage = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.token.usage' + ); + + expect(tokenUsage.length).toBe(0); + + const operationDuration = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.operation.duration' + ); + expect(operationDuration.length).toBe(1); + expect(operationDuration[0].descriptor).toMatchObject({ + name: 'gen_ai.client.operation.duration', + type: 'HISTOGRAM', + description: 'GenAI operation duration', + unit: 's', + }); + expect(operationDuration[0].dataPoints.length).toBe(1); + expect(operationDuration[0].dataPoints).toEqual([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: expect.any(Number), + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]); + expect( + (operationDuration[0].dataPoints[0].value as any).sum + ).toBeGreaterThan(0); + + const spanCtx = spans[0].spanContext(); + + await loggerProvider.forceFlush(); + const logs = logsExporter.getFinishedLogRecords(); + expect(logs.length).toBe(2); + expect(logs[0].spanContext).toEqual(spanCtx); + expect(logs[0].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.user.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[0].body).toEqual({}); + expect(logs[1].spanContext).toEqual(spanCtx); + expect(logs[1].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[1].body).toEqual({ + finish_reason: 'stop', + index: 0, + message: {}, + }); + }); + }); + + describe('streaming chat completions with content capture', function () { + this.beforeEach(() => { + contentCaptureInstrumentation.enable(); + }); + this.afterEach(() => { + contentCaptureInstrumentation.disable(); + }); + + it('adds genai conventions', async () => { + const messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [ + { + role: 'user', + content: input, + }, + ]; + const stream = await client.chat.completions.create({ + model, + messages, + stream: true, + }); + let content = ''; + for await (const part of stream) { + content += part.choices[0].delta.content || ''; + } + expect(content).toEqual('Atlantic Ocean.'); + + const spans = getTestSpans(); + expect(spans.length).toBe(1); + expect(spans[0].attributes).toEqual({ + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: ['stop'], + [ATTR_GEN_AI_RESPONSE_ID]: expect.stringMatching(/^chatcmpl-/), + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + }); + + await meterProvider.forceFlush(); + const [resourceMetrics] = metricExporter.getMetrics(); + expect(resourceMetrics.scopeMetrics.length).toBe(1); + const scopeMetrics = resourceMetrics.scopeMetrics[0]; + const tokenUsage = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.token.usage' + ); + + expect(tokenUsage.length).toBe(0); + + const operationDuration = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.operation.duration' + ); + expect(operationDuration.length).toBe(1); + expect(operationDuration[0].descriptor).toMatchObject({ + name: 'gen_ai.client.operation.duration', + type: 'HISTOGRAM', + description: 'GenAI operation duration', + unit: 's', + }); + expect(operationDuration[0].dataPoints.length).toBe(1); + expect(operationDuration[0].dataPoints).toEqual([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: expect.any(Number), + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]); + expect( + (operationDuration[0].dataPoints[0].value as any).sum + ).toBeGreaterThan(0); + + const spanCtx = spans[0].spanContext(); + + await loggerProvider.forceFlush(); + const logs = logsExporter.getFinishedLogRecords(); + expect(logs.length).toBe(2); + expect(logs[0].spanContext).toEqual(spanCtx); + expect(logs[0].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.user.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[0].body).toEqual({ + content: input, + }); + expect(logs[1].spanContext).toEqual(spanCtx); + expect(logs[1].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[1].body).toEqual({ + finish_reason: 'stop', + index: 0, + message: { + content: 'Atlantic Ocean.', + }, + }); + }); + + it('records multiple choices', async () => { + const messages = [ + { + role: 'user', + content: input, + }, + ] satisfies OpenAI.Chat.Completions.ChatCompletionMessageParam[]; + const stream = await client.chat.completions.create({ + model, + messages, + n: 2, + stream: true, + }); + const choices: string[] = []; + for await (const part of stream) { + const idx = part.choices[0].index; + if (!choices[idx]) { + choices[idx] = ''; + } + choices[idx] += part.choices[0].delta.content || ''; + } + expect(choices[0]).toEqual('Southern Ocean.'); + expect(choices[1]).toEqual('Atlantic Ocean.'); + + const spans = getTestSpans(); + expect(spans.length).toBe(1); + expect(spans[0].attributes).toEqual({ + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: ['stop', 'stop'], + [ATTR_GEN_AI_RESPONSE_ID]: expect.stringMatching(/^chatcmpl-/), + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + }); + + await meterProvider.forceFlush(); + const [resourceMetrics] = metricExporter.getMetrics(); + expect(resourceMetrics.scopeMetrics.length).toBe(1); + const scopeMetrics = resourceMetrics.scopeMetrics[0]; + const tokenUsage = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.token.usage' + ); + + expect(tokenUsage.length).toBe(0); + + const operationDuration = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.operation.duration' + ); + expect(operationDuration.length).toBe(1); + expect(operationDuration[0].descriptor).toMatchObject({ + name: 'gen_ai.client.operation.duration', + type: 'HISTOGRAM', + description: 'GenAI operation duration', + unit: 's', + }); + expect(operationDuration[0].dataPoints.length).toBe(1); + expect(operationDuration[0].dataPoints).toEqual([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: expect.any(Number), + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]); + expect( + (operationDuration[0].dataPoints[0].value as any).sum + ).toBeGreaterThan(0); + + const spanCtx = spans[0].spanContext(); + + await loggerProvider.forceFlush(); + const logs = logsExporter.getFinishedLogRecords(); + expect(logs.length).toBe(3); + expect(logs[0].spanContext).toEqual(spanCtx); + expect(logs[0].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.user.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[0].body).toEqual({ + content: input, + }); + expect(logs[1].spanContext).toEqual(spanCtx); + expect(logs[1].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[1].body).toEqual({ + finish_reason: 'stop', + index: 0, + message: { + content: 'Southern Ocean.', + }, + }); + expect(logs[2].spanContext).toEqual(spanCtx); + expect(logs[2].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[2].body).toEqual({ + finish_reason: 'stop', + index: 1, + message: { + content: 'Atlantic Ocean.', + }, + }); + }); + + it('records tool calls', async () => { + const tools: OpenAI.Chat.Completions.ChatCompletionTool[] = [ + { + type: 'function', + function: { + name: 'get_weather', + strict: true, + parameters: { + type: 'object', + properties: { + location: { type: 'string' }, + }, + required: ['location'], + additionalProperties: false, + }, + }, + }, + ]; + + const messages: OpenAI.Chat.Completions.ChatCompletionMessageParam[] = [ + { + role: 'system', + content: 'You are a helpful assistant providing weather updates.', + }, + { + role: 'user', + content: 'What is the weather in New York City and London?', + }, + ]; + const stream = await client.chat.completions.create({ + model, + messages, + tools, + stream: true, + }); + + const toolCalls: any[] = []; + for await (const part of stream) { + const delta = part.choices[0].delta; + if (delta.tool_calls) { + for (const toolCall of delta.tool_calls) { + if (toolCall.id) { + toolCalls[toolCall.index] = toolCall; + } else { + toolCalls[toolCall.index] = { + ...toolCalls[toolCall.index], + function: { + ...toolCalls[toolCall.index].function, + arguments: + (toolCalls[toolCall.index].function?.arguments ?? '') + + (toolCall.function?.arguments ?? ''), + }, + }; + } + } + } + } + expect(toolCalls.length).toBe(2); + + const spans = getTestSpans(); + expect(spans.length).toBe(1); + expect(spans[0].attributes).toEqual({ + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: ['tool_calls'], + [ATTR_GEN_AI_RESPONSE_ID]: expect.stringMatching(/^chatcmpl-/), + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + }); + + await meterProvider.forceFlush(); + const [resourceMetrics] = metricExporter.getMetrics(); + expect(resourceMetrics.scopeMetrics.length).toBe(1); + const scopeMetrics = resourceMetrics.scopeMetrics[0]; + const tokenUsage = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.token.usage' + ); + + expect(tokenUsage.length).toBe(0); + + const operationDuration = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.operation.duration' + ); + expect(operationDuration.length).toBe(1); + expect(operationDuration[0].descriptor).toMatchObject({ + name: 'gen_ai.client.operation.duration', + type: 'HISTOGRAM', + description: 'GenAI operation duration', + unit: 's', + }); + expect(operationDuration[0].dataPoints.length).toBe(1); + expect(operationDuration[0].dataPoints).toEqual([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: expect.any(Number), + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]); + expect( + (operationDuration[0].dataPoints[0].value as any).sum + ).toBeGreaterThan(0); + + const spanCtx = spans[0].spanContext(); + + await loggerProvider.forceFlush(); + const logs = logsExporter.getFinishedLogRecords(); + expect(logs.length).toBe(3); + expect(logs[0].spanContext).toEqual(spanCtx); + expect(logs[0].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.system.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[0].body).toEqual({ + content: 'You are a helpful assistant providing weather updates.', + }); + expect(logs[1].spanContext).toEqual(spanCtx); + expect(logs[1].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.user.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[1].body).toEqual({ + content: 'What is the weather in New York City and London?', + }); + expect(logs[1].spanContext).toEqual(spanCtx); + expect(logs[2].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs[2].body).toEqual({ + finish_reason: 'tool_calls', + index: 0, + message: { + tool_calls: [ + { + type: 'function', + id: toolCalls[0].id, + function: { + name: 'get_weather', + arguments: '{"location": "New York City"}', + }, + }, + { + type: 'function', + id: toolCalls[1].id, + function: { + name: 'get_weather', + arguments: '{"location": "London"}', + }, + }, + ], + }, + }); + + metricExporter.reset(); + logsExporter.reset(); + resetMemoryExporter(); + + messages.push({ + role: 'assistant', + tool_calls: toolCalls, + }); + messages.push({ + role: 'tool', + tool_call_id: toolCalls[0].id, + content: '25 degrees and sunny', + }); + messages.push({ + role: 'tool', + tool_call_id: toolCalls[1].id, + content: '15 degrees and raining', + }); + + const chatCompletion1 = await client.chat.completions.create({ + model, + messages, + tools, + stream: true, + }); + + let content = ''; + for await (const part of chatCompletion1) { + content += part.choices[0].delta.content || ''; + } + + expect(content).toBe( + 'The weather is currently 25 degrees and sunny in New York City, while in London, it is 15 degrees and raining.' + ); + + const spans1 = getTestSpans(); + expect(spans1.length).toBe(1); + expect(spans1[0].attributes).toEqual({ + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + [ATTR_GEN_AI_RESPONSE_FINISH_REASONS]: ['stop'], + [ATTR_GEN_AI_RESPONSE_ID]: expect.stringMatching(/^chatcmpl-/), + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + }); + + await meterProvider.forceFlush(); + const [resourceMetrics1] = metricExporter.getMetrics(); + expect(resourceMetrics1.scopeMetrics.length).toBe(1); + const scopeMetrics1 = resourceMetrics1.scopeMetrics[0]; + const tokenUsage1 = scopeMetrics1.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.token.usage' + ); + + expect(tokenUsage1.length).toBe(0); + + const operationDuration1 = scopeMetrics1.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.operation.duration' + ); + expect(operationDuration1.length).toBe(1); + expect(operationDuration1[0].descriptor).toMatchObject({ + name: 'gen_ai.client.operation.duration', + type: 'HISTOGRAM', + description: 'GenAI operation duration', + unit: 's', + }); + expect(operationDuration1[0].dataPoints.length).toBe(1); + expect(operationDuration1[0].dataPoints).toEqual([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: expect.any(Number), + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'chat', + [ATTR_GEN_AI_REQUEST_MODEL]: model, + [ATTR_GEN_AI_RESPONSE_MODEL]: 'gpt-4o-mini-2024-07-18', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]); + expect( + (operationDuration1[0].dataPoints[0].value as any).sum + ).toBeGreaterThan(0); + + const spanCtx1 = spans1[0].spanContext(); + + await loggerProvider.forceFlush(); + const logs1 = logsExporter.getFinishedLogRecords(); + expect(logs1.length).toBe(6); + expect(logs1[0].spanContext).toEqual(spanCtx1); + expect(logs1[0].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.system.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[0].body).toEqual({ + content: 'You are a helpful assistant providing weather updates.', + }); + expect(logs1[1].spanContext).toEqual(spanCtx1); + expect(logs1[1].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.user.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[1].body).toEqual({ + content: 'What is the weather in New York City and London?', + }); + expect(logs1[2].spanContext).toEqual(spanCtx1); + expect(logs1[2].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.assistant.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[2].body).toEqual({ + tool_calls: [ + { + type: 'function', + id: toolCalls[0].id, + function: { + name: 'get_weather', + arguments: '{"location": "New York City"}', + }, + }, + { + type: 'function', + id: toolCalls[1].id, + function: { + name: 'get_weather', + arguments: '{"location": "London"}', + }, + }, + ], + }); + expect(logs1[3].spanContext).toEqual(spanCtx1); + expect(logs1[3].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.tool.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[3].body).toEqual({ + id: toolCalls[0].id, + content: '25 degrees and sunny', + }); + expect(logs1[4].spanContext).toEqual(spanCtx1); + expect(logs1[4].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.tool.message', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[4].body).toEqual({ + id: toolCalls[1].id, + content: '15 degrees and raining', + }); + expect(logs1[5].spanContext).toEqual(spanCtx1); + expect(logs1[5].attributes).toEqual({ + [ATTR_EVENT_NAME]: 'gen_ai.choice', + [ATTR_GEN_AI_SYSTEM]: 'openai', + }); + expect(logs1[5].body).toEqual({ + finish_reason: 'stop', + index: 0, + message: { + content: + 'The weather is currently 25 degrees and sunny in New York City, while in London, it is 15 degrees and raining.', + }, + }); + }); + }); + + describe('embeddings', function () { + this.beforeEach(() => { + instrumentation.enable(); + }); + this.afterEach(() => { + instrumentation.disable(); + }); + + it('adds genai conventions', async () => { + const embedding = await client.embeddings.create({ + model: 'text-embedding-3-small', + input: ['One fish', 'two fish', 'red fish', 'blue fish'], + encoding_format: 'float', + }); + expect(embedding.data.length).toBe(4); + + const spans = getTestSpans(); + expect(spans.length).toBe(1); + expect(spans[0].attributes).toEqual({ + [ATTR_GEN_AI_OPERATION_NAME]: 'embeddings', + [ATTR_GEN_AI_REQUEST_MODEL]: 'text-embedding-3-small', + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + [ATTR_GEN_AI_RESPONSE_MODEL]: 'text-embedding-3-small', + [ATTR_GEN_AI_REQUEST_ENCODING_FORMATS]: ['float'], + [ATTR_GEN_AI_USAGE_INPUT_TOKENS]: 8, + }); + + await meterProvider.forceFlush(); + const [resourceMetrics] = metricExporter.getMetrics(); + expect(resourceMetrics.scopeMetrics.length).toBe(1); + const scopeMetrics = resourceMetrics.scopeMetrics[0]; + const tokenUsage = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.token.usage' + ); + + expect(tokenUsage.length).toBe(1); + expect(tokenUsage[0].descriptor).toMatchObject({ + name: 'gen_ai.client.token.usage', + type: 'HISTOGRAM', + description: 'Measures number of input and output tokens used', + unit: '{token}', + }); + expect(tokenUsage[0].dataPoints.length).toBe(1); + expect(tokenUsage[0].dataPoints).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: 8, + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'embeddings', + [ATTR_GEN_AI_REQUEST_MODEL]: 'text-embedding-3-small', + [ATTR_GEN_AI_TOKEN_TYPE]: 'input', + [ATTR_GEN_AI_RESPONSE_MODEL]: 'text-embedding-3-small', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]) + ); + + const operationDuration = scopeMetrics.metrics.filter( + m => m.descriptor.name === 'gen_ai.client.operation.duration' + ); + expect(operationDuration.length).toBe(1); + expect(operationDuration[0].descriptor).toMatchObject({ + name: 'gen_ai.client.operation.duration', + type: 'HISTOGRAM', + description: 'GenAI operation duration', + unit: 's', + }); + expect(operationDuration[0].dataPoints.length).toBe(1); + expect(operationDuration[0].dataPoints).toEqual([ + expect.objectContaining({ + value: expect.objectContaining({ + sum: expect.any(Number), + }), + attributes: { + [ATTR_GEN_AI_SYSTEM]: 'openai', + [ATTR_GEN_AI_OPERATION_NAME]: 'embeddings', + [ATTR_GEN_AI_REQUEST_MODEL]: 'text-embedding-3-small', + [ATTR_GEN_AI_RESPONSE_MODEL]: 'text-embedding-3-small', + [ATTR_SERVER_ADDRESS]: 'api.openai.com', + [ATTR_SERVER_PORT]: 443, + }, + }), + ]); + expect( + (operationDuration[0].dataPoints[0].value as any).sum + ).toBeGreaterThan(0); + }); + }); +}); diff --git a/packages/instrumentation-openai/tsconfig.json b/packages/instrumentation-openai/tsconfig.json new file mode 100644 index 0000000000..4078877ce6 --- /dev/null +++ b/packages/instrumentation-openai/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.base", + "compilerOptions": { + "rootDir": ".", + "outDir": "build" + }, + "include": [ + "src/**/*.ts", + "test/**/*.ts" + ] +} diff --git a/packages/instrumentation-oracledb/.eslintrc.js b/packages/instrumentation-oracledb/.eslintrc.js index af8a1ac3ee..a84ad1caf5 100644 --- a/packages/instrumentation-oracledb/.eslintrc.js +++ b/packages/instrumentation-oracledb/.eslintrc.js @@ -1,19 +1,41 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Copyright (c) 2025, Oracle and/or its affiliates. + * */ const parentConfig = require('../../eslint.config.js'); module.exports = { - extends: '../../eslint.config.js', // Extends the top-level config - ignorePatterns: [ - ...(parentConfig.ignorePatterns || []), // Retain parent's ignorePatterns array - 'src/version.ts', // ignore this file - ], - env: { - mocha: true, - node: true - }, - rules: { - "header/header": ["error", "block", [{ - pattern: /\* Copyright The OpenTelemetry Authors(?:, [^,\r\n]*)?[\r\n]+ \*[\r\n]+ \* Licensed under the Apache License, Version 2\.0 \(the "License"\);[\r\n]+ \* you may not use this file except in compliance with the License\.[\r\n]+ \* You may obtain a copy of the License at[\r\n]+ \*[\r\n]+ \* {6}https:\/\/www\.apache\.org\/licenses\/LICENSE-2\.0[\r\n]+ \*[\r\n]+ \* Unless required by applicable law or agreed to in writing, software[\r\n]+ \* distributed under the License is distributed on an "AS IS" BASIS,[\r\n]+ \* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied\.[\r\n]+ \* See the License for the specific language governing permissions and[\r\n]+ \* limitations under the License\.[\r\n]+ \*[\r\n]+ \* Copyright \(c\) 2025, Oracle and\/or its affiliates\.[\r\n]+ \*/gm, - template: ` + extends: '../../eslint.config.js', // Extends the top-level config + ignorePatterns: [ + ...(parentConfig.ignorePatterns || []), // Retain parent's ignorePatterns array + 'src/version.ts', // ignore this file + ], + env: { + mocha: true, + node: true, + }, + rules: { + 'header/header': [ + 'error', + 'block', + [ + { + pattern: + /\* Copyright The OpenTelemetry Authors(?:, [^,\r\n]*)?[\r\n]+ \*[\r\n]+ \* Licensed under the Apache License, Version 2\.0 \(the "License"\);[\r\n]+ \* you may not use this file except in compliance with the License\.[\r\n]+ \* You may obtain a copy of the License at[\r\n]+ \*[\r\n]+ \* {6}https:\/\/www\.apache\.org\/licenses\/LICENSE-2\.0[\r\n]+ \*[\r\n]+ \* Unless required by applicable law or agreed to in writing, software[\r\n]+ \* distributed under the License is distributed on an "AS IS" BASIS,[\r\n]+ \* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied\.[\r\n]+ \* See the License for the specific language governing permissions and[\r\n]+ \* limitations under the License\.[\r\n]+ \*[\r\n]+ \* Copyright \(c\) 2025, Oracle and\/or its affiliates\.[\r\n]+ \*/gm, + template: ` * Copyright The OpenTelemetry Authors * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -29,8 +51,9 @@ module.exports = { * limitations under the License. * * Copyright (c) 2025, Oracle and/or its affiliates. - * ` - }]] - } -} - + * `, + }, + ], + ], + }, +}; diff --git a/packages/instrumentation-oracledb/CHANGELOG.md b/packages/instrumentation-oracledb/CHANGELOG.md index ae221d5fde..2972dc9a78 100644 --- a/packages/instrumentation-oracledb/CHANGELOG.md +++ b/packages/instrumentation-oracledb/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.30.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-oracledb-v0.29.0...instrumentation-oracledb-v0.30.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + ## [0.29.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-oracledb-v0.28.0...instrumentation-oracledb-v0.29.0) (2025-07-09) diff --git a/packages/instrumentation-oracledb/package.json b/packages/instrumentation-oracledb/package.json index afa79b275b..c62d8ed74a 100644 --- a/packages/instrumentation-oracledb/package.json +++ b/packages/instrumentation-oracledb/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-oracledb", - "version": "0.29.0", + "version": "0.30.0", "description": "OpenTelemetry instrumentation for `oracledb` database client for Oracle DB", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -11,19 +11,22 @@ }, "scripts": { "clean": "rimraf build/*", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-oracledb", "compile": "tsc -p .", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-oracledb", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "lint:readme": "node ../../scripts/lint-readme.js", "prewatch": "npm run precompile", "prepublishOnly": "npm run compile", "tdd": "npm run test -- --watch-extensions ts --watch", - "test": "nyc mocha 'test/**/*.test.ts'", - "test-all-versions": "tav", - "test-all-versions:local": "cross-env RUN_ORACLEDB_TESTS_LOCAL=true npm run test-all-versions", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", "test:debug": "mocha --inspect-brk --no-timeouts 'test/**/*.test.ts'", - "test:local": "cross-env RUN_ORACLEDB_TESTS_LOCAL=true npm run test", + "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm test", + "test-all-versions": "tav", + "test-all-versions:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm run test-all-versions", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "test-services:start": "cd ../.. && npm run test-services:start oracledb", + "test-services:stop": "cd ../.. && npm run test-services:stop oracledb", "version:update": "node ../../scripts/version-update.js", "watch": "tsc -w" }, @@ -55,7 +58,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", @@ -71,7 +74,7 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/oracledb": "6.5.2" }, diff --git a/packages/instrumentation-oracledb/test/oracle.test.ts b/packages/instrumentation-oracledb/test/oracle.test.ts index c8857eed25..0eec83b0ac 100644 --- a/packages/instrumentation-oracledb/test/oracle.test.ts +++ b/packages/instrumentation-oracledb/test/oracle.test.ts @@ -395,8 +395,7 @@ describe('oracledb', () => { let connection: oracledb.Connection; const testOracleDB = process.env.RUN_ORACLEDB_TESTS; // For CI: assumes local oracledb is already available - const testOracleDBLocally = process.env.RUN_ORACLEDB_TESTS_LOCAL; // For local: spins up local oracledb via docker - const shouldTest = testOracleDB || testOracleDBLocally; // Skips these tests if false (default) + const shouldTest = testOracleDB; // Skips these tests if false (default) const sql = 'select 1 from dual'; const sqlWithBinds = 'select :1 from dual'; const sqlWithBindsByName = 'select :name from dual'; @@ -483,29 +482,7 @@ describe('oracledb', () => { skip(); } - if (testOracleDBLocally) { - testUtils.startDocker('oracledb'); - - // increase test time - this.timeout(50000); - - // check if docker container is up - let retries = 6; - while (retries-- > 0) { - try { - connection = await oracledb.getConnection(CONFIG); - break; - } catch (err) { - console.log('retry count %d failed waiting for DB', retries); - await new Promise(r => setTimeout(r, 10000)); - } - } - if (retries < 0) { - throw new Error('docker setup Failed'); - } - } else { - connection = await oracledb.getConnection(CONFIG); - } + connection = await oracledb.getConnection(CONFIG); await doSetup(); updateAttrSpanList(connection); contextManager = new AsyncLocalStorageContextManager().enable(); @@ -520,10 +497,6 @@ describe('oracledb', () => { await connection.close(); } instrumentation.disable(); - if (testOracleDBLocally) { - this.timeout(5000); - testUtils.cleanUpDocker('oracledb'); - } }); beforeEach(() => { diff --git a/packages/instrumentation-pg/.eslintrc.js b/packages/instrumentation-pg/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-pg/.eslintrc.js +++ b/packages/instrumentation-pg/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-pg/CHANGELOG.md b/packages/instrumentation-pg/CHANGELOG.md index 8d71478c28..170b943c68 100644 --- a/packages/instrumentation-pg/CHANGELOG.md +++ b/packages/instrumentation-pg/CHANGELOG.md @@ -1,5 +1,33 @@ # Changelog +## [0.57.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pg-v0.56.1...instrumentation-pg-v0.57.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + +## [0.56.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pg-v0.56.0...instrumentation-pg-v0.56.1) (2025-09-01) + + +### Bug Fixes + +* **deps:** update all patch versions ([#2948](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2948)) ([5836d7a](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/5836d7ab3244adef62b715ef22a26b54dba6719b)) + +## [0.56.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pg-v0.55.0...instrumentation-pg-v0.56.0) (2025-08-13) + + +### Features + +* **instrumentation-pg:** update to stable semantic conventions with db-migration support ([#2881](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2881)) ([4384c7b](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/4384c7b8283c834ed1f8ecf1d694fd6e7261c74c)) + ## [0.55.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pg-v0.54.1...instrumentation-pg-v0.55.0) (2025-07-09) diff --git a/packages/instrumentation-pg/README.md b/packages/instrumentation-pg/README.md index b2657c625e..518acc7ad7 100644 --- a/packages/instrumentation-pg/README.md +++ b/packages/instrumentation-pg/README.md @@ -51,6 +51,48 @@ PostgreSQL instrumentation has few options available to choose from. You can set | `requireParentSpan` | `boolean` | If true, requires a parent span to create new spans (default false) | | `addSqlCommenterCommentToQueries` | `boolean` | If true, adds [sqlcommenter](https://github.com/open-telemetry/opentelemetry-sqlcommenter) specification compliant comment to queries with tracing context (default false). _NOTE: A comment will not be added to queries that already contain `--` or `/* ... */` in them, even if these are not actually part of comments_ | +## Semantic Conventions + +Prior to version `0.55.0`, this instrumentation created spans and metrics targeting an experimental semantic convention Version 1.27.0. + +Database semantic conventions (semconv) were stabilized in v1.34.0, and a [migration process](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/non-normative/db-migration.md) was defined. +`@opentelemetry/instrumentation-pg` versions 0.55.0 and later include support for migrating to stable Database semantic conventions, as described below. +The intent is to provide an approximate 6 month time window for users of this instrumentation to migrate to the new Database semconv, after which a new minor version will use the new semconv by default and drop support for the old semconv. + +To select which semconv version(s) is emitted from this instrumentation, use the `OTEL_SEMCONV_STABILITY_OPT_IN` environment variable. + +- `database`: emit the new (stable) v1.34.0+ semantics +- `database/dup`: emit **both** the old v1.27.0 and the new (stable) v1.34.0+ semantics +- By default, if `OTEL_SEMCONV_STABILITY_OPT_IN` includes neither of the above tokens, the old v1.27.0 semconv is used. + +### Attributes collected + +| v1.27.0 semconv | v1.34.0 semconv | Short Description | +| ----------------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------ | +| `db.connection_string` | Removed | String used to connect to the database | +| `db.user` | Removed | User used to connect to the database | +| `db.name` | Removed, integrated into the new `db.namespace` | The name of the database. | +| (not included) | `db.namespace` | The name of the database, fully qualified within the server address and port. | +| `db.statement` | `db.query.text` | The database query being executed. | +| `db.system` | `db.system.name` | The database management system (DBMS) product as identified by the client instrumentation. | +| `net.peer.port` | `server.port` | Remote port number. | +| `net.peer.name` | `server.address` | Remote hostname or similar. | + +Metrics Exported: + +- [`db.client.operation.duration`](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/database/database-metrics.md#metric-dbclientoperationduration) + +### Upgrading Semantic Conventions + +When upgrading to the new semantic conventions, it is recommended to do so in the following order: + +1. Upgrade `@opentelemetry/opentelemetry-instrumentation-pg` to the latest version +2. Set `OTEL_SEMCONV_STABILITY_OPT_IN=database/dup` to emit both old and new semantic conventions +3. Modify alerts, dashboards, metrics, and other processes to expect the new semantic conventions +4. Set `OTEL_SEMCONV_STABILITY_OPT_IN=database` to emit only the new semantic conventions + +This will cause both the old and new semantic conventions to be emitted during the transition period. + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/packages/instrumentation-pg/package.json b/packages/instrumentation-pg/package.json index 971dd8ebd2..e28d7650d5 100644 --- a/packages/instrumentation-pg/package.json +++ b/packages/instrumentation-pg/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-pg", - "version": "0.55.0", + "version": "0.57.0", "description": "OpenTelemetry instrumentation for `pg` and `pg-pool` database client for PostgreSQL", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -11,18 +11,21 @@ }, "scripts": { "clean": "rimraf build/*", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-pg", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-pg", "compile": "tsc -p .", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", "tdd": "npm run test -- --watch-extensions ts --watch", - "test": "nyc mocha 'test/**/*.test.ts'", - "test-all-versions": "tav", - "test-all-versions:local": "cross-env RUN_POSTGRES_TESTS_LOCAL=true npm run test-all-versions", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", "test:debug": "mocha --inspect-brk --no-timeouts 'test/**/*.test.ts'", - "test:local": "cross-env RUN_POSTGRES_TESTS_LOCAL=true npm run test", + "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm test", + "test-all-versions": "tav", + "test-all-versions:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm run test-all-versions", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "test-services:start": "cd ../.. && npm run test-services:start postgres", + "test-services:stop": "cd ../.. && npm run test-services:stop postgres", "version:update": "node ../../scripts/version-update.js", "watch": "tsc -w" }, @@ -56,7 +59,7 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", @@ -74,10 +77,10 @@ }, "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", - "@opentelemetry/semantic-conventions": "^1.27.0", + "@opentelemetry/instrumentation": "^0.204.0", + "@opentelemetry/semantic-conventions": "^1.34.0", "@opentelemetry/sql-common": "^0.41.0", - "@types/pg": "8.15.4", + "@types/pg": "8.15.5", "@types/pg-pool": "2.0.6" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-pg#readme" diff --git a/packages/instrumentation-pg/src/instrumentation.ts b/packages/instrumentation-pg/src/instrumentation.ts index 1c8af9c15a..dd92882454 100644 --- a/packages/instrumentation-pg/src/instrumentation.ts +++ b/packages/instrumentation-pg/src/instrumentation.ts @@ -19,6 +19,8 @@ import { InstrumentationNodeModuleDefinition, safeExecuteInTheMiddle, InstrumentationNodeModuleFile, + SemconvStability, + semconvStabilityFromStr, } from '@opentelemetry/instrumentation'; import { context, @@ -54,18 +56,19 @@ import { hrTimeToMilliseconds, } from '@opentelemetry/core'; import { - DBSYSTEMVALUES_POSTGRESQL, - SEMATTRS_DB_SYSTEM, ATTR_ERROR_TYPE, ATTR_SERVER_PORT, ATTR_SERVER_ADDRESS, + ATTR_DB_NAMESPACE, + ATTR_DB_OPERATION_NAME, + ATTR_DB_SYSTEM_NAME, + METRIC_DB_CLIENT_OPERATION_DURATION, } from '@opentelemetry/semantic-conventions'; import { METRIC_DB_CLIENT_CONNECTION_COUNT, METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS, - METRIC_DB_CLIENT_OPERATION_DURATION, - ATTR_DB_NAMESPACE, - ATTR_DB_OPERATION_NAME, + ATTR_DB_SYSTEM, + DB_SYSTEM_VALUE_POSTGRESQL, } from './semconv'; function extractModuleExports(module: any) { @@ -88,9 +91,14 @@ export class PgInstrumentation extends InstrumentationBase { if (key in attributes) { @@ -327,7 +343,7 @@ export class PgInstrumentation extends InstrumentationBase unknown; export interface PgParsedConnectionParams { database?: string; host?: string; + namespace?: string; port?: number; user?: string; } @@ -47,17 +48,18 @@ export type PgPoolCallback = ( ) => void; export interface PgPoolOptionsParams { + allowExitOnIdle: boolean; + connectionString?: string; // connection string if provided directly database: string; host: string; - port: number; - user: string; idleTimeoutMillis: number; // the minimum amount of time that an object may sit idle in the pool before it is eligible for eviction due to idle time - maxClient: number; // maximum size of the pool - connectionString?: string; // connection string if provided directly max: number; - maxUses: number; - allowExitOnIdle: boolean; + maxClient: number; // maximum size of the pool maxLifetimeSeconds: number; + maxUses: number; + namespace: string; + port: number; + user: string; } export const EVENT_LISTENERS_SET = Symbol( diff --git a/packages/instrumentation-pg/src/semconv.ts b/packages/instrumentation-pg/src/semconv.ts index f7a2ba5624..8ea18c8333 100644 --- a/packages/instrumentation-pg/src/semconv.ts +++ b/packages/instrumentation-pg/src/semconv.ts @@ -14,6 +14,12 @@ * limitations under the License. */ +/* + * This file contains a copy of unstable semantic convention definitions + * used by this package. + * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv + */ + /** * The name of the connection pool; unique within the instrumented application. In case the connection pool implementation doesn't provide a name, instrumentation **SHOULD** use a combination of parameters that would make the name unique, for example, combining attributes `server.address`, `server.port`, and `db.namespace`, formatted as `server.address:server.port/db.namespace`. Instrumentations that generate connection pool name following different patterns **SHOULD** document it. * @@ -22,7 +28,7 @@ * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. */ export const ATTR_DB_CLIENT_CONNECTION_POOL_NAME = - 'db.client.connection.pool.name'; + 'db.client.connection.pool.name' as const; /** * The state of a connection in the pool @@ -31,70 +37,114 @@ export const ATTR_DB_CLIENT_CONNECTION_POOL_NAME = * * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. */ -export const ATTR_DB_CLIENT_CONNECTION_STATE = 'db.client.connection.state'; +export const ATTR_DB_CLIENT_CONNECTION_STATE = + 'db.client.connection.state' as const; + +/** + * Deprecated, use `server.address`, `server.port` attributes instead. + * + * @example "Server=(localdb)\\v11.0;Integrated Security=true;" + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` and `server.port`. + */ +export const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const; /** - * The name of the database, fully qualified within the server address and port. + * Deprecated, use `db.namespace` instead. * * @example customers - * @example test.users + * @example main + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. * - * @note If a database system has multiple namespace components, they **SHOULD** be concatenated (potentially using database system specific conventions) from most general to most specific namespace component, and more specific namespaces **SHOULD NOT** be captured without the more general namespaces, to ensure that "startswith" queries for the more general namespaces will be valid. - * Semantic conventions for individual database systems **SHOULD** document what `db.namespace` means in the context of that system. - * It is **RECOMMENDED** to capture the value as provided by the application without attempting to do any case normalization. - * This attribute has stability level RELEASE CANDIDATE. + * @deprecated Replaced by `db.namespace`. + */ +export const ATTR_DB_NAME = 'db.name' as const; + +/** + * The database statement being executed. + * + * @example SELECT * FROM wuser_table + * @example SET mykey "WuValue" * * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `db.query.text`. */ -export const ATTR_DB_NAMESPACE = 'db.namespace'; +export const ATTR_DB_STATEMENT = 'db.statement' as const; /** - * The name of the operation or command being executed. + * Deprecated, use `db.system.name` instead. + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. * - * @example findAndModify - * @example HMSET - * @example SELECT + * @deprecated Replaced by `db.system.name`. + */ +export const ATTR_DB_SYSTEM = 'db.system' as const; + +/** + * Deprecated, no replacement at this time. * - * @note It is **RECOMMENDED** to capture the value as provided by the application without attempting to do any case normalization. - * If the operation name is parsed from the query text, it **SHOULD** be the first operation name found in the query. - * For batch operations, if the individual operations are known to have the same operation name then that operation name **SHOULD** be used prepended by `BATCH `, otherwise `db.operation.name` **SHOULD** be `BATCH` or some other database system specific term if more applicable. - * This attribute has stability level RELEASE CANDIDATE. + * @example readonly_user + * @example reporting_user * * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Removed, no replacement at this time. */ -export const ATTR_DB_OPERATION_NAME = 'db.operation.name'; +export const ATTR_DB_USER = 'db.user' as const; /** - * Enum value "used" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}. + * Deprecated, use `server.address` on client spans and `client.address` on server spans. + * + * @example example.com + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans. + */ +export const ATTR_NET_PEER_NAME = 'net.peer.name' as const; + +/** + * Deprecated, use `server.port` on client spans and `client.port` on server spans. + * + * @example 8080 + * + * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * + * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans. */ -export const DB_CLIENT_CONNECTION_STATE_VALUE_USED = 'used'; +export const ATTR_NET_PEER_PORT = 'net.peer.port' as const; /** * Enum value "idle" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}. */ -export const DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = 'idle'; +export const DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = 'idle' as const; /** - * The number of connections that are currently in state described by the `state` attribute - * - * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. + * Enum value "used" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}. */ -export const METRIC_DB_CLIENT_CONNECTION_COUNT = 'db.client.connection.count'; +export const DB_CLIENT_CONNECTION_STATE_VALUE_USED = 'used' as const; /** - * The number of current pending requests for an open connection + * Enum value "postgresql" for attribute {@link ATTR_DB_SYSTEM}. + */ +export const DB_SYSTEM_VALUE_POSTGRESQL = 'postgresql' as const; + +/** + * The number of connections that are currently in state described by the `state` attribute * * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. */ -export const METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS = - 'db.client.connection.pending_requests'; +export const METRIC_DB_CLIENT_CONNECTION_COUNT = + 'db.client.connection.count' as const; /** - * Duration of database client operations. - * - * @note Batch operations **SHOULD** be recorded as a single operation. + * The number of current pending requests for an open connection * * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`. */ -export const METRIC_DB_CLIENT_OPERATION_DURATION = - 'db.client.operation.duration'; +export const METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS = + 'db.client.connection.pending_requests' as const; diff --git a/packages/instrumentation-pg/src/utils.ts b/packages/instrumentation-pg/src/utils.ts index 81361ded50..bde98c9aed 100644 --- a/packages/instrumentation-pg/src/utils.ts +++ b/packages/instrumentation-pg/src/utils.ts @@ -28,20 +28,26 @@ import { import { AttributeNames } from './enums/AttributeNames'; import { ATTR_ERROR_TYPE, - SEMATTRS_DB_SYSTEM, - SEMATTRS_DB_NAME, - SEMATTRS_DB_CONNECTION_STRING, - SEMATTRS_NET_PEER_NAME, - SEMATTRS_NET_PEER_PORT, - SEMATTRS_DB_USER, - SEMATTRS_DB_STATEMENT, - DBSYSTEMVALUES_POSTGRESQL, + ATTR_DB_SYSTEM_NAME, + ATTR_DB_NAMESPACE, + ATTR_SERVER_ADDRESS, + ATTR_SERVER_PORT, + ATTR_DB_QUERY_TEXT, + DB_SYSTEM_NAME_VALUE_POSTGRESQL, } from '@opentelemetry/semantic-conventions'; import { ATTR_DB_CLIENT_CONNECTION_POOL_NAME, ATTR_DB_CLIENT_CONNECTION_STATE, DB_CLIENT_CONNECTION_STATE_VALUE_USED, DB_CLIENT_CONNECTION_STATE_VALUE_IDLE, + ATTR_DB_SYSTEM, + ATTR_DB_NAME, + ATTR_DB_USER, + DB_SYSTEM_VALUE_POSTGRESQL, + ATTR_DB_CONNECTION_STRING, + ATTR_NET_PEER_PORT, + ATTR_NET_PEER_NAME, + ATTR_DB_STATEMENT, } from './semconv'; import { PgClientExtended, @@ -53,7 +59,10 @@ import { } from './internal-types'; import { PgInstrumentationConfig } from './types'; import type * as pgTypes from 'pg'; -import { safeExecuteInTheMiddle } from '@opentelemetry/instrumentation'; +import { + safeExecuteInTheMiddle, + SemconvStability, +} from '@opentelemetry/instrumentation'; import { SpanNames } from './enums/SpanNames'; /** @@ -146,19 +155,39 @@ function getPort(port: number | undefined): number | undefined { } export function getSemanticAttributesFromConnection( - params: PgParsedConnectionParams + params: PgParsedConnectionParams, + semconvStability: SemconvStability ) { - return { - [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_POSTGRESQL, - [SEMATTRS_DB_NAME]: params.database, // required - [SEMATTRS_DB_CONNECTION_STRING]: getConnectionString(params), // required - [SEMATTRS_NET_PEER_NAME]: params.host, // required - [SEMATTRS_NET_PEER_PORT]: getPort(params.port), - [SEMATTRS_DB_USER]: params.user, - }; + let attributes: Attributes = {}; + + if (semconvStability & SemconvStability.OLD) { + attributes = { + ...attributes, + [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_POSTGRESQL, + [ATTR_DB_NAME]: params.database, + [ATTR_DB_CONNECTION_STRING]: getConnectionString(params), + [ATTR_DB_USER]: params.user, + [ATTR_NET_PEER_NAME]: params.host, // required + [ATTR_NET_PEER_PORT]: getPort(params.port), + }; + } + if (semconvStability & SemconvStability.STABLE) { + attributes = { + ...attributes, + [ATTR_DB_SYSTEM_NAME]: DB_SYSTEM_NAME_VALUE_POSTGRESQL, + [ATTR_DB_NAMESPACE]: params.namespace, + [ATTR_SERVER_ADDRESS]: params.host, + [ATTR_SERVER_PORT]: getPort(params.port), + }; + } + + return attributes; } -export function getSemanticAttributesFromPool(params: PgPoolOptionsParams) { +export function getSemanticAttributesFromPoolConnection( + params: PgPoolOptionsParams, + semconvStability: SemconvStability +) { let url: URL | undefined; try { url = params.connectionString @@ -167,17 +196,33 @@ export function getSemanticAttributesFromPool(params: PgPoolOptionsParams) { } catch (e) { url = undefined; } - - return { - [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_POSTGRESQL, - [SEMATTRS_DB_NAME]: url?.pathname.slice(1) ?? params.database, // required - [SEMATTRS_DB_CONNECTION_STRING]: getConnectionString(params), // required - [SEMATTRS_NET_PEER_NAME]: url?.hostname ?? params.host, // required - [SEMATTRS_NET_PEER_PORT]: Number(url?.port) || getPort(params.port), - [SEMATTRS_DB_USER]: url?.username ?? params.user, + let attributes: Attributes = { [AttributeNames.IDLE_TIMEOUT_MILLIS]: params.idleTimeoutMillis, [AttributeNames.MAX_CLIENT]: params.maxClient, }; + + if (semconvStability & SemconvStability.OLD) { + attributes = { + ...attributes, + [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_POSTGRESQL, + [ATTR_DB_NAME]: url?.pathname.slice(1) ?? params.database, + [ATTR_DB_CONNECTION_STRING]: getConnectionString(params), + [ATTR_NET_PEER_NAME]: url?.hostname ?? params.host, + [ATTR_NET_PEER_PORT]: Number(url?.port) || getPort(params.port), + [ATTR_DB_USER]: url?.username ?? params.user, + }; + } + if (semconvStability & SemconvStability.STABLE) { + attributes = { + ...attributes, + [ATTR_DB_SYSTEM_NAME]: DB_SYSTEM_NAME_VALUE_POSTGRESQL, + [ATTR_DB_NAMESPACE]: params.namespace, + [ATTR_SERVER_ADDRESS]: url?.hostname ?? params.host, + [ATTR_SERVER_PORT]: Number(url?.port) || getPort(params.port), + }; + } + + return attributes; } export function shouldSkipInstrumentation( @@ -195,6 +240,7 @@ export function handleConfigQuery( this: PgClientExtended, tracer: Tracer, instrumentationConfig: PgInstrumentationConfig, + semconvStability: SemconvStability, queryConfig?: { text: string; values?: unknown; name?: unknown } ) { // Create child span. @@ -204,7 +250,10 @@ export function handleConfigQuery( const spanName = getQuerySpanName(dbName, queryConfig); const span = tracer.startSpan(spanName, { kind: SpanKind.CLIENT, - attributes: getSemanticAttributesFromConnection(connectionParameters), + attributes: getSemanticAttributesFromConnection( + connectionParameters, + semconvStability + ), }); if (!queryConfig) { @@ -213,7 +262,12 @@ export function handleConfigQuery( // Set attributes if (queryConfig.text) { - span.setAttribute(SEMATTRS_DB_STATEMENT, queryConfig.text); + if (semconvStability & SemconvStability.OLD) { + span.setAttribute(ATTR_DB_STATEMENT, queryConfig.text); + } + if (semconvStability & SemconvStability.STABLE) { + span.setAttribute(ATTR_DB_QUERY_TEXT, queryConfig.text); + } } if ( diff --git a/packages/instrumentation-pg/test/pg-pool.test.ts b/packages/instrumentation-pg/test/pg-pool.test.ts index da240f6057..0e3cba4302 100644 --- a/packages/instrumentation-pg/test/pg-pool.test.ts +++ b/packages/instrumentation-pg/test/pg-pool.test.ts @@ -41,21 +41,28 @@ import * as pgPool from 'pg-pool'; import { AttributeNames } from '../src/enums/AttributeNames'; import { TimedEvent } from './types'; import { - DBSYSTEMVALUES_POSTGRESQL, - SEMATTRS_DB_SYSTEM, - SEMATTRS_DB_NAME, - SEMATTRS_NET_PEER_NAME, - SEMATTRS_DB_CONNECTION_STRING, - SEMATTRS_NET_PEER_PORT, - SEMATTRS_DB_USER, - SEMATTRS_DB_STATEMENT, + METRIC_DB_CLIENT_OPERATION_DURATION, + DB_SYSTEM_NAME_VALUE_POSTGRESQL, } from '@opentelemetry/semantic-conventions'; import { ATTR_DB_CLIENT_CONNECTION_STATE, METRIC_DB_CLIENT_CONNECTION_COUNT, METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS, - METRIC_DB_CLIENT_OPERATION_DURATION, + ATTR_DB_SYSTEM, + ATTR_DB_NAME, + ATTR_DB_USER, + DB_SYSTEM_VALUE_POSTGRESQL, + ATTR_DB_CONNECTION_STRING, + ATTR_NET_PEER_PORT, + ATTR_NET_PEER_NAME, + ATTR_DB_STATEMENT, } from '../src/semconv'; +import { + ATTR_DB_QUERY_TEXT, + ATTR_DB_SYSTEM_NAME, + ATTR_SERVER_ADDRESS, + ATTR_SERVER_PORT, +} from '@opentelemetry/semantic-conventions'; const memoryExporter = new InMemorySpanExporter(); @@ -63,6 +70,7 @@ const CONFIG = { user: process.env.POSTGRES_USER || 'postgres', password: process.env.POSTGRES_PASSWORD || 'postgres', database: process.env.POSTGRES_DB || 'postgres', + namespace: 'namespace', host: process.env.POSTGRES_HOST || 'localhost', port: process.env.POSTGRES_PORT ? parseInt(process.env.POSTGRES_PORT, 10) @@ -72,23 +80,29 @@ const CONFIG = { }; const DEFAULT_PGPOOL_ATTRIBUTES = { - [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_POSTGRESQL, - [SEMATTRS_DB_NAME]: CONFIG.database, - [SEMATTRS_NET_PEER_NAME]: CONFIG.host, - [SEMATTRS_DB_CONNECTION_STRING]: `postgresql://${CONFIG.host}:${CONFIG.port}/${CONFIG.database}`, - [SEMATTRS_NET_PEER_PORT]: CONFIG.port, - [SEMATTRS_DB_USER]: CONFIG.user, + [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_POSTGRESQL, + [ATTR_DB_NAME]: CONFIG.database, + [ATTR_NET_PEER_NAME]: CONFIG.host, + [ATTR_DB_CONNECTION_STRING]: `postgresql://${CONFIG.host}:${CONFIG.port}/${CONFIG.database}`, + [ATTR_NET_PEER_PORT]: CONFIG.port, + [ATTR_DB_USER]: CONFIG.user, [AttributeNames.MAX_CLIENT]: CONFIG.maxClient, [AttributeNames.IDLE_TIMEOUT_MILLIS]: CONFIG.idleTimeoutMillis, }; const DEFAULT_PG_ATTRIBUTES = { - [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_POSTGRESQL, - [SEMATTRS_DB_NAME]: CONFIG.database, - [SEMATTRS_NET_PEER_NAME]: CONFIG.host, - [SEMATTRS_DB_CONNECTION_STRING]: `postgresql://${CONFIG.host}:${CONFIG.port}/${CONFIG.database}`, - [SEMATTRS_NET_PEER_PORT]: CONFIG.port, - [SEMATTRS_DB_USER]: CONFIG.user, + [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_POSTGRESQL, + [ATTR_DB_NAME]: CONFIG.database, + [ATTR_NET_PEER_NAME]: CONFIG.host, + [ATTR_DB_CONNECTION_STRING]: `postgresql://${CONFIG.host}:${CONFIG.port}/${CONFIG.database}`, + [ATTR_NET_PEER_PORT]: CONFIG.port, + [ATTR_DB_USER]: CONFIG.user, +}; + +const STABLE_PG_QUERY_ATTRIBUTES = { + [ATTR_DB_SYSTEM_NAME]: DB_SYSTEM_NAME_VALUE_POSTGRESQL, + [ATTR_SERVER_ADDRESS]: CONFIG.host, + [ATTR_SERVER_PORT]: CONFIG.port, }; const unsetStatus: SpanStatus = { @@ -127,9 +141,8 @@ describe('pg-pool', () => { spanProcessors: [new SimpleSpanProcessor(memoryExporter)], }); - const testPostgres = process.env.RUN_POSTGRES_TESTS; // For CI: assumes local postgres db is already available - const testPostgresLocally = process.env.RUN_POSTGRES_TESTS_LOCAL; // For local: spins up local postgres db via docker - const shouldTest = testPostgres || testPostgresLocally; // Skips these tests if false (default) + const testPostgres = process.env.RUN_POSTGRES_TESTS; + const shouldTest = testPostgres; // Skips these tests if false (default) before(function () { const skip = () => { @@ -143,10 +156,6 @@ describe('pg-pool', () => { skip(); } - if (testPostgresLocally) { - testUtils.startDocker('postgres'); - } - instrumentation = new PgInstrumentation(); contextManager = new AsyncLocalStorageContextManager().enable(); @@ -158,10 +167,6 @@ describe('pg-pool', () => { }); after(done => { - if (testPostgresLocally) { - testUtils.cleanUpDocker('postgres'); - } - pool.end(() => { done(); }); @@ -196,7 +201,7 @@ describe('pg-pool', () => { }; const pgAttributes = { ...DEFAULT_PG_ATTRIBUTES, - [SEMATTRS_DB_STATEMENT]: 'SELECT NOW()', + [ATTR_DB_STATEMENT]: 'SELECT NOW()', }; const events: TimedEvent[] = []; const span = provider.getTracer('test-pg-pool').startSpan('test span'); @@ -230,12 +235,12 @@ describe('pg-pool', () => { }); const expectedAttributes = { - [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_POSTGRESQL, - [SEMATTRS_DB_NAME]: CONFIG.database, - [SEMATTRS_NET_PEER_NAME]: CONFIG.host, - [SEMATTRS_DB_CONNECTION_STRING]: `postgresql://${CONFIG.host}:${CONFIG.port}/${CONFIG.database}`, - [SEMATTRS_NET_PEER_PORT]: CONFIG.port, - [SEMATTRS_DB_USER]: CONFIG.user, + [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_POSTGRESQL, + [ATTR_DB_NAME]: CONFIG.database, + [ATTR_NET_PEER_NAME]: CONFIG.host, + [ATTR_DB_CONNECTION_STRING]: `postgresql://${CONFIG.host}:${CONFIG.port}/${CONFIG.database}`, + [ATTR_NET_PEER_PORT]: CONFIG.port, + [ATTR_DB_USER]: CONFIG.user, [AttributeNames.IDLE_TIMEOUT_MILLIS]: CONFIG.idleTimeoutMillis, }; @@ -258,7 +263,7 @@ describe('pg-pool', () => { }; const pgAttributes = { ...DEFAULT_PG_ATTRIBUTES, - [SEMATTRS_DB_STATEMENT]: 'SELECT NOW()', + [ATTR_DB_STATEMENT]: 'SELECT NOW()', }; const events: TimedEvent[] = []; const parentSpan = provider @@ -332,7 +337,7 @@ describe('pg-pool', () => { }; const pgAttributes = { ...DEFAULT_PG_ATTRIBUTES, - [SEMATTRS_DB_STATEMENT]: 'SELECT NOW()', + [ATTR_DB_STATEMENT]: 'SELECT NOW()', }; const events: TimedEvent[] = []; const span = provider.getTracer('test-pg-pool').startSpan('test span'); @@ -351,7 +356,7 @@ describe('pg-pool', () => { }; const pgAttributes = { ...DEFAULT_PG_ATTRIBUTES, - [SEMATTRS_DB_STATEMENT]: 'SELECT NOW()', + [ATTR_DB_STATEMENT]: 'SELECT NOW()', }; const events: TimedEvent[] = []; const parentSpan = provider @@ -388,7 +393,7 @@ describe('pg-pool', () => { }; const pgAttributes = { ...DEFAULT_PG_ATTRIBUTES, - [SEMATTRS_DB_STATEMENT]: query, + [ATTR_DB_STATEMENT]: query, [dataAttributeName]: '{"rowCount":1}', }; @@ -470,7 +475,7 @@ describe('pg-pool', () => { }; const pgAttributes = { ...DEFAULT_PG_ATTRIBUTES, - [SEMATTRS_DB_STATEMENT]: query, + [ATTR_DB_STATEMENT]: query, }; beforeEach(async () => { @@ -932,6 +937,22 @@ describe('pg-pool', () => { }); describe('pg-pool (ESM)', () => { + const testPostgres = process.env.RUN_POSTGRES_TESTS; + const shouldTest = testPostgres; // Skips these tests if false (default) + + before(function () { + const skip = () => { + // this.skip() workaround + // https://github.com/mochajs/mocha/issues/2683#issuecomment-375629901 + this.test!.parent!.pending = true; + this.skip(); + }; + + if (!shouldTest) { + skip(); + } + }); + it('should work with ESM usage', async () => { await testUtils.runTestFixture({ cwd: __dirname, @@ -969,3 +990,118 @@ describe('pg-pool (ESM)', () => { }); }); }); + +describe('pg semantic conventions env variable', () => { + let pool: pgPool; + let contextManager: AsyncLocalStorageContextManager; + let instrumentation: PgInstrumentation; + const provider = new BasicTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(memoryExporter)], + }); + const testPostgres = process.env.RUN_POSTGRES_TESTS; + const shouldTest = testPostgres; + // Here we are `require`ing *before* the instrumentation is created below. + // In *general* this is a potential instrumentation issue, but this works for + // `pg-pool` instrumentation because it patches the `pgPool.prototype` + // (i.e. not a top-level export). + const pgPool = require('pg-pool'); + pool = new pgPool(CONFIG); + + before(function () { + const skip = () => { + // this.skip() workaround + // https://github.com/mochajs/mocha/issues/2683#issuecomment-375629901 + this.test!.parent!.pending = true; + this.skip(); + }; + + if (!shouldTest) { + skip(); + } + }); + + beforeEach(() => { + contextManager = new AsyncLocalStorageContextManager().enable(); + context.setGlobalContextManager(contextManager); + }); + + afterEach(() => { + delete process.env.OTEL_SEMCONV_STABILITY_OPT_IN; + memoryExporter.reset(); + context.disable(); + }); + + it('send only default semantic conventions', async () => { + process.env.OTEL_SEMCONV_STABILITY_OPT_IN = ''; + instrumentation = new PgInstrumentation(); + instrumentation.setTracerProvider(provider); + pool = new pgPool(CONFIG); + + const pgAttributes = { + ...DEFAULT_PG_ATTRIBUTES, + [ATTR_DB_STATEMENT]: 'SELECT NOW()', + }; + const events: TimedEvent[] = []; + const span = provider + .getTracer('test-pg-pool-semantic') + .startSpan('test span'); + await context.with(trace.setSpan(context.active(), span), async () => { + const result = await pool.query('SELECT NOW()'); + runCallbackTest(span, pgAttributes, events, unsetStatus, 3, 2); + assert.ok(result, 'pool.query() returns a promise'); + }); + + span.end(); + await pool.end(); + }); + + it('send both default and stable semantic conventions', async () => { + process.env.OTEL_SEMCONV_STABILITY_OPT_IN = 'database/dup'; + instrumentation = new PgInstrumentation(); + instrumentation.setTracerProvider(provider); + pool = new pgPool(CONFIG); + + const pgAttributes = { + ...DEFAULT_PG_ATTRIBUTES, + ...STABLE_PG_QUERY_ATTRIBUTES, + [ATTR_DB_STATEMENT]: 'SELECT NOW()', + [ATTR_DB_QUERY_TEXT]: 'SELECT NOW()', + }; + const events: TimedEvent[] = []; + const span = provider + .getTracer('test-pg-pool-semantic') + .startSpan('test span'); + await context.with(trace.setSpan(context.active(), span), async () => { + const result = await pool.query('SELECT NOW()'); + runCallbackTest(span, pgAttributes, events, unsetStatus, 3, 2); + assert.ok(result, 'pool.query() returns a promise'); + }); + + span.end(); + await pool.end(); + }); + + it('send only stable semantic conventions', async () => { + process.env.OTEL_SEMCONV_STABILITY_OPT_IN = 'database'; + instrumentation = new PgInstrumentation(); + instrumentation.setTracerProvider(provider); + pool = new pgPool(CONFIG); + + const pgAttributes = { + ...STABLE_PG_QUERY_ATTRIBUTES, + [ATTR_DB_QUERY_TEXT]: 'SELECT NOW()', + }; + const events: TimedEvent[] = []; + const span = provider + .getTracer('test-pg-pool-semantic') + .startSpan('test span'); + await context.with(trace.setSpan(context.active(), span), async () => { + const result = await pool.query('SELECT NOW()'); + runCallbackTest(span, pgAttributes, events, unsetStatus, 3, 2); + assert.ok(result, 'pool.query() returns a promise'); + }); + + span.end(); + await pool.end(); + }); +}); diff --git a/packages/instrumentation-pg/test/pg.test.ts b/packages/instrumentation-pg/test/pg.test.ts index 267e0b968a..05e687e094 100644 --- a/packages/instrumentation-pg/test/pg.test.ts +++ b/packages/instrumentation-pg/test/pg.test.ts @@ -43,19 +43,19 @@ import { import { AttributeNames } from '../src/enums/AttributeNames'; import { TimedEvent } from './types'; import { - SEMATTRS_DB_STATEMENT, - SEMATTRS_DB_SYSTEM, - SEMATTRS_DB_NAME, - SEMATTRS_NET_PEER_NAME, - SEMATTRS_DB_CONNECTION_STRING, - SEMATTRS_NET_PEER_PORT, - SEMATTRS_DB_USER, - DBSYSTEMVALUES_POSTGRESQL, + ATTR_DB_OPERATION_NAME, ATTR_ERROR_TYPE, + METRIC_DB_CLIENT_OPERATION_DURATION, } from '@opentelemetry/semantic-conventions'; import { - METRIC_DB_CLIENT_OPERATION_DURATION, - ATTR_DB_OPERATION_NAME, + ATTR_DB_SYSTEM, + ATTR_DB_NAME, + ATTR_DB_USER, + DB_SYSTEM_VALUE_POSTGRESQL, + ATTR_DB_CONNECTION_STRING, + ATTR_NET_PEER_PORT, + ATTR_NET_PEER_NAME, + ATTR_DB_STATEMENT, } from '../src/semconv'; import { addSqlCommenterComment } from '@opentelemetry/sql-common'; @@ -72,12 +72,12 @@ const CONFIG = { }; const DEFAULT_ATTRIBUTES = { - [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_POSTGRESQL, - [SEMATTRS_DB_NAME]: CONFIG.database, - [SEMATTRS_NET_PEER_NAME]: CONFIG.host, - [SEMATTRS_DB_CONNECTION_STRING]: `postgresql://${CONFIG.host}:${CONFIG.port}/${CONFIG.database}`, - [SEMATTRS_NET_PEER_PORT]: CONFIG.port, - [SEMATTRS_DB_USER]: CONFIG.user, + [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_POSTGRESQL, + [ATTR_DB_NAME]: CONFIG.database, + [ATTR_NET_PEER_NAME]: CONFIG.host, + [ATTR_DB_CONNECTION_STRING]: `postgresql://${CONFIG.host}:${CONFIG.port}/${CONFIG.database}`, + [ATTR_NET_PEER_PORT]: CONFIG.port, + [ATTR_DB_USER]: CONFIG.user, }; const unsetStatus: SpanStatus = { @@ -123,9 +123,8 @@ describe('pg', () => { }); const tracer = provider.getTracer('external'); - const testPostgres = process.env.RUN_POSTGRES_TESTS; // For CI: assumes local postgres db is already available - const testPostgresLocally = process.env.RUN_POSTGRES_TESTS_LOCAL; // For local: spins up local postgres db via docker - const shouldTest = testPostgres || testPostgresLocally; // Skips these tests if false (default) + const testPostgres = process.env.RUN_POSTGRES_TESTS; + const shouldTest = testPostgres; // Skips these tests if false (default) function getExecutedQueries() { return (client as any).queryQueue.push.args.flat() as (pg.Query & { @@ -145,10 +144,6 @@ describe('pg', () => { skip(); } - if (testPostgresLocally) { - testUtils.startDocker('postgres'); - } - instrumentation = new PgInstrumentation(); contextManager = new AsyncLocalStorageContextManager().enable(); @@ -162,10 +157,6 @@ describe('pg', () => { }); after(async () => { - if (testPostgresLocally) { - testUtils.cleanUpDocker('postgres'); - } - await client.end(); }); @@ -367,7 +358,7 @@ describe('pg', () => { it('should intercept client.query(text, callback)', done => { const attributes = { ...DEFAULT_ATTRIBUTES, - [SEMATTRS_DB_STATEMENT]: 'SELECT NOW()', + [ATTR_DB_STATEMENT]: 'SELECT NOW()', }; const events: TimedEvent[] = []; const span = tracer.startSpan('test span'); @@ -387,7 +378,7 @@ describe('pg', () => { const values = ['0']; const attributes = { ...DEFAULT_ATTRIBUTES, - [SEMATTRS_DB_STATEMENT]: query, + [ATTR_DB_STATEMENT]: query, }; const events: TimedEvent[] = []; const span = tracer.startSpan('test span'); @@ -406,7 +397,7 @@ describe('pg', () => { const query = 'SELECT NOW()'; const attributes = { ...DEFAULT_ATTRIBUTES, - [SEMATTRS_DB_STATEMENT]: query, + [ATTR_DB_STATEMENT]: query, }; const events: TimedEvent[] = []; const span = tracer.startSpan('test span'); @@ -428,7 +419,7 @@ describe('pg', () => { const query = 'SELECT NOW()'; const attributes = { ...DEFAULT_ATTRIBUTES, - [SEMATTRS_DB_STATEMENT]: query, + [ATTR_DB_STATEMENT]: query, }; const events: TimedEvent[] = []; const span = tracer.startSpan('test span'); @@ -448,7 +439,7 @@ describe('pg', () => { const values = ['0']; const attributes = { ...DEFAULT_ATTRIBUTES, - [SEMATTRS_DB_STATEMENT]: query, + [ATTR_DB_STATEMENT]: query, }; const events: TimedEvent[] = []; const span = tracer.startSpan('test span'); @@ -468,7 +459,7 @@ describe('pg', () => { const values = ['0']; const attributes = { ...DEFAULT_ATTRIBUTES, - [SEMATTRS_DB_STATEMENT]: query, + [ATTR_DB_STATEMENT]: query, }; const events: TimedEvent[] = []; const span = tracer.startSpan('test span'); @@ -493,7 +484,7 @@ describe('pg', () => { const attributes = { ...DEFAULT_ATTRIBUTES, [AttributeNames.PG_PLAN]: name, - [SEMATTRS_DB_STATEMENT]: query, + [ATTR_DB_STATEMENT]: query, }; const events: TimedEvent[] = []; const span = tracer.startSpan('test span'); @@ -517,7 +508,7 @@ describe('pg', () => { const query = 'SELECT NOW()'; const attributes = { ...DEFAULT_ATTRIBUTES, - [SEMATTRS_DB_STATEMENT]: query, + [ATTR_DB_STATEMENT]: query, }; const events: TimedEvent[] = []; const span = tracer.startSpan('test span'); @@ -556,7 +547,7 @@ describe('pg', () => { const attributes = { ...DEFAULT_ATTRIBUTES, - [SEMATTRS_DB_STATEMENT]: query, + [ATTR_DB_STATEMENT]: query, [AttributeNames.PG_VALUES]: [ 'Hello,World', 'abc', @@ -595,7 +586,7 @@ describe('pg', () => { // span if there is no requestHook. const attributes = { ...DEFAULT_ATTRIBUTES, - [SEMATTRS_DB_STATEMENT]: query, + [ATTR_DB_STATEMENT]: query, }; // These are the attributes we expect on the span after the requestHook @@ -688,7 +679,7 @@ describe('pg', () => { describe('AND valid responseHook', () => { const attributes = { ...DEFAULT_ATTRIBUTES, - [SEMATTRS_DB_STATEMENT]: query, + [ATTR_DB_STATEMENT]: query, [dataAttributeName]: '{"rowCount":1}', }; beforeEach(async () => { @@ -721,7 +712,7 @@ describe('pg', () => { it('should attach response hook data to resulting spans for query returning a Promise', async () => { const attributes = { ...DEFAULT_ATTRIBUTES, - [SEMATTRS_DB_STATEMENT]: query, + [ATTR_DB_STATEMENT]: query, [dataAttributeName]: '{"rowCount":1}', }; @@ -746,7 +737,7 @@ describe('pg', () => { describe('AND invalid responseHook', () => { const attributes = { ...DEFAULT_ATTRIBUTES, - [SEMATTRS_DB_STATEMENT]: query, + [ATTR_DB_STATEMENT]: query, }; beforeEach(async () => { @@ -1020,8 +1011,8 @@ describe('pg', () => { ); const dataPoint = metrics[0].dataPoints[0]; assert.strictEqual( - dataPoint.attributes[SEMATTRS_DB_SYSTEM], - DBSYSTEMVALUES_POSTGRESQL + dataPoint.attributes[ATTR_DB_SYSTEM], + DB_SYSTEM_VALUE_POSTGRESQL ); assert.strictEqual( dataPoint.attributes[ATTR_DB_OPERATION_NAME], @@ -1067,8 +1058,8 @@ describe('pg', () => { ); const dataPoint = metrics[0].dataPoints[0]; assert.strictEqual( - dataPoint.attributes[SEMATTRS_DB_SYSTEM], - DBSYSTEMVALUES_POSTGRESQL + dataPoint.attributes[ATTR_DB_SYSTEM], + DB_SYSTEM_VALUE_POSTGRESQL ); assert.strictEqual( dataPoint.attributes[ATTR_DB_OPERATION_NAME], @@ -1096,6 +1087,22 @@ describe('pg', () => { }); describe('pg (ESM)', () => { + const testPostgres = process.env.RUN_POSTGRES_TESTS; + const shouldTest = testPostgres; // Skips these tests if false (default) + + before(function () { + const skip = () => { + // this.skip() workaround + // https://github.com/mochajs/mocha/issues/2683#issuecomment-375629901 + this.test!.parent!.pending = true; + this.skip(); + }; + + if (!shouldTest) { + skip(); + } + }); + it('should work with ESM usage', async () => { await testUtils.runTestFixture({ cwd: __dirname, diff --git a/packages/instrumentation-pg/test/utils.test.ts b/packages/instrumentation-pg/test/utils.test.ts index 5d19b1aca2..673ab0d42c 100644 --- a/packages/instrumentation-pg/test/utils.test.ts +++ b/packages/instrumentation-pg/test/utils.test.ts @@ -16,7 +16,10 @@ import { context, trace } from '@opentelemetry/api'; import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks'; -import { InstrumentationConfig } from '@opentelemetry/instrumentation'; +import { + InstrumentationConfig, + SemconvStability, +} from '@opentelemetry/instrumentation'; import { BasicTracerProvider, InMemorySpanExporter, @@ -28,7 +31,7 @@ import { PgInstrumentationConfig } from '../src'; import { AttributeNames } from '../src/enums/AttributeNames'; import { PgClientExtended, PgPoolOptionsParams } from '../src/internal-types'; import * as utils from '../src/utils'; -import { SEMATTRS_NET_PEER_PORT } from '@opentelemetry/semantic-conventions'; +import { ATTR_SERVER_PORT } from '@opentelemetry/semantic-conventions'; const memoryExporter = new InMemorySpanExporter(); @@ -163,6 +166,7 @@ describe('utils.ts', () => { client, tracer, instrumentationConfig, + SemconvStability.STABLE, queryConfig ); querySpan.end(); @@ -182,6 +186,7 @@ describe('utils.ts', () => { client, tracer, extPluginConfig, + SemconvStability.STABLE, queryConfig ); querySpan.end(); @@ -196,42 +201,60 @@ describe('utils.ts', () => { describe('.getSemanticAttributesFromConnection()', () => { it('should set port attribute to undefined when port is not an integer', () => { assert.strictEqual( - utils.getSemanticAttributesFromConnection({ - port: Infinity, - })[SEMATTRS_NET_PEER_PORT], + utils.getSemanticAttributesFromConnection( + { + port: Infinity, + }, + SemconvStability.STABLE + )[ATTR_SERVER_PORT], undefined ); assert.strictEqual( - utils.getSemanticAttributesFromConnection({ - port: -Infinity, - })[SEMATTRS_NET_PEER_PORT], + utils.getSemanticAttributesFromConnection( + { + port: -Infinity, + }, + SemconvStability.STABLE + )[ATTR_SERVER_PORT], undefined ); assert.strictEqual( - utils.getSemanticAttributesFromConnection({ - port: NaN, - })[SEMATTRS_NET_PEER_PORT], + utils.getSemanticAttributesFromConnection( + { + port: NaN, + }, + SemconvStability.STABLE + )[ATTR_SERVER_PORT], undefined ); assert.strictEqual( - utils.getSemanticAttributesFromConnection({ - port: 1.234, - })[SEMATTRS_NET_PEER_PORT], + utils.getSemanticAttributesFromConnection( + { + port: 1.234, + }, + SemconvStability.STABLE + )[ATTR_SERVER_PORT], undefined ); }); it('should set port attribute when port is an integer', () => { assert.strictEqual( - utils.getSemanticAttributesFromConnection({ - port: 1234, - })[SEMATTRS_NET_PEER_PORT], + utils.getSemanticAttributesFromConnection( + { + port: 1234, + }, + SemconvStability.STABLE + )[ATTR_SERVER_PORT], 1234 ); assert.strictEqual( - utils.getSemanticAttributesFromConnection({ - port: Number.MAX_VALUE, - })[SEMATTRS_NET_PEER_PORT], + utils.getSemanticAttributesFromConnection( + { + port: Number.MAX_VALUE, + }, + SemconvStability.STABLE + )[ATTR_SERVER_PORT], Number.MAX_VALUE ); }); @@ -244,6 +267,7 @@ describe('utils.ts', () => { port: 1234, user: 'username', database: 'database_name', + namespace: 'database_namespace', idleTimeoutMillis: 10, maxClient: 5, max: 5, diff --git a/packages/instrumentation-pino/.eslintrc.js b/packages/instrumentation-pino/.eslintrc.js index d9630e1c33..912e1cf251 100644 --- a/packages/instrumentation-pino/.eslintrc.js +++ b/packages/instrumentation-pino/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js'), -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-pino/.tav.yml b/packages/instrumentation-pino/.tav.yml index 737cc73989..371da79c8f 100644 --- a/packages/instrumentation-pino/.tav.yml +++ b/packages/instrumentation-pino/.tav.yml @@ -8,4 +8,4 @@ pino: include: '>=5.14.0 <9' mode: max-7 node: ">=14" - commands: npm run test + commands: npm run test \ No newline at end of file diff --git a/packages/instrumentation-pino/CHANGELOG.md b/packages/instrumentation-pino/CHANGELOG.md index b3c057539f..2afebfe660 100644 --- a/packages/instrumentation-pino/CHANGELOG.md +++ b/packages/instrumentation-pino/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +## [0.51.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pino-v0.50.1...instrumentation-pino-v0.51.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + +## [0.50.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pino-v0.50.0...instrumentation-pino-v0.50.1) (2025-09-01) + + +### Bug Fixes + +* **instrumentation-pino:** Propagate all args to `mixin` ([#2983](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2983)) ([3263936](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/326393626768a6d498c8d91a5cd142f76a1ca5dd)) + ## [0.50.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-pino-v0.49.1...instrumentation-pino-v0.50.0) (2025-07-09) diff --git a/packages/instrumentation-pino/package.json b/packages/instrumentation-pino/package.json index 48160c01ad..3bc6b36d5a 100644 --- a/packages/instrumentation-pino/package.json +++ b/packages/instrumentation-pino/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-pino", - "version": "0.50.0", + "version": "0.51.0", "description": "OpenTelemetry instrumentation for `pino` logger", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,17 +10,18 @@ "directory": "packages/instrumentation-pino" }, "scripts": { - "test": "nyc mocha 'test/**/*.test.ts'", - "test-all-versions": "tav", - "tdd": "npm run test -- --watch-extensions ts --watch", "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-pino", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", - "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-pino", - "compile": "tsc -p ." + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test-all-versions": "tav", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "version:update": "node ../../scripts/version-update.js" }, "keywords": [ "instrumentation", @@ -49,7 +50,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.27.0", @@ -58,7 +59,7 @@ "@types/semver": "7.5.8", "@types/sinon": "17.0.4", "nyc": "17.1.0", - "pino": "8.3.1", + "pino": "^8.21.0", "rimraf": "5.0.10", "semver": "7.7.2", "sinon": "15.2.0", @@ -66,9 +67,9 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/api-logs": "^0.203.0", + "@opentelemetry/api-logs": "^0.204.0", "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-pino#readme" } diff --git a/packages/instrumentation-pino/src/instrumentation.ts b/packages/instrumentation-pino/src/instrumentation.ts index 064635e52d..b9dd494efd 100644 --- a/packages/instrumentation-pino/src/instrumentation.ts +++ b/packages/instrumentation-pino/src/instrumentation.ts @@ -67,10 +67,14 @@ export class PinoInstrumentation extends InstrumentationBase { + logger[mixinSym] = ( + ctx: object, + level: number, + ...rest: unknown[] + ) => { return Object.assign( otelMixin(ctx, level), - origMixin(ctx, level) + origMixin(ctx, level, ...rest) ); }; } diff --git a/packages/instrumentation-pino/test/fixtures/use-pino-default-import.mjs b/packages/instrumentation-pino/test/fixtures/use-pino-default-import.mjs index 2bde519df7..a8748b6c1e 100644 --- a/packages/instrumentation-pino/test/fixtures/use-pino-default-import.mjs +++ b/packages/instrumentation-pino/test/fixtures/use-pino-default-import.mjs @@ -24,18 +24,16 @@ import { PinoInstrumentation } from '../../build/src/index.js'; const sdk = createTestNodeSdk({ serviceName: 'use-pino', - instrumentations: [ - new PinoInstrumentation() - ] -}) + instrumentations: [new PinoInstrumentation()], +}); sdk.start(); import pino from 'pino'; const logger = pino(); const tracer = trace.getTracer(); -await tracer.startActiveSpan('manual', async (span) => { - logger.info('hi from logger') +await tracer.startActiveSpan('manual', async span => { + logger.info('hi from logger'); span.end(); }); diff --git a/packages/instrumentation-pino/test/fixtures/use-pino-named-import.mjs b/packages/instrumentation-pino/test/fixtures/use-pino-named-import.mjs index 543cf84826..0a165a2ffd 100644 --- a/packages/instrumentation-pino/test/fixtures/use-pino-named-import.mjs +++ b/packages/instrumentation-pino/test/fixtures/use-pino-named-import.mjs @@ -24,18 +24,16 @@ import { PinoInstrumentation } from '../../build/src/index.js'; const sdk = createTestNodeSdk({ serviceName: 'use-pino', - instrumentations: [ - new PinoInstrumentation() - ] -}) + instrumentations: [new PinoInstrumentation()], +}); sdk.start(); import { pino } from 'pino'; // named import, supported with pino >=6.8.0 const logger = pino(); const tracer = trace.getTracer(); -await tracer.startActiveSpan('manual', async (span) => { - logger.info('hi from logger') +await tracer.startActiveSpan('manual', async span => { + logger.info('hi from logger'); span.end(); }); diff --git a/packages/instrumentation-pino/test/pino.test.ts b/packages/instrumentation-pino/test/pino.test.ts index 6e485734c7..b8269cb741 100644 --- a/packages/instrumentation-pino/test/pino.test.ts +++ b/packages/instrumentation-pino/test/pino.test.ts @@ -371,6 +371,56 @@ describe('PinoInstrumentation', () => { }); }); + it('propagates all parameters to user mixin', function () { + // In pino v8.14.0, a 3rd arg (the logger instance) was added to mixins. + const pinoSupportsThirdMixinArg = + pino.version && semver.satisfies(pino.version, '>=8.14.0'); + if (!pinoSupportsThirdMixinArg) { + this.skip(); + } + + const logger = pino( + { + name: 'LogLog', + mixin: (mergeObject: object, level: number, logger: Pino.Logger) => ({ + mixinArgs: { + mergeObject, + level, + logger: { + bindings: logger.bindings(), + }, + }, + mixinProp: 'mixinValue', + }), + }, + process.stdout + ); + + const childLogger = logger.child({ childProp: 'childValue' }); + + tracer.startActiveSpan('abc', span => { + childLogger.info({ objProp: 'objValue' }, 'a message'); + span.end(); + + const record = JSON.parse(stdoutSpy.firstCall.args[0].toString()); + assertRecord(record, span); + assert.deepStrictEqual(record['mixinArgs'], { + mergeObject: { + objProp: 'objValue', + }, + level: 30, + logger: { + bindings: { + childProp: 'childValue', + name: 'LogLog', + }, + }, + }); + assert.strictEqual(record['mixinProp'], 'mixinValue'); + assert.strictEqual(record['name'], 'LogLog'); + }); + }); + it('ensures user mixin values take precedence', () => { const logger = pino( { diff --git a/packages/instrumentation-redis/.eslintrc.js b/packages/instrumentation-redis/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-redis/.eslintrc.js +++ b/packages/instrumentation-redis/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-redis/.tav.yml b/packages/instrumentation-redis/.tav.yml index 12aa469538..47d23f9878 100644 --- a/packages/instrumentation-redis/.tav.yml +++ b/packages/instrumentation-redis/.tav.yml @@ -4,8 +4,8 @@ redis: mode: latest-minors commands: npm run test-v2-v3 - versions: - include: '>=4 <5' + include: '>=4 <6' # "4.6.9" was a bad release that accidentally broke node v14 support. exclude: "4.6.9" mode: latest-minors - commands: npm test + commands: npm run test \ No newline at end of file diff --git a/packages/instrumentation-redis/CHANGELOG.md b/packages/instrumentation-redis/CHANGELOG.md index 5f2460be8e..7dd0d60770 100644 --- a/packages/instrumentation-redis/CHANGELOG.md +++ b/packages/instrumentation-redis/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +## [0.53.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-redis-v0.52.0...instrumentation-redis-v0.53.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + +## [0.52.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-redis-v0.51.0...instrumentation-redis-v0.52.0) (2025-09-01) + + +### Features + +* **redis:** add support for redis v5 ([#2950](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2950)) ([8b09de9](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/8b09de916959cfc765b51aeab8b585b8c8e42a45)) + ## [0.51.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-redis-v0.50.0...instrumentation-redis-v0.51.0) (2025-07-09) diff --git a/packages/instrumentation-redis/README.md b/packages/instrumentation-redis/README.md index b2827e72f4..b45de68231 100644 --- a/packages/instrumentation-redis/README.md +++ b/packages/instrumentation-redis/README.md @@ -3,7 +3,7 @@ [![NPM Published Version][npm-img]][npm-url] [![Apache License][license-image]][license-image] -This module provides automatic instrumentation for the [`redis`](https://github.com/NodeRedis/node_redis) module versions `>=2.6.0 <5`, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. +This module provides automatic instrumentation for the [`redis`](https://github.com/NodeRedis/node_redis) module versions `>=2.6.0 <6`, which may be loaded using the [`@opentelemetry/sdk-trace-node`](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node) package and is included in the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle. If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-node`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-node) bundle with [@opentelemetry/sdk-node](`https://www.npmjs.com/package/@opentelemetry/sdk-node`) for the most seamless instrumentation experience. @@ -17,7 +17,7 @@ npm install --save @opentelemetry/instrumentation-redis ### Supported Versions -- [`redis`](https://www.npmjs.com/package/redis) versions `>=2.6.0 <5` +- [`redis`](https://www.npmjs.com/package/redis) versions `>=2.6.0 <6` ## Usage @@ -75,10 +75,16 @@ const redisInstrumentation = new RedisInstrumentation({ ## Semantic Conventions -This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) + +This package uses `@opentelemetry/semantic-conventions` version `1.22+`, which implements Semantic Convention [Version 1.7.0](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.7.0/semantic_conventions/README.md) ("old" conventions). + +It also supports the new stable semantic conventions introduced in [Version 1.33.0] +By default, old semantic conventions are used. Use the `OTEL_SEMCONV_STABILITY_OPT_IN` environment variable to control which version to emit. Attributes collected: +### Old Semantic Conventions (default) + | Attribute | Short Description | |------------------------|--------------------------------------------------------------| | `db.connection_string` | URL to Redis server address, of the form `redis://host:port` | @@ -87,6 +93,17 @@ Attributes collected: | `net.peer.name` | Hostname or IP of the connected Redis server | | `net.peer.port` | Port of the connected Redis server | +### Stable Semantic Conventions (v1.33.0) + +| Attribute | Short Description | +|------------------------|--------------------------------------------------------------| +| `db.operation.name` | Redis command name | +| `db.operation.batch.size` | Number of commands in a Redis `MULTI/EXEC` transaction | +| `db.query.text` | The database query being executed | +| `db.system.name` | Database identifier; always `redis` | +| `server.address` | Hostname or IP of the connected Redis server | +| `server.port` | Port of the connected Redis server | + ## Useful links - For more information on OpenTelemetry, visit: diff --git a/packages/instrumentation-redis/package.json b/packages/instrumentation-redis/package.json index 9ec891b691..809c8c7c59 100644 --- a/packages/instrumentation-redis/package.json +++ b/packages/instrumentation-redis/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-redis", - "version": "0.51.0", + "version": "0.53.0", "description": "OpenTelemetry instrumentation for `redis` database client for Redis", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,23 +10,24 @@ "directory": "packages/instrumentation-redis" }, "scripts": { - "test-v2-v3": "nyc mocha --require '@opentelemetry/contrib-test-utils' 'test/v2-v3/*.test.ts'", - "test": "nyc mocha --require '@opentelemetry/contrib-test-utils' 'test/v4/*.test.ts'", - "test:debug": "cross-env RUN_REDIS_TESTS_LOCAL=true mocha --inspect-brk --no-timeouts 'test/**/*.test.ts'", - "test:local": "cross-env RUN_REDIS_TESTS_LOCAL=true npm run test", - "test:docker:run": "docker run --rm -d --name otel-redis -p 63790:6379 redis:alpine", - "test:docker:stop": "docker stop otel-redis", - "test-all-versions": "tav", - "test-all-versions:local": "cross-env RUN_REDIS_TESTS_LOCAL=true npm run test-all-versions", - "tdd": "npm run test -- --watch-extensions ts --watch", "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "lint:readme": "node ../../scripts/lint-readme.js", - "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-redis", "compile": "tsc -p .", - "prepublishOnly": "npm run compile" + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-redis", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "lint:readme": "node ../../scripts/lint-readme.js", + "prepublishOnly": "npm run compile", + "tdd": "npm run test -- --watch-extensions ts --watch", + "test-v2-v3": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' 'test/v2-v3/*.test.ts'", + "test": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' 'test/v4-v5/*.test.ts'", + "test:debug": "cross-env RUN_REDIS_TESTS=true mocha --inspect-brk --no-timeouts 'test/**/*.test.ts'", + "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm test", + "test-all-versions": "tav", + "test-all-versions:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm run test-all-versions", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "test-services:start": "cd ../.. && npm run test-services:start redis", + "test-services:stop": "cd ../.. && npm run test-services:stop redis", + "version:update": "node ../../scripts/version-update.js" }, "keywords": [ "instrumentation", @@ -55,20 +56,20 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "cross-env": "7.0.3", "nyc": "17.1.0", - "redis": "^4.7.1", + "redis": "^5.6.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/redis-common": "^0.38.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, diff --git a/packages/instrumentation-redis/src/redis.ts b/packages/instrumentation-redis/src/redis.ts index 14c2003dce..fb9bfe331d 100644 --- a/packages/instrumentation-redis/src/redis.ts +++ b/packages/instrumentation-redis/src/redis.ts @@ -19,7 +19,7 @@ import { RedisInstrumentationConfig } from './types'; import { PACKAGE_NAME, PACKAGE_VERSION } from './version'; import { RedisInstrumentationV2_V3 } from './v2-v3/instrumentation'; import { TracerProvider } from '@opentelemetry/api'; -import { RedisInstrumentationV4 } from './v4/instrumentation'; +import { RedisInstrumentationV4_V5 } from './v4-v5/instrumentation'; const DEFAULT_CONFIG: RedisInstrumentationConfig = { requireParentSpan: false, @@ -28,7 +28,7 @@ const DEFAULT_CONFIG: RedisInstrumentationConfig = { // Wrapper RedisInstrumentation that address all supported versions export class RedisInstrumentation extends InstrumentationBase { private instrumentationV2_V3: RedisInstrumentationV2_V3; - private instrumentationV4: RedisInstrumentationV4; + private instrumentationV4_V5: RedisInstrumentationV4_V5; // this is used to bypass a flaw in the base class constructor, which is calling // member functions before the constructor has a chance to fully initialize the member variables. @@ -39,7 +39,7 @@ export class RedisInstrumentation extends InstrumentationBase { static readonly COMPONENT = 'redis'; + private _semconvStability: SemconvStability; constructor(config: RedisInstrumentationConfig = {}) { super(PACKAGE_NAME, PACKAGE_VERSION, config); + this._semconvStability = config.semconvStability + ? config.semconvStability + : semconvStabilityFromStr( + 'database', + process.env.OTEL_SEMCONV_STABILITY_OPT_IN + ); + } + + override setConfig(config: RedisInstrumentationConfig = {}) { + super.setConfig(config); + this._semconvStability = config.semconvStability + ? config.semconvStability + : semconvStabilityFromStr( + 'database', + process.env.OTEL_SEMCONV_STABILITY_OPT_IN + ); } protected init() { @@ -127,28 +151,60 @@ export class RedisInstrumentationV2_V3 extends InstrumentationBase; } -export class RedisInstrumentationV4 extends InstrumentationBase { +export class RedisInstrumentationV4_V5 extends InstrumentationBase { static readonly COMPONENT = 'redis'; + private _semconvStability: SemconvStability; constructor(config: RedisInstrumentationConfig = {}) { super(PACKAGE_NAME, PACKAGE_VERSION, config); + this._semconvStability = config.semconvStability + ? config.semconvStability + : semconvStabilityFromStr( + 'database', + process.env.OTEL_SEMCONV_STABILITY_OPT_IN + ); + } + + override setConfig(config: RedisInstrumentationConfig = {}) { + super.setConfig(config); + this._semconvStability = config.semconvStability + ? config.semconvStability + : semconvStabilityFromStr( + 'database', + process.env.OTEL_SEMCONV_STABILITY_OPT_IN + ); } protected init() { @@ -111,7 +134,7 @@ export class RedisInstrumentationV4 extends InstrumentationBase { const redisClientMultiCommandPrototype = moduleExports?.default?.prototype; @@ -150,7 +173,7 @@ export class RedisInstrumentationV4 extends InstrumentationBase { const redisClientPrototype = moduleExports?.default?.prototype; @@ -213,7 +236,7 @@ export class RedisInstrumentationV4 extends InstrumentationBase { return moduleExports; }, @@ -327,11 +350,14 @@ export class RedisInstrumentationV4 extends InstrumentationBase { const options = this.options; - - const attributes = getClientAttributes(plugin._diag, options); + const attributes = getClientAttributes( + plugin._diag, + options, + plugin._semconvStability + ); const span = plugin.tracer.startSpan( - `${RedisInstrumentationV4.COMPONENT}-connect`, + `${RedisInstrumentationV4_V5.COMPONENT}-connect`, { kind: SpanKind.CLIENT, attributes, @@ -379,12 +405,23 @@ export class RedisInstrumentationV4 extends InstrumentationBase { let redis: any; - const shouldTestLocal = process.env.RUN_REDIS_TESTS_LOCAL; - const shouldTest = process.env.RUN_REDIS_TESTS || shouldTestLocal; + const shouldTest = process.env.RUN_REDIS_TESTS; const tracer = trace.getTracer('external'); before(function () { @@ -75,19 +84,9 @@ describe('redis v2-v3', () => { this.skip(); } - if (shouldTestLocal) { - testUtils.startDocker('redis'); - } - redis = require('redis'); }); - after(() => { - if (shouldTestLocal) { - testUtils.cleanUpDocker('redis'); - } - }); - describe('#createClient()', () => { it('should propagate the current span to event handlers', done => { const span = tracer.startSpan('test span'); @@ -116,14 +115,16 @@ describe('redis v2-v3', () => { description: string; command: string; args: string[]; - expectedDbStatement: string; + expectedDbStatementOld: string; + expectedDbStatementStable: string; method: (cb: Callback) => unknown; }> = [ { description: 'insert', command: 'hset', args: ['hash', 'random', 'random'], - expectedDbStatement: 'hash random [1 other arguments]', + expectedDbStatementOld: 'hash random [1 other arguments]', + expectedDbStatementStable: 'hset hash random [1 other arguments]', method: (cb: Callback) => client.hset('hash', 'random', 'random', cb), }, @@ -131,14 +132,16 @@ describe('redis v2-v3', () => { description: 'get', command: 'get', args: ['test'], - expectedDbStatement: 'test', + expectedDbStatementOld: 'test', + expectedDbStatementStable: 'get test', method: (cb: Callback) => client.get('test', cb), }, { description: 'delete', command: 'del', args: ['test'], - expectedDbStatement: 'test', + expectedDbStatementOld: 'test', + expectedDbStatementStable: 'del test', method: (cb: Callback) => client.del('test', cb), }, ]; @@ -168,13 +171,135 @@ describe('redis v2-v3', () => { done(); }); }); + describe('semconv stability config', () => { + function recordSpanForOperation(operation: any, cb: (span: any) => void) { + operation.method((err: unknown) => { + assert.ifError(err); + const [span] = testUtils.getTestSpans(); + cb(span); + }); + } + + describe('semconv stability with get operation', () => { + const operation = REDIS_OPERATIONS.find(op => op.command === 'get')!; + + it('should emit only old attributes when set to OLD', done => { + instrumentation.setConfig({ semconvStability: SemconvStability.OLD }); + + recordSpanForOperation(operation, span => { + assert.strictEqual(span.attributes[SEMATTRS_DB_SYSTEM], 'redis'); + assert.strictEqual( + span.attributes[SEMATTRS_DB_STATEMENT], + `${operation.command} ${operation.expectedDbStatementOld}` + ); + + assert.ok(!(ATTR_DB_SYSTEM_NAME in span.attributes)); + assert.ok(!(ATTR_DB_QUERY_TEXT in span.attributes)); + assert.ok(!(ATTR_DB_OPERATION_NAME in span.attributes)); + + assert.strictEqual( + span.attributes[SEMATTRS_NET_PEER_NAME], + CONFIG.host + ); + assert.strictEqual( + span.attributes[SEMATTRS_NET_PEER_PORT], + CONFIG.port + ); + assert.strictEqual( + span.attributes[SEMATTRS_DB_CONNECTION_STRING], + URL + ); + + assert.ok(!(ATTR_SERVER_ADDRESS in span.attributes)); + assert.ok(!(ATTR_SERVER_PORT in span.attributes)); + done(); + }); + }); + + it('should emit only new attributes when set to STABLE', done => { + instrumentation.setConfig({ + semconvStability: SemconvStability.STABLE, + }); + + recordSpanForOperation(operation, span => { + assert.strictEqual(span.attributes[ATTR_DB_SYSTEM_NAME], 'redis'); + assert.strictEqual( + span.attributes[ATTR_DB_QUERY_TEXT], + operation.expectedDbStatementStable + ); + assert.strictEqual( + span.attributes[ATTR_DB_OPERATION_NAME], + operation.command + ); + + assert.ok(!(SEMATTRS_DB_SYSTEM in span.attributes)); + assert.ok(!(SEMATTRS_DB_STATEMENT in span.attributes)); + + assert.strictEqual( + span.attributes[ATTR_SERVER_ADDRESS], + CONFIG.host + ); + assert.strictEqual(span.attributes[ATTR_SERVER_PORT], CONFIG.port); + + assert.ok(!(SEMATTRS_NET_PEER_NAME in span.attributes)); + assert.ok(!(SEMATTRS_NET_PEER_PORT in span.attributes)); + assert.ok(!(SEMATTRS_DB_CONNECTION_STRING in span.attributes)); + done(); + }); + }); + + it('should emit both old and new attributes when set to DUPLICATE', done => { + instrumentation.setConfig({ + semconvStability: SemconvStability.DUPLICATE, + }); + + recordSpanForOperation(operation, span => { + assert.strictEqual(span.attributes[SEMATTRS_DB_SYSTEM], 'redis'); + assert.strictEqual( + span.attributes[SEMATTRS_DB_STATEMENT], + `${operation.command} ${operation.expectedDbStatementOld}` + ); + assert.strictEqual(span.attributes[ATTR_DB_SYSTEM_NAME], 'redis'); + assert.strictEqual( + span.attributes[ATTR_DB_QUERY_TEXT], + operation.expectedDbStatementStable + ); + assert.strictEqual( + span.attributes[ATTR_DB_OPERATION_NAME], + operation.command + ); + + assert.strictEqual( + span.attributes[SEMATTRS_NET_PEER_NAME], + CONFIG.host + ); + assert.strictEqual( + span.attributes[SEMATTRS_NET_PEER_PORT], + CONFIG.port + ); + assert.strictEqual( + span.attributes[ATTR_SERVER_ADDRESS], + CONFIG.host + ); + assert.strictEqual(span.attributes[ATTR_SERVER_PORT], CONFIG.port); + assert.strictEqual( + span.attributes[SEMATTRS_DB_CONNECTION_STRING], + URL + ); + done(); + }); + }); + }); + }); describe('Instrumenting query operations', () => { REDIS_OPERATIONS.forEach(operation => { it(`should create a child span for ${operation.description}`, done => { const attributes = { ...DEFAULT_ATTRIBUTES, - [SEMATTRS_DB_STATEMENT]: `${operation.command} ${operation.expectedDbStatement}`, + [ATTR_DB_OPERATION_NAME]: operation.command, + [ATTR_DB_QUERY_TEXT]: operation.expectedDbStatementStable, + [SEMATTRS_DB_STATEMENT]: `${operation.command} ${operation.expectedDbStatementOld}`, }; const span = tracer.startSpan('test span'); context.with(trace.setSpan(context.active(), span), () => { @@ -188,6 +313,7 @@ describe('redis v2-v3', () => { endedSpans[0].name, `redis-${operation.command}` ); + testUtils.assertSpan( endedSpans[0], SpanKind.CLIENT, @@ -244,6 +370,11 @@ describe('redis v2-v3', () => { endedSpans[0].attributes[SEMATTRS_DB_STATEMENT], expectedStatement ); + + assert.strictEqual( + endedSpans[0].attributes[ATTR_DB_QUERY_TEXT], + expectedStatement + ); done(); }); }); diff --git a/packages/instrumentation-redis/test/v4/redis.test.ts b/packages/instrumentation-redis/test/v4-v5/redis.test.ts similarity index 72% rename from packages/instrumentation-redis/test/v4/redis.test.ts rename to packages/instrumentation-redis/test/v4-v5/redis.test.ts index 01927c1df5..d749056c31 100644 --- a/packages/instrumentation-redis/test/v4/redis.test.ts +++ b/packages/instrumentation-redis/test/v4-v5/redis.test.ts @@ -20,17 +20,12 @@ import { registerInstrumentationTesting, } from '@opentelemetry/contrib-test-utils'; import { RedisInstrumentation } from '../../src'; -import type { MultiErrorReply } from '../../src/v4/internal-types'; +import type { MultiErrorReply } from '../../src/v4-v5/internal-types'; import * as assert from 'assert'; -import { - redisTestConfig, - redisTestUrl, - shouldTest, - shouldTestLocal, -} from './utils'; -import * as testUtils from '@opentelemetry/contrib-test-utils'; +import { redisTestConfig, redisTestUrl, shouldTest } from './utils'; +process.env.OTEL_SEMCONV_STABILITY_OPT_IN = 'database/dup'; const instrumentation = registerInstrumentationTesting( new RedisInstrumentation() ); @@ -51,11 +46,18 @@ import { SEMATTRS_EXCEPTION_MESSAGE, SEMATTRS_NET_PEER_NAME, SEMATTRS_NET_PEER_PORT, + ATTR_DB_SYSTEM_NAME, + ATTR_DB_OPERATION_NAME, + ATTR_DB_QUERY_TEXT, + ATTR_SERVER_ADDRESS, + ATTR_SERVER_PORT, + ATTR_EXCEPTION_MESSAGE, } from '@opentelemetry/semantic-conventions'; import { RedisResponseCustomAttributeFunction } from '../../src/types'; import { hrTimeToMilliseconds, suppressTracing } from '@opentelemetry/core'; +import { SemconvStability } from '@opentelemetry/instrumentation'; -describe('redis v4', () => { +describe('redis v4-v5', () => { before(function () { // needs to be "function" to have MochaContext "this" context if (!shouldTest) { @@ -64,16 +66,6 @@ describe('redis v4', () => { this.test!.parent!.pending = true; this.skip(); } - - if (shouldTestLocal) { - testUtils.startDocker('redis'); - } - }); - - after(() => { - if (shouldTestLocal) { - testUtils.cleanUpDocker('redis'); - } }); let client: RedisClientType; @@ -104,19 +96,33 @@ describe('redis v4', () => { assert.ok(setSpan); assert.strictEqual(setSpan?.kind, SpanKind.CLIENT); assert.strictEqual(setSpan?.name, 'redis-SET'); + assert.strictEqual(setSpan?.attributes[ATTR_DB_SYSTEM_NAME], 'redis'); assert.strictEqual(setSpan?.attributes[SEMATTRS_DB_SYSTEM], 'redis'); assert.strictEqual( setSpan?.attributes[SEMATTRS_DB_STATEMENT], 'SET key [1 other arguments]' ); + assert.strictEqual( + setSpan?.attributes[ATTR_DB_QUERY_TEXT], + 'SET key [1 other arguments]' + ); assert.strictEqual( setSpan?.attributes[SEMATTRS_NET_PEER_NAME], redisTestConfig.host ); + assert.strictEqual( + setSpan?.attributes[ATTR_SERVER_ADDRESS], + redisTestConfig.host + ); assert.strictEqual( setSpan?.attributes[SEMATTRS_NET_PEER_PORT], redisTestConfig.port ); + assert.strictEqual( + setSpan?.attributes[ATTR_SERVER_PORT], + redisTestConfig.port + ); + assert.strictEqual(setSpan?.attributes[ATTR_DB_OPERATION_NAME], 'SET'); assert.strictEqual( setSpan?.attributes[SEMATTRS_DB_CONNECTION_STRING], redisTestUrl @@ -126,16 +132,26 @@ describe('redis v4', () => { assert.ok(getSpan); assert.strictEqual(getSpan?.kind, SpanKind.CLIENT); assert.strictEqual(getSpan?.name, 'redis-GET'); + assert.strictEqual(getSpan?.attributes[ATTR_DB_SYSTEM_NAME], 'redis'); + assert.strictEqual(getSpan?.attributes[ATTR_DB_QUERY_TEXT], 'GET key'); assert.strictEqual(getSpan?.attributes[SEMATTRS_DB_SYSTEM], 'redis'); assert.strictEqual(getSpan?.attributes[SEMATTRS_DB_STATEMENT], 'GET key'); assert.strictEqual( getSpan?.attributes[SEMATTRS_NET_PEER_NAME], redisTestConfig.host ); + assert.strictEqual( + getSpan?.attributes[ATTR_SERVER_ADDRESS], + redisTestConfig.host + ); assert.strictEqual( getSpan?.attributes[SEMATTRS_NET_PEER_PORT], redisTestConfig.port ); + assert.strictEqual( + getSpan?.attributes[ATTR_SERVER_PORT], + redisTestConfig.port + ); assert.strictEqual( getSpan?.attributes[SEMATTRS_DB_CONNECTION_STRING], redisTestUrl @@ -153,14 +169,27 @@ describe('redis v4', () => { setSpan?.attributes[SEMATTRS_DB_STATEMENT], 'SET key [1 other arguments]' ); + assert.strictEqual( + setSpan?.attributes[ATTR_DB_QUERY_TEXT], + 'SET key [1 other arguments]' + ); assert.strictEqual( setSpan?.attributes[SEMATTRS_NET_PEER_NAME], redisTestConfig.host ); + assert.strictEqual( + setSpan?.attributes[ATTR_SERVER_ADDRESS], + redisTestConfig.host + ); assert.strictEqual( setSpan?.attributes[SEMATTRS_NET_PEER_PORT], redisTestConfig.port ); + assert.strictEqual( + setSpan?.attributes[ATTR_SERVER_PORT], + redisTestConfig.port + ); + assert.strictEqual(setSpan?.attributes[ATTR_DB_OPERATION_NAME], 'SET'); }); it('command with error', async () => { @@ -184,6 +213,10 @@ describe('redis v4', () => { exceptions?.[0].attributes?.[SEMATTRS_EXCEPTION_MESSAGE], 'ERR value is not an integer or out of range' ); + assert.strictEqual( + exceptions?.[0].attributes?.[ATTR_EXCEPTION_MESSAGE], + 'ERR value is not an integer or out of range' + ); }); }); @@ -204,14 +237,23 @@ describe('redis v4', () => { assert.strictEqual(span.name, 'redis-connect'); assert.strictEqual(span.attributes[SEMATTRS_DB_SYSTEM], 'redis'); + assert.strictEqual(span.attributes[ATTR_DB_SYSTEM_NAME], 'redis'); assert.strictEqual( span.attributes[SEMATTRS_NET_PEER_NAME], redisTestConfig.host ); + assert.strictEqual( + span.attributes[ATTR_SERVER_ADDRESS], + redisTestConfig.host + ); assert.strictEqual( span.attributes[SEMATTRS_NET_PEER_PORT], redisTestConfig.port ); + assert.strictEqual( + span.attributes[ATTR_SERVER_PORT], + redisTestConfig.port + ); assert.strictEqual( span.attributes[SEMATTRS_DB_CONNECTION_STRING], redisTestUrl @@ -328,6 +370,46 @@ describe('redis v4', () => { }); }); + describe('Redis client connect with malformed URL', () => { + it('malformed URL should trigger diag error and reject connection', async () => { + instrumentation.setConfig({ semconvStability: SemconvStability.OLD }); + + const diagErrors: any[] = []; + diag.setLogger( + { + verbose() {}, + debug() {}, + info() {}, + warn() {}, + error(...args) { + diagErrors.push(args); + }, + }, + DiagLogLevel.ALL + ); + + const client = createClient({ + socket: { host: 'localhost', port: 9999 }, + }); + + const opts = (client as any).options; + if (opts) opts.url = '://malformed-url-no-protocol'; + + await assert.rejects(() => client.connect()); + + try { + await client.disconnect(); + } catch {} + + assert.ok(diagErrors.length > 0, 'Expected at least one diag error'); + const found = diagErrors.some(args => + args.includes('failed to sanitize redis connection url') + ); + + assert.ok(found, 'Expected sanitize URL diag error'); + }); + }); + describe('multi (transactions) commands', () => { it('multi commands', async () => { await client.set('another-key', 'another-value'); @@ -350,18 +432,34 @@ describe('redis v4', () => { multiSetSpan.attributes[SEMATTRS_DB_STATEMENT], 'SET key [1 other arguments]' ); + assert.strictEqual( + multiSetSpan.attributes[ATTR_DB_QUERY_TEXT], + 'SET key [1 other arguments]' + ); assert.strictEqual( multiSetSpan?.attributes[SEMATTRS_NET_PEER_NAME], redisTestConfig.host ); + assert.strictEqual( + multiSetSpan?.attributes[ATTR_SERVER_ADDRESS], + redisTestConfig.host + ); assert.strictEqual( multiSetSpan?.attributes[SEMATTRS_NET_PEER_PORT], redisTestConfig.port ); + assert.strictEqual( + multiSetSpan?.attributes[ATTR_SERVER_PORT], + redisTestConfig.port + ); assert.strictEqual( multiSetSpan?.attributes[SEMATTRS_DB_CONNECTION_STRING], redisTestUrl ); + assert.strictEqual( + multiSetSpan?.attributes[ATTR_DB_OPERATION_NAME], + 'SET' + ); assert.ok(multiGetSpan); assert.strictEqual(multiGetSpan.name, 'redis-GET'); @@ -369,18 +467,34 @@ describe('redis v4', () => { multiGetSpan.attributes[SEMATTRS_DB_STATEMENT], 'GET another-key' ); + assert.strictEqual( + multiGetSpan.attributes[ATTR_DB_QUERY_TEXT], + 'GET another-key' + ); assert.strictEqual( multiGetSpan?.attributes[SEMATTRS_NET_PEER_NAME], redisTestConfig.host ); + assert.strictEqual( + multiGetSpan?.attributes[ATTR_SERVER_ADDRESS], + redisTestConfig.host + ); assert.strictEqual( multiGetSpan?.attributes[SEMATTRS_NET_PEER_PORT], redisTestConfig.port ); + assert.strictEqual( + multiGetSpan?.attributes[ATTR_SERVER_PORT], + redisTestConfig.port + ); assert.strictEqual( multiGetSpan?.attributes[SEMATTRS_DB_CONNECTION_STRING], redisTestUrl ); + assert.strictEqual( + multiGetSpan?.attributes[ATTR_DB_OPERATION_NAME], + 'GET' + ); }); it('multi command with generic command', async () => { @@ -396,18 +510,34 @@ describe('redis v4', () => { multiSetSpan.attributes[SEMATTRS_DB_STATEMENT], 'SET key [1 other arguments]' ); + assert.strictEqual( + multiSetSpan.attributes[ATTR_DB_QUERY_TEXT], + 'SET key [1 other arguments]' + ); assert.strictEqual( multiSetSpan?.attributes[SEMATTRS_NET_PEER_NAME], redisTestConfig.host ); + assert.strictEqual( + multiSetSpan?.attributes[ATTR_SERVER_ADDRESS], + redisTestConfig.host + ); assert.strictEqual( multiSetSpan?.attributes[SEMATTRS_NET_PEER_PORT], redisTestConfig.port ); + assert.strictEqual( + multiSetSpan?.attributes[ATTR_SERVER_PORT], + redisTestConfig.port + ); assert.strictEqual( multiSetSpan?.attributes[SEMATTRS_DB_CONNECTION_STRING], redisTestUrl ); + assert.strictEqual( + multiSetSpan?.attributes[ATTR_DB_OPERATION_NAME], + 'SET' + ); }); it('multi command with error', async () => { @@ -460,7 +590,7 @@ describe('redis v4', () => { it('duration covers create until server response', async () => { await client.set('another-key', 'another-value'); const multiClient = client.multi(); - let commands = multiClient.set('key', 'value'); + let commands: any = multiClient.set('key', 'value'); // wait 10 ms before adding next command // simulate long operation await new Promise(resolve => setTimeout(resolve, 10)); @@ -549,6 +679,10 @@ describe('redis v4', () => { span.attributes[SEMATTRS_DB_STATEMENT], 'SET key value' ); + assert.strictEqual( + span.attributes[ATTR_DB_QUERY_TEXT], + 'SET key value' + ); }); it('dbStatementSerializer throws', async () => { @@ -561,6 +695,7 @@ describe('redis v4', () => { const [span] = getTestSpans(); assert.ok(span); assert.ok(!(SEMATTRS_DB_STATEMENT in span.attributes)); + assert.ok(!(ATTR_DB_QUERY_TEXT in span.attributes)); }); }); @@ -622,4 +757,80 @@ describe('redis v4', () => { }); }); }); + + describe('semconv stability configuration', () => { + async function getSpan(client: RedisClientType) { + await client.set('key', 'value'); + const spans = getTestSpans(); + return spans.find(s => s.name.includes('SET')); + } + + it('should emit only old attributes when semconvStability is OLD', async () => { + instrumentation.setConfig({ semconvStability: SemconvStability.OLD }); + const setSpan = await getSpan(client); + assert.ok(setSpan); + + assert.strictEqual(setSpan.attributes[SEMATTRS_DB_SYSTEM], 'redis'); + assert.strictEqual( + setSpan.attributes[SEMATTRS_DB_STATEMENT], + 'SET key [1 other arguments]' + ); + assert.strictEqual( + setSpan.attributes[SEMATTRS_NET_PEER_NAME], + redisTestConfig.host + ); + + assert.ok(!(ATTR_DB_SYSTEM_NAME in setSpan.attributes)); + assert.ok(!(ATTR_DB_QUERY_TEXT in setSpan.attributes)); + assert.ok(!(ATTR_SERVER_ADDRESS in setSpan.attributes)); + }); + + it('should emit only new attributes when semconvStability is STABLE', async () => { + instrumentation.setConfig({ semconvStability: SemconvStability.STABLE }); + const setSpan = await getSpan(client); + assert.ok(setSpan); + + assert.strictEqual(setSpan.attributes[ATTR_DB_SYSTEM_NAME], 'redis'); + assert.strictEqual( + setSpan.attributes[ATTR_DB_QUERY_TEXT], + 'SET key [1 other arguments]' + ); + assert.strictEqual( + setSpan.attributes[ATTR_SERVER_ADDRESS], + redisTestConfig.host + ); + + assert.ok(!(SEMATTRS_DB_SYSTEM in setSpan.attributes)); + assert.ok(!(SEMATTRS_DB_STATEMENT in setSpan.attributes)); + assert.ok(!(SEMATTRS_NET_PEER_NAME in setSpan.attributes)); + }); + + it('should emit both old and new attributes when semconvStability is DUPLICATE', async () => { + instrumentation.setConfig({ + semconvStability: SemconvStability.DUPLICATE, + }); + const setSpan = await getSpan(client); + assert.ok(setSpan); + + assert.strictEqual(setSpan.attributes[SEMATTRS_DB_SYSTEM], 'redis'); + assert.strictEqual( + setSpan.attributes[SEMATTRS_DB_STATEMENT], + 'SET key [1 other arguments]' + ); + assert.strictEqual( + setSpan.attributes[SEMATTRS_NET_PEER_NAME], + redisTestConfig.host + ); + + assert.strictEqual(setSpan.attributes[ATTR_DB_SYSTEM_NAME], 'redis'); + assert.strictEqual( + setSpan.attributes[ATTR_DB_QUERY_TEXT], + 'SET key [1 other arguments]' + ); + assert.strictEqual( + setSpan.attributes[ATTR_SERVER_ADDRESS], + redisTestConfig.host + ); + }); + }); }); diff --git a/packages/instrumentation-redis/test/v4/utils.ts b/packages/instrumentation-redis/test/v4-v5/utils.ts similarity index 85% rename from packages/instrumentation-redis/test/v4/utils.ts rename to packages/instrumentation-redis/test/v4-v5/utils.ts index cc0e0a6609..b9c2e7705e 100644 --- a/packages/instrumentation-redis/test/v4/utils.ts +++ b/packages/instrumentation-redis/test/v4-v5/utils.ts @@ -20,5 +20,4 @@ export const redisTestConfig = { export const redisTestUrl = `redis://${redisTestConfig.host}:${redisTestConfig.port}`; -export const shouldTestLocal = process.env.RUN_REDIS_TESTS_LOCAL; -export const shouldTest = process.env.RUN_REDIS_TESTS || shouldTestLocal; +export const shouldTest = process.env.RUN_REDIS_TESTS; diff --git a/packages/instrumentation-redis/tsconfig.json b/packages/instrumentation-redis/tsconfig.json index 4078877ce6..1d2135f1cc 100644 --- a/packages/instrumentation-redis/tsconfig.json +++ b/packages/instrumentation-redis/tsconfig.json @@ -2,7 +2,12 @@ "extends": "../../tsconfig.base", "compilerOptions": { "rootDir": ".", - "outDir": "build" + "outDir": "build", + /* Work-around for the node-redis type-checking bug + (see https://github.com/redis/node-redis/issues/3009). */ + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true }, "include": [ "src/**/*.ts", diff --git a/packages/instrumentation-restify/.eslintrc.js b/packages/instrumentation-restify/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-restify/.eslintrc.js +++ b/packages/instrumentation-restify/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-restify/.tav.yml b/packages/instrumentation-restify/.tav.yml index 8d354d0d58..371a7cad3f 100644 --- a/packages/instrumentation-restify/.tav.yml +++ b/packages/instrumentation-restify/.tav.yml @@ -2,11 +2,15 @@ restify: - versions: include: '>=10.0.0 <12' mode: latest-minors - node: ">=18" + node: ">=18 <24" commands: npm run test + env: + - SKIP_TEST_IF_DISABLED=true - versions: include: '>=4.1.0 <10' mode: max-7 node: "<18" commands: npm run test + env: + - SKIP_TEST_IF_DISABLED=true diff --git a/packages/instrumentation-restify/CHANGELOG.md b/packages/instrumentation-restify/CHANGELOG.md index 907dbadcee..c23d00a49c 100644 --- a/packages/instrumentation-restify/CHANGELOG.md +++ b/packages/instrumentation-restify/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.50.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-restify-v0.49.0...instrumentation-restify-v0.50.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + ## [0.49.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-restify-v0.48.2...instrumentation-restify-v0.49.0) (2025-07-09) diff --git a/packages/instrumentation-restify/package.json b/packages/instrumentation-restify/package.json index 480f61a6e7..d04e8a9cc5 100644 --- a/packages/instrumentation-restify/package.json +++ b/packages/instrumentation-restify/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-restify", - "version": "0.49.0", + "version": "0.50.0", "description": "OpenTelemetry instrumentation for `restify` http web application framework", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -11,15 +11,16 @@ }, "scripts": { "clean": "rimraf build/*", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-restify", "compile": "tsc -p .", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-restify", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", - "tdd": "yarn test -- --watch-extensions ts --watch", - "test": "nyc mocha 'test/**/*.ts'", + "tdd": "npm test -- --watch-extensions ts --watch", + "test": "SKIP_TEST_IF_NODE_NEWER_THAN=23 nyc --no-clean mocha --require '../../scripts/skip-test-if.js' 'test/**/*.ts'", "test-all-versions": "tav", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", "version:update": "node ../../scripts/version-update.js", "watch": "tsc -w" }, @@ -64,7 +65,7 @@ }, "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-restify#readme" diff --git a/packages/instrumentation-router/.eslintrc.js b/packages/instrumentation-router/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-router/.eslintrc.js +++ b/packages/instrumentation-router/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-router/CHANGELOG.md b/packages/instrumentation-router/CHANGELOG.md index f00c60bbe2..528c3dc054 100644 --- a/packages/instrumentation-router/CHANGELOG.md +++ b/packages/instrumentation-router/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.49.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-router-v0.48.0...instrumentation-router-v0.49.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + ## [0.48.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-router-v0.47.0...instrumentation-router-v0.48.0) (2025-07-09) diff --git a/packages/instrumentation-router/package.json b/packages/instrumentation-router/package.json index 69274a2ae6..b03f63a515 100644 --- a/packages/instrumentation-router/package.json +++ b/packages/instrumentation-router/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-router", - "version": "0.48.0", + "version": "0.49.0", "description": "OpenTelemetry instrumentation for `router` http middleware router", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,16 +10,17 @@ "directory": "packages/instrumentation-router" }, "scripts": { - "test": "nyc mocha 'test/**/*.ts'", - "tdd": "yarn test -- --watch-extensions ts --watch", "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "lint:readme": "node ../../scripts/lint-readme.js", - "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-router", "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-router", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", + "tdd": "npm test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha 'test/**/*.ts'", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "version:update": "node ../../scripts/version-update.js", "watch": "tsc -w" }, "keywords": [ @@ -58,7 +59,7 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-router#readme" diff --git a/packages/instrumentation-runtime-node/.eslintrc.js b/packages/instrumentation-runtime-node/.eslintrc.js index 15096b6658..912e1cf251 100644 --- a/packages/instrumentation-runtime-node/.eslintrc.js +++ b/packages/instrumentation-runtime-node/.eslintrc.js @@ -1,3 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { env: { mocha: true, diff --git a/packages/instrumentation-runtime-node/CHANGELOG.md b/packages/instrumentation-runtime-node/CHANGELOG.md index 0c2beb77cb..2edacec1bd 100644 --- a/packages/instrumentation-runtime-node/CHANGELOG.md +++ b/packages/instrumentation-runtime-node/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.18.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-runtime-node-v0.17.1...instrumentation-runtime-node-v0.18.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + +## [0.17.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-runtime-node-v0.17.0...instrumentation-runtime-node-v0.17.1) (2025-08-13) + + +### Bug Fixes + +* **instrumentation-runtime-node:** fix .isEnabled() ([#2946](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2946)) ([215c2b5](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/215c2b5a6f2706430e98375377cc091d3c99a2b1)) + ## [0.17.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-runtime-node-v0.16.0...instrumentation-runtime-node-v0.17.0) (2025-07-09) diff --git a/packages/instrumentation-runtime-node/package.json b/packages/instrumentation-runtime-node/package.json index e489dc7dac..8d8c3618b4 100644 --- a/packages/instrumentation-runtime-node/package.json +++ b/packages/instrumentation-runtime-node/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-runtime-node", - "version": "0.17.0", + "version": "0.18.0", "description": "OpenTelemetry instrumentation for Node.js Performance measurement API", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -12,12 +12,13 @@ "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-runtime-node#readme", "scripts": { "clean": "rimraf build/*", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-runtime-node", "compile": "tsc -p .", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-runtime-node", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", - "test": "nyc mocha 'test/**/*.test.ts'", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", "version:update": "node ../../scripts/version-update.js" }, "author": "OpenTelemetry Authors", @@ -42,7 +43,7 @@ "access": "public" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0" }, "devDependencies": { "@opentelemetry/api": "^1.3.0", diff --git a/packages/instrumentation-runtime-node/src/instrumentation.ts b/packages/instrumentation-runtime-node/src/instrumentation.ts index effb3e8e91..9f0e9c8250 100644 --- a/packages/instrumentation-runtime-node/src/instrumentation.ts +++ b/packages/instrumentation-runtime-node/src/instrumentation.ts @@ -73,6 +73,7 @@ export class RuntimeNodeInstrumentation extends InstrumentationBase setTimeout(resolve, MEASUREMENT_INTERVAL * 5)); const secondCollection = await metricReader.collect(); diff --git a/packages/instrumentation-socket.io/.eslintrc.js b/packages/instrumentation-socket.io/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-socket.io/.eslintrc.js +++ b/packages/instrumentation-socket.io/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-socket.io/CHANGELOG.md b/packages/instrumentation-socket.io/CHANGELOG.md index 9aeac2023a..18691300f5 100644 --- a/packages/instrumentation-socket.io/CHANGELOG.md +++ b/packages/instrumentation-socket.io/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.51.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-socket.io-v0.50.0...instrumentation-socket.io-v0.51.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + ## [0.50.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-socket.io-v0.49.0...instrumentation-socket.io-v0.50.0) (2025-07-09) diff --git a/packages/instrumentation-socket.io/package.json b/packages/instrumentation-socket.io/package.json index 832c982450..7711820145 100644 --- a/packages/instrumentation-socket.io/package.json +++ b/packages/instrumentation-socket.io/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-socket.io", - "version": "0.50.0", + "version": "0.51.0", "description": "OpenTelemetry instrumentation for `socket.io` messaging server implementation for Socket.IO communication", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,17 +10,18 @@ "directory": "packages/instrumentation-socket.io" }, "scripts": { - "test": "mocha --require '@opentelemetry/contrib-test-utils' 'test/**/*.test.ts'", - "test-all-versions": "tav", - "tdd": "npm run test -- --watch-extensions ts --watch", "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-socket.io", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", - "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-socket.io", - "compile": "tsc -p ." + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' 'test/**/*.test.ts'", + "test-all-versions": "tav", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "version:update": "node ../../scripts/version-update.js" }, "keywords": [ "socket.io", @@ -47,7 +48,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -60,7 +61,7 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-socket.io#readme" diff --git a/packages/instrumentation-tedious/.eslintrc.js b/packages/instrumentation-tedious/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-tedious/.eslintrc.js +++ b/packages/instrumentation-tedious/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-tedious/.tav.yml b/packages/instrumentation-tedious/.tav.yml index f61f4456f7..688222b3f4 100644 --- a/packages/instrumentation-tedious/.tav.yml +++ b/packages/instrumentation-tedious/.tav.yml @@ -1,6 +1,13 @@ tedious: - versions: - include: ">=1.11.0 <12" + include: ">=1.11.0 <2" + mode: latest-majors + # tedious@1 uses tls.createSecurePair() which was removed in Node.js 24 + # (https://nodejs.org/api/all.html#DEP0064). + node: "<24" + commands: npm run test + - versions: + include: ">=2 <12" # 4.0.0 is broken: https://github.com/tediousjs/tedious/commit/4eceb48 exclude: "4.0.0" mode: latest-majors diff --git a/packages/instrumentation-tedious/CHANGELOG.md b/packages/instrumentation-tedious/CHANGELOG.md index f665a57f48..4d66e52ae0 100644 --- a/packages/instrumentation-tedious/CHANGELOG.md +++ b/packages/instrumentation-tedious/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.23.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-tedious-v0.22.0...instrumentation-tedious-v0.23.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + ## [0.22.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-tedious-v0.21.1...instrumentation-tedious-v0.22.0) (2025-07-09) diff --git a/packages/instrumentation-tedious/package.json b/packages/instrumentation-tedious/package.json index 3466793b46..a2c0f0f10e 100644 --- a/packages/instrumentation-tedious/package.json +++ b/packages/instrumentation-tedious/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-tedious", - "version": "0.22.0", + "version": "0.23.0", "description": "OpenTelemetry instrumentation for `tedious` database client for Microsoft SQL Server", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -11,14 +11,19 @@ }, "scripts": { "clean": "rimraf build/*", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-tedious", "compile": "tsc -p .", - "lint:fix": "eslint . --ext .ts --fix", - "lint": "eslint . --ext .ts", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-tedious", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "lint": "eslint . --ext=ts,js,mjs", "prepublishOnly": "npm run compile", "tdd": "npm run test -- --watch-extensions ts --watch", - "test": "nyc mocha 'test/**/*.test.ts'", + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm test", "test-all-versions": "tav", + "test-all-versions:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm run test-all-versions", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "test-services:start": "cd ../.. && npm run test-services:start mssql", + "test-services:stop": "cd ../.. && npm run test-services:stop mssql", "version:update": "node ../../scripts/version-update.js" }, "keywords": [ @@ -52,10 +57,11 @@ "devDependencies": { "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-async-hooks": "^2.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", + "cross-env": "7.0.3", "nyc": "17.1.0", "rimraf": "5.0.10", "semver": "7.7.2", @@ -64,7 +70,7 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/tedious": "^4.0.14" }, diff --git a/packages/instrumentation-tedious/test/instrumentation.test.ts b/packages/instrumentation-tedious/test/instrumentation.test.ts index 4c8c27e76b..46eed76563 100644 --- a/packages/instrumentation-tedious/test/instrumentation.test.ts +++ b/packages/instrumentation-tedious/test/instrumentation.test.ts @@ -93,31 +93,16 @@ describe('tedious', () => { const provider = new BasicTracerProvider({ spanProcessors: [new SimpleSpanProcessor(memoryExporter)], }); - const shouldTest = process.env.RUN_MSSQL_TESTS; // For CI: assumes local db is already available - const shouldTestLocally = process.env.RUN_MSSQL_TESTS_LOCAL; // For local: spins up local db via docker + const shouldTest = process.env.RUN_MSSQL_TESTS; before(function (done) { - if (!(shouldTest || shouldTestLocally) || incompatVersions) { + if (!shouldTest || incompatVersions) { // this.skip() workaround // https://github.com/mochajs/mocha/issues/2683#issuecomment-375629901 this.test!.parent!.pending = true; this.skip(); } - if (shouldTestLocally) { - testUtils.startDocker('mssql'); - // wait 15 seconds for docker container to start - this.timeout(20000); - setTimeout(done, 15000); - } else { - done(); - } - }); - - after(function () { - if (shouldTestLocally) { - this.timeout(15000); - testUtils.cleanUpDocker('mssql'); - } + done(); }); beforeEach(async function () { diff --git a/packages/instrumentation-typeorm/.eslintrc.js b/packages/instrumentation-typeorm/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-typeorm/.eslintrc.js +++ b/packages/instrumentation-typeorm/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-typeorm/CHANGELOG.md b/packages/instrumentation-typeorm/CHANGELOG.md index 64b03f2087..bcfeff7ed1 100644 --- a/packages/instrumentation-typeorm/CHANGELOG.md +++ b/packages/instrumentation-typeorm/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.5.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-typeorm-v0.4.0...instrumentation-typeorm-v0.5.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + ## [0.4.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-typeorm-v0.3.0...instrumentation-typeorm-v0.4.0) (2025-07-09) diff --git a/packages/instrumentation-typeorm/package.json b/packages/instrumentation-typeorm/package.json index 3f0ee2045b..004ea90824 100644 --- a/packages/instrumentation-typeorm/package.json +++ b/packages/instrumentation-typeorm/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-typeorm", - "version": "0.4.0", + "version": "0.5.0", "description": "OpenTelemetry instrumentation for `typeorm` database data-mapper ORM", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -11,17 +11,18 @@ }, "scripts": { "clean": "rimraf build/*", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-typeorm", "compile": "tsc -p .", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-typeorm", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "lint:readme": "node ../../scripts/lint-readme.js", "prewatch": "npm run precompile", "prepublishOnly": "npm run compile", "tdd": "npm run test -- --watch-extensions ts --watch", - "test": "nyc mocha --require '@opentelemetry/contrib-test-utils' 'test/**/*.test.ts'", - "test-all-versions": "tav", + "test": "nyc --no-clean mocha --require '@opentelemetry/contrib-test-utils' 'test/**/*.test.ts'", "test:debug": "mocha --inspect-brk --no-timeouts 'test/**/*.test.ts'", + "test-all-versions": "tav", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", "version:update": "node ../../scripts/version-update.js", "watch": "tsc -w" }, @@ -50,7 +51,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", @@ -62,7 +63,7 @@ }, "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-typeorm#readme" } diff --git a/packages/instrumentation-undici/.eslintrc.js b/packages/instrumentation-undici/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/instrumentation-undici/.eslintrc.js +++ b/packages/instrumentation-undici/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-undici/CHANGELOG.md b/packages/instrumentation-undici/CHANGELOG.md index 2bb61dc658..416228fbfe 100644 --- a/packages/instrumentation-undici/CHANGELOG.md +++ b/packages/instrumentation-undici/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.15.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-undici-v0.14.0...instrumentation-undici-v0.15.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + ## [0.14.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-undici-v0.13.2...instrumentation-undici-v0.14.0) (2025-07-09) diff --git a/packages/instrumentation-undici/package.json b/packages/instrumentation-undici/package.json index 2069b893f1..93860101aa 100644 --- a/packages/instrumentation-undici/package.json +++ b/packages/instrumentation-undici/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-undici", - "version": "0.14.0", + "version": "0.15.0", "description": "OpenTelemetry instrumentation for `undici` http client and Node.js fetch()", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,17 +10,18 @@ "directory": "packages/instrumentation-undici" }, "scripts": { - "prepublishOnly": "npm run compile", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-undici", + "clean": "rimraf build/*", "compile": "tsc -p .", - "test": "nyc mocha test/**/*.test.ts", - "test-all-versions": "tav", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-undici", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "prepublishOnly": "npm run compile", "tdd": "npm run test -- --watch-extensions ts --watch", - "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "watch": "tsc -w", - "version:update": "node ../../scripts/version-update.js" + "test": "nyc --no-clean mocha test/**/*.test.ts", + "test-all-versions": "tav", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "version:update": "node ../../scripts/version-update.js", + "watch": "tsc -w" }, "keywords": [ "opentelemetry", @@ -62,7 +63,7 @@ }, "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/instrumentation": "^0.204.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-undici#readme", "sideEffects": false diff --git a/packages/instrumentation-undici/test/fetch.test.ts b/packages/instrumentation-undici/test/fetch.test.ts index 7e389838bb..7496f860de 100644 --- a/packages/instrumentation-undici/test/fetch.test.ts +++ b/packages/instrumentation-undici/test/fetch.test.ts @@ -64,6 +64,11 @@ describe('UndiciInstrumentation `fetch` tests', function () { ); mockServer.start(done); mockServer.mockListener((req, res) => { + if (req.url === '/error') { + // Simulate an error + res.destroy(); + return; + } // There are some situations where there is no way to access headers // for trace propagation asserts like: // const resp = await fetch('http://host:port') @@ -364,7 +369,7 @@ describe('UndiciInstrumentation `fetch` tests', function () { let fetchError; try { - const fetchUrl = 'http://unexistent-host-name/path'; + const fetchUrl = `${protocol}://${hostname}:${mockServer.port}/error`; await fetch(fetchUrl); } catch (err) { // Expected error @@ -376,14 +381,14 @@ describe('UndiciInstrumentation `fetch` tests', function () { assert.ok(span, 'a span is present'); assert.strictEqual(spans.length, 1); assertSpan(span, { - hostname: 'unexistent-host-name', + hostname, httpMethod: 'GET', - path: '/path', + path: '/error', error: fetchError, noNetPeer: true, // do not check network attribs forceStatus: { code: SpanStatusCode.ERROR, - message: 'getaddrinfo ENOTFOUND unexistent-host-name', + message: 'other side closed', }, }); }); @@ -405,7 +410,7 @@ describe('UndiciInstrumentation `fetch` tests', function () { } // Let the error be published to diagnostics channel - await new Promise(r => setTimeout(r, 5)); + await new Promise(r => setTimeout(r, 50)); spans = memoryExporter.getFinishedSpans(); const span = spans[0]; diff --git a/packages/instrumentation-undici/test/metrics.test.ts b/packages/instrumentation-undici/test/metrics.test.ts index bca94ac6e9..5a4dd16048 100644 --- a/packages/instrumentation-undici/test/metrics.test.ts +++ b/packages/instrumentation-undici/test/metrics.test.ts @@ -63,6 +63,11 @@ describe('UndiciInstrumentation metrics tests', function () { ); mockServer.start(done); mockServer.mockListener((req, res) => { + if (req.url === '/error') { + // Simulate an error + res.destroy(); + return; + } // Return a valid response always res.statusCode = 200; res.setHeader('content-type', 'application/json'); @@ -143,7 +148,7 @@ describe('UndiciInstrumentation metrics tests', function () { }); it('should have error.type in "http.client.request.duration" metric', async () => { - const fetchUrl = 'http://unknownhost/'; + const fetchUrl = `${protocol}://${hostname}:${mockServer.port}/error`; try { await fetch(fetchUrl); @@ -181,9 +186,12 @@ describe('UndiciInstrumentation metrics tests', function () { ); assert.strictEqual( metricAttributes[SemanticAttributes.SERVER_ADDRESS], - 'unknownhost' + hostname + ); + assert.strictEqual( + metricAttributes[SemanticAttributes.SERVER_PORT], + mockServer.port ); - assert.strictEqual(metricAttributes[SemanticAttributes.SERVER_PORT], 80); assert.ok( metricAttributes[SemanticAttributes.ERROR_TYPE], `the metric contains "${SemanticAttributes.ERROR_TYPE}" attribute if request failed` diff --git a/packages/instrumentation-undici/test/undici.test.ts b/packages/instrumentation-undici/test/undici.test.ts index 2a124fb199..26e391f32a 100644 --- a/packages/instrumentation-undici/test/undici.test.ts +++ b/packages/instrumentation-undici/test/undici.test.ts @@ -90,6 +90,11 @@ describe('UndiciInstrumentation `undici` tests', function () { ); mockServer.start(done); mockServer.mockListener((req, res) => { + if (req.url === '/error') { + // Simulate an error + res.destroy(); + return; + } // There are some situations where there is no way to access headers // for trace propagation asserts like: // const resp = await fetch('http://host:port') @@ -727,7 +732,7 @@ describe('UndiciInstrumentation `undici` tests', function () { let fetchError; try { - const requestUrl = 'http://unexistent-host-name/path'; + const requestUrl = `${protocol}://${hostname}:${mockServer.port}/error`; await undici.request(requestUrl); } catch (err) { // Expected error @@ -739,14 +744,14 @@ describe('UndiciInstrumentation `undici` tests', function () { assert.ok(span, 'a span is present'); assert.strictEqual(spans.length, 1); assertSpan(span, { - hostname: 'unexistent-host-name', + hostname, httpMethod: 'GET', - path: '/path', + path: '/error', error: fetchError, noNetPeer: true, // do not check network attribs forceStatus: { code: SpanStatusCode.ERROR, - message: 'getaddrinfo ENOTFOUND unexistent-host-name', + message: 'other side closed', }, }); }); @@ -777,7 +782,7 @@ describe('UndiciInstrumentation `undici` tests', function () { } // Let the error be published to diagnostics channel - await new Promise(r => setTimeout(r, 5)); + await new Promise(r => setTimeout(r, 50)); spans = memoryExporter.getFinishedSpans(); const span = spans[0]; diff --git a/packages/instrumentation-user-interaction/.eslintrc.js b/packages/instrumentation-user-interaction/.eslintrc.js index 0587e2b9e4..b20afe4255 100644 --- a/packages/instrumentation-user-interaction/.eslintrc.js +++ b/packages/instrumentation-user-interaction/.eslintrc.js @@ -1,12 +1,27 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "commonjs": true, - "browser": true, - "jquery": true - }, - "globals": { - "Zone": "readonly" - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + commonjs: true, + browser: true, + jquery: true, + }, + globals: { + Zone: 'readonly', + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-user-interaction/CHANGELOG.md b/packages/instrumentation-user-interaction/CHANGELOG.md index e0a2d31e51..3ec274be55 100644 --- a/packages/instrumentation-user-interaction/CHANGELOG.md +++ b/packages/instrumentation-user-interaction/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.49.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-user-interaction-v0.48.1...instrumentation-user-interaction-v0.49.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + +## [0.48.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-user-interaction-v0.48.0...instrumentation-user-interaction-v0.48.1) (2025-09-01) + + +### Bug Fixes + +* **deps:** update all patch versions ([#2948](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2948)) ([5836d7a](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/5836d7ab3244adef62b715ef22a26b54dba6719b)) + ## [0.48.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-user-interaction-v0.47.0...instrumentation-user-interaction-v0.48.0) (2025-07-09) diff --git a/packages/instrumentation-user-interaction/karma.conf.js b/packages/instrumentation-user-interaction/karma.conf.js index 4bc502c46f..5f899152bd 100644 --- a/packages/instrumentation-user-interaction/karma.conf.js +++ b/packages/instrumentation-user-interaction/karma.conf.js @@ -1,11 +1,11 @@ -/*! +/* * Copyright The OpenTelemetry Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -17,9 +17,11 @@ const karmaWebpackConfig = require('../../karma.webpack'); const karmaBaseConfig = require('../../karma.base'); -module.exports = (config) => { - config.set(Object.assign({}, karmaBaseConfig, { - frameworks: karmaBaseConfig.frameworks.concat(['jquery-1.8.3']), - webpack: karmaWebpackConfig, - })) +module.exports = config => { + config.set( + Object.assign({}, karmaBaseConfig, { + frameworks: karmaBaseConfig.frameworks.concat(['jquery-1.8.3']), + webpack: karmaWebpackConfig, + }) + ); }; diff --git a/packages/instrumentation-user-interaction/package.json b/packages/instrumentation-user-interaction/package.json index 805e4bb2aa..3aaa3729a8 100644 --- a/packages/instrumentation-user-interaction/package.json +++ b/packages/instrumentation-user-interaction/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-user-interaction", - "version": "0.48.0", + "version": "0.49.0", "description": "OpenTelemetry instrumentation for user interactions as click events in a web application", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -12,16 +12,16 @@ "directory": "packages/instrumentation-user-interaction" }, "scripts": { - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "lint:readme": "node ../../scripts/lint-readme.js", "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-user-interaction", "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-user-interaction", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", "tdd": "karma start", "test:browser": "karma start --single-run", + "version:update": "node ../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json" }, "keywords": [ @@ -30,7 +30,8 @@ "tracing", "profiling", "metrics", - "stats" + "stats", + "user-interaction" ], "author": "OpenTelemetry Authors", "license": "Apache-2.0", @@ -56,9 +57,9 @@ "@babel/preset-env": "7.24.6", "@opentelemetry/api": "^1.3.0", "@opentelemetry/context-zone-peer-dep": "^2.0.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.203.0", + "@opentelemetry/instrumentation-xml-http-request": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", - "@types/jquery": "3.5.32", + "@types/jquery": "3.5.33", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -75,7 +76,7 @@ "karma-webpack": "5.0.1", "nyc": "17.1.0", "sinon": "15.1.2", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", @@ -84,7 +85,7 @@ }, "dependencies": { "@opentelemetry/core": "^2.0.0", - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "@opentelemetry/sdk-trace-web": "^2.0.0" }, "peerDependencies": { diff --git a/packages/instrumentation-winston/.eslintrc.js b/packages/instrumentation-winston/.eslintrc.js index d9630e1c33..912e1cf251 100644 --- a/packages/instrumentation-winston/.eslintrc.js +++ b/packages/instrumentation-winston/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js'), -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/instrumentation-winston/CHANGELOG.md b/packages/instrumentation-winston/CHANGELOG.md index 3eaee97c2e..3e78cdc613 100644 --- a/packages/instrumentation-winston/CHANGELOG.md +++ b/packages/instrumentation-winston/CHANGELOG.md @@ -1,5 +1,33 @@ # Changelog +## [0.49.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-winston-v0.48.1...instrumentation-winston-v0.49.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/winston-transport bumped from ^0.14.1 to ^0.15.0 + +## [0.48.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-winston-v0.48.0...instrumentation-winston-v0.48.1) (2025-08-13) + + +### Bug Fixes + +* **winston-transport, instrumentation-winston:** get the correct severityText and severityNumber with winston.format.colorize() is used ([#2956](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2956)) ([952abc7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/952abc7ffb677adf0a4be9ca3a46927a6335e355)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/winston-transport bumped from ^0.14.0 to ^0.14.1 + ## [0.48.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/instrumentation-winston-v0.47.0...instrumentation-winston-v0.48.0) (2025-07-09) diff --git a/packages/instrumentation-winston/README.md b/packages/instrumentation-winston/README.md index f67ff3182e..33b031b31f 100644 --- a/packages/instrumentation-winston/README.md +++ b/packages/instrumentation-winston/README.md @@ -137,7 +137,25 @@ const logger = winston.createLogger({ ``` > [!IMPORTANT] -> Logs will be duplicated if `@opentelemetry/winston-transport` is added as a transport in `winston` and `@opentelemetry/instrumentation-winston` is configured with `disableLogSending: false`. +> Logs will be **duplicated** if `OpenTelemetryTransportV3` is explicitly added as a Winston logger transport **and** `@opentelemetry/instrumentation-winston` is active with the [Log sending](#log-sending) feature (the default). If you are both using `OpenTelemetryTransportV3` and instrumentation-winston, be sure to either disable instrumentation-winston completely, or disable its Log sending feature (`disableLogSending: false`). For example: +> +> ```js +> const { WinstonInstrumentation } = require('@opentelemetry/instrumentation-winston'); +> const { registerInstrumentations } = require('@opentelemetry/instrumentation'); +> registerInstrumentations({ +> instrumentations: [ +> new WinstonInstrumentation({ +> disableLogSending: true +> }), +> ], +> }); +> const { OpenTelemetryTransportV3 } = require('@opentelemetry/winston-transport'); +> // Winston import must be after the WinstonInstrumentation creation +> const winston = require('winston'); +> +> // ... +> const logger = winston.createLogger(...); +> ``` ## Semantic Conventions diff --git a/packages/instrumentation-winston/package.json b/packages/instrumentation-winston/package.json index 22754881d5..16b6dfb0b9 100644 --- a/packages/instrumentation-winston/package.json +++ b/packages/instrumentation-winston/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-winston", - "version": "0.48.0", + "version": "0.49.0", "description": "OpenTelemetry instrumentation for `winston` logger", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,20 +10,17 @@ "directory": "packages/instrumentation-winston" }, "scripts": { - "test": "npm run test-v1-v2 && npm run test-v3 && nyc merge .nyc_output ./coverage/coverage-final.json", - "test-v1-v2": "tav winston 2.4.7 npm run test-run", - "test-v3": "npm run test-run", - "test-run": "nyc --no-clean mocha 'test/**/*.test.ts'", - "test-all-versions": "tav", - "tdd": "npm run test-run -- --watch-extensions ts --watch", "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/instrumentation-winston", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", - "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/instrumentation-winston", - "compile": "tsc -p ." + "test": "nyc --no-clean mocha 'test/**/*.test.ts'", + "test-all-versions": "tav", + "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json", + "version:update": "node ../../scripts/version-update.js" }, "keywords": [ "instrumentation", @@ -55,7 +52,7 @@ "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", - "@opentelemetry/winston-transport": "^0.14.0", + "@opentelemetry/winston-transport": "^0.15.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/sinon": "17.0.4", @@ -69,8 +66,8 @@ "winston2": "npm:winston@2.4.7" }, "dependencies": { - "@opentelemetry/api-logs": "^0.203.0", - "@opentelemetry/instrumentation": "^0.203.0" + "@opentelemetry/api-logs": "^0.204.0", + "@opentelemetry/instrumentation": "^0.204.0" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-winston#readme" } diff --git a/packages/instrumentation-winston/test/winston.test.ts b/packages/instrumentation-winston/test/winston.test.ts index d9e848b845..f395b1c7cb 100644 --- a/packages/instrumentation-winston/test/winston.test.ts +++ b/packages/instrumentation-winston/test/winston.test.ts @@ -61,7 +61,11 @@ describe('WinstonInstrumentation', () => { cli, } - function initLogger(levelsType?: LevelsType) { + /** + * Set `logger` to a new Winston logger instance with the given + * configuration, and setup with `writeSpy` to spy on emitted logs. + */ + function initLogger(levelsType?: LevelsType, formatType?: string) { const winston = require('winston'); let levels = winston.config.npm.levels; @@ -71,6 +75,19 @@ describe('WinstonInstrumentation', () => { levels = winston.config.cli.levels; } + let format; + switch (formatType) { + case 'colorize': + format = winston.format.colorize(); + break; + case 'none': + case undefined: + format = undefined; + break; + default: + throw new Error(`unknown formatType: "${formatType}"`); + } + const stream = new Writable(); stream._write = () => {}; writeSpy = sinon.spy(stream, 'write'); @@ -80,6 +97,7 @@ describe('WinstonInstrumentation', () => { logger = winston.createLogger({ level: 'debug', levels: levels, + format, transports: [ new winston.transports.Stream({ stream, @@ -91,6 +109,7 @@ describe('WinstonInstrumentation', () => { isWinston2 = true; logger = new winston.Logger({ levels: levels, + format, transports: [ new winston.transports.File({ stream, @@ -236,6 +255,32 @@ describe('WinstonInstrumentation', () => { } }); + it('emit LogRecord with correct severity* when colorize() formatter is used', () => { + if (!isWinston2) { + instrumentation.setConfig({ + disableLogSending: false, + }); + initLogger(LevelsType.npm, 'colorize'); + + logger.log('debug', kMessage); + logger.log('info', kMessage); + logger.log('warn', kMessage); + const logRecords = memoryLogExporter.getFinishedLogRecords(); + assert.strictEqual(logRecords.length, 3); + assert.strictEqual(logRecords[0].severityText, 'debug'); + assert.strictEqual(logRecords[0].severityNumber, 5); + assert.strictEqual(logRecords[0].body, kMessage); + assert.strictEqual(logRecords[1].severityText, 'info'); + assert.strictEqual(logRecords[1].severityNumber, 9); + assert.strictEqual(logRecords[1].body, kMessage); + assert.strictEqual(logRecords[2].severityText, 'warn'); + assert.strictEqual(logRecords[2].severityNumber, 13); + assert.strictEqual(logRecords[2].body, kMessage); + + initLogger(); + } + }); + it('do not emit log record if @opentelemetry/winston-transport load fails', () => { const module = require('module'); const originalRequire = module.prototype.require; diff --git a/packages/plugin-react-load/.eslintrc.js b/packages/plugin-react-load/.eslintrc.js index 01b8d09740..498e35290d 100644 --- a/packages/plugin-react-load/.eslintrc.js +++ b/packages/plugin-react-load/.eslintrc.js @@ -1,9 +1,24 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "commonjs": true, - "browser": true, - "jquery": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + commonjs: true, + browser: true, + jquery: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/plugin-react-load/CHANGELOG.md b/packages/plugin-react-load/CHANGELOG.md index 0ab4b5e286..3b04cd8336 100644 --- a/packages/plugin-react-load/CHANGELOG.md +++ b/packages/plugin-react-load/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.36.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/plugin-react-load-v0.35.1...plugin-react-load-v0.36.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + +## [0.35.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/plugin-react-load-v0.35.0...plugin-react-load-v0.35.1) (2025-09-01) + + +### Bug Fixes + +* **deps:** update all patch versions ([#2948](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2948)) ([5836d7a](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/5836d7ab3244adef62b715ef22a26b54dba6719b)) + ## [0.35.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/plugin-react-load-v0.34.1...plugin-react-load-v0.35.0) (2025-07-09) diff --git a/packages/plugin-react-load/karma.conf.js b/packages/plugin-react-load/karma.conf.js index 3019564a15..25e450db5d 100644 --- a/packages/plugin-react-load/karma.conf.js +++ b/packages/plugin-react-load/karma.conf.js @@ -1,11 +1,11 @@ -/*! +/* * Copyright The OpenTelemetry Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -17,8 +17,10 @@ const karmaWebpackConfig = require('../../karma.webpack'); const karmaBaseConfig = require('../../karma.base'); -module.exports = (config) => { - config.set(Object.assign({}, karmaBaseConfig, { - webpack: karmaWebpackConfig - })) +module.exports = config => { + config.set( + Object.assign({}, karmaBaseConfig, { + webpack: karmaWebpackConfig, + }) + ); }; diff --git a/packages/plugin-react-load/package.json b/packages/plugin-react-load/package.json index c2da7b8a0c..2b6fc3f29f 100644 --- a/packages/plugin-react-load/package.json +++ b/packages/plugin-react-load/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/plugin-react-load", - "version": "0.35.0", + "version": "0.36.0", "description": "OpenTelemetry instrumentation for React class component lifecycle methods", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -13,15 +13,15 @@ }, "scripts": { "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "lint:readme": "node ../../scripts/lint-readme.js", - "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/plugin-react-load", "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/plugin-react-load", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "lint:readme": "node ../../scripts/lint-readme.js", "prepublishOnly": "npm run compile", "tdd": "karma start", "test:browser": "nyc karma start --single-run", + "version:update": "node ../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json" }, "keywords": [ @@ -60,7 +60,7 @@ "@opentelemetry/sdk-trace-web": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", - "@types/react": "17.0.87", + "@types/react": "17.0.88", "@types/react-addons-test-utils": "0.14.26", "@types/react-dom": "17.0.26", "@types/shimmer": "1.0.3", @@ -80,7 +80,7 @@ "react-dom": "17.0.2", "rimraf": "5.0.10", "sinon": "15.1.2", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", @@ -91,7 +91,7 @@ "react": "^16.13.1 || ^17.0.0" }, "dependencies": { - "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation": "^0.204.0", "shimmer": "^1.2.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/plugin-react-load#readme" diff --git a/packages/propagation-utils/.eslintrc.js b/packages/propagation-utils/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/propagation-utils/.eslintrc.js +++ b/packages/propagation-utils/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/propagation-utils/CHANGELOG.md b/packages/propagation-utils/CHANGELOG.md index e165983210..13003e60a0 100644 --- a/packages/propagation-utils/CHANGELOG.md +++ b/packages/propagation-utils/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [0.31.4](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagation-utils-v0.31.3...propagation-utils-v0.31.4) (2025-09-08) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + ## [0.31.3](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagation-utils-v0.31.2...propagation-utils-v0.31.3) (2025-07-09) diff --git a/packages/propagation-utils/package.json b/packages/propagation-utils/package.json index 0107581eb6..a1cb881769 100644 --- a/packages/propagation-utils/package.json +++ b/packages/propagation-utils/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/propagation-utils", - "version": "0.31.3", + "version": "0.31.4", "description": "Propagation utilities for opentelemetry instrumentations", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -9,10 +9,10 @@ }, "scripts": { "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json", - "setup:dev": "nx run-many -t compile -p @opentelemetry/propagation-utils", "compile": "tsc --build tsconfig.json tsconfig.esm.json", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/propagation-utils", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", "tdd": "npm run test -- --watch-extensions ts --watch", "test": "nyc mocha 'test/**/*.test.ts'", @@ -46,7 +46,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@types/mocha": "^10.0.0", "@types/node": "18.18.14", "@types/sinon": "^17.0.0", diff --git a/packages/propagator-aws-xray-lambda/.eslintrc.js b/packages/propagator-aws-xray-lambda/.eslintrc.js index 56b0964fe6..dd021c00fb 100644 --- a/packages/propagator-aws-xray-lambda/.eslintrc.js +++ b/packages/propagator-aws-xray-lambda/.eslintrc.js @@ -1,9 +1,24 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "commonjs": true, - "node": true, - "browser": true + env: { + mocha: true, + commonjs: true, + node: true, + browser: true, }, - ...require('../../eslint.config.js') -} + ...require('../../eslint.config.js'), +}; diff --git a/packages/propagator-aws-xray-lambda/CHANGELOG.md b/packages/propagator-aws-xray-lambda/CHANGELOG.md index b9d2bbc90b..80b56f5ebd 100644 --- a/packages/propagator-aws-xray-lambda/CHANGELOG.md +++ b/packages/propagator-aws-xray-lambda/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.55.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-aws-xray-lambda-v0.55.0...propagator-aws-xray-lambda-v0.55.1) (2025-09-01) + + +### Bug Fixes + +* **deps:** update all patch versions ([#2948](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2948)) ([5836d7a](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/5836d7ab3244adef62b715ef22a26b54dba6719b)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @opentelemetry/propagator-aws-xray bumped from ^2.1.0 to ^2.1.1 + ## [0.55.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-aws-xray-lambda-v0.54.0...propagator-aws-xray-lambda-v0.55.0) (2025-05-02) diff --git a/packages/propagator-aws-xray-lambda/package.json b/packages/propagator-aws-xray-lambda/package.json index c9a5b7cc7d..a7eea7b202 100644 --- a/packages/propagator-aws-xray-lambda/package.json +++ b/packages/propagator-aws-xray-lambda/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/propagator-aws-xray-lambda", - "version": "0.55.0", + "version": "0.55.1", "description": "OpenTelemetry AWS Xray propagator provides context propagation for systems that are using AWS X-Ray format.", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -11,14 +11,14 @@ "directory": "packages/propagator-aws-xray-lambda" }, "scripts": { - "setup:dev": "nx run-many -t compile -p @opentelemetry/propagator-aws-xray-lambda", - "compile": "tsc --build tsconfig.json tsconfig.esm.json", "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json", + "compile": "tsc --build tsconfig.json tsconfig.esm.json", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/propagator-aws-xray-lambda", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "prepublishOnly": "npm run compile", "test": "nyc mocha test/**/*.test.ts", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json", - "prepublishOnly": "npm run compile" + "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json" }, "keywords": [ "opentelemetry", @@ -56,11 +56,11 @@ "babel-plugin-istanbul": "7.0.0", "nyc": "17.1.0", "sinon": "15.1.2", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/propagator-aws-xray": "^2.1.0" + "@opentelemetry/propagator-aws-xray": "^2.1.1" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/propagator-aws-xray-lambda#readme" } diff --git a/packages/propagator-aws-xray/.eslintrc.js b/packages/propagator-aws-xray/.eslintrc.js index 56b0964fe6..dd021c00fb 100644 --- a/packages/propagator-aws-xray/.eslintrc.js +++ b/packages/propagator-aws-xray/.eslintrc.js @@ -1,9 +1,24 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "commonjs": true, - "node": true, - "browser": true + env: { + mocha: true, + commonjs: true, + node: true, + browser: true, }, - ...require('../../eslint.config.js') -} + ...require('../../eslint.config.js'), +}; diff --git a/packages/propagator-aws-xray/CHANGELOG.md b/packages/propagator-aws-xray/CHANGELOG.md index 4da683855d..58bdea4e84 100644 --- a/packages/propagator-aws-xray/CHANGELOG.md +++ b/packages/propagator-aws-xray/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [2.1.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-aws-xray-v2.1.0...propagator-aws-xray-v2.1.1) (2025-09-01) + + +### Bug Fixes + +* **deps:** update all patch versions ([#2948](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2948)) ([5836d7a](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/5836d7ab3244adef62b715ef22a26b54dba6719b)) + ## [2.1.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-aws-xray-v2.0.0...propagator-aws-xray-v2.1.0) (2025-05-02) diff --git a/packages/propagator-aws-xray/karma.conf.js b/packages/propagator-aws-xray/karma.conf.js index 133e22df63..d4e4a9e2fd 100644 --- a/packages/propagator-aws-xray/karma.conf.js +++ b/packages/propagator-aws-xray/karma.conf.js @@ -1,11 +1,11 @@ -/*! +/* * Copyright The OpenTelemetry Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -19,25 +19,27 @@ const webpack = require('webpack'); const karmaWebpackConfig = require('../../karma.webpack'); const karmaBaseConfig = require('../../karma.base'); -module.exports = (config) => { +module.exports = config => { { - const plugins = karmaWebpackConfig.plugins = []; - plugins.push(new webpack.ProvidePlugin({ - process: 'process/browser', - })); + const plugins = (karmaWebpackConfig.plugins = []); + plugins.push( + new webpack.ProvidePlugin({ + process: 'process/browser', + }) + ); } { - const plugins = karmaBaseConfig.plugins = []; + const plugins = (karmaBaseConfig.plugins = []); const toAdd = Object.keys(require('./package.json').devDependencies) - .filter((packageName) => packageName.startsWith('karma-')) - .map((packageName) => require(packageName)); - plugins.push( - ...toAdd - ); + .filter(packageName => packageName.startsWith('karma-')) + .map(packageName => require(packageName)); + plugins.push(...toAdd); } - config.set(Object.assign({}, karmaBaseConfig, { - webpack: karmaWebpackConfig - })) + config.set( + Object.assign({}, karmaBaseConfig, { + webpack: karmaWebpackConfig, + }) + ); }; diff --git a/packages/propagator-aws-xray/package.json b/packages/propagator-aws-xray/package.json index 6fd169cd57..b808d9efc0 100644 --- a/packages/propagator-aws-xray/package.json +++ b/packages/propagator-aws-xray/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/propagator-aws-xray", - "version": "2.1.0", + "version": "2.1.1", "description": "OpenTelemetry AWS Xray propagator provides context propagation for systems that are using AWS X-Ray format.", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -11,17 +11,17 @@ "directory": "packages/propagator-aws-xray" }, "scripts": { - "prepublishOnly": "npm run compile", - "setup:dev": "nx run-many -t compile -p @opentelemetry/propagator-aws-xray", + "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/propagator-aws-xray", "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "prepublishOnly": "npm run compile", "test": "nyc mocha test/**/*.test.ts", "test:browser": "nyc karma start --single-run", "tdd": "npm run tdd:node", "tdd:node": "npm run test -- --watch-extensions ts --watch", "tdd:browser": "karma start", - "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", "version": "node ../../scripts/version-update.js", "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json" }, @@ -72,7 +72,7 @@ "karma-spec-reporter": "0.0.36", "karma-webpack": "5.0.1", "nyc": "17.1.0", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.95.0", "webpack-cli": "5.1.4", diff --git a/packages/propagator-instana/.eslintrc.js b/packages/propagator-instana/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/propagator-instana/.eslintrc.js +++ b/packages/propagator-instana/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/propagator-instana/CHANGELOG.md b/packages/propagator-instana/CHANGELOG.md index e538783687..f1cb0872df 100644 --- a/packages/propagator-instana/CHANGELOG.md +++ b/packages/propagator-instana/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.4.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-instana-v0.4.0...propagator-instana-v0.4.1) (2025-09-01) + + +### Bug Fixes + +* **deps:** update all patch versions ([#2948](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2948)) ([5836d7a](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/5836d7ab3244adef62b715ef22a26b54dba6719b)) + ## [0.4.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-instana-v0.3.3...propagator-instana-v0.4.0) (2025-03-18) diff --git a/packages/propagator-instana/karma.conf.js b/packages/propagator-instana/karma.conf.js index 133e22df63..d4e4a9e2fd 100644 --- a/packages/propagator-instana/karma.conf.js +++ b/packages/propagator-instana/karma.conf.js @@ -1,11 +1,11 @@ -/*! +/* * Copyright The OpenTelemetry Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -19,25 +19,27 @@ const webpack = require('webpack'); const karmaWebpackConfig = require('../../karma.webpack'); const karmaBaseConfig = require('../../karma.base'); -module.exports = (config) => { +module.exports = config => { { - const plugins = karmaWebpackConfig.plugins = []; - plugins.push(new webpack.ProvidePlugin({ - process: 'process/browser', - })); + const plugins = (karmaWebpackConfig.plugins = []); + plugins.push( + new webpack.ProvidePlugin({ + process: 'process/browser', + }) + ); } { - const plugins = karmaBaseConfig.plugins = []; + const plugins = (karmaBaseConfig.plugins = []); const toAdd = Object.keys(require('./package.json').devDependencies) - .filter((packageName) => packageName.startsWith('karma-')) - .map((packageName) => require(packageName)); - plugins.push( - ...toAdd - ); + .filter(packageName => packageName.startsWith('karma-')) + .map(packageName => require(packageName)); + plugins.push(...toAdd); } - config.set(Object.assign({}, karmaBaseConfig, { - webpack: karmaWebpackConfig - })) + config.set( + Object.assign({}, karmaBaseConfig, { + webpack: karmaWebpackConfig, + }) + ); }; diff --git a/packages/propagator-instana/package.json b/packages/propagator-instana/package.json index b8fc731d4c..8f9b11a8e1 100644 --- a/packages/propagator-instana/package.json +++ b/packages/propagator-instana/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/propagator-instana", - "version": "0.4.0", + "version": "0.4.1", "description": "The OpenTelemetry Instana Propagator implements the propagation format used by IBM Observability by Instana", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -11,15 +11,15 @@ "directory": "packages/propagator-instana" }, "scripts": { - "setup:dev": "nx run-many -t compile -p @opentelemetry/propagator-instana", - "compile": "tsc --build tsconfig.json tsconfig.esm.json", "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json", + "compile": "tsc --build tsconfig.json tsconfig.esm.json", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/propagator-instana", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "prepublishOnly": "npm run compile", "test": "nyc mocha test/**/*.test.ts", "test:browser": "nyc karma start --single-run", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json", - "prepublishOnly": "npm run compile" + "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json" }, "keywords": [ "opentelemetry", @@ -68,7 +68,7 @@ "karma-webpack": "5.0.1", "nyc": "17.1.0", "process": "0.11.10", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", diff --git a/packages/propagator-ot-trace/.eslintrc.js b/packages/propagator-ot-trace/.eslintrc.js index 9dfe62f9b8..dd021c00fb 100644 --- a/packages/propagator-ot-trace/.eslintrc.js +++ b/packages/propagator-ot-trace/.eslintrc.js @@ -1,9 +1,24 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "commonjs": true, - "node": true, - "browser": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + commonjs: true, + node: true, + browser: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/propagator-ot-trace/CHANGELOG.md b/packages/propagator-ot-trace/CHANGELOG.md index f97d02adc2..f2f3847e57 100644 --- a/packages/propagator-ot-trace/CHANGELOG.md +++ b/packages/propagator-ot-trace/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.28.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-ot-trace-v0.28.0...propagator-ot-trace-v0.28.1) (2025-09-01) + + +### Bug Fixes + +* **deps:** update all patch versions ([#2948](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2948)) ([5836d7a](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/5836d7ab3244adef62b715ef22a26b54dba6719b)) + ## [0.28.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/propagator-ot-trace-v0.27.3...propagator-ot-trace-v0.28.0) (2025-03-18) diff --git a/packages/propagator-ot-trace/karma.conf.js b/packages/propagator-ot-trace/karma.conf.js index f1a1f3a7e8..25e450db5d 100644 --- a/packages/propagator-ot-trace/karma.conf.js +++ b/packages/propagator-ot-trace/karma.conf.js @@ -1,11 +1,11 @@ -/*! +/* * Copyright The OpenTelemetry Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, diff --git a/packages/propagator-ot-trace/package.json b/packages/propagator-ot-trace/package.json index 32feece7bc..efd9553148 100644 --- a/packages/propagator-ot-trace/package.json +++ b/packages/propagator-ot-trace/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/propagator-ot-trace", - "version": "0.28.0", + "version": "0.28.1", "description": "The OpenTelemetry OTTracepropagator implements the propagation format used by the \"basic tracer\" implementations from the OpenTracing project", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -11,15 +11,15 @@ "directory": "packages/propagator-ot-trace" }, "scripts": { - "setup:dev": "nx run-many -t compile -p @opentelemetry/propagator-ot-trace", - "compile": "tsc --build tsconfig.json tsconfig.esm.json", "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json", + "compile": "tsc --build tsconfig.json tsconfig.esm.json", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/propagator-ot-trace", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", + "prepublishOnly": "npm run compile", "test": "nyc mocha test/**/*.test.ts", "test:browser": "nyc karma start --single-run", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json", - "prepublishOnly": "npm run compile" + "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json" }, "keywords": [ "opentelemetry", @@ -68,7 +68,7 @@ "karma-webpack": "5.0.1", "nyc": "17.1.0", "sinon": "15.1.2", - "ts-loader": "9.5.2", + "ts-loader": "9.5.4", "typescript": "5.0.4", "webpack": "5.94.0", "webpack-cli": "5.1.4", diff --git a/packages/redis-common/.eslintrc.js b/packages/redis-common/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/redis-common/.eslintrc.js +++ b/packages/redis-common/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/redis-common/package.json b/packages/redis-common/package.json index f4a41cbcfa..16b87f56bc 100644 --- a/packages/redis-common/package.json +++ b/packages/redis-common/package.json @@ -8,10 +8,10 @@ "access": "public" }, "scripts": { - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "setup:dev": "nx run-many -t compile -p @opentelemetry/redis-common", "compile": "tsc --build tsconfig.json", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/redis-common", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", "test": "nyc mocha 'test/**/*.test.ts'", "watch": "tsc -w" diff --git a/packages/resource-detector-alibaba-cloud/.eslintrc.js b/packages/resource-detector-alibaba-cloud/.eslintrc.js index 7927fa0c36..912e1cf251 100644 --- a/packages/resource-detector-alibaba-cloud/.eslintrc.js +++ b/packages/resource-detector-alibaba-cloud/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true + env: { + mocha: true, + node: true, }, - ...require('../../eslint.config.js') -} + ...require('../../eslint.config.js'), +}; diff --git a/packages/resource-detector-alibaba-cloud/CHANGELOG.md b/packages/resource-detector-alibaba-cloud/CHANGELOG.md index d7d56a0e32..0062a7ae44 100644 --- a/packages/resource-detector-alibaba-cloud/CHANGELOG.md +++ b/packages/resource-detector-alibaba-cloud/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [0.31.4](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-alibaba-cloud-v0.31.3...resource-detector-alibaba-cloud-v0.31.4) (2025-09-08) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + ## [0.31.3](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-alibaba-cloud-v0.31.2...resource-detector-alibaba-cloud-v0.31.3) (2025-07-09) diff --git a/packages/resource-detector-alibaba-cloud/package.json b/packages/resource-detector-alibaba-cloud/package.json index f940151960..6db2bec3a1 100644 --- a/packages/resource-detector-alibaba-cloud/package.json +++ b/packages/resource-detector-alibaba-cloud/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-alibaba-cloud", - "version": "0.31.3", + "version": "0.31.4", "description": "OpenTelemetry resource detector for Alibaba Cloud", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -12,10 +12,10 @@ }, "scripts": { "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json", - "setup:dev": "nx run-many -t compile -p @opentelemetry/resource-detector-alibaba-cloud", "compile": "tsc --build tsconfig.json tsconfig.esm.json", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/resource-detector-alibaba-cloud", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", "test": "nyc mocha 'test/**/*.test.ts'", "tdd": "npm run test -- --watch-extensions ts --watch", @@ -47,7 +47,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", diff --git a/packages/resource-detector-aws/.eslintrc.js b/packages/resource-detector-aws/.eslintrc.js index 7927fa0c36..912e1cf251 100644 --- a/packages/resource-detector-aws/.eslintrc.js +++ b/packages/resource-detector-aws/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true + env: { + mocha: true, + node: true, }, - ...require('../../eslint.config.js') -} + ...require('../../eslint.config.js'), +}; diff --git a/packages/resource-detector-aws/CHANGELOG.md b/packages/resource-detector-aws/CHANGELOG.md index 4e725fd1ac..4c5fb5d118 100644 --- a/packages/resource-detector-aws/CHANGELOG.md +++ b/packages/resource-detector-aws/CHANGELOG.md @@ -1,5 +1,25 @@ # Changelog +## [2.4.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-aws-v2.3.0...resource-detector-aws-v2.4.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Bug Fixes + +* **detector-aws:** extract full container ID from ECS Fargate cgroup ([#2855](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2855)) ([c1866e1](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/c1866e119a091939a26e26a8ff737440173afa59)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + * @opentelemetry/instrumentation-fs bumped from ^0.23.0 to ^0.24.0 + ## [2.3.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-aws-v2.2.0...resource-detector-aws-v2.3.0) (2025-07-09) diff --git a/packages/resource-detector-aws/package.json b/packages/resource-detector-aws/package.json index 4a9fa21ce6..0356ff5fdb 100644 --- a/packages/resource-detector-aws/package.json +++ b/packages/resource-detector-aws/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-aws", - "version": "2.3.0", + "version": "2.4.0", "description": "OpenTelemetry SDK resource detector for AWS", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -12,10 +12,10 @@ }, "scripts": { "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json", - "setup:dev": "nx run-many -t compile -p @opentelemetry/resource-detector-aws", "compile": "tsc --build tsconfig.json tsconfig.esm.json", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/resource-detector-aws", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", "test": "nyc mocha 'test/**/*.test.ts'", "tdd": "npm run test -- --watch-extensions ts --watch", @@ -46,9 +46,9 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation-fs": "^0.23.0", - "@opentelemetry/instrumentation-http": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation-fs": "^0.24.0", + "@opentelemetry/instrumentation-http": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", diff --git a/packages/resource-detector-aws/src/detectors/AwsEcsDetector.ts b/packages/resource-detector-aws/src/detectors/AwsEcsDetector.ts index 45a5b74dab..971488adb7 100644 --- a/packages/resource-detector-aws/src/detectors/AwsEcsDetector.ts +++ b/packages/resource-detector-aws/src/detectors/AwsEcsDetector.ts @@ -63,6 +63,7 @@ interface AwsLogOptions { */ export class AwsEcsDetector implements ResourceDetector { static readonly CONTAINER_ID_LENGTH = 64; + static readonly CONTAINER_ID_LENGTH_MIN = 32; static readonly DEFAULT_CGROUP_PATH = '/proc/self/cgroup'; private static readFileAsync = util.promisify(fs.readFile); @@ -155,25 +156,76 @@ export class AwsEcsDetector implements ResourceDetector { * and then return undefined. */ private async _getContainerId(): Promise { - let containerId = undefined; try { const rawData = await AwsEcsDetector.readFileAsync( AwsEcsDetector.DEFAULT_CGROUP_PATH, 'utf8' ); - const splitData = rawData.trim().split('\n'); - for (const str of splitData) { - if (str.length > AwsEcsDetector.CONTAINER_ID_LENGTH) { - containerId = str.substring( - str.length - AwsEcsDetector.CONTAINER_ID_LENGTH - ); - break; - } + const lines = rawData + .split('\n') + .map(s => s.trim()) + .filter(Boolean); + + // Pass 1: Prefer primary ECS pattern across all lines + for (const line of lines) { + const id = this._extractPrimaryEcsContainerId(line); + if (id) return id; + } + + // Pass 2: Fallback to last-segment with strict allowed chars (hex + hyphen) + for (const line of lines) { + const id = this._extractLastSegmentContainerId(line); + if (id) return id; + } + + // Pass 3: Legacy fallback to last 64 chars (Docker-style), keep existing behavior + for (const line of lines) { + const id = this._extractLegacyContainerId(line); + if (id) return id; } } catch (e) { diag.debug('AwsEcsDetector failed to read container ID', e); } - return containerId; + return undefined; + } + + // Prefer primary ECS format extraction + private _extractPrimaryEcsContainerId(line: string): string | undefined { + const ecsPattern = /\/ecs\/[a-fA-F0-9-]+\/([a-fA-F0-9-]+)$/; + const match = line.match(ecsPattern); + if ( + match && + match[1] && + match[1].length >= AwsEcsDetector.CONTAINER_ID_LENGTH_MIN && + match[1].length <= AwsEcsDetector.CONTAINER_ID_LENGTH + ) { + return match[1]; + } + return undefined; + } + + // Fallback: accept last path segment if it looks like a container id (hex + '-') + private _extractLastSegmentContainerId(line: string): string | undefined { + const parts = line.split('/'); + if (parts.length <= 1) return undefined; + const last = parts[parts.length - 1]; + if ( + last && + last.length >= AwsEcsDetector.CONTAINER_ID_LENGTH_MIN && + last.length <= AwsEcsDetector.CONTAINER_ID_LENGTH && + /^[a-fA-F0-9-]+$/.test(last) + ) { + return last; + } + return undefined; + } + + // Legacy fallback: keep existing behavior to avoid breaking users/tests + private _extractLegacyContainerId(line: string): string | undefined { + if (line.length > AwsEcsDetector.CONTAINER_ID_LENGTH) { + return line.substring(line.length - AwsEcsDetector.CONTAINER_ID_LENGTH); + } + return undefined; } /** diff --git a/packages/resource-detector-aws/test/detectors/AwsEcsDetector.test.ts b/packages/resource-detector-aws/test/detectors/AwsEcsDetector.test.ts index 1258de46a6..d6409906ae 100644 --- a/packages/resource-detector-aws/test/detectors/AwsEcsDetector.test.ts +++ b/packages/resource-detector-aws/test/detectors/AwsEcsDetector.test.ts @@ -452,4 +452,141 @@ describe('AwsEcsResourceDetector', () => { }); }); }); + + describe('Container ID extraction', () => { + const testMetadataUri = 'http://169.254.170.2/v4/test'; + const testHostname = 'test-hostname'; + let readStub: sinon.SinonStub; + + beforeEach(() => { + process.env.ECS_CONTAINER_METADATA_URI_V4 = testMetadataUri; + }); + + afterEach(() => { + sinon.restore(); + }); + + function setupMocks(cgroupData: string) { + sinon.stub(os, 'hostname').returns(testHostname); + readStub = sinon + .stub(AwsEcsDetector, 'readFileAsync' as any) + .resolves(cgroupData); + } + + function setupMetadataNock() { + return nock('http://169.254.170.2:80') + .persist(false) + .get('/v4/test') + .reply(200, { + ContainerARN: 'arn:aws:ecs:us-west-2:111122223333:container/test', + }) + .get('/v4/test/task') + .reply(200, { + TaskARN: 'arn:aws:ecs:us-west-2:111122223333:task/default/test', + Family: 'test-family', + Revision: '1', + Cluster: 'test-cluster', + LaunchType: 'FARGATE', + }); + } + + it('should extract full container ID from new ECS Fargate format', async () => { + const taskId = 'c23e5f76c09d438aa1824ca4058bdcab'; + const containerId = '1234567890abcdef'; + const cgroupData = `/ecs/${taskId}/${taskId}-${containerId}`; + + setupMocks(cgroupData); + const nockScope = setupMetadataNock(); + + const resource = detectResources({ detectors: [awsEcsDetector] }); + await resource.waitForAsyncAttributes?.(); + + sinon.assert.calledOnce(readStub); + assert.ok(resource); + assertEcsResource(resource, {}); + assertContainerResource(resource, { + name: testHostname, + id: `${taskId}-${containerId}`, + }); + + nockScope.done(); + }); + + it('should handle backward compatibility with legacy format', async () => { + const legacyContainerId = + 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklm'; + + setupMocks(legacyContainerId); + const nockScope = setupMetadataNock(); + + const resource = detectResources({ detectors: [awsEcsDetector] }); + await resource.waitForAsyncAttributes?.(); + + sinon.assert.calledOnce(readStub); + assert.ok(resource); + assertEcsResource(resource, {}); + assertContainerResource(resource, { + name: testHostname, + id: 'bcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklm', + }); + + nockScope.done(); + }); + + it('should extract container ID from Docker format cgroup', async () => { + const dockerContainerId = + 'a4d00c9dd675d67f866c786181419e1b44832d4696780152e61afd44a3e02856'; + const cgroupData = `1:blkio:/docker/${dockerContainerId} +2:cpu:/docker/${dockerContainerId} +3:cpuacct:/docker/${dockerContainerId}`; + + setupMocks(cgroupData); + const nockScope = setupMetadataNock(); + + const resource = detectResources({ detectors: [awsEcsDetector] }); + await resource.waitForAsyncAttributes?.(); + + sinon.assert.calledOnce(readStub); + assert.ok(resource); + assertEcsResource(resource, {}); + assertContainerResource(resource, { + name: testHostname, + id: dockerContainerId, + }); + + nockScope.done(); + }); + + it('should extract container ID from mixed ECS and Docker format cgroup', async () => { + const taskId = '447438d8540d49dca93b4f0a488ebe90'; + const containerId = `${taskId}-1364044452`; + const cgroupData = `11:memory:/ecs/${taskId}/${containerId} +10:devices:/ecs/${taskId}/${containerId} +9:freezer:/ecs/${taskId}/${containerId} +8:blkio:/ecs/${taskId}/${containerId} +7:perf_event:/ecs/${taskId}/${containerId} +6:net_cls,net_prio:/ecs/${taskId}/${containerId} +5:cpuset:/ecs/${taskId}/${containerId} +4:pids:/ecs/${taskId}/${containerId} +3:hugetlb:/ecs/${taskId}/${containerId} +2:cpu,cpuacct:/ecs/${taskId}/${containerId} +1:name=systemd:/ecs/${taskId}/${containerId}`; + + setupMocks(cgroupData); + const nockScope = setupMetadataNock(); + + const resource = detectResources({ detectors: [awsEcsDetector] }); + await resource.waitForAsyncAttributes?.(); + + sinon.assert.calledOnce(readStub); + assert.ok(resource); + assertEcsResource(resource, {}); + assertContainerResource(resource, { + name: testHostname, + id: containerId, + }); + + nockScope.done(); + }); + }); }); diff --git a/packages/resource-detector-azure/.eslintrc.js b/packages/resource-detector-azure/.eslintrc.js index 6201ba71c1..912e1cf251 100644 --- a/packages/resource-detector-azure/.eslintrc.js +++ b/packages/resource-detector-azure/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { env: { mocha: true, node: true, }, - ...require("../../eslint.config.js"), + ...require('../../eslint.config.js'), }; diff --git a/packages/resource-detector-azure/CHANGELOG.md b/packages/resource-detector-azure/CHANGELOG.md index d866cad81c..08725e5a4a 100644 --- a/packages/resource-detector-azure/CHANGELOG.md +++ b/packages/resource-detector-azure/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.11.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-azure-v0.10.0...resource-detector-azure-v0.11.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + ## [0.10.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-azure-v0.9.0...resource-detector-azure-v0.10.0) (2025-07-09) diff --git a/packages/resource-detector-azure/package.json b/packages/resource-detector-azure/package.json index 1cdafa97ab..e97bf20536 100644 --- a/packages/resource-detector-azure/package.json +++ b/packages/resource-detector-azure/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-azure", - "version": "0.10.0", + "version": "0.11.0", "description": "OpenTelemetry SDK resource detector for Azure", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -12,10 +12,10 @@ }, "scripts": { "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json", - "setup:dev": "nx run-many -t compile -p @opentelemetry/resource-detector-azure", "compile": "tsc --build tsconfig.json tsconfig.esm.json", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/resource-detector-azure", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", "test": "nyc mocha 'test/**/*.test.ts'", "tdd": "npm run test -- --watch-extensions ts --watch", @@ -39,8 +39,8 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation-http": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", diff --git a/packages/resource-detector-container/.eslintrc.js b/packages/resource-detector-container/.eslintrc.js index 6201ba71c1..912e1cf251 100644 --- a/packages/resource-detector-container/.eslintrc.js +++ b/packages/resource-detector-container/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { env: { mocha: true, node: true, }, - ...require("../../eslint.config.js"), + ...require('../../eslint.config.js'), }; diff --git a/packages/resource-detector-container/CHANGELOG.md b/packages/resource-detector-container/CHANGELOG.md index af7e014244..14030b56fc 100644 --- a/packages/resource-detector-container/CHANGELOG.md +++ b/packages/resource-detector-container/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [0.7.4](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-container-v0.7.3...resource-detector-container-v0.7.4) (2025-09-08) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + * @opentelemetry/instrumentation-fs bumped from ^0.23.0 to ^0.24.0 + ## [0.7.3](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-container-v0.7.2...resource-detector-container-v0.7.3) (2025-07-09) diff --git a/packages/resource-detector-container/package.json b/packages/resource-detector-container/package.json index b78c7a77a2..be7bcd6a03 100644 --- a/packages/resource-detector-container/package.json +++ b/packages/resource-detector-container/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-container", - "version": "0.7.3", + "version": "0.7.4", "description": "Opentelemetry resource detector to get container resource attributes", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -12,10 +12,10 @@ }, "scripts": { "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json", - "setup:dev": "nx run-many -t compile -p @opentelemetry/resource-detector-container", "compile": "tsc --build tsconfig.json tsconfig.esm.json", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/resource-detector-container", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", "test": "nyc mocha 'test/**/*.test.ts'", "tdd": "npm run test -- --watch-extensions ts --watch", @@ -40,8 +40,8 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation-fs": "^0.23.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation-fs": "^0.24.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", diff --git a/packages/resource-detector-gcp/.eslintrc.js b/packages/resource-detector-gcp/.eslintrc.js index 7927fa0c36..912e1cf251 100644 --- a/packages/resource-detector-gcp/.eslintrc.js +++ b/packages/resource-detector-gcp/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true + env: { + mocha: true, + node: true, }, - ...require('../../eslint.config.js') -} + ...require('../../eslint.config.js'), +}; diff --git a/packages/resource-detector-gcp/CHANGELOG.md b/packages/resource-detector-gcp/CHANGELOG.md index 083f2408c4..3f9e550dbf 100644 --- a/packages/resource-detector-gcp/CHANGELOG.md +++ b/packages/resource-detector-gcp/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.38.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-gcp-v0.37.0...resource-detector-gcp-v0.38.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + ## [0.37.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-gcp-v0.36.0...resource-detector-gcp-v0.37.0) (2025-07-09) diff --git a/packages/resource-detector-gcp/package.json b/packages/resource-detector-gcp/package.json index b33a9feae6..ca93e9ec7f 100644 --- a/packages/resource-detector-gcp/package.json +++ b/packages/resource-detector-gcp/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-gcp", - "version": "0.37.0", + "version": "0.38.0", "description": "OpenTelemetry SDK resource detector for GCP", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -12,10 +12,10 @@ }, "scripts": { "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json", - "setup:dev": "nx run-many -t compile -p @opentelemetry/resource-detector-gcp", "compile": "tsc --build tsconfig.json tsconfig.esm.json", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/resource-detector-gcp", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", "test": "nyc mocha 'test/**/*.test.ts'", "tdd": "npm run test -- --watch-extensions ts --watch", @@ -46,8 +46,8 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/instrumentation-http": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/instrumentation-http": "^0.204.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", diff --git a/packages/resource-detector-gcp/test/detectors/GcpDetectorIntegration.test.ts b/packages/resource-detector-gcp/test/detectors/GcpDetectorIntegration.test.ts index 2cbbc9db13..9458def73f 100644 --- a/packages/resource-detector-gcp/test/detectors/GcpDetectorIntegration.test.ts +++ b/packages/resource-detector-gcp/test/detectors/GcpDetectorIntegration.test.ts @@ -14,64 +14,32 @@ * limitations under the License. */ -// NOTE: in other test the modules have already been required and cached (`GcpDetector.test.ts`) -// so SDK cannot instrument them. We make sure we load fresh copies so RITM hook does its work. -// we remove all the require chain: detector -> gcp-metadata -> gaxios -> node-fetch -// but kepp other cache entries to not slow down the test more than necessary -const modules = [ - 'opentelemetry-resource-detector-gcp', - 'gcp-metadata', - 'gaxios', - 'node-fetch', -]; -Object.keys(require.cache) - .filter(path => modules.some(m => path.includes(m))) - .forEach(key => { - delete require.cache[key]; - }); - -import * as assert from 'assert'; - -import { HttpInstrumentation } from '@opentelemetry/instrumentation-http'; import { - InMemorySpanExporter, - SimpleSpanProcessor, -} from '@opentelemetry/sdk-trace-base'; -import { NodeSDK } from '@opentelemetry/sdk-node'; -import { detectResources } from '@opentelemetry/resources'; + runTestFixture, + TestCollector, +} from '@opentelemetry/contrib-test-utils'; +import * as assert from 'assert'; -describe('[Integration] GcpDetector', () => { +describe('[Integration] GcpDetector', async () => { it('should not start spans for detector requests', async () => { - const memoryExporter = new InMemorySpanExporter(); - const sdk = new NodeSDK({ - instrumentations: [new HttpInstrumentation()], - spanProcessors: [new SimpleSpanProcessor(memoryExporter)], + await runTestFixture({ + cwd: __dirname, + argv: ['fixtures/detect-with-http-instrumentation.mjs'], + env: { + NODE_OPTIONS: + '--experimental-loader=@opentelemetry/instrumentation/hook.mjs', + METADATA_SERVER_DETECTION: 'assume-present', + }, + checkResult: (err, stdout, stderr) => { + assert.ifError(err); + }, + checkCollector: (collector: TestCollector) => { + assert.equal( + collector.spans.length, + 0, + 'no spans exported for GcpDetector' + ); + }, }); - - sdk.start(); - - process.env.METADATA_SERVER_DETECTION = 'assume-present'; - - // NOTE: detectors implementing the `DetectorSync` interface and starting - // HTTP requests within the `detect` method will produce Noop Spans since - // the SDK resolves the trace provider after resource detectors are triggered. - // Ref: https://github.com/open-telemetry/opentelemetry-js/blob/38f6689480d28dcbdafcb7b5ba4b14025328ffda/experimental/packages/opentelemetry-sdk-node/src/sdk.ts#L210-L240 - // - // So having the detector in the config would result in no spans for Azure requests - // being exported which is what we want. Although we may think we're safe of sending - // internal tracing any change that delays these request will result in internal - // tracing being exported. We do the detection outside the SDK constructor to have such - // scenario. - const { gcpDetector } = require('../../build/src/detectors/GcpDetector'); - const resource = detectResources({ detectors: [gcpDetector] }); - await resource.waitForAsyncAttributes?.(); - - // Wait for the next loop to let the span close properly - await new Promise(r => setTimeout(r, 0)); - const spans = memoryExporter.getFinishedSpans(); - - assert.equal(spans.length, 0, 'no spans exported for GcpDetector'); - - await sdk.shutdown(); }).timeout(15000); }); diff --git a/packages/resource-detector-gcp/test/detectors/fixtures/detect-with-http-instrumentation.mjs b/packages/resource-detector-gcp/test/detectors/fixtures/detect-with-http-instrumentation.mjs new file mode 100644 index 0000000000..3b4aab6822 --- /dev/null +++ b/packages/resource-detector-gcp/test/detectors/fixtures/detect-with-http-instrumentation.mjs @@ -0,0 +1,34 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { HttpInstrumentation } from '@opentelemetry/instrumentation-http'; +import { NodeSDK } from '@opentelemetry/sdk-node'; +import { detectResources } from '@opentelemetry/resources'; + +const sdk = new NodeSDK({ + instrumentations: [new HttpInstrumentation()], +}); +sdk.start(); + +// Defer import until after instrumentation is added +const { gcpDetector } = await import( + '../../../build/src/detectors/GcpDetector.js' +); +const resource = detectResources({ detectors: [gcpDetector] }); +await resource.waitForAsyncAttributes?.(); + +console.log(resource); + +await sdk.shutdown(); diff --git a/packages/resource-detector-github/.eslintrc.js b/packages/resource-detector-github/.eslintrc.js index 7927fa0c36..912e1cf251 100644 --- a/packages/resource-detector-github/.eslintrc.js +++ b/packages/resource-detector-github/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true + env: { + mocha: true, + node: true, }, - ...require('../../eslint.config.js') -} + ...require('../../eslint.config.js'), +}; diff --git a/packages/resource-detector-github/package.json b/packages/resource-detector-github/package.json index 761e9ec10c..19f1618ad6 100644 --- a/packages/resource-detector-github/package.json +++ b/packages/resource-detector-github/package.json @@ -12,10 +12,10 @@ }, "scripts": { "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json", - "setup:dev": "nx run-many -t compile -p @opentelemetry/resource-detector-github", "compile": "tsc --build tsconfig.json tsconfig.esm.json", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/resource-detector-github", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", "test": "nyc mocha 'test/**/*.test.ts'", "tdd": "npm run test -- --watch-extensions ts --watch", diff --git a/packages/resource-detector-instana/.eslintrc.js b/packages/resource-detector-instana/.eslintrc.js index 7927fa0c36..912e1cf251 100644 --- a/packages/resource-detector-instana/.eslintrc.js +++ b/packages/resource-detector-instana/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true + env: { + mocha: true, + node: true, }, - ...require('../../eslint.config.js') -} + ...require('../../eslint.config.js'), +}; diff --git a/packages/resource-detector-instana/CHANGELOG.md b/packages/resource-detector-instana/CHANGELOG.md index aa75d40c18..c2d93f168f 100644 --- a/packages/resource-detector-instana/CHANGELOG.md +++ b/packages/resource-detector-instana/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.23.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-instana-v0.22.0...resource-detector-instana-v0.23.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + + +### Dependencies + +* The following workspace dependencies were updated + * devDependencies + * @opentelemetry/contrib-test-utils bumped from ^0.49.0 to ^0.50.0 + ## [0.22.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/resource-detector-instana-v0.21.0...resource-detector-instana-v0.22.0) (2025-07-09) diff --git a/packages/resource-detector-instana/package.json b/packages/resource-detector-instana/package.json index f838da1b28..52c81a945b 100644 --- a/packages/resource-detector-instana/package.json +++ b/packages/resource-detector-instana/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resource-detector-instana", - "version": "0.22.0", + "version": "0.23.0", "description": "OpenTelemetry SDK resource detector for Instana", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -12,10 +12,10 @@ }, "scripts": { "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json", - "setup:dev": "nx run-many -t compile -p @opentelemetry/resource-detector-instana", "compile": "tsc --build tsconfig.json tsconfig.esm.json", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/resource-detector-instana", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", "test": "nyc mocha 'test/**/*.test.ts'", "tdd": "npm run test -- --watch-extensions ts --watch", @@ -45,8 +45,8 @@ }, "devDependencies": { "@opentelemetry/api": "^1.3.0", - "@opentelemetry/contrib-test-utils": "^0.49.0", - "@opentelemetry/sdk-node": "^0.203.0", + "@opentelemetry/contrib-test-utils": "^0.50.0", + "@opentelemetry/sdk-node": "^0.204.0", "@types/mocha": "10.0.10", "@types/node": "18.18.14", "@types/semver": "7.5.8", diff --git a/packages/sql-common/.eslintrc.js b/packages/sql-common/.eslintrc.js index 15096b6658..912e1cf251 100644 --- a/packages/sql-common/.eslintrc.js +++ b/packages/sql-common/.eslintrc.js @@ -1,3 +1,18 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { env: { mocha: true, diff --git a/packages/sql-common/package.json b/packages/sql-common/package.json index 1ec2097b6d..d4492c66ec 100644 --- a/packages/sql-common/package.json +++ b/packages/sql-common/package.json @@ -8,10 +8,10 @@ "access": "public" }, "scripts": { - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", - "setup:dev": "nx run-many -t compile -p @opentelemetry/sql-common", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/sql-common", "compile": "tsc --build tsconfig.json", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", "test": "nyc mocha 'test/**/*.test.ts'", "watch": "tsc -w" diff --git a/packages/winston-transport/.eslintrc.js b/packages/winston-transport/.eslintrc.js index f726f3becb..912e1cf251 100644 --- a/packages/winston-transport/.eslintrc.js +++ b/packages/winston-transport/.eslintrc.js @@ -1,7 +1,22 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module.exports = { - "env": { - "mocha": true, - "node": true - }, - ...require('../../eslint.config.js') -} + env: { + mocha: true, + node: true, + }, + ...require('../../eslint.config.js'), +}; diff --git a/packages/winston-transport/CHANGELOG.md b/packages/winston-transport/CHANGELOG.md index f8aa483d62..44aa7912ac 100644 --- a/packages/winston-transport/CHANGELOG.md +++ b/packages/winston-transport/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.15.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/winston-transport-v0.14.1...winston-transport-v0.15.0) (2025-09-08) + + +### Features + +* **deps:** update otel deps ([#3027](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/3027)) ([fd9e262](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/fd9e262fabf4e8fd8e246b8967892fa26442968a)) + +## [0.14.1](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/winston-transport-v0.14.0...winston-transport-v0.14.1) (2025-08-13) + + +### Bug Fixes + +* **winston-transport, instrumentation-winston:** get the correct severityText and severityNumber with winston.format.colorize() is used ([#2956](https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2956)) ([952abc7](https://github.com/open-telemetry/opentelemetry-js-contrib/commit/952abc7ffb677adf0a4be9ca3a46927a6335e355)) + ## [0.14.0](https://github.com/open-telemetry/opentelemetry-js-contrib/compare/winston-transport-v0.13.0...winston-transport-v0.14.0) (2025-07-09) diff --git a/packages/winston-transport/package.json b/packages/winston-transport/package.json index 0ca3242bdc..ebde93d3bd 100644 --- a/packages/winston-transport/package.json +++ b/packages/winston-transport/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/winston-transport", - "version": "0.14.0", + "version": "0.15.0", "description": "OpenTelemetry Transport for winston", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -10,15 +10,15 @@ "directory": "packages/winston-transport" }, "scripts": { - "test": "nyc mocha 'test/**/*.test.ts'", - "tdd": "npm run test -- --watch-extensions ts --watch", "clean": "rimraf build/*", - "lint": "eslint . --ext .ts", - "lint:fix": "eslint . --ext .ts --fix", + "compile": "tsc -p .", + "compile:with-dependencies": "nx run-many -t compile -p @opentelemetry/winston-transport", + "lint": "eslint . --ext=ts,js,mjs", + "lint:fix": "eslint . --ext=ts,js,mjs --fix", "prepublishOnly": "npm run compile", - "version:update": "node ../../scripts/version-update.js", - "setup:dev": "nx run-many -t compile -p @opentelemetry/winston-transport", - "compile": "tsc -p ." + "tdd": "npm run test -- --watch-extensions ts --watch", + "test": "nyc mocha 'test/**/*.test.ts'", + "version:update": "node ../../scripts/version-update.js" }, "keywords": [ "transport", @@ -51,7 +51,7 @@ "typescript": "5.0.4" }, "dependencies": { - "@opentelemetry/api-logs": "^0.203.0", + "@opentelemetry/api-logs": "^0.204.0", "winston-transport": "4.*" }, "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/winston-transport#readme" diff --git a/packages/winston-transport/src/utils.ts b/packages/winston-transport/src/utils.ts index 976d0f55da..c2a658d713 100644 --- a/packages/winston-transport/src/utils.ts +++ b/packages/winston-transport/src/utils.ts @@ -60,19 +60,23 @@ function getSeverityNumber(level: string): SeverityNumber | undefined { } export function emitLogRecord( - record: Record, + record: Record, logger: Logger ): void { const { message, level, ...splat } = record; const attributes: LogAttributes = {}; + // Ensures the log level is read from a symbol property, avoiding any + // accidental inclusion of ANSI color codes that may be present in the string + // property. + const levelSym = record[Symbol.for('level')]; for (const key in splat) { if (Object.prototype.hasOwnProperty.call(splat, key)) { attributes[key] = splat[key]; } } const logRecord: LogRecord = { - severityNumber: getSeverityNumber(level), - severityText: level, + severityNumber: getSeverityNumber(levelSym), + severityText: levelSym, body: message, attributes: attributes, }; diff --git a/packages/winston-transport/test/openTelemetryTransport.test.ts b/packages/winston-transport/test/openTelemetryTransport.test.ts index 8440ab38a6..d6cf91a9bc 100644 --- a/packages/winston-transport/test/openTelemetryTransport.test.ts +++ b/packages/winston-transport/test/openTelemetryTransport.test.ts @@ -74,13 +74,18 @@ describe('OpenTelemetryTransportV3', () => { it('npm levels', () => { const callback = () => {}; const transport = new OpenTelemetryTransportV3(); - transport.log({ message: kMessage, level: 'error' }, callback); - transport.log({ message: kMessage, level: 'warn' }, callback); - transport.log({ message: kMessage, level: 'info' }, callback); - transport.log({ message: kMessage, level: 'http' }, callback); - transport.log({ message: kMessage, level: 'verbose' }, callback); - transport.log({ message: kMessage, level: 'debug' }, callback); - transport.log({ message: kMessage, level: 'silly' }, callback); + const sym = Symbol.for('level'); + for (const level of [ + 'error', + 'warn', + 'info', + 'http', + 'verbose', + 'debug', + 'silly', + ]) { + transport.log({ message: kMessage, level, [sym]: level }, callback); + } const logRecords = memoryLogExporter.getFinishedLogRecords(); assert.strictEqual(logRecords.length, 7); assert.strictEqual(logRecords[0].severityNumber, SeverityNumber.ERROR); @@ -95,16 +100,21 @@ describe('OpenTelemetryTransportV3', () => { it('cli levels', () => { const callback = () => {}; const transport = new OpenTelemetryTransportV3(); - transport.log({ message: kMessage, level: 'error' }, callback); - transport.log({ message: kMessage, level: 'warn' }, callback); - transport.log({ message: kMessage, level: 'help' }, callback); - transport.log({ message: kMessage, level: 'data' }, callback); - transport.log({ message: kMessage, level: 'info' }, callback); - transport.log({ message: kMessage, level: 'debug' }, callback); - transport.log({ message: kMessage, level: 'verbose' }, callback); - transport.log({ message: kMessage, level: 'prompt' }, callback); - transport.log({ message: kMessage, level: 'input' }, callback); - transport.log({ message: kMessage, level: 'silly' }, callback); + const sym = Symbol.for('level'); + for (const level of [ + 'error', + 'warn', + 'help', + 'data', + 'info', + 'debug', + 'verbose', + 'prompt', + 'input', + 'silly', + ]) { + transport.log({ message: kMessage, level, [sym]: level }, callback); + } const logRecords = memoryLogExporter.getFinishedLogRecords(); assert.strictEqual(logRecords.length, 10); assert.strictEqual(logRecords[0].severityNumber, SeverityNumber.ERROR); @@ -122,14 +132,19 @@ describe('OpenTelemetryTransportV3', () => { it('syslog levels', () => { const callback = () => {}; const transport = new OpenTelemetryTransportV3(); - transport.log({ message: kMessage, level: 'emerg' }, callback); - transport.log({ message: kMessage, level: 'alert' }, callback); - transport.log({ message: kMessage, level: 'crit' }, callback); - transport.log({ message: kMessage, level: 'error' }, callback); - transport.log({ message: kMessage, level: 'warning' }, callback); - transport.log({ message: kMessage, level: 'notice' }, callback); - transport.log({ message: kMessage, level: 'info' }, callback); - transport.log({ message: kMessage, level: 'debug' }, callback); + const sym = Symbol.for('level'); + for (const level of [ + 'emerg', + 'alert', + 'crit', + 'error', + 'warning', + 'notice', + 'info', + 'debug', + ]) { + transport.log({ message: kMessage, level, [sym]: level }, callback); + } const logRecords = memoryLogExporter.getFinishedLogRecords(); assert.strictEqual(logRecords.length, 8); assert.strictEqual(logRecords[0].severityNumber, SeverityNumber.FATAL3); diff --git a/propagators/README.md b/propagators/README.md deleted file mode 100644 index fde754618f..0000000000 --- a/propagators/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# OpenTelemetry Propagators - -## Built-in Propagators - -OpenTelemetry core package provides many Built-in Propagators such as W3CTraceContextPropagator Propagator, B3 Propagator, Composite Propagator etc. - -[Click here](https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-core#built-in-propagators) to see Built-in Propagators. - -## GRPC Census Propagator - -OpenTelemetry gRPC Census propagator provides gRPC header propagation for systems that use the OpenCensus 'grpc-trace-bin' binary header format. - -```js -const api = require("@opentelemetry/api"); -const { GrpcCensusPropagator } = require("@opentelemetry/propagator-grpc-census-binary"); - -/* Set Global Propagator */ -api.propagation.setGlobalPropagator(new GrpcCensusPropagator()); -``` - -[Click here](opentelemetry-propagator-grpc-census-binary/README.md) for more comprehensive examples. - -## Useful links - -- For more information on OpenTelemetry, visit: -- For more about OpenTelemetry JavaScript: - -## License - -Apache 2.0 - See [LICENSE][license-url] for more information. - -[license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE diff --git a/release-please-config.json b/release-please-config.json index 49902e8fb1..19fa95ede8 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -57,6 +57,7 @@ "packages/instrumentation-mysql2": {}, "packages/instrumentation-nestjs-core": {}, "packages/instrumentation-net": {}, + "packages/instrumentation-openai": {}, "packages/instrumentation-oracledb": {}, "packages/instrumentation-pg": {}, "packages/instrumentation-pino": {}, diff --git a/renovate.json b/renovate.json index 501f0286e3..253534edde 100644 --- a/renovate.json +++ b/renovate.json @@ -1,14 +1,12 @@ { - "extends": [ - "config:base" - ], + "extends": ["config:recommended"], "packageRules": [ { "groupName": "all patch versions", "groupSlug": "all-patch", "matchUpdateTypes": ["patch"], - "excludePackageNames": ["prettier"], - "schedule": ["before 3am on Monday"] + "schedule": ["before 3am on Monday"], + "matchPackageNames": ["!prettier"] }, { "matchUpdateTypes": ["minor"], @@ -57,10 +55,8 @@ }, "ignoreDeps": ["lerna-changelog", "@types/node"], "ignorePaths": ["archive/**", "examples/**"], - "assignees": ["@blumamir", "@dyladan", "@legendecas", "@pichlermarc" ], - "schedule": [ - "before 3am on Friday" - ], + "assignees": ["@blumamir", "@dyladan", "@legendecas", "@pichlermarc"], + "schedule": ["before 3am on Friday"], "labels": ["dependencies"], "semanticCommitType": "feat" } diff --git a/scripts/codecov-upload-flags.mjs b/scripts/codecov-upload-flags.mjs new file mode 100644 index 0000000000..d6e5ee5725 --- /dev/null +++ b/scripts/codecov-upload-flags.mjs @@ -0,0 +1,85 @@ +import { execSync } from 'child_process'; +import { globSync } from 'glob'; +import { chmodSync, existsSync, readFileSync } from 'fs'; +import path from 'path'; + +// Usage +// node ./scripts/codecov-upload-flags.mjs + +const commitSha = process.argv[2]; +const branchName = process.argv[3]; + +const readPkg = (dir) => JSON.parse(readFileSync(path.join(dir, 'package.json'), 'utf8')); +const pkgInfo = readPkg('.'); +const pkgFiles = pkgInfo.workspaces.map((exp) => globSync(path.join(exp, 'package.json'))); +const pkgsWithFlag = pkgFiles.flat().map((f) => { + const path = f.replace('package.json', ''); + const info = readPkg(path); + const name = info.name; + const flag = name.replace('@opentelemetry/', ''); + const report = path + 'coverage/coverage-final.json'; + // To get a list of available options run + // ``` + // ./codecov --verbose upload-coverage --help + // ``` + // or check https://docs.codecov.com/docs/cli-options + const command = [ + './codecov --verbose', + 'upload-coverage', + '--git-service github', + // we don't need xcrun or pycoverage plugins + '--plugin gcov', + '--gcov-executable gcov', + '--file', report, + '--flag', flag, + // limit any scan to the pacakge folder + '--dir', path, + ]; + + if (typeof commitSha === 'string') { + command.push('--sha', commitSha); + } + if (typeof branchName === 'string') { + command.push('--branch', branchName); + } + + return { name, flag, path, report, command: command.join(' ') }; +}); + +// Download codecov-cli if necessary +const codecovPath = './codecov'; +const baseUrl = 'https://cli.codecov.io/latest/'; +const urlMap = { + linux: `${baseUrl}linux/codecov`, + darwin: `${baseUrl}macos/codecov`, +}; + +const url = urlMap[process.platform]; +if (!url) { + console.log(`No codecov binary available for platform "${process.platform}"`); + console.log(`Available platforms are "${Object.keys(urlMap)}"`); + process.exit(-1); +} + +const execOpts = {encoding: 'utf-8', stdio: 'inherit'}; +if (existsSync(codecovPath)) { + console.log(`Codecov binary found.`); +} else { + console.log(`Codecov binary missing. Downloading from ${url}`); + execSync(`curl -O "${url}"`, execOpts); + console.log(`Verifying codecov binary downloaded to "${codecovPath}"`); + execSync(`echo "$(curl -s https://keybase.io/codecovsecurity/pgp_keys.asc)" | gpg --no-default-keyring --import`, execOpts); + execSync(`curl -O "${url}.SHA256SUM"`, execOpts); + execSync(`curl -O "${url}.SHA256SUM.sig"`, execOpts); + execSync(`gpg --verify "codecov.SHA256SUM.sig" "codecov.SHA256SUM"`, execOpts); +} +// make sure we have exec perms +chmodSync(codecovPath, 0o555); + +// Compute the commands to run +for (const pkg of pkgsWithFlag) { + if (existsSync(pkg.report)) { + console.log(`\n\nCODECOV: Uploading report of "${pkg.name}" with flag "${pkg.flag}"\n${pkg.command}`); + execSync(pkg.command, execOpts); + } +} diff --git a/scripts/npm-run-in-examples.js b/scripts/npm-run-in-examples.js new file mode 100755 index 0000000000..194a4dfd90 --- /dev/null +++ b/scripts/npm-run-in-examples.js @@ -0,0 +1,88 @@ +#!/usr/bin/env node +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Run `npm run ARGS...` in every "examples/*" subdir. + * + * This script exists because the "examples/*" dirs are *not* part of the npm + * workspace, so we cannot use `nx run-many ...` or `npm run --workspaces ...`. + * + * Example usage: + * ./scripts/npm-run-in-examples.js --if-present lint + */ + +const {spawn, spawnSync} = require('child_process'); +const path = require('path'); + +const TOP = path.resolve(__dirname, '..'); +const USE_COLOR = process.stdout.isTTY && !process.env.NO_COLOR?.length > 0; + +function logInfo(...args) { + if (USE_COLOR) { + process.stdout.write('\x1b[90m'); + } + console.log(...args); + if (USE_COLOR) { + process.stdout.write('\x1b[39m'); + } +} + +function logError(...args) { + if (USE_COLOR) { + process.stdout.write('\x1b[31m'); + } + console.log(...args); + if (USE_COLOR) { + process.stdout.write('\x1b[39m'); + } +} + +function getExamplesPackageDirs() { + const p = spawnSync('git', ['ls-files', path.join(TOP, 'examples')], { + encoding: 'utf8' + }); + return p.stdout + .split('\n') + .filter(f => path.basename(f) === 'package.json') + .map(path.dirname) +} + +async function npmRunInExamples(args) { + const pkgDirs = getExamplesPackageDirs(); + + let finalRetval = 0; + for (let pkgDir of pkgDirs) { + logInfo(`\n> ${pkgDir}`); + const p = spawnSync('npm', ['run'].concat(args), { + cwd: pkgDir, + stdio: 'inherit', + encoding: 'utf8' + }); + if (p.status || p.signal || p.error) { + logError(`"npm run ${args.join(' ')}" failed in "${pkgDir}": status=${p.status} signal=${p.signal} error=${p.error}`); + finalRetval = 1; + } + } + + process.exitCode = finalRetval; +} + +async function main() { + await npmRunInExamples(process.argv.slice(2)); +} + +main(); diff --git a/scripts/package.json b/scripts/package.json index e5b70704cb..2c5fa01f0b 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -1,7 +1,6 @@ { - "name": "opentelemetry-contrib-scripts", + "name": "opentelemetry-js-contrib-scripts", "private": true, "license": "Apache-2.0", - "dependencies": { - } + "dependencies": {} } diff --git a/scripts/skip-test-if.js b/scripts/skip-test-if.js index 96be8c483e..8a0772619a 100644 --- a/scripts/skip-test-if.js +++ b/scripts/skip-test-if.js @@ -16,40 +16,62 @@ /** * This script can be used with `mocha --require ...` to support skipping - * tests if the current version of Node.js is too old. For example, say - * a package's unit tests cannot run with Node.js 14, but the CI unit tests - * run all package test with that version. + * tests if the current version of Node.js is too old or too new. For example, + * say a package's unit tests cannot run with Node.js 14, but the CI unit tests + * run all package tests with that version. * * 1. Change this in "package.json": * "test": "nyc mocha ...", - * to this: - * "test": "SKIP_TEST_IF_NODE_OLDER_THAN=18 nyc mocha --require '../../../scripts/skip-test-if.js' ... ", - * where `SKIP_TEST_IF_NODE_OLDER_THAN` indicates the minimum Node.js major - * version. + * to one of these: + * "test": "SKIP_TEST_IF_NODE_OLDER_THAN=18 nyc mocha --require '../../scripts/skip-test-if.js' ...", + * "test": "SKIP_TEST_IF_NODE_NEWER_THAN=22 nyc mocha --require '../../scripts/skip-test-if.js' ...", + * where `SKIP_TEST_IF_NODE_{OLDER|NEWER}_THAN` indicates a Node.js *major* + * version number. * - * 2. ".tav.yml" blocks should set SKIP_TEST_IF_DISABLE=true to + * 2. ".tav.yml" blocks should set SKIP_TEST_IF_DISABLED=true to * disable the skipping. Via this in each test block: * env: - * - SKIP_TEST_IF_DISABLE=true + * - SKIP_TEST_IF_DISABLED=true */ function skipTestIf() { - if (process.env.SKIP_TEST_IF_DISABLE) { + if (process.env.SKIP_TEST_IF_DISABLED) { return; } - const minNodeMajor = process.env.SKIP_TEST_IF_NODE_OLDER_THAN ?? Number(process.env.SKIP_TEST_IF_NODE_OLDER_THAN); - if (!minNodeMajor || isNaN(minNodeMajor)) { - console.warn('skip-test-if warning: set a minimum Node.js major version via SKIP_TEST_IF_NODE_OLDER_THAN='); + let minNodeMajor; + if (process.env.SKIP_TEST_IF_NODE_OLDER_THAN) { + minNodeMajor = Number(process.env.SKIP_TEST_IF_NODE_OLDER_THAN) + if (isNaN(minNodeMajor) || !Number.isInteger(minNodeMajor)) { + console.warn(`skip-test-if warning: ignoring invalid SKIP_TEST_IF_NODE_OLDER_THAN value: "${process.env.SKIP_TEST_IF_NODE_OLDER_THAN}"`); + minNodeMajor = undefined; + } + } + let maxNodeMajor; + if (process.env.SKIP_TEST_IF_NODE_NEWER_THAN) { + maxNodeMajor = Number(process.env.SKIP_TEST_IF_NODE_NEWER_THAN) + if (isNaN(maxNodeMajor) || !Number.isInteger(maxNodeMajor)) { + console.warn(`skip-test-if warning: ignoring invalid SKIP_TEST_IF_NODE_NEWER_THAN value: "${process.env.SKIP_TEST_IF_NODE_NEWER_THAN}"`); + maxNodeMajor = undefined; + } + } + + if (minNodeMajor === undefined && maxNodeMajor === undefined) { + console.warn('skip-test-if warning: skip-test-if.js was used, but no SKIP_TEST_IF_* envvars were set'); return; } const nodeMajor = Number(process.versions.node.split('.')[0]); - if (nodeMajor < minNodeMajor) { + if (minNodeMajor && nodeMajor < minNodeMajor) { process.stderr.write(`skip-test-if: skipping tests on old Node.js (${nodeMajor} < ${minNodeMajor})\n`); // "Skip" tests by exiting the process. Mocha is all in one process. process.exit(0); } + if (maxNodeMajor && nodeMajor > maxNodeMajor) { + process.stderr.write(`skip-test-if: skipping tests on too-new Node.js (${nodeMajor} > ${maxNodeMajor})\n`); + // "Skip" tests by exiting the process. Mocha is all in one process. + process.exit(0); + } } skipTestIf() diff --git a/test/docker-compose.yaml b/test/docker-compose.yaml index 537f22c513..00d2f1ee26 100644 --- a/test/docker-compose.yaml +++ b/test/docker-compose.yaml @@ -25,7 +25,7 @@ services: retries: 30 memcached: - image: memcached:1.6.38-alpine + image: memcached:1.6.39-alpine ports: - 11211:11211 diff --git a/test/test-services.env b/test/test-services.env index 4f8a62f10b..16300608bf 100644 --- a/test/test-services.env +++ b/test/test-services.env @@ -1,5 +1,5 @@ RUN_CASSANDRA_TESTS=1 -CASSANDRA_HOST=localhostΓ§ +CASSANDRA_HOST=localhost RUN_MEMCACHED_TESTS=1 OPENTELEMETRY_MEMCACHED_HOST=localhost